Skip to content

Commit

Permalink
Merge pull request #175 from edunad/features/steamworks
Browse files Browse the repository at this point in the history
[FEATURE] Steamworks
  • Loading branch information
edunad authored Jul 12, 2024
2 parents 8587799 + 02311ad commit bfc3236
Show file tree
Hide file tree
Showing 90 changed files with 34,497 additions and 30 deletions.
6 changes: 5 additions & 1 deletion .github/labeler.yml
Original file line number Diff line number Diff line change
Expand Up @@ -49,11 +49,15 @@
"🧙‍♂️ ASSIMP":
- changed-files:
- any-glob-to-any-file: "rawrbox.assimp/**/*"

"🛰 NETWORK":
- changed-files:
- any-glob-to-any-file: "rawrbox.network/**/*"

"💨 STEAMWORKS":
- changed-files:
- any-glob-to-any-file: "rawrbox.steamworks/**/*"

"📜 SCRIPTING":
- changed-files:
- any-glob-to-any-file:
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -34,8 +34,8 @@ jobs:
uses: hendrikmuhs/ccache-action@v1.2.13
with:
append-timestamp: false
restore-keys: host-${{ runner.os }}-${{ hashFiles('./CMakeLists.txt', './rawrbox.assimp/CMakeLists.txt', './rawrbox.bass/CMakeLists.txt', './rawrbox.engine/CMakeLists.txt', './rawrbox.math/CMakeLists.txt', './rawrbox.network/CMakeLists.txt', './rawrbox.physics_2d/CMakeLists.txt', './rawrbox.physics_3d/CMakeLists.txt', './rawrbox.render/CMakeLists.txt', './rawrbox.resources/CMakeLists.txt', './rawrbox.scripting/CMakeLists.txt', './rawrbox.ui/CMakeLists.txt', './rawrbox.utils/CMakeLists.txt', './rawrbox.webm/CMakeLists.txt') }}-
key: host-${{ runner.os }}-${{ hashFiles('./CMakeLists.txt', './rawrbox.assimp/CMakeLists.txt', './rawrbox.bass/CMakeLists.txt', './rawrbox.engine/CMakeLists.txt', './rawrbox.math/CMakeLists.txt', './rawrbox.network/CMakeLists.txt', './rawrbox.physics_2d/CMakeLists.txt', './rawrbox.physics_3d/CMakeLists.txt', './rawrbox.render/CMakeLists.txt', './rawrbox.resources/CMakeLists.txt', './rawrbox.scripting/CMakeLists.txt', './rawrbox.ui/CMakeLists.txt', './rawrbox.utils/CMakeLists.txt', './rawrbox.webm/CMakeLists.txt') }}
restore-keys: host-${{ runner.os }}-${{ hashFiles('./CMakeLists.txt', './rawrbox.assimp/CMakeLists.txt', './rawrbox.bass/CMakeLists.txt', './rawrbox.engine/CMakeLists.txt', './rawrbox.math/CMakeLists.txt', './rawrbox.network/CMakeLists.txt', './rawrbox.physics_2d/CMakeLists.txt', './rawrbox.physics_3d/CMakeLists.txt', './rawrbox.render/CMakeLists.txt', './rawrbox.resources/CMakeLists.txt', './rawrbox.scripting/CMakeLists.txt', './rawrbox.ui/CMakeLists.txt', './rawrbox.utils/CMakeLists.txt', './rawrbox.webm/CMakeLists.txt', './rawrbox.steamworks/CMakeLists.txt') }}-
key: host-${{ runner.os }}-${{ hashFiles('./CMakeLists.txt', './rawrbox.assimp/CMakeLists.txt', './rawrbox.bass/CMakeLists.txt', './rawrbox.engine/CMakeLists.txt', './rawrbox.math/CMakeLists.txt', './rawrbox.network/CMakeLists.txt', './rawrbox.physics_2d/CMakeLists.txt', './rawrbox.physics_3d/CMakeLists.txt', './rawrbox.render/CMakeLists.txt', './rawrbox.resources/CMakeLists.txt', './rawrbox.scripting/CMakeLists.txt', './rawrbox.ui/CMakeLists.txt', './rawrbox.utils/CMakeLists.txt', './rawrbox.webm/CMakeLists.txt', './rawrbox.steamworks/CMakeLists.txt') }}

- name: CMAKE Setup
id: setup
Expand Down
23 changes: 16 additions & 7 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,9 @@ CPMUsePackageLock(package-lock.cmake)

# Versioning
set(RAWRBOX_VERSION_MAJOR 2 CACHE STRING "major version" FORCE)
set(RAWRBOX_VERSION_MINOR 0 CACHE STRING "minor version" FORCE)
set(RAWRBOX_VERSION ${RAWRBOX_VERSION_MAJOR}.${RAWRBOX_VERSION_MINOR} CACHE STRING "version" FORCE)
set(RAWRBOX_VERSION_MINOR 4 CACHE STRING "minor version" FORCE)
set(RAWRBOX_VERSION_PATCH 0 CACHE STRING "patch version" FORCE)
set(RAWRBOX_VERSION ${RAWRBOX_VERSION_MAJOR}.${RAWRBOX_VERSION_MINOR}.${RAWRBOX_VERSION_PATCH} CACHE STRING "version" FORCE)

project("RAWRBOX" VERSION ${RAWRBOX_VERSION} DESCRIPTION "Game engine - By edunad" LANGUAGES C CXX)
# ---
Expand All @@ -30,8 +31,8 @@ option(RAWRBOX_USE_WAYLAND "Use Wayland for linux" OFF)
option(RAWRBOX_BUILD_TESTING "Build tests" OFF)
option(RAWRBOX_BUILD_SAMPLES "Build samples" OFF)

option(RAWRBOX_BUILD_RAWRBOX_UI "Build RAWRBOX.UI" OFF)
option(RAWRBOX_BUILD_RAWRBOX_RESOURCES "Build RAWRBOX.RESOURCES" OFF)
option(RAWRBOX_BUILD_RAWRBOX_UI "Build rawrbox UI" OFF)
option(RAWRBOX_BUILD_RAWRBOX_RESOURCES "Build rawrbox resources utils" OFF)
option(RAWRBOX_BUILD_RAWRBOX_3D_PHYSICS "Build 3D physics support" OFF)
option(RAWRBOX_BUILD_RAWRBOX_2D_PHYSICS "Build 2D physics support" OFF)
option(RAWRBOX_BUILD_RAWRBOX_BASS "Build bass & add sound loading support" OFF)
Expand All @@ -41,6 +42,7 @@ option(RAWRBOX_BUILD_RAWRBOX_NETWORK "Build network support" OFF)
option(RAWRBOX_BUILD_RAWRBOX_SCRIPTING "Build lua & mod support" OFF)
option(RAWRBOX_BUILD_RAWRBOX_SCRIPTING_UNSAFE "Enable unsafe scripting (io / etc)" OFF)
option(RAWRBOX_BUILD_RAWRBOX_SCRIPTING_EXCEPTION "Enables scripting throwing exceptions instead of catching them" OFF)
option(RAWRBOX_BUILD_RAWRBOX_STEAMWORKS "Build steamworks support" OFF)
option(RAWRBOX_BUILD_MSVC_MULTITHREADED_RUNTIME "Build with msvc multithreading" OFF)
option(RAWRBOX_BUILD_QHULL "Include QHull on utils" OFF)
# ---------------
Expand Down Expand Up @@ -73,14 +75,17 @@ if(RAWRBOX_DEV_MODE)
set(RAWRBOX_BUILD_RAWRBOX_NETWORK ON)
set(RAWRBOX_BUILD_RAWRBOX_SCRIPTING ON)
set(RAWRBOX_BUILD_RAWRBOX_SCRIPTING_UNSAFE ON)
set(RAWRBOX_BUILD_RAWRBOX_STEAMWORKS ON)
set(RAWRBOX_BUILD_QHULL ON)

set(STEAMWORKS_APPID 100)

set(CPM_SOURCE_CACHE "${PROJECT_SOURCE_DIR}/.cache/cpm")
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${PROJECT_SOURCE_DIR}/bin/${CMAKE_BUILD_TYPE}")
endif()

# OTHER SETTINGS ----
set(RAWRBOX_CONTENT_FOLDER "assets" CACHE STRING "the assets folder (aka where models, textures, etc are)")
set(RAWRBOX_CONTENT_FOLDER "assets" CACHE STRING "The assets folder (aka where models, textures, etc are)")
set(RAWRBOX_LIBRARY_TYPE "STATIC" CACHE STRING "Linking type for library")
# ----------------

Expand Down Expand Up @@ -177,7 +182,7 @@ if(RAWRBOX_BUILD_RAWRBOX_NETWORK OR RAWRBOX_BUILD_RAWRBOX_ASSIMP)
USE_CACHE
OFF
GIT_TAG
2.1.7
2.2.1
OPTIONS
#"ASM686 FALSE"
#"AMD64 FALSE"
Expand Down Expand Up @@ -248,6 +253,11 @@ if(RAWRBOX_BUILD_RAWRBOX_2D_PHYSICS)
add_subdirectory("rawrbox.physics_2d")
endif()

if(RAWRBOX_BUILD_RAWRBOX_STEAMWORKS)
message(STATUS "Enabled RAWRBOX.STEAMWORKS support")
add_subdirectory("rawrbox.steamworks")
endif()

# Shhhhh windows... shhhh....
mute_dependencies_warnings(".*RAWRBOX.*")
# --------------------
Expand All @@ -257,7 +267,6 @@ if(RAWRBOX_BUILD_SAMPLES)
add_subdirectory("samples")
endif()


if(WIN32)
string(REPLACE "/WX" "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
endif()
7 changes: 6 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ This engine started as a C++ training project, with hopes of being applied in up
| **Rendering** | - **Vulkan** & **DirectX 12** support using ([Diligent](https://github.com/DiligentGraphics/DiligentCore))<br/>- Material system similar to unity<br/>- Window & Input callbacks (using [GLFW](https://github.com/glfw/glfw)) <br/>- Clustered rendering :<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- Decals (**WIP**)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- Lights (point / spot/ directional)<br/>- Linux (**steamdeck**) support<br/>- Bindless rendering<br/>- Post-processing support<br/> - 2D rendering<br/> - Custom rendering plugins<br/> - GPU Picking<br/> - GPU Particle system<br/> |
| **Network** | - HTTP / HTTPS requests (using [libcpr](https://github.com/libcpr/cpr))<br/>- Packet network implementation<br/>- **NetVar** & **NetArray** support for [snapshot](https://gafferongames.com/post/snapshot_interpolation/) implementation <br/>- Simple socket implementation |
| **Scripting** | - Scripting / modding support with LUAU (using [luabridge3](https://github.com/kunitoki/LuaBridge3) + [luau](https://github.com/luau-lang/luau)) |
| **Other** | - I18N (internationalization) support<br/>- Settings support<br/>- Custom UI<br/>- DEV Console with support for custom commands & scripts<br/> - Timer utils (based on [GMOD's](https://wiki.facepunch.com/gmod/timer) timers)<br/>- File watcher implementation <br/>- Threading utilities |
| **Other** | - I18N (internationalization) support<br/>- Settings support<br/>- Steamworks support<br/>- Custom UI<br/>- DEV Console with support for custom commands & scripts<br/> - Timer utils (based on [GMOD's](https://wiki.facepunch.com/gmod/timer) timers)<br/>- File watcher implementation <br/>- Threading utilities |

# SAMPLES

Expand All @@ -50,6 +50,7 @@ This engine started as a C++ training project, with hopes of being applied in up
| 007-particle-system<br/><a href='/samples/007-particle-system'><img src="https://i.rawr.dev/sample7-min.gif" width="240" /></a> | 008-ui<br/><a href='/samples/008-ui'><img src="https://i.rawr.dev/sample8-min-3.gif" width="240" /></a> | 009-assimp<br/><a href='/samples/009-assimp'><img src="https://i.rawr.dev/sample9-min-3.gif" width="240" /></a> |
| 010-bass-audio<br/><a href='/samples/010-bass-audio'><img src="https://i.rawr.dev/sample10-min.gif" width="240" /></a> | 011-physics-3D<br/><a href='/samples/011-physics-3D'><img src="https://i.rawr.dev/sample11-min-2.gif" width="240" /></a> | 012-physics-2D<br/><a href='/samples/012-physics-2D'><img src="https://i.rawr.dev/sample12-min-2.gif" width="240" /></a> |
| 013-webm<br/><a href='/samples/013-webm'><img src="https://i.rawr.dev/sample13-min-2.gif" width="240" /></a> | 014-scripting<br/><a href='/samples/014-scripting'><img src="https://i.rawr.dev/sample14-min-2.gif" width="240" /></a> | 015-gpu-picking<br/><a href='/samples/015-gpu-picking'><img src="https://i.rawr.dev/sample15-min-2.gif" width="240" /></a> |
| 016-steamworks<br/><a href='/samples/016-steamworks'><img src="https://i.rawr.dev/sample16-min.gif" width="240" /></a> | | |

# BUILDING

Expand Down Expand Up @@ -102,6 +103,7 @@ This engine started as a C++ training project, with hopes of being applied in up
| `RAWRBOX.WEBM` | WEBM lib | Handles webm loading | `RENDER` & `RESOURCES` |
| `RAWRBOX.SCRIPTING` | Scripting lib | Handles lua & mod loading | `ENGINE` & `MATH` |
| `RAWRBOX.NETWORK` | Networking lib | Handles networking | |
| `RAWRBOX.STEAMWORKS` | Steamworks lib | Handles steamworks | `UTILS` |

<br/><br/>

Expand Down Expand Up @@ -129,6 +131,9 @@ This engine started as a C++ training project, with hopes of being applied in up
| `RAWRBOX_BUILD_RAWRBOX_SCRIPTING_UNSAFE` | Enables io support on lua (loading and saving files on the data folder) |
| `RAWRBOX_BUILD_RAWRBOX_SCRIPTING_EXCEPTION` | Enables scripting throwing exceptions instead of catching them |
| -- | -- |
| `RAWRBOX_BUILD_RAWRBOX_STEAMWORKS` | Enables steamworks support |
| `STEAMWORKS_APPID` | Sets the steamworks appid |
| -- | -- |
| `RAWRBOX_BUILD_QHULL` | Builds QHull util |
| -- | -- |
| `RAWRBOX_BUILD_MSVC_MULTITHREADED_RUNTIME` | Builds libraries with MSVC Multithreaded runtime (Auto-enabled if jolt is used) |
Expand Down
Loading

0 comments on commit bfc3236

Please sign in to comment.