├── .github ├── FUNDING.yml ├── actions │ ├── build-godot │ │ └── action.yml │ ├── download-godot │ │ └── action.yml │ ├── download-godotsteam │ │ └── action.yml │ ├── download-steamworks │ │ └── action.yml │ ├── download-vulkan │ │ └── action.yml │ ├── helpers │ │ ├── tvgLock.h │ │ └── tvgTaskScheduler.h │ ├── prep-buildroot │ │ └── action.yml │ ├── prep-macos │ │ └── action.yml │ ├── setup-cache │ │ └── action.yml │ ├── setup-d3d12 │ │ └── action.yml │ ├── setup-dependencies │ │ └── action.yml │ ├── upload-artifact │ │ └── action.yml │ └── upload-steam-redistributable │ │ └── action.yaml └── workflows │ ├── build-artifact-linux.yml │ ├── build-artifact-macos.yml │ ├── build-artifact-windows.yml │ ├── build-releases.yml │ ├── create-bundle-templates.yml │ ├── create-bundle.yml │ └── setup-env.yml ├── .gitignore ├── README.md ├── SCsub ├── config.py ├── contributing.md ├── contributors.md ├── doc_classes └── SteamServer.xml ├── donors.md ├── godotsteam_server.cpp ├── godotsteam_server.h ├── godotsteam_server_constants.h ├── godotsteam_server_enums.h ├── icons └── SteamServer.svg ├── license.txt ├── register_types.cpp ├── register_types.h └── sdk └── put SDK here /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | 3 | github: Gramps 4 | patreon: godotsteam -------------------------------------------------------------------------------- /.github/actions/build-godot/action.yml: -------------------------------------------------------------------------------- 1 | name: Build Godot 2 | 3 | 4 | description: Build Godot with the provided options 5 | 6 | 7 | inputs: 8 | binary: 9 | description: The finished binary's name 10 | default: '' 11 | 12 | buildroot: 13 | description: Build root to add to the PATH before building Godot, if Linux 14 | default: '' 15 | 16 | target: 17 | description: The SCONS target (debug/release_debug/release) 18 | default: "debug" 19 | 20 | tests: 21 | description: If tests are to be built 22 | default: false 23 | 24 | platform: 25 | description: The Godot platform to build 26 | required: false 27 | 28 | export: 29 | description: New GodotSteam export name 30 | default: '' 31 | 32 | sconsflags: 33 | default: '' 34 | 35 | scons-cache: 36 | description: The scons cache path 37 | default: "${{ github.workspace }}/.scons-cache/" 38 | 39 | scons-cache-limit: 40 | description: The scons cache size limit 41 | # actions/cache has 10 GiB limit, and GitHub runners have a 14 GiB disk. 42 | # Limit to 7 GiB to avoid having the extracted cache fill the disk. 43 | default: 7168 44 | 45 | 46 | runs: 47 | using: "composite" 48 | 49 | steps: 50 | - name: SCONS Build 51 | shell: bash 52 | env: 53 | SCONSFLAGS: ${{ inputs.sconsflags }} 54 | SCONS_CACHE: ${{ inputs.scons-cache }} 55 | SCONS_CACHE_LIMIT: ${{ inputs.scons-cache-limit }} 56 | run: | 57 | echo "Building with flags:" ${{ env.SCONSFLAGS }} 58 | if [[ ${{ inputs.buildroot != '' }} ]]; then 59 | echo "Using buildroot at ${{ inputs.buildroot }}" 60 | fi 61 | ${{ inputs.buildroot != '' && format('PATH={0}:$PATH', inputs.buildroot) || '' }} scons p=${{ inputs.platform }} production=yes target=${{ inputs.target }} tests=${{ inputs.tests }} ${{ env.SCONSFLAGS }} 62 | ls -l bin/ 63 | 64 | - name: Rename Export 65 | shell: bash 66 | if: ${{ inputs.binary != '' }} 67 | run: | 68 | mv bin/${{ inputs.binary }} bin/${{ inputs.export }} -------------------------------------------------------------------------------- /.github/actions/download-godot/action.yml: -------------------------------------------------------------------------------- 1 | name: Download Godot source code 2 | 3 | 4 | description: Download and extract the Godot source code for use in compiling 5 | 6 | 7 | inputs: 8 | version: 9 | description: Version of Godot source code to download 10 | default: "4.2.2-stable" 11 | 12 | 13 | runs: 14 | using: "composite" 15 | 16 | steps: 17 | - name: Download and extract Godot 18 | shell: bash 19 | run: | 20 | curl -fLO https://github.com/godotengine/godot/archive/${{ inputs.version }}.tar.gz 21 | tar -xvzf ${{ inputs.version }}.tar.gz --strip-components 1 --exclude=".github" -------------------------------------------------------------------------------- /.github/actions/download-godotsteam/action.yml: -------------------------------------------------------------------------------- 1 | name: Download GodotSteam Server 2 | 3 | 4 | description: Download and extract the GodotSteam Server source code for use in compiling 5 | 6 | 7 | runs: 8 | using: "composite" 9 | 10 | steps: 11 | - name: Download and extract GodotSteam Server 12 | uses: actions/checkout@v4 13 | with: 14 | path: "godotsteam_server" 15 | ref: "godot4" 16 | 17 | - name: Copy GodotSteam Server 18 | shell: bash 19 | run: | 20 | cp -r godotsteam_server ./modules/godotsteam_server -------------------------------------------------------------------------------- /.github/actions/download-steamworks/action.yml: -------------------------------------------------------------------------------- 1 | name: Download Steamworks SDK 2 | 3 | 4 | description: Download and extract the Steamworks SDK from our secret repository 5 | 6 | 7 | inputs: 8 | path: 9 | description: Where to dump this 10 | default: "steamworks" 11 | 12 | repository: 13 | description: GodotSteam's private SDK repo 14 | default: "It's a secret..." 15 | 16 | token: 17 | description: GodotSteam's repo token for access 18 | default: "It's a secret..." 19 | 20 | ref: 21 | description: The Steamworks SDK tag used 22 | default: "sdk-1.59" 23 | 24 | 25 | runs: 26 | using: "composite" 27 | 28 | steps: 29 | - name: Download Steamworks SDK 30 | uses: actions/checkout@v4 31 | with: 32 | path: ${{ inputs.path }} 33 | repository: ${{ inputs.repository }} 34 | token: ${{ inputs.token }} 35 | ref: ${{ inputs.ref }} 36 | 37 | - name: Copy Steamworks 38 | shell: bash 39 | run: | 40 | mkdir ./modules/godotsteam_server/sdk/public 41 | cp -r steamworks/public ./modules/godotsteam_server/sdk 42 | cp -r steamworks/redistributable_bin ./modules/godotsteam_server/sdk -------------------------------------------------------------------------------- /.github/actions/download-vulkan/action.yml: -------------------------------------------------------------------------------- 1 | name: Download and Install Vulkan SDK 2 | 3 | 4 | description: Download and install the Vulkan Molten SDK 5 | 6 | 7 | runs: 8 | using: "composite" 9 | 10 | steps: 11 | - name: Download and Install 12 | shell: bash 13 | run: | 14 | set -euo pipefail 15 | IFS=$'\n\t' 16 | 17 | # Download and install the Vulkan SDK. 18 | curl -L "https://sdk.lunarg.com/sdk/download/1.3.268.1/mac/vulkansdk-macos-1.3.268.1.dmg" -o /tmp/vulkan-sdk.dmg 19 | 20 | hdiutil attach /tmp/vulkan-sdk.dmg -mountpoint /Volumes/vulkan-sdk 21 | /Volumes/vulkan-sdk/InstallVulkan.app/Contents/MacOS/InstallVulkan \ 22 | --accept-licenses --default-answer --confirm-command install 23 | cnt=5 24 | 25 | until hdiutil detach -force /Volumes/vulkan-sdk 26 | do 27 | [[ cnt -eq "0" ]] && break 28 | sleep 1 29 | ((cnt--)) 30 | done 31 | 32 | rm -f /tmp/vulkan-sdk.dmg 33 | echo 'Vulkan SDK installed successfully!' -------------------------------------------------------------------------------- /.github/actions/helpers/tvgLock.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2024 the ThorVG project. All rights reserved. 3 | 4 | * Permission is hereby granted, free of charge, to any person obtaining a copy 5 | * of this software and associated documentation files (the "Software"), to deal 6 | * in the Software without restriction, including without limitation the rights 7 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 8 | * copies of the Software, and to permit persons to whom the Software is 9 | * furnished to do so, subject to the following conditions: 10 | 11 | * The above copyright notice and this permission notice shall be included in all 12 | * copies or substantial portions of the Software. 13 | 14 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 16 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 17 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 18 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 19 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 20 | * SOFTWARE. 21 | */ 22 | 23 | #ifndef _TVG_LOCK_H_ 24 | #define _TVG_LOCK_H_ 25 | 26 | #ifdef THORVG_THREAD_SUPPORT 27 | 28 | #include 29 | #include "tvgTaskScheduler.h" 30 | 31 | namespace tvg { 32 | 33 | struct Key 34 | { 35 | std::mutex mtx; 36 | }; 37 | 38 | struct ScopedLock 39 | { 40 | Key* key = nullptr; 41 | 42 | ScopedLock(Key& k) 43 | { 44 | if (TaskScheduler::threads() > 0) { 45 | k.mtx.lock(); 46 | key = &k; 47 | } 48 | } 49 | 50 | ~ScopedLock() 51 | { 52 | if (TaskScheduler::threads() > 0) { 53 | key->mtx.unlock(); 54 | } 55 | } 56 | }; 57 | 58 | } 59 | 60 | #else //THORVG_THREAD_SUPPORT 61 | 62 | namespace tvg { 63 | 64 | struct Key {}; 65 | 66 | struct ScopedLock 67 | { 68 | ScopedLock(Key& key) {} 69 | }; 70 | 71 | } 72 | 73 | #endif //THORVG_THREAD_SUPPORT 74 | 75 | #endif //_TVG_LOCK_H_ 76 | 77 | -------------------------------------------------------------------------------- /.github/actions/helpers/tvgTaskScheduler.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2020 - 2024 the ThorVG project. All rights reserved. 3 | 4 | * Permission is hereby granted, free of charge, to any person obtaining a copy 5 | * of this software and associated documentation files (the "Software"), to deal 6 | * in the Software without restriction, including without limitation the rights 7 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 8 | * copies of the Software, and to permit persons to whom the Software is 9 | * furnished to do so, subject to the following conditions: 10 | 11 | * The above copyright notice and this permission notice shall be included in all 12 | * copies or substantial portions of the Software. 13 | 14 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 16 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 17 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 18 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 19 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 20 | * SOFTWARE. 21 | */ 22 | 23 | #ifndef _TVG_TASK_SCHEDULER_H_ 24 | #define _TVG_TASK_SCHEDULER_H_ 25 | 26 | #include 27 | #include 28 | 29 | #include "tvgCommon.h" 30 | #include "tvgInlist.h" 31 | 32 | namespace tvg { 33 | 34 | #ifdef THORVG_THREAD_SUPPORT 35 | 36 | struct Task 37 | { 38 | private: 39 | mutex mtx; 40 | condition_variable cv; 41 | bool ready = true; 42 | bool pending = false; 43 | 44 | public: 45 | INLIST_ITEM(Task); 46 | 47 | virtual ~Task() = default; 48 | 49 | void done() 50 | { 51 | if (!pending) return; 52 | 53 | unique_lock lock(mtx); 54 | while (!ready) cv.wait(lock); 55 | pending = false; 56 | } 57 | 58 | protected: 59 | virtual void run(unsigned tid) = 0; 60 | 61 | private: 62 | void operator()(unsigned tid) 63 | { 64 | run(tid); 65 | 66 | lock_guard lock(mtx); 67 | ready = true; 68 | cv.notify_one(); 69 | } 70 | 71 | void prepare() 72 | { 73 | ready = false; 74 | pending = true; 75 | } 76 | 77 | friend struct TaskSchedulerImpl; 78 | }; 79 | 80 | #else //THORVG_THREAD_SUPPORT 81 | 82 | struct Task 83 | { 84 | public: 85 | INLIST_ITEM(Task); 86 | 87 | virtual ~Task() = default; 88 | void done() {} 89 | 90 | protected: 91 | virtual void run(unsigned tid) = 0; 92 | 93 | private: 94 | friend struct TaskSchedulerImpl; 95 | }; 96 | 97 | #endif //THORVG_THREAD_SUPPORT 98 | 99 | 100 | struct TaskScheduler 101 | { 102 | static uint32_t threads(); 103 | static void init(uint32_t threads); 104 | static void term(); 105 | static void request(Task* task); 106 | static void async(bool on); 107 | }; 108 | 109 | } //namespace 110 | 111 | #endif //_TVG_TASK_SCHEDULER_H_ 112 | 113 | -------------------------------------------------------------------------------- /.github/actions/prep-buildroot/action.yml: -------------------------------------------------------------------------------- 1 | name: Setup Linux Buildroot 2 | 3 | 4 | description: Setup Linux buildroot for making Linux builds of Godot 5 | 6 | 7 | inputs: 8 | toolchain-name: 9 | description: The release tag to use 10 | default: "x86_64-godot-linux-gnu_sdk-buildroot" 11 | 12 | 13 | runs: 14 | using: "composite" 15 | 16 | steps: 17 | - name: Download Buildroot 18 | shell: bash 19 | run: | 20 | curl -fLO https://github.com/godotengine/buildroot/releases/download/godot-2023.08.x-4/${{ inputs.toolchain-name }}.tar.bz2 21 | 22 | tar -xf ${{ inputs.toolchain-name }}.tar.bz2 23 | 24 | chmod +x "${{ inputs.toolchain-name }}/relocate-sdk.sh" 25 | 26 | "${{ inputs.toolchain-name }}/relocate-sdk.sh" -------------------------------------------------------------------------------- /.github/actions/prep-macos/action.yml: -------------------------------------------------------------------------------- 1 | name: Prep MacOS For Packaging 2 | 3 | 4 | description: Combine x86_64 and arm64 into Universal 5 | 6 | 7 | inputs: 8 | target: 9 | description: Which packaging are we prepping 10 | default: 'editor' 11 | 12 | 13 | runs: 14 | using: "composite" 15 | steps: 16 | - name: Create Universal Editor 17 | 18 | if: ${{ inputs.target == 'editor' }} 19 | shell: bash 20 | run: | 21 | ls -la bin/ 22 | 23 | lipo -create bin/godot.macos.editor.x86_64 bin/godot.macos.editor.arm64 -output bin/godot.macos.editor.universal 24 | 25 | cp -r misc/dist/macos_tools.app bin/GodotSteamServer.app 26 | mkdir -p bin/GodotSteamServer.app/Contents/MacOS 27 | 28 | cp bin/godot.macos.editor.universal bin/GodotSteamServer.app/Contents/MacOS/Godot 29 | chmod +x bin/GodotSteamServer.app/Contents/MacOS/Godot 30 | 31 | cp modules/godotsteam_server/sdk/redistributable_bin/osx/libsteam_api.dylib bin/GodotSteamServer.app/Contents/MacOS/ 32 | 33 | cd bin/ 34 | zip -q -9 -r macos_editor.zip GodotSteamServer.app 35 | cd ../ 36 | ls -la bin/ 37 | 38 | - name: Create Universal Templates 39 | if: ${{ inputs.target == 'templates' }} 40 | shell: bash 41 | run: | 42 | ls -la bin/ 43 | 44 | lipo -create bin/godot.macos.template_debug.x86_64 bin/godot.macos.template_debug.arm64 -output bin/godot.macos.template_debug.universal 45 | lipo -create bin/godot.macos.template_release.x86_64 bin/godot.macos.template_release.arm64 -output bin/godot.macos.template_release.universal 46 | $STRIP bin/godot.macos.template_release.universal 47 | 48 | cp -r misc/dist/macos_template.app bin/ 49 | mkdir -p bin/macos_template.app/Contents/MacOS 50 | 51 | cp bin/godot.macos.template_release.universal bin/macos_template.app/Contents/MacOS/godot_macos_release.universal 52 | cp bin/godot.macos.template_debug.universal bin/macos_template.app/Contents/MacOS/godot_macos_debug.universal 53 | chmod +x bin/macos_template.app/Contents/MacOS/godot_macos* 54 | 55 | cp modules/godotsteam_server/sdk/redistributable_bin/osx/libsteam_api.dylib bin/macos_template.app/Contents/MacOS/ 56 | 57 | cd bin/ 58 | zip -q -9 -r macos.zip macos_template.app 59 | cd ../ 60 | 61 | ls -la bin/ -------------------------------------------------------------------------------- /.github/actions/setup-cache/action.yml: -------------------------------------------------------------------------------- 1 | name: Setup Build Cache 2 | 3 | 4 | description: Setup SCONS build cache 5 | 6 | 7 | inputs: 8 | cache-name: 9 | description: The cache base name (job name by default) 10 | default: "${{ github.job }}" 11 | 12 | scons-cache: 13 | description: The scons cache path 14 | default: "${{ github.workspace }}/.scons-cache/" 15 | 16 | godot-base: 17 | description: Base version of Godot 18 | default: "4.2.2" 19 | 20 | 21 | runs: 22 | using: "composite" 23 | 24 | steps: 25 | - name: Load .scons_cache directory 26 | uses: actions/cache@v4 27 | with: 28 | path: ${{ inputs.scons-cache }} 29 | key: ${{ inputs.cache-name }}-${{ inputs.godot-base }}-${{ github.ref }}-${{ github.sha }} 30 | restore-keys: | 31 | ${{ inputs.cache-name }}-${{ inputs.godot-base }}-${{ github.ref }}-${{ github.sha }} 32 | ${{ inputs.cache-name }}-${{ inputs.godot-base }}-${{ github.ref }} 33 | ${{ inputs.cache-name }}-${{ inputs.godot-base }} -------------------------------------------------------------------------------- /.github/actions/setup-d3d12/action.yml: -------------------------------------------------------------------------------- 1 | name: Setup Direct3D 12 2 | 3 | 4 | description: Setup Direct3D 12 for Windows builds 5 | 6 | 7 | runs: 8 | using: "composite" 9 | 10 | steps: 11 | - name: Download Angle 12 | shell: bash 13 | run: | 14 | curl -fLO https://github.com/godotengine/godot-nir-static/releases/download/23.1.9-1/godot-nir-static-x86_64-msvc-release.zip 15 | 16 | unzip -d mesa_dir godot-nir-static-x86_64-msvc-release.zip 17 | 18 | ls -l -------------------------------------------------------------------------------- /.github/actions/setup-dependencies/action.yml: -------------------------------------------------------------------------------- 1 | name: Setup Python and SCONS 2 | 3 | 4 | description: Setup Python and install the pip version of SCONS 5 | 6 | 7 | inputs: 8 | python-version: 9 | description: The Python version to use 10 | default: "3.x" 11 | 12 | python-arch: 13 | description: The Python architecture 14 | default: "x64" 15 | 16 | 17 | runs: 18 | using: "composite" 19 | 20 | steps: 21 | # Use python 3.x release (works cross platform) 22 | - name: Set up Python 3.x 23 | uses: actions/setup-python@v5 24 | with: 25 | # Semantic version range syntax or exact version of a Python version 26 | python-version: ${{ inputs.python-version }} 27 | # Optional - x64 or x86 architecture, defaults to x64 28 | architecture: ${{ inputs.python-arch }} 29 | 30 | - name: Setup SCONS 31 | shell: bash 32 | run: | 33 | python -c "import sys; print(sys.version)" 34 | python -m pip install scons -------------------------------------------------------------------------------- /.github/actions/upload-artifact/action.yml: -------------------------------------------------------------------------------- 1 | name: Upload GodotSteam artifact 2 | 3 | 4 | description: Upload the GodotSteam artifact 5 | 6 | 7 | inputs: 8 | name: 9 | description: The artifact name 10 | default: "${{ github.job }}" 11 | 12 | path: 13 | description: The path to upload 14 | required: true 15 | default: "bin/" 16 | 17 | 18 | runs: 19 | using: "composite" 20 | 21 | steps: 22 | - name: Upload GodotSteam Artifact 23 | uses: actions/upload-artifact@v4 24 | with: 25 | name: ${{ inputs.name }} 26 | path: ${{ inputs.path }} 27 | overwrite: true 28 | retention-days: 14 -------------------------------------------------------------------------------- /.github/actions/upload-steam-redistributable/action.yaml: -------------------------------------------------------------------------------- 1 | name: Upload Steam Redistributable 2 | 3 | 4 | description: Upload the Steam redistributable file for packaging 5 | 6 | 7 | inputs: 8 | name: 9 | description: The artifact name 10 | required: true 11 | default: false 12 | 13 | path: 14 | description: Path to the redistributable 15 | required: true 16 | default: "" 17 | 18 | redist: 19 | description: Redistributable file's name 20 | required: true 21 | default: "steam_api.dll" 22 | 23 | 24 | runs: 25 | using: "composite" 26 | 27 | steps: 28 | - name: Upload Steam Redistributable 29 | uses: actions/upload-artifact@v4 30 | with: 31 | name: ${{ inputs.name }} 32 | path: ./modules/godotsteam_server/sdk/redistributable_bin/${{ inputs.path }}${{ inputs.redist }} 33 | overwrite: true 34 | retention-days: 14 -------------------------------------------------------------------------------- /.github/workflows/build-artifact-linux.yml: -------------------------------------------------------------------------------- 1 | on: 2 | workflow_call: 3 | inputs: 4 | godot_tag: 5 | required: true 6 | type: string 7 | 8 | godot_version: 9 | required: true 10 | type: string 11 | 12 | steamworks_sdk_tag: 13 | required: true 14 | type: string 15 | 16 | secrets: 17 | steamworks_sdk_repo: 18 | required: true 19 | 20 | steamworks_sdk_repo_token: 21 | required: true 22 | 23 | 24 | jobs: 25 | build-linux: 26 | runs-on: ubuntu-latest 27 | 28 | 29 | name: Linux ${{ matrix.name }} 30 | 31 | 32 | strategy: 33 | fail-fast: false 34 | matrix: 35 | include: 36 | - name: Editor and Templates 37 | cache-name: linux 38 | editor-name: godot.linuxbsd.editor.x86_64 39 | editor-name-new: godotsteam.${{ inputs.godot_version }}.editor.linux.x86_64 40 | debug-name: godot.linuxbsd.template_debug.x86_64 41 | debug-name-new: godotsteam.${{ inputs.godot_version }}.debug.template.linux.x86_64 42 | release-name: godot.linuxbsd.template_release.x86_64 43 | release-name-new: godotsteam.${{ inputs.godot_version }}.template.linux.x86_64 44 | 45 | 46 | steps: 47 | - uses: actions/checkout@v4 48 | 49 | # Download Godot to start 50 | - name: Download Godot 51 | uses: ./.github/actions/download-godot 52 | with: 53 | version: ${{ inputs.godot_tag }} 54 | 55 | # Download GodotSteam 56 | - name: Download GodotSteam 57 | uses: ./.github/actions/download-godotsteam 58 | 59 | # Download Steamworks SDK 60 | - name: Download Steamworks SDK 61 | uses: ./.github/actions/download-steamworks 62 | with: 63 | path: "steamworks" 64 | repository: ${{ secrets.steamworks_sdk_repo }} 65 | token: ${{ secrets.steamworks_sdk_repo_token }} 66 | ref: ${{ inputs.steamworks_sdk_tag }} 67 | 68 | # Setting up the Linux buildroot for older versions 69 | - name: Setup Linux Buildroot (x64_64) 70 | uses: ./.github/actions/prep-buildroot 71 | with: 72 | toolchain-name: "x86_64-godot-linux-gnu_sdk-buildroot" 73 | 74 | # Get that cache money 75 | - name: Setup Build Cache 76 | uses: ./.github/actions/setup-cache 77 | with: 78 | cache-name: ${{ matrix.cache-name }} 79 | godot-base: ${{ inputs.godot_tag }} 80 | continue-on-error: true 81 | 82 | # Setup Python and SCONS 83 | - name: Setup Python and SCONS 84 | uses: ./.github/actions/setup-dependencies 85 | 86 | # Compiling editor 87 | - name: Editor Compilation 88 | uses: ./.github/actions/build-godot 89 | with: 90 | buildroot: "${{ github.workspace }}/x86_64-godot-linux-gnu_sdk-buildroot/bin" 91 | sconsflags: bits=64 92 | platform: linuxbsd 93 | target: editor 94 | binary: ${{ matrix.editor-name }} 95 | export: ${{ matrix.editor-name-new }} 96 | 97 | - name: Upload Editor 98 | uses: ./.github/actions/upload-artifact 99 | with: 100 | name: ${{ matrix.cache-name }}-editor 101 | path: ./bin/${{ matrix.editor-name-new }} 102 | 103 | - name: Clear bin 104 | run: | 105 | rm -rf bin 106 | 107 | # Compiling templates 108 | - name: Debug Template Compilation (target=template_debug) 109 | uses: ./.github/actions/build-godot 110 | with: 111 | buildroot: "${{ github.workspace }}/x86_64-godot-linux-gnu_sdk-buildroot/bin" 112 | sconsflags: bits=64 113 | platform: linuxbsd 114 | target: template_debug 115 | binary: ${{ matrix.debug-name }} 116 | export: ${{ matrix.debug-name-new }} 117 | 118 | - name: Upload Debug Template 119 | uses: ./.github/actions/upload-artifact 120 | with: 121 | name: ${{ matrix.cache-name }}-debug-template 122 | path: ./bin/${{ matrix.debug-name-new }} 123 | 124 | - name: Release Template Compilation (target=template_release) 125 | uses: ./.github/actions/build-godot 126 | with: 127 | buildroot: "${{ github.workspace }}/x86_64-godot-linux-gnu_sdk-buildroot/bin" 128 | sconsflags: bits=64 debug_symbols=no 129 | platform: linuxbsd 130 | target: template_release 131 | binary: ${{ matrix.release-name }} 132 | export: ${{ matrix.release-name-new }} 133 | 134 | - name: Upload Release Template 135 | uses: ./.github/actions/upload-artifact 136 | with: 137 | name: ${{ matrix.cache-name }}-release-template 138 | path: ./bin/${{ matrix.release-name-new }} 139 | 140 | - name: Clear bin 141 | run: | 142 | rm -rf bin 143 | 144 | # Upload the Steam redistributable for packaging 145 | - name: Upload Linux Steam File 146 | uses: ./.github/actions/upload-steam-redistributable 147 | with: 148 | name: ${{ matrix.cache-name }}-steam 149 | path: linux64/ 150 | redist: libsteam_api.so -------------------------------------------------------------------------------- /.github/workflows/build-artifact-macos.yml: -------------------------------------------------------------------------------- 1 | on: 2 | workflow_call: 3 | inputs: 4 | godot_tag: 5 | required: true 6 | type: string 7 | 8 | godot_version: 9 | required: true 10 | type: string 11 | 12 | steamworks_sdk_tag: 13 | required: true 14 | type: string 15 | 16 | secrets: 17 | steamworks_sdk_repo: 18 | required: true 19 | 20 | steamworks_sdk_repo_token: 21 | required: true 22 | 23 | 24 | jobs: 25 | build-macos: 26 | runs-on: macos-latest 27 | 28 | 29 | name: Mac ${{ matrix.name }} 30 | 31 | 32 | env: 33 | STRIP: "strip -u -r" 34 | 35 | 36 | strategy: 37 | fail-fast: false 38 | matrix: 39 | include: 40 | - name: Editor and Templates 41 | cache-name: macos 42 | 43 | 44 | steps: 45 | - uses: actions/checkout@v4 46 | 47 | # Download Godot to start 48 | - name: Download Godot 49 | uses: ./.github/actions/download-godot 50 | with: 51 | version: ${{ inputs.godot_tag }} 52 | 53 | # Download GodotSteam Server 54 | - name: Download GodotSteam Server 55 | uses: ./.github/actions/download-godotsteam 56 | 57 | # Download Steamworks SDK 58 | - name: Download Steamworks SDK 59 | uses: ./.github/actions/download-steamworks 60 | with: 61 | path: "steamworks" 62 | repository: ${{ secrets.steamworks_sdk_repo }} 63 | token: ${{ secrets.steamworks_sdk_repo_token }} 64 | ref: ${{ inputs.steamworks_sdk_tag }} 65 | 66 | # Download and install Vulkan 67 | - name: Download Vulkan SDK 68 | uses: ./.github/actions/download-vulkan 69 | 70 | # Get that cache money 71 | - name: Setup Build Cache 72 | uses: ./.github/actions/setup-cache 73 | with: 74 | cache-name: ${{ matrix.cache-name }} 75 | godot-base: inputs.godot_tag 76 | continue-on-error: true 77 | 78 | # Setup Python and SCONS 79 | - name: Setup Python and SCONS 80 | uses: ./.github/actions/setup-dependencies 81 | 82 | # Compiling editors 83 | - name: Editor Compilation (arch=x86_64) 84 | uses: ./.github/actions/build-godot 85 | with: 86 | sconsflags: arch=x86_64 87 | platform: macos 88 | target: editor 89 | 90 | - name: Editor Compilation (arch=arm64) 91 | uses: ./.github/actions/build-godot 92 | with: 93 | sconsflags: arch=arm64 94 | platform: macos 95 | target: editor 96 | 97 | # Create Mac Universal package 98 | - name: Package Editor (arch=arm64, x86_64) 99 | uses: ./.github/actions/prep-macos 100 | with: 101 | target: 'editor' 102 | 103 | - name: Upload Editor 104 | uses: ./.github/actions/upload-artifact 105 | with: 106 | name: ${{ matrix.cache-name }}-editor 107 | path: bin/macos_editor.zip 108 | 109 | - name: Clear bin 110 | run: | 111 | rm -rf bin 112 | 113 | # Compiling templates 114 | - name: Debug Template Compilation (arch=x86_64, target=template_debug) 115 | uses: ./.github/actions/build-godot 116 | with: 117 | sconsflags: arch=x86_64 118 | platform: macos 119 | target: template_debug 120 | 121 | - name: Debug Template Compilation (arch=arm64, target=template_debug) 122 | uses: ./.github/actions/build-godot 123 | with: 124 | sconsflags: arch=arm64 debug_symbols=no 125 | platform: macos 126 | target: template_debug 127 | 128 | - name: Release Template Compilation (arch=x86_64, target=template_release) 129 | uses: ./.github/actions/build-godot 130 | with: 131 | sconsflags: arch=x86_64 132 | platform: macos 133 | target: template_release 134 | 135 | - name: Release template Compilation (arch=arm64, target=template_release) 136 | uses: ./.github/actions/build-godot 137 | with: 138 | sconsflags: arch=arm64 debug_symbols=no 139 | platform: macos 140 | target: template_release 141 | 142 | # Create Mac Universal package 143 | - name: Package Templates (arch=arm64, x86_64) 144 | uses: ./.github/actions/prep-macos 145 | with: 146 | target: 'templates' 147 | 148 | - name: Upload Mac Template App 149 | uses: ./.github/actions/upload-artifact 150 | with: 151 | name: macos-template-app 152 | path: bin/macos.zip 153 | 154 | - name: Clear bin 155 | run: | 156 | rm -rf bin -------------------------------------------------------------------------------- /.github/workflows/build-artifact-windows.yml: -------------------------------------------------------------------------------- 1 | on: 2 | workflow_call: 3 | inputs: 4 | godot_tag: 5 | required: true 6 | type: string 7 | 8 | godot_version: 9 | required: true 10 | type: string 11 | 12 | steamworks_sdk_tag: 13 | required: true 14 | type: string 15 | 16 | secrets: 17 | steamworks_sdk_repo: 18 | required: true 19 | 20 | steamworks_sdk_repo_token: 21 | required: true 22 | 23 | 24 | jobs: 25 | build-windows: 26 | runs-on: windows-latest 27 | 28 | 29 | name: Windows ${{ matrix.name }} 30 | 31 | 32 | strategy: 33 | fail-fast: false 34 | matrix: 35 | include: 36 | - name: Editor and Templates (64-bit) 37 | bits: x86_64 38 | cache-name: windows64 39 | editor-name: godot.windows.editor.x86_64.exe 40 | editor-name-new: godotsteam.${{ inputs.godot_version }}.editor.windows.64.exe 41 | debug-name: godot.windows.template_debug.x86_64.exe 42 | debug-name-new: godotsteam.${{ inputs.godot_version }}.debug.template.windows.64.exe 43 | release-name: godot.windows.template_release.x86_64.exe 44 | release-name-new: godotsteam.${{ inputs.godot_version }}.template.windows.64.exe 45 | steam-redist: steam_api64.dll 46 | steam-redist-bin: win64/ 47 | steam-redist-bits: 64 48 | 49 | - name: Editor and Templates (32-bit) 50 | bits: x86_32 51 | cache-name: windows32 52 | editor-name: godot.windows.editor.x86_32.exe 53 | editor-name-new: godotsteam.${{ inputs.godot_version }}.editor.windows.32.exe 54 | debug-name: godot.windows.template_debug.x86_32.exe 55 | debug-name-new: godotsteam.${{ inputs.godot_version }}.debug.template.windows.32.exe 56 | release-name: godot.windows.template_release.x86_32.exe 57 | release-name-new: godotsteam.${{ inputs.godot_version }}.template.windows.32.exe 58 | steam-redist: steam_api.dll 59 | steam-redist-bin: "" 60 | steam-redist-bits: 32 61 | 62 | 63 | steps: 64 | - uses: actions/checkout@v4 65 | 66 | # Download Godot to start 67 | - name: Download Godot 68 | uses: ./.github/actions/download-godot 69 | with: 70 | version: ${{ inputs.godot_tag }} 71 | 72 | # Preempt the missing bin folder 73 | - name: Preempt missing Bin Folder 74 | shell: bash 75 | run: | 76 | mkdir ./bin/ 77 | 78 | # Download GodotSteam Server 79 | - name: Download GodotSteam Server 80 | uses: ./.github/actions/download-godotsteam 81 | 82 | # Download Steamworks SDK 83 | - name: Download Steamworks SDK 84 | uses: ./.github/actions/download-steamworks 85 | with: 86 | path: "steamworks" 87 | repository: ${{ secrets.steamworks_sdk_repo }} 88 | token: ${{ secrets.steamworks_sdk_repo_token }} 89 | ref: ${{ inputs.steamworks_sdk_tag }} 90 | 91 | # Get that cache money 92 | - name: Setup Build Cache 93 | uses: ./.github/actions/setup-cache 94 | with: 95 | cache-name: ${{ matrix.cache-name }} 96 | godot-base: inputs.godot_tag 97 | continue-on-error: true 98 | 99 | # Setup Python and SCONS 100 | - name: Setup Python and SCONS 101 | uses: ./.github/actions/setup-dependencies 102 | 103 | # Compiling editor 104 | - name: ${{ matrix.bits }}-bit Editor Compilation 105 | uses: ./.github/actions/build-godot 106 | with: 107 | sconsflags: arch=${{ matrix.bits }} 108 | platform: windows 109 | target: editor 110 | binary: ${{ matrix.editor-name }} 111 | export: ${{ matrix.editor-name-new }} 112 | 113 | - name: Upload ${{ matrix.bits }}-bit Editor 114 | uses: ./.github/actions/upload-artifact 115 | with: 116 | name: ${{ matrix.cache-name }}-editor 117 | path: ./bin/${{ matrix.editor-name-new }} 118 | 119 | - name: Clear bin 120 | shell: bash 121 | run: | 122 | rm -rf bin 123 | 124 | # Compiling templates 125 | - name: ${{ matrix.bits }}-bit Debug Template Compilation (target=template_debug) 126 | uses: ./.github/actions/build-godot 127 | with: 128 | sconsflags: arch=${{ matrix.bits }} 129 | platform: windows 130 | target: template_debug 131 | binary: ${{ matrix.debug-name }} 132 | export: ${{ matrix.debug-name-new }} 133 | 134 | - name: Upload ${{ matrix.bits }}-bit Debug Template 135 | uses: ./.github/actions/upload-artifact 136 | with: 137 | name: ${{ matrix.cache-name }}-debug-template 138 | path: ./bin/${{ matrix.debug-name-new }} 139 | 140 | - name: ${{ matrix.bits }}-bit Release Template Compilation (target=template_release) 141 | uses: ./.github/actions/build-godot 142 | with: 143 | sconsflags: arch=${{ matrix.bits }} debug_symbols=no 144 | platform: windows 145 | target: template_release 146 | binary: ${{ matrix.release-name }} 147 | export: ${{ matrix.release-name-new }} 148 | 149 | - name: Upload ${{ matrix.bits }}-bit Release Template 150 | uses: ./.github/actions/upload-artifact 151 | with: 152 | name: ${{ matrix.cache-name }}-release-template 153 | path: ./bin/${{ matrix.release-name-new }} 154 | 155 | - name: Clear bin 156 | shell: bash 157 | run: | 158 | rm -rf bin 159 | 160 | # Upload the Steam redistributable for packaging 161 | - name: Upload Windows ${{ matrix.steam-redist-bits}}-bit Steam File 162 | uses: ./.github/actions/upload-steam-redistributable 163 | with: 164 | name: windows${{ matrix.steam-redist-bits }}-steam 165 | path: ${{ matrix.steam-redist-bin }} 166 | redist: ${{ matrix.steam-redist }} 167 | -------------------------------------------------------------------------------- /.github/workflows/build-releases.yml: -------------------------------------------------------------------------------- 1 | name: Build Releases 2 | 3 | 4 | on: 5 | workflow_dispatch: 6 | inputs: 7 | steamworks_sdk_tag: 8 | description: 'Steamworks SDK Github tag:' 9 | required: true 10 | type: string 11 | default: 'sdk-1.62' 12 | 13 | godot_tag: 14 | description: 'Godot Github tag:' 15 | required: true 16 | type: string 17 | default: '4.4.1-stable' 18 | 19 | godotsteam_version: 20 | description: 'GodotSteam Server version number:' 21 | required: true 22 | type: string 23 | default: '4.6' 24 | 25 | 26 | jobs: 27 | env-setup: 28 | uses: ./.github/workflows/setup-env.yml 29 | with: 30 | godot_tag: ${{ inputs.godot_tag }} 31 | godotsteam_version: ${{ inputs.godotsteam_version }} 32 | steamworks_sdk_tag: ${{ inputs.steamworks_sdk_tag }} 33 | 34 | 35 | build-linux: 36 | needs: [env-setup] 37 | uses: ./.github/workflows/build-artifact-linux.yml 38 | with: 39 | godot_tag: ${{ inputs.godot_tag }} 40 | godot_version: ${{ needs.env-setup.outputs.godot_version }} 41 | steamworks_sdk_tag: ${{ inputs.steamworks_sdk_tag }} 42 | secrets: 43 | steamworks_sdk_repo: ${{ secrets.STEAMWORKS_SDK_REPO }} 44 | steamworks_sdk_repo_token: ${{ secrets.STEAMWORKS_SDK_REPO_TOKEN }} 45 | 46 | 47 | create-linux-bundle: 48 | needs: [env-setup, build-linux] 49 | uses: ./.github/workflows/create-bundle.yml 50 | with: 51 | artifact_type: linux 52 | platform: 'Linux' 53 | zip_prefix: linux64 54 | zip_tag: ${{ needs.env-setup.outputs.zip_tag }} 55 | 56 | 57 | build-windows: 58 | needs: [env-setup] 59 | uses: ./.github/workflows/build-artifact-windows.yml 60 | with: 61 | godot_tag: ${{ inputs.godot_tag }} 62 | godot_version: ${{ needs.env-setup.outputs.godot_version }} 63 | steamworks_sdk_tag: ${{ inputs.steamworks_sdk_tag }} 64 | secrets: 65 | steamworks_sdk_repo: ${{ secrets.STEAMWORKS_SDK_REPO }} 66 | steamworks_sdk_repo_token: ${{ secrets.STEAMWORKS_SDK_REPO_TOKEN }} 67 | 68 | 69 | create-windows32-bundle: 70 | needs: [env-setup, build-windows] 71 | uses: ./.github/workflows/create-bundle.yml 72 | with: 73 | artifact_type: windows32 74 | platform: 'Windows32' 75 | zip_prefix: win32 76 | zip_tag: ${{ needs.env-setup.outputs.zip_tag }} 77 | 78 | 79 | create-windows64-bundle: 80 | needs: [env-setup, build-windows] 81 | uses: ./.github/workflows/create-bundle.yml 82 | with: 83 | artifact_type: windows64 84 | platform: 'Windows64' 85 | zip_prefix: win64 86 | zip_tag: ${{ needs.env-setup.outputs.zip_tag }} 87 | 88 | 89 | build-macos: 90 | needs: [env-setup] 91 | uses: ./.github/workflows/build-artifact-macos.yml 92 | with: 93 | godot_tag: ${{ inputs.godot_tag }} 94 | godot_version: ${{ needs.env-setup.outputs.godot_version }} 95 | steamworks_sdk_tag: ${{ inputs.steamworks_sdk_tag }} 96 | secrets: 97 | steamworks_sdk_repo: ${{ secrets.STEAMWORKS_SDK_REPO }} 98 | steamworks_sdk_repo_token: ${{ secrets.STEAMWORKS_SDK_REPO_TOKEN }} 99 | 100 | 101 | create-macos-bundle: 102 | needs: [env-setup, build-macos] 103 | uses: ./.github/workflows/create-bundle.yml 104 | with: 105 | artifact_type: macos 106 | platform: 'MacOS' 107 | zip_prefix: macos 108 | zip_tag: ${{ needs.env-setup.outputs.zip_tag }} 109 | 110 | 111 | create-template-bundle: 112 | needs: [env-setup, build-linux, build-windows, build-macos] 113 | uses: ./.github/workflows/create-bundle-templates.yml 114 | with: 115 | is_mono: false 116 | zip_tag: ${{ needs.env-setup.outputs.zip_tag }} -------------------------------------------------------------------------------- /.github/workflows/create-bundle-templates.yml: -------------------------------------------------------------------------------- 1 | on: 2 | workflow_call: 3 | inputs: 4 | is_mono: 5 | required: true 6 | type: boolean 7 | 8 | zip_tag: 9 | required: true 10 | type: string 11 | 12 | 13 | jobs: 14 | create-template-bundle: 15 | runs-on: ubuntu-latest 16 | 17 | name: Create Template Bundle 18 | 19 | steps: 20 | - uses: actions/checkout@v4 21 | 22 | # Windows templates and Steam redistributables 23 | - name: Download Windows 64-bit Release Template 24 | if: ${{ inputs.is_mono != true }} 25 | uses: actions/download-artifact@v4 26 | with: 27 | name: windows64-release-template 28 | path: files 29 | 30 | - name: Download Windows 32-bit Release Template 31 | if: ${{ inputs.is_mono != true }} 32 | uses: actions/download-artifact@v4 33 | with: 34 | name: windows32-release-template 35 | path: files 36 | 37 | - name: Download Windows 64-bit Debug Template 38 | if: ${{ inputs.is_mono != true }} 39 | uses: actions/download-artifact@v4 40 | with: 41 | name: windows64-debug-template 42 | path: files 43 | 44 | - name: Download Windows 32-bit Debug Template 45 | if: ${{ inputs.is_mono != true }} 46 | uses: actions/download-artifact@v4 47 | with: 48 | name: windows32-debug-template 49 | path: files 50 | 51 | - name: Download Windows 64-bit Steam Redistributable 52 | if: ${{ inputs.is_mono != true }} 53 | uses: actions/download-artifact@v4 54 | with: 55 | name: windows64-steam 56 | path: files 57 | 58 | - name: Download Windows 32-bit Steam Redistributable 59 | if: ${{ inputs.is_mono != true }} 60 | uses: actions/download-artifact@v4 61 | with: 62 | name: windows32-steam 63 | path: files 64 | 65 | # Linux templates and Steam redistributable 66 | - name: Download Linux ${{ inputs.is_mono && 'Mono ' || '' }}Release Template 67 | uses: actions/download-artifact@v4 68 | with: 69 | name: linux-${{ inputs.is_mono && 'mono-' || '' }}release-template 70 | path: files 71 | 72 | - name: Download Linux ${{ inputs.is_mono && 'Mono ' || '' }}Debug Template 73 | uses: actions/download-artifact@v4 74 | with: 75 | name: linux-${{ inputs.is_mono && 'mono-' || '' }}debug-template 76 | path: files 77 | 78 | - name: Download Linux Steam Redistributable 79 | uses: actions/download-artifact@v4 80 | with: 81 | name: linux-steam 82 | path: files 83 | 84 | # Mac templates 85 | - name: Download MacOS ${{ inputs.is_mono && 'Mono ' || '' }}Template App 86 | uses: actions/download-artifact@v4 87 | with: 88 | name: macos${{ inputs.is_mono && '-mono' || '' }}-template-app 89 | path: files 90 | 91 | - name: Create ${{ inputs.is_mono && 'Mono ' || '' }}Template Bundle 92 | run: | 93 | zip -j godotsteam-${{ inputs.zip_tag }}-${{ inputs.is_mono && 'mono-' || '' }}templates.zip files/* 94 | 95 | - name: Upload ${{ inputs.is_mono && 'Mono ' || '' }}Template Bundle Artifact 96 | uses: ./.github/actions/upload-artifact 97 | with: 98 | name: godotsteam-${{ inputs.zip_tag }}-${{ inputs.is_mono && 'mono-' || '' }}templates.zip 99 | path: godotsteam-${{ inputs.zip_tag }}-${{ inputs.is_mono && 'mono-' || '' }}templates.zip -------------------------------------------------------------------------------- /.github/workflows/create-bundle.yml: -------------------------------------------------------------------------------- 1 | on: 2 | workflow_call: 3 | inputs: 4 | artifact_type: 5 | required: true 6 | type: string 7 | 8 | platform: 9 | required: true 10 | type: string 11 | 12 | zip_prefix: 13 | required: true 14 | type: string 15 | 16 | zip_tag: 17 | required: true 18 | type: string 19 | 20 | 21 | jobs: 22 | create-bundle: 23 | runs-on: ubuntu-latest 24 | 25 | name: Create ${{ inputs.platform }} Bundle 26 | 27 | steps: 28 | - uses: actions/checkout@v4 29 | 30 | - name: Download ${{ inputs.platform }} Editor 31 | uses: actions/download-artifact@v4 32 | with: 33 | name: ${{ inputs.artifact_type }}-editor 34 | path: files 35 | 36 | - name: Download ${{ inputs.platform }} Release Template 37 | if: ${{ inputs.platform != 'MacOS' }} 38 | uses: actions/download-artifact@v4 39 | with: 40 | name: ${{ inputs.artifact_type }}-release-template 41 | path: files 42 | 43 | - name: Download ${{ inputs.platform }} Debug Template 44 | if: ${{ inputs.platform != 'MacOS' }} 45 | uses: actions/download-artifact@v4 46 | with: 47 | name: ${{ inputs.artifact_type }}-debug-template 48 | path: files 49 | 50 | - name: Download ${{ inputs.platform }} Template App 51 | if: ${{ inputs.platform == 'MacOS' }} 52 | uses: actions/download-artifact@v4 53 | with: 54 | name: ${{ inputs.artifact_type }}-template-app 55 | path: files 56 | 57 | - name: Download ${{ inputs.platform }} Steam Redistributable 58 | if: ${{ inputs.platform != 'MacOS' }} 59 | uses: actions/download-artifact@v4 60 | with: 61 | name: ${{ inputs.artifact_type }}-steam 62 | path: files 63 | 64 | - name: Create Mac Bundle 65 | if: ${{ inputs.platform == 'MacOS' }} 66 | run: | 67 | ls -la files/ 68 | unzip files/macos_editor.zip -d files/ 69 | zip -j ${{ inputs.zip_prefix }}-${{ inputs.zip_tag }}.zip files/* 70 | 71 | - name: Create ${{ inputs.platform }} Bundle 72 | if: ${{ inputs.platform != 'MacOS' }} 73 | run: | 74 | ls -la files/ 75 | zip -j ${{ inputs.zip_prefix }}-${{ inputs.zip_tag }}.zip files/* 76 | 77 | - name: Upload ${{ inputs.platform }} Bundle Artifact 78 | uses: ./.github/actions/upload-artifact 79 | with: 80 | name: ${{ inputs.zip_prefix }}-${{ inputs.zip_tag }}.zip 81 | path: ${{ inputs.zip_prefix }}-${{ inputs.zip_tag }}.zip -------------------------------------------------------------------------------- /.github/workflows/setup-env.yml: -------------------------------------------------------------------------------- 1 | on: 2 | workflow_call: 3 | inputs: 4 | godot_tag: 5 | required: true 6 | type: string 7 | 8 | godotsteam_version: 9 | required: true 10 | type: string 11 | 12 | steamworks_sdk_tag: 13 | required: true 14 | type: string 15 | 16 | 17 | outputs: 18 | godot_version: 19 | description: The shortened Godot version for file names 20 | value: ${{ jobs.env-setup.outputs.godot_version }} 21 | 22 | zip_tag: 23 | description: The full zip tag for releases 24 | value: ${{ jobs.env-setup.outputs.zip_tag }} 25 | 26 | 27 | jobs: 28 | env-setup: 29 | runs-on: ubuntu-latest 30 | 31 | name: Setup ENV Variables 32 | 33 | outputs: 34 | godot_version: ${{ steps.set_godot_version.outputs.godot_version }} 35 | zip_tag: ${{ steps.set_zip_tag.outputs.zip_tag }} 36 | 37 | steps: 38 | - name: Set The Zip Tag For Packaging 39 | id: set_zip_tag 40 | run: | 41 | sdktag=${{ inputs.steamworks_sdk_tag }} 42 | sdktag=${sdktag//[.]/} 43 | gsver=${{ inputs.godotsteam_version }} 44 | gtag=${{ inputs.godot_tag }} 45 | gtag=${gtag//[.]/} 46 | tag=g${gtag%-*}-s${sdktag:0-3}-gss${gsver//[.]/} 47 | echo "Zip tag: ${tag}" 48 | echo "zip_tag=${tag}" >> $GITHUB_OUTPUT 49 | 50 | - name: Set The Godot Version For Packaging 51 | id: set_godot_version 52 | run: | 53 | gv=${{ inputs.godot_tag }} 54 | gv=${gv//[.]/} 55 | gv=${gv%-*} 56 | echo "Godot version: ${gv}" 57 | echo "godot_version=${gv}" >> $GITHUB_OUTPUT -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # C/C++ generated 2 | *.a 3 | *.ax 4 | *.d 5 | *.dll 6 | *.lib 7 | *.lo 8 | *.o 9 | *.os 10 | *.ox 11 | *.Plo 12 | *.so 13 | 14 | # Python generated 15 | __pycache__/ 16 | *.pyc 17 | 18 | # Steam SDK 19 | sdk/* 20 | !sdk/put SDK here 21 | 22 | # Doxygen 23 | doxygen/ 24 | 25 | 26 | # Files built by Visual Studio 27 | *_i.c 28 | *_p.c 29 | *_h.h 30 | *.ilk 31 | *.meta 32 | *.obj 33 | *.iobj 34 | *.pch 35 | *.pdb 36 | *.ipdb 37 | *.pgc 38 | *.pgd 39 | *.rsp 40 | *.sbr 41 | *.tlb 42 | *.tli 43 | *.tlh 44 | *.tmp 45 | *.tmp_proj 46 | *_wpftmp.csproj 47 | *.log 48 | *.tlog 49 | *.vspscc 50 | *.vssscc 51 | .builds 52 | *.pidb 53 | *.svclog 54 | *.scc 55 | 56 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # GodotSteam Server for Godot Engine 4.x | Community Edition 2 | An ecosystem of tools for [Godot Engine](https://godotengine.org) and [Valve's Steam](https://store.steampowered.com). For the Windows, Linux, and Mac platforms. 3 | 4 | Additional Flavors 5 | --- 6 | Pre-Compiles | Plug-ins | Server | Examples 7 | --- | --- | --- | --- 8 | [Godot 2.x](https://github.com/GodotSteam/GodotSteam/tree/godot2) | [GDNative](https://github.com/GodotSteam/GodotSteam/tree/gdnative) | [Server 3.x](https://github.com/GodotSteam/GodotSteam-Server/tree/godot3) | [Skillet](https://github.com/GodotSteam/Skillet) 9 | [Godot 3.x](https://github.com/GodotSteam/GodotSteam/tree/godot3) | [GDExtension](https://github.com/GodotSteam/GodotSteam/tree/gdextension) | [Server 4.x](https://github.com/GodotSteam/GodotSteam-Server/tree/godot4) | --- 10 | [Godot 4.x](https://github.com/GodotSteam/GodotSteam/tree/godot4) | --- | [GDNative](https://github.com/GodotSteam/GodotSteam-Server/tree/gdnative) | --- 11 | [MultiplayerPeer](https://github.com/GodotSteam/MultiplayerPeer)| --- | [GDExtension](https://github.com/GodotSteam/GodotSteam-Server/tree/gdextension) | --- 12 | 13 | Documentation 14 | --- 15 | [Documentation is available here](https://godotsteam.com/). You can also check out the Search Help section inside Godot Engine after compiling it with GodotSteam Server. 16 | 17 | Feel free to chat with us about GodotSteam or ask for assistance on the [Discord server](https://discord.gg/SJRSq6K). 18 | 19 | Donate 20 | --- 21 | Pull-requests are the best way to help the project out but you can also donate through [Github Sponsors](https://github.com/sponsors/Gramps)! 22 | 23 | Current Build 24 | --- 25 | You can [download pre-compiled versions of this repo here](https://github.com/GodotSteam/GodotSteam-Server/releases). 26 | 27 | **Version 4.6 Changes** 28 | - Added: new functions to UGC 29 | - Changed: `getNumSubscribedItems` and `getSubscribedItems` now take include_locally_disabled argument 30 | 31 | [You can read more change-logs here](https://godotsteam.com/changelog/server4/). 32 | 33 | Compatibility 34 | --- 35 | While rare, sometimes Steamworks SDK updates will break compatilibity with older GodotSteam versions. Any compatability breaks are noted below. API files (dll, so, dylib) _should_ still work for older version. 36 | 37 | Steamworks SDK Version | GodotSteam Version 38 | ---|--- 39 | 1.59 or newer | 4.2 or newer 40 | 1.58a or older | 4.1 or older 41 | 42 | Versions of GodotSteam that have compatibility breaks introduced. 43 | 44 | GodotSteam Version | Broken Compatibility 45 | ---|--- 46 | 4.3| Networking identity system removed, replaced with Steam IDs 47 | 4.4 | sendMessages returns an Array 48 | 4.5.1 | getItemDefinitionProperty return a dictionary 49 | 50 | Known Issues 51 | --- 52 | - Steam overlay will not work when running your game from the editor if you are using Forward+ as the renderer. It does work with Compatibility though. Your exported project will work perfectly fine in the Steam client, however. 53 | - When self-compiling, **do not** use MinGW as it will cause crashes. 54 | 55 | Quick How-To 56 | --- 57 | For complete instructions on how to build the Godot 4.x version of GodotSteam Server from scratch, [please refer to our documentation's 'How-To Modules' section.](https://godotsteam.com/howto/server/) It will have the most up-to-date information. 58 | 59 | Alternatively, you can just [download the pre-compiled versions in our Releases section](https://github.com/GodotSteam/GodotSteam-Server/releases) and skip compiling it yourself! 60 | 61 | License 62 | --- 63 | MIT license 64 | -------------------------------------------------------------------------------- /SCsub: -------------------------------------------------------------------------------- 1 | # SCsub 2 | Import('env') 3 | 4 | module_path = Dir('.').srcnode().abspath 5 | 6 | env.Append(CPPPATH=["%s/sdk/public/" % module_path]) 7 | 8 | # If compiling Linux 9 | if env["platform"]== "linuxbsd" or env["platform"] == "server": 10 | env.Append(LIBS=["steam_api"]) 11 | env.Append(RPATH=env.Literal('\\$$ORIGIN')) 12 | if env['arch'] == "x86_32": 13 | env.Append(LIBPATH=["%s/sdk/redistributable_bin/linux32" % module_path]) 14 | else: # 64 bit 15 | env.Append(LIBPATH=["%s/sdk/redistributable_bin/linux64" % module_path]) 16 | 17 | # If compiling Windows 18 | elif env["platform"] == "windows": 19 | # Mostly VisualStudio 20 | if env["CC"] == "cl": 21 | if env['arch'] == "x86_32": 22 | env.Append(LINKFLAGS=["steam_api.lib"]) 23 | env.Append(LIBPATH=["%s/sdk/redistributable_bin" % module_path]) 24 | else: # 64 bit 25 | env.Append(LINKFLAGS=["steam_api64.lib"]) 26 | env.Append(LIBPATH=["%s/sdk/redistributable_bin/win64" % module_path]) 27 | 28 | # Mostly "GCC" 29 | else: 30 | if env['arch'] == "x86_32": 31 | env.Append(LIBS=["steam_api"]) 32 | env.Append(LIBPATH=["%s/sdk/redistributable_bin" % module_path]) 33 | else: # 64 bit 34 | env.Append(LIBS=["steam_api64"]) 35 | env.Append(LIBPATH=["%s/sdk/redistributable_bin/win64" % module_path]) 36 | 37 | # If compiling OSX 38 | elif env["platform"] == "macos": 39 | env.Append(LIBS=["steam_api"]) 40 | env.Append(LIBPATH=['%s/sdk/redistributable_bin/osx' % module_path]) 41 | 42 | env.add_source_files(env.modules_sources,"*.cpp") 43 | -------------------------------------------------------------------------------- /config.py: -------------------------------------------------------------------------------- 1 | def can_build(env, platform): 2 | return platform=="linuxbsd" or platform=="windows" or platform=="osx" or platform=="server" 3 | 4 | def configure(env): 5 | pass 6 | 7 | def get_doc_classes(): 8 | return [ 9 | "SteamServer", 10 | ] 11 | 12 | def get_doc_path(): 13 | return "doc_classes" -------------------------------------------------------------------------------- /contributing.md: -------------------------------------------------------------------------------- 1 | # Contributing To GodotSteam 2 | 3 | If you are interested in helping work on GodotSteam, here are the major repositories for the project. 4 | 5 | - [Main Project](https://github.com/GodotSteam/GodotSteam/) 6 | - [Server](https://github.com/GodotSteam/GodotSteam-Server/) 7 | - [MultiplayerPeer](https://github.com/GodotSteam/MultiplayerPeer/) 8 | - [Documentation](https://github.com/GodotSteam/GodotSteam-Docs/) 9 | - [Skillet](https://github.com/GodotSteam/Skillet) 10 | 11 | ## Modifying Code 12 | 13 | One of the best way to help with the project is code contribution. [We keep a somewhat up-to-date list of what needs done in our To-Do list on Github.](https://github.com/orgs/GodotSteam/projects/3) If you are making rather large changes, it is advised you [contact us on Discord](https://discord.gg/SJRSq6K) or open a [discussion in Github Discussions](https://github.com/GodotSteam/GodotSteam/discussions) about it before spending a lot of time rewriting things that might need more rewriting. 14 | 15 | ### Code Styles 16 | 17 | When modifying the code to any of GodotSteam branches, there is a convention we try to keep. Honestly, it is a hodge-podge of styles: 18 | 19 | - [x] All Steamworks function names retain Valve's style except the first letter is lowercase. Example: SetAchievements = setAchievements 20 | - [x] Use snake-case for all other function names; similar to how Godot does it. 21 | - [x] Use snake-case for all signal names, variables, and arguments. 22 | 23 | ### Compile It 24 | 25 | Most importantly, we ask that you make sure your code compiles before submitting a pull-request. Run a quick: 26 | 27 | **Godot 2.x, 3.x** 28 | 29 | scons platform=[your platform] production=yes tools=yes target=release_debug 30 | 31 | **Godot 4.x** 32 | 33 | scons platform=[your platform] tools=yes target=editor 34 | 35 | ## Modifying Docs 36 | 37 | Feel free to make any edits you think are needed: CSS changes, new tutorials, extra links, fixes for functions or signals, or even adding your own game to the "Games Using GodotSteam" list. Any large changes should be discussed by the same routes as major code changes. 38 | 39 | The documentation uses [MKDocs](https://www.mkdocs.org/) and [Material For MKDocs](https://squidfunk.github.io/mkdocs-material/); if you want to set up a local version of the docs to see your updates before pushing to repo, you will need to install those. 40 | 41 | Try to make any new or edited content fit the same styles as the other pages. But if you have an eye for design and think of something better, please share that too! 42 | 43 | ## Modifying Skillet 44 | 45 | [Our open-source, free-to-play game Skillet](https://store.steampowered.com/app/3013040/Skillet/) will be launching on Steam this year. We hope to get community support for adding more stuff and bug fixing. Since it is meant to be a fun and educational resource, we want to treat the code contributions similar. 46 | 47 | Please try to keep most of the standard Godot conventions, use snake_case, double linebreak between functions, etc. 48 | 49 | Don't shy away from explaining things in the comments. Since these are meant for people to learn and figure out how Steamworks functions, definitely pack in any information you think necessary. 50 | 51 | ## Thank You 52 | 53 | Yes, a huge thank you for helping out with the project in any and all ways: contributions, donations, or just supporting your fellow developers! -------------------------------------------------------------------------------- /contributors.md: -------------------------------------------------------------------------------- 1 | # GodotSteam Contributors 2 | 3 | Here is a list of all the great contributors, both those who have provided code for GodotSteam through pull requests and/or updates to our documentation. 4 | 5 | You can also contribute to the GodotSteam project by submitting pull requests to any of your repositories; check the contributing.md or [our documentation at https://godotsteam.com](https://godotsteam.com). 6 | 7 | ## Code and Docs Contributors 8 | 9 | - AdriaandeJongh 10 | - aesereht 11 | - AlexHoratio 12 | - Antokolos 13 | - ArchiRocksTech 14 | - Avencherus 15 | - bearlikelion 16 | - blaze-the-star 17 | - bobsayshilol 18 | - brogan89 19 | - butlersrepos 20 | - cbinners 21 | - ClockRate 22 | - coffeebeats 23 | - ConnorBP 24 | - craftablescience 25 | - dannroda 26 | - DaveThornton 27 | - Deozaan 28 | - dglwilkins 29 | - dsnopek 30 | - EIREXE 31 | - endaye 32 | - eviltrout 33 | - Fischer96 34 | - Foxushka 35 | - freehuntx 36 | - Frostings 37 | - gkwaerp 38 | - greenfox1505 39 | - guimarca 40 | - Handagotes 41 | - Hangman 42 | - hhyyrylainen 43 | - Hung-Fan Liu 44 | - IlyaStuurFedorov 45 | - ismailgamedev 46 | - jacobcoughenour 47 | - JDare 48 | - jeremybeier 49 | - JimmyJohn1026 50 | - jolexxa 51 | - Jordan Rushing 52 | - Jupither 53 | - karmaral 54 | - Kliiyu 55 | - kongo555 56 | - Kryx-Ikyr 57 | - hungFI 58 | - larsvanhilten 59 | - Lunatix89 60 | - marcelofg55 61 | - MartinAppDev 62 | - mashumafi 63 | - MichaelBelousov 64 | - Michael Janeway 65 | - mikix 66 | - mkckr0 67 | - mynameiswhm 68 | - obscurelyme 69 | - [Oleksii Zaremskyi](https://savelife.in.ua/) 70 | - P-Kelley 71 | - pixelriot 72 | - polyrain 73 | - profour 74 | - qarmin 75 | - Ralian 76 | - raulsntos 77 | - rebane2001 78 | - rsomers1998 79 | - SapphireMH 80 | - sepTN 81 | - shuriken1812 82 | - SlejmUr 83 | - StephenCathcart 84 | - Straven35 85 | - Structed 86 | - [Tamper2](https://honkofheroes.com/) 87 | - TCROC 88 | - Toi Lanh 89 | - TriMay 90 | - troykinsella 91 | - xsellier 92 | - vaartis 93 | - WAFFO 94 | - wpbirney 95 | - VictorienXP 96 | - yeonghoey 97 | - ynot01 98 | - Yolwoocle 99 | - Zee Weasel 100 | - zegenie -------------------------------------------------------------------------------- /donors.md: -------------------------------------------------------------------------------- 1 | # Donors and Benefactors 2 | 3 | Here is a list of all our amazing current and past donors who have financially carried this project over the years. If you find the project useful, [consider joining them at Github Sponsors.](https://github.com/sponsors/Gramps) 4 | 5 | GodotSteam wouldn't keep growing without help from cool folks like these: 6 | 7 | ## Current Donors List 8 | 9 | - [Mauricio Castillo](https://bsky.app/profile/maurimo.dev) 10 | - [René Habermann](https://bippinbits.com/) 11 | - [PurpleMossCollectors](http://purplemosscollectors.com/) 12 | 13 | - Dreamfarer 14 | - HephepTeam 15 | - InvoxiPlayGames 16 | - Jez 17 | - Johannes Ebner 18 | - Justo Delgado 19 | - Kat Hirsch 20 | - LucasBBX 21 | - Michael Macha 22 | - Perroboc 23 | - [RPG in a Box](https://rpginabox.com/) 24 | - SaffronStreams 25 | - Thorsten Schleinzer 26 | - VestedGrammar 27 | - xaviervx 28 | - WAFFO 29 | - zikes 30 | - And two secret sponsors 31 | 32 | ## Past Donors List 33 | 34 | - AndreaJens 35 | - [Andrej Skenderija](https://skenda.me/) 36 | - Andrew Yates 37 | - ArchWitch Games 38 | - Avencherus 39 | - Charles Maddock 40 | - columbiacolles 41 | - d4rkd0s 42 | - Dana P 43 | - David McHale 44 | - David Wery 45 | - David-AW 46 | - DeadlyEssence01 47 | - Dillon Joel Steyl 48 | - Don Piano 49 | - eflake 50 | - Elgenzay 51 | - Hannes Breuer 52 | - hardtrip 53 | - Hung-Fan Liu 54 | - InkRobert 55 | - isikdos 56 | - Jakub Nowak 57 | - [Jayden Sipe](https://jaydensipe.github.io/) 58 | - Jeroen Heijmans 59 | - John Flickinger 60 | - John H Wright 61 | - Josef Attenberger 62 | - Josh Culp 63 | - Kent Jofur 64 | - Kodera Software 65 | - Martin Eigel 66 | - Mike King 67 | - Mikk Maasik 68 | - MinmoTech 69 | - MudbuG 70 | - Nicholas Orlowski 71 | - pixelriot 72 | - Ranoller 73 | - Ricardo Sernaglia 74 | - Ronan Docherty 75 | - RosenX 76 | - Shine Right Studio 77 | - Siddhant Chereddy 78 | - Simone Mändl 79 | - TrampolineTales 80 | - Wonderful Days Studio 81 | - Zee Weasel 82 | - Zeo Löwenhielm -------------------------------------------------------------------------------- /godotsteam_server.h: -------------------------------------------------------------------------------- 1 | //===========================================================================// 2 | // GodotSteam - godotsteam_server.h 3 | //===========================================================================// 4 | // 5 | // Copyright (c) 2015-Current | GP Garcia and Contributors (view contributors.md) 6 | // 7 | // Permission is hereby granted, free of charge, to any person obtaining a copy 8 | // of this software and associated documentation files (the "Software"), to deal 9 | // in the Software without restriction, including without limitation the rights 10 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 11 | // copies of the Software, and to permit persons to whom the Software is 12 | // furnished to do so, subject to the following conditions: 13 | // 14 | // The above copyright notice and this permission notice shall be included in all 15 | // copies or substantial portions of the Software. 16 | // 17 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 18 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 20 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 21 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 22 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 23 | // SOFTWARE. 24 | // 25 | //===========================================================================// 26 | 27 | #ifndef GODOTSTEAM_SERVER_H 28 | #define GODOTSTEAM_SERVER_H 29 | 30 | 31 | // Turn off MSVC-only warning about strcpy 32 | #ifdef _MSC_VER 33 | #define _CRT_SECURE_NO_WARNINGS 1 34 | #pragma warning(disable:4996) 35 | #pragma warning(disable:4828) 36 | #endif 37 | 38 | 39 | // Include INT types header 40 | #include 41 | 42 | // Include Steamworks Server API header 43 | #include "steam/steam_gameserver.h" 44 | #include "steam/steamnetworkingfakeip.h" 45 | 46 | // Include Godot headers 47 | #include "core/io/ip.h" 48 | #include "core/io/ip_address.h" 49 | #include "core/object/object.h" 50 | #include "core/object/ref_counted.h" 51 | #include "core/variant/dictionary.h" 52 | #include "scene/main/scene_tree.h" 53 | #include "scene/resources/texture.h" 54 | 55 | 56 | // Include GodotSteam headers 57 | #include "godotsteam_server_constants.h" 58 | #include "godotsteam_server_enums.h" 59 | 60 | // Include some system headers 61 | #include "map" 62 | 63 | 64 | class SteamServer: public Object { 65 | GDCLASS(SteamServer, Object); 66 | 67 | 68 | public: 69 | 70 | static SteamServer* get_singleton(); 71 | SteamServer(); 72 | ~SteamServer(); 73 | 74 | 75 | // STEAMWORKS FUNCTIONS 76 | // Main 77 | uint64_t getServerSteamID(); 78 | uint32_t getSteamID32(uint64_t steam_id); 79 | bool isAnonAccount(uint64_t steam_id); 80 | bool isAnonUserAccount(uint64_t steam_id); 81 | bool isChatAccount(uint64_t steam_id); 82 | bool isClanAccount(uint64_t steam_id); 83 | bool isConsoleUserAccount(uint64_t steam_id); 84 | bool isIndividualAccount(uint64_t steam_id); 85 | bool isLobby(uint64_t steam_id); 86 | bool isServerSecure(); 87 | bool serverInit(const String &ip, uint16 game_port, uint16 query_port, ServerMode server_mode, const String &version_number); 88 | Dictionary serverInitEx(const String &ip, uint16 game_port, uint16 query_port, ServerMode server_mode, const String &version_number); 89 | void serverReleaseCurrentThreadMemory(); 90 | void serverShutdown(); 91 | 92 | String get_godotsteam_version() const { return godotsteam_version; } 93 | int32 get_inventory_handle() const { return inventory_handle; } 94 | uint64_t get_inventory_update_handle() const { return inventory_update_handle; } 95 | void set_inventory_handle(int32 new_inventory_handle){ inventory_handle = new_inventory_handle; } 96 | void set_inventory_update_handle(uint32_t new_inventory_update_handle){ inventory_update_handle = new_inventory_update_handle; } 97 | 98 | // Game Server 99 | void associateWithClan(uint64_t clan_id); 100 | uint32 beginAuthSession(PackedByteArray ticket, int ticket_size, uint64_t steam_id); 101 | void cancelAuthTicket(uint32_t auth_ticket); 102 | void clearAllKeyValues(); 103 | void computeNewPlayerCompatibility(uint64_t steam_id); 104 | void endAuthSession(uint64_t steam_id); 105 | Dictionary getAuthSessionTicket(uint64_t remote_steam_id = 0); 106 | Dictionary getNextOutgoingPacket(); 107 | Dictionary getPublicIP(); 108 | uint64_t getSteamID(); 109 | Dictionary handleIncomingPacket(int packet, const String &ip, uint16 port); 110 | bool loggedOn(); 111 | void logOff(); 112 | void logOn(const String &token); 113 | void logOnAnonymous(); 114 | bool requestUserGroupStatus(uint64_t steam_id, int group_id); 115 | bool secure(); 116 | void setAdvertiseServerActive(bool active); 117 | void setBotPlayerCount(int bots); 118 | void setDedicatedServer(bool dedicated); 119 | void setGameData(const String &data); 120 | void setGameDescription(const String &description); 121 | void setGameTags(const String &tags); 122 | void setKeyValue(const String &key, const String &value); 123 | void setMapName(const String &map); 124 | void setMaxPlayerCount(int players_max); 125 | void setModDir(const String &mod_directory); 126 | void setPasswordProtected(bool password_protected); 127 | void setProduct(const String &product); 128 | void setRegion(const String ®ion); 129 | void setServerName(const String &name); 130 | void setSpectatorPort(uint16 port); 131 | void setSpectatorServerName(const String &name); 132 | int userHasLicenceForApp(uint64_t steam_id, uint32 app_id); 133 | bool wasRestartRequested(); 134 | 135 | // Game Server Stats 136 | bool clearUserAchievement(uint64_t steam_id, const String &name); 137 | Dictionary getUserAchievement(uint64_t steam_id, const String &name); 138 | uint32_t getUserStatInt(uint64_t steam_id, const String &name); 139 | float getUserStatFloat(uint64_t steam_id, const String &name); 140 | void requestUserStats(uint64_t steam_id); 141 | bool setUserAchievement(uint64_t steam_id, const String &name); 142 | bool setUserStatInt(uint64_t steam_id, const String &name, int32 stat); 143 | bool setUserStatFloat(uint64_t steam_id, const String &name, float stat); 144 | void storeUserStats(uint64_t steam_id); 145 | bool updateUserAvgRateStat(uint64_t steam_id, const String &name, float this_session, double session_length); 146 | 147 | // HTTP 148 | uint32_t createCookieContainer(bool allow_responses_to_modify); 149 | uint32_t createHTTPRequest(HTTPMethod request_method, const String &absolute_url); 150 | bool deferHTTPRequest(uint32 request_handle); 151 | float getHTTPDownloadProgressPct(uint32 request_handle); 152 | bool getHTTPRequestWasTimedOut(uint32 request_handle); 153 | PackedByteArray getHTTPResponseBodyData(uint32 request_handle, uint32 buffer_size); 154 | uint32 getHTTPResponseBodySize(uint32 request_handle); 155 | uint32 getHTTPResponseHeaderSize(uint32 request_handle, const String &header_name); 156 | PackedByteArray getHTTPResponseHeaderValue(uint32 request_handle, const String &header_name, uint32 buffer_size); 157 | PackedByteArray getHTTPStreamingResponseBodyData(uint32 request_handle, uint32 offset, uint32 buffer_size); 158 | bool prioritizeHTTPRequest(uint32 request_handle); 159 | bool releaseCookieContainer(uint32 cookie_handle); 160 | bool releaseHTTPRequest(uint32 request_handle); 161 | bool sendHTTPRequest(uint32 request_handle); 162 | bool sendHTTPRequestAndStreamResponse(uint32 request_handle); 163 | bool setHTTPCookie(uint32 cookie_handle, const String &host, const String &url, const String &cookie); 164 | bool setHTTPRequestAbsoluteTimeoutMS(uint32 request_handle, uint32 milliseconds); 165 | bool setHTTPRequestContextValue(uint32 request_handle, uint64_t context_value); 166 | bool setHTTPRequestCookieContainer(uint32 request_handle, uint32 cookie_handle); 167 | bool setHTTPRequestGetOrPostParameter(uint32 request_handle, const String &name, const String &value); 168 | bool setHTTPRequestHeaderValue(uint32 request_handle, const String &header_name, const String &header_value); 169 | bool setHTTPRequestNetworkActivityTimeout(uint32 request_handle, uint32 timeout_seconds); 170 | bool setHTTPRequestRawPostBody(uint32 request_handle, const String &content_type, const String &body); 171 | bool setHTTPRequestRequiresVerifiedCertificate(uint32 request_handle, bool require_verified_certificate); 172 | bool setHTTPRequestUserAgentInfo(uint32 request_handle, const String &user_agent_info); 173 | 174 | // Inventory 175 | int32 addPromoItem(uint32 item); 176 | int32 addPromoItems(PackedInt64Array items); 177 | bool checkResultSteamID(uint64_t steam_id_expected, int32 this_inventory_handle = 0); 178 | int32 consumeItem(uint64_t item_consume, uint32 quantity); 179 | int32 deserializeResult(PackedByteArray buffer); 180 | void destroyResult(int32 this_inventory_handle = 0); 181 | int32 exchangeItems(const PackedInt64Array output_items, const PackedInt32Array output_quantity, const PackedInt64Array input_items, const PackedInt32Array input_quantity); 182 | int32 generateItems(const PackedInt64Array items, const PackedInt32Array quantity); 183 | int32 getAllItems(); 184 | Dictionary getItemDefinitionProperty(uint32 definition, const String &name); 185 | int32 getItemsByID(const PackedInt64Array id_array); 186 | Dictionary getItemPrice(uint32 definition); 187 | Array getItemsWithPrices(); 188 | String getResultItemProperty(uint32 index, const String &name, int32 this_inventory_handle = 0); 189 | Array getResultItems(int32 this_inventory_handle = 0); 190 | Result getResultStatus(int32 this_inventory_handle = 0); 191 | uint32 getResultTimestamp(int32 this_inventory_handle = 0); 192 | int32 grantPromoItems(); 193 | bool loadItemDefinitions(); 194 | void requestEligiblePromoItemDefinitionsIDs(uint64_t steam_id); 195 | void requestPrices(); 196 | PackedByteArray serializeResult(int32 this_inventory_handle = 0); 197 | void startPurchase(const PackedInt64Array items, const PackedInt32Array quantity); 198 | int32 transferItemQuantity(uint64_t item_id, uint32 quantity, uint64_t item_destination, bool split); 199 | int32 triggerItemDrop(uint32 definition); 200 | void startUpdateProperties(); 201 | int32 submitUpdateProperties(uint64_t this_inventory_update_handle = 0); 202 | bool removeProperty(uint64_t item_id, const String &name, uint64_t this_inventory_update_handle = 0); 203 | bool setPropertyString(uint64_t item_id, const String &name, const String &value, uint64_t this_inventory_update_handle = 0); 204 | bool setPropertyBool(uint64_t item_id, const String &name, bool value, uint64_t this_inventory_update_handle = 0); 205 | bool setPropertyInt(uint64_t item_id, const String &name, uint64_t value, uint64_t this_inventory_update_handle = 0); 206 | bool setPropertyFloat(uint64_t item_id, const String &name, float value, uint64_t this_inventory_update_handle = 0); 207 | 208 | // Networking 209 | bool acceptP2PSessionWithUser(uint64_t remote_steam_id); 210 | bool allowP2PPacketRelay(bool allow); 211 | bool closeP2PChannelWithUser(uint64_t remote_steam_id, int channel); 212 | bool closeP2PSessionWithUser(uint64_t remote_steam_id); 213 | Dictionary getP2PSessionState(uint64_t remote_steam_id); 214 | uint32_t getAvailableP2PPacketSize(int channel = 0); 215 | Dictionary readP2PPacket(uint32_t packet, int channel = 0); 216 | bool sendP2PPacket(uint64_t remote_steam_id, const PackedByteArray data, P2PSend send_type, int channel = 0); 217 | 218 | // Networking Messages 219 | bool acceptSessionWithUser(uint64_t remote_steam_id); 220 | bool closeChannelWithUser(uint64_t remote_steam_id, int channel); 221 | bool closeSessionWithUser(uint64_t remote_steam_id); 222 | Dictionary getSessionConnectionInfo(uint64_t remote_steam_id, bool get_connection, bool get_status); 223 | Array receiveMessagesOnChannel(int channel, int max_messages); 224 | int sendMessageToUser(uint64_t remote_steam_id, const PackedByteArray data, int flags, int channel); 225 | 226 | // Networking Sockets 227 | int acceptConnection(uint32 connection_handle); 228 | bool beginAsyncRequestFakeIP(int num_ports); 229 | bool closeConnection(uint32 peer, int reason, const String &debug_message, bool linger); 230 | bool closeListenSocket(uint32 socket); 231 | int configureConnectionLanes(uint32 connection, uint32 lanes, Array priorities, Array weights); 232 | uint32 connectP2P(uint64_t remote_steam_id, int virtual_port, Dictionary config_options); 233 | uint32 connectByIPAddress(String ip_address_with_port, Dictionary config_options); 234 | uint32 connectToHostedDedicatedServer(uint64_t remote_steam_id, int virtual_port, Dictionary config_options); 235 | void createFakeUDPPort(int fake_server_port); 236 | uint32 createHostedDedicatedServerListenSocket(int virtual_port, Dictionary config_options); 237 | uint32 createListenSocketIP(String ip_address, Dictionary config_options); 238 | uint32 createListenSocketP2P(int virtual_port, Dictionary config_options); 239 | uint32 createListenSocketP2PFakeIP(int fake_port, Dictionary config_options); 240 | uint32 createPollGroup(); 241 | Dictionary createSocketPair(bool loopback, uint64_t remote_steam_id1, uint64_t remote_steam_id2); 242 | bool destroyPollGroup(uint32 poll_group); 243 | // int findRelayAuthTicketForServer(int port); <------ Uses datagram relay structs which were removed from base SDK 244 | int flushMessagesOnConnection(uint32 connection_handle); 245 | NetworkingAvailability getAuthenticationStatus(); 246 | Dictionary getCertificateRequest(); 247 | Dictionary getConnectionInfo(uint32 connection_handle); 248 | String getConnectionName(uint32 peer); 249 | Dictionary getConnectionRealTimeStatus(uint32 connection_handle, int lanes, bool get_status = true); 250 | uint64_t getConnectionUserData(uint32 peer); 251 | Dictionary getDetailedConnectionStatus(uint32 connection_handle); 252 | Dictionary getFakeIP(int first_port = 0); 253 | // int getGameCoordinatorServerLogin(const String &app_data); <------ Uses datagram relay structs which were removed from base SDK 254 | // int getHostedDedicatedServerAddress(); <------ Uses datagram relay structs which were removed from base SDK 255 | uint32 getHostedDedicatedServerPOPId(); 256 | uint16 getHostedDedicatedServerPort(); 257 | String getListenSocketAddress(uint32 socket, bool with_port = true); 258 | Dictionary getRemoteFakeIPForConnection(uint32 connection); 259 | NetworkingAvailability initAuthentication(); 260 | Array receiveMessagesOnConnection(uint32 connection, int max_messages); 261 | Array receiveMessagesOnPollGroup(uint32 poll_group, int max_messages); 262 | // Dictionary receivedRelayAuthTicket(); <------ Uses datagram relay structs which were removed from base SDK 263 | void resetIdentity(uint64_t remote_steam_id); 264 | void runNetworkingCallbacks(); 265 | // Array sendMessages(Array messages, uint32 connection_handle, int flags); <------ Currently does not compile on Windows but does on Linux 266 | Dictionary sendMessageToConnection(uint32 connection_handle, const PackedByteArray data, int flags); 267 | Dictionary setCertificate(const PackedByteArray &certificate); 268 | bool setConnectionPollGroup(uint32 connection_handle, uint32 poll_group); 269 | void setConnectionName(uint32 peer, const String &name); 270 | 271 | // Networking Utils 272 | bool checkPingDataUpToDate(float max_age_in_seconds); 273 | String convertPingLocationToString(PackedByteArray location); 274 | int estimatePingTimeBetweenTwoLocations(PackedByteArray location1, PackedByteArray location2); 275 | int estimatePingTimeFromLocalHost(PackedByteArray location); 276 | Dictionary getConfigValue(NetworkingConfigValue config_value, NetworkingConfigScope scope_type, uint32_t connection_handle); 277 | Dictionary getConfigValueInfo(NetworkingConfigValue config_value); 278 | int getDirectPingToPOP(uint32 pop_id); 279 | Dictionary getLocalPingLocation(); 280 | uint64_t getLocalTimestamp(); 281 | Dictionary getPingToDataCenter(uint32 pop_id); 282 | int getPOPCount(); 283 | Array getPOPList(); 284 | NetworkingAvailability getRelayNetworkStatus(); 285 | void initRelayNetworkAccess(); 286 | Dictionary parsePingLocationString(const String &location_string); 287 | bool setConnectionConfigValueFloat(uint32 connection, NetworkingConfigValue config, float value); 288 | bool setConnectionConfigValueInt32(uint32 connection, NetworkingConfigValue config, int32 value); 289 | bool setConnectionConfigValueString(uint32 connection, NetworkingConfigValue config, const String &value); 290 | // bool setConfigValue(NetworkingConfigValue setting, NetworkingConfigScope scope_type, uint32_t connection_handle, NetworkingConfigDataType data_type, auto value); 291 | bool setGlobalConfigValueFloat(NetworkingConfigValue config, float value); 292 | bool setGlobalConfigValueInt32(NetworkingConfigValue config, int32 value); 293 | bool setGlobalConfigValueString(NetworkingConfigValue config, const String &value); 294 | 295 | // UGC 296 | void addAppDependency(uint64_t published_file_id, uint32_t app_id); 297 | bool addContentDescriptor(uint64_t update_handle, int descriptor_id); 298 | void addDependency(uint64_t published_file_id, uint64_t child_published_file_id); 299 | bool addExcludedTag(uint64_t query_handle, const String &tag_name); 300 | bool addItemKeyValueTag(uint64_t query_handle, const String &key, const String &value); 301 | bool addItemPreviewFile(uint64_t query_handle, const String &preview_file, ItemPreviewType type); 302 | bool addItemPreviewVideo(uint64_t query_handle, const String &video_id); 303 | void addItemToFavorites(uint32_t app_id, uint64_t published_file_id); 304 | bool addRequiredKeyValueTag(uint64_t query_handle, const String &key, const String &value); 305 | bool addRequiredTag(uint64_t query_handle, const String &tag_name); 306 | bool addRequiredTagGroup(uint64_t query_handle, Array tag_array); 307 | bool initWorkshopForGameServer(uint32_t workshop_depot_id, String folder); 308 | void createItem(uint32 app_id, WorkshopFileType file_type); 309 | uint64_t createQueryAllUGCRequest(UGCQuery query_type, UGCMatchingUGCType matching_type, uint32_t creator_id, uint32_t consumer_id, uint32 page); 310 | uint64_t createQueryUGCDetailsRequest(Array published_file_id); 311 | uint64_t createQueryUserUGCRequest(uint64_t steam_id, UserUGCList list_type, UGCMatchingUGCType matching_ugc_type, UserUGCListSortOrder sort_order, uint32_t creator_id, uint32_t consumer_id, uint32 page); 312 | void deleteItem(uint64_t published_file_id); 313 | bool downloadItem(uint64_t published_file_id, bool high_priority); 314 | Dictionary getItemDownloadInfo(uint64_t published_file_id); 315 | Dictionary getItemInstallInfo(uint64_t published_file_id); 316 | uint32 getItemState(uint64_t published_file_id); 317 | Dictionary getItemUpdateProgress(uint64_t update_handle); 318 | uint32 getNumSubscribedItems(bool include_locally_disabled = false); 319 | uint32 getNumSupportedGameVersions(uint64_t query_handle, uint32 index); 320 | Dictionary getQueryUGCAdditionalPreview(uint64_t query_handle, uint32 index, uint32 preview_index); 321 | Dictionary getQueryUGCChildren(uint64_t query_handle, uint32 index, uint32_t child_count); 322 | Dictionary getQueryUGCContentDescriptors(uint64_t query_handle, uint32 index, uint32_t max_entries); 323 | Dictionary getQueryUGCKeyValueTag(uint64_t query_handle, uint32 index, uint32 key_value_tag_index); 324 | String getQueryUGCMetadata(uint64_t query_handle, uint32 index); 325 | uint32 getQueryUGCNumAdditionalPreviews(uint64_t query_handle, uint32 index); 326 | uint32 getQueryUGCNumKeyValueTags(uint64_t query_handle, uint32 index); 327 | uint32 getQueryUGCNumTags(uint64_t query_handle, uint32 index); 328 | String getQueryUGCPreviewURL(uint64_t query_handle, uint32 index); 329 | Dictionary getQueryUGCResult(uint64_t query_handle, uint32 index); 330 | Dictionary getQueryUGCStatistic(uint64_t query_handle, uint32 index, ItemStatistic stat_type); 331 | String getQueryUGCTag(uint64_t query_handle, uint32 index, uint32 tag_index); 332 | String getQueryUGCTagDisplayName(uint64_t query_handle, uint32 index, uint32 tag_index); 333 | Array getSubscribedItems(bool include_locally_disabled = false); 334 | Dictionary getSupportedGameVersionData(uint64_t query_handle, uint32 index, uint32 version_index); 335 | Array getUserContentDescriptorPreferences(uint32 max_entries); 336 | void getUserItemVote(uint64_t published_file_id); 337 | bool releaseQueryUGCRequest(uint64_t query_handle); 338 | void removeAppDependency(uint64_t published_file_id, uint32_t app_id); 339 | bool removeContentDescriptor(uint64_t update_handle, int descriptor_id); 340 | void removeDependency(uint64_t published_file_id, uint64_t child_published_file_id); 341 | void removeItemFromFavorites(uint32_t app_id, uint64_t published_file_id); 342 | bool removeItemKeyValueTags(uint64_t update_handle, const String &key); 343 | bool removeItemPreview(uint64_t update_handle, uint32 index); 344 | void sendQueryUGCRequest(uint64_t update_handle); 345 | bool setAdminQuery(uint64_t update_handle, bool admin_query); 346 | bool setAllowCachedResponse(uint64_t update_handle, uint32 max_age_seconds); 347 | bool setCloudFileNameFilter(uint64_t update_handle, const String &match_cloud_filename); 348 | bool setItemContent(uint64_t update_handle, const String &content_folder); 349 | bool setItemDescription(uint64_t update_handle, const String &description); 350 | bool setItemMetadata(uint64_t update_handle, const String &ugc_metadata); 351 | bool setItemPreview(uint64_t update_handle, const String &preview_file); 352 | bool setItemTags(uint64_t update_handle, Array tag_array, bool allow_admin_tags = false); 353 | bool setItemTitle(uint64_t update_handle, const String &title); 354 | bool setItemUpdateLanguage(uint64_t update_handle, const String &language); 355 | bool setItemVisibility(uint64_t update_handle, RemoteStoragePublishedFileVisibility visibility); 356 | bool setItemsDisabledLocally(PackedInt64Array published_file_ids, bool disabled_locally); 357 | bool setLanguage(uint64_t query_handle, const String &language); 358 | bool setMatchAnyTag(uint64_t query_handle, bool match_any_tag); 359 | bool setRankedByTrendDays(uint64_t query_handle, uint32 days); 360 | bool setRequiredGameVersions(uint64_t query_handle, String game_branch_min, String game_branch_max); 361 | bool setReturnAdditionalPreviews(uint64_t query_handle, bool return_additional_previews); 362 | bool setReturnChildren(uint64_t query_handle, bool return_children); 363 | bool setReturnKeyValueTags(uint64_t query_handle, bool return_key_value_tags); 364 | bool setReturnLongDescription(uint64_t query_handle, bool return_long_description); 365 | bool setReturnMetadata(uint64_t query_handle, bool return_metadata); 366 | bool setReturnOnlyIDs(uint64_t query_handle, bool return_only_ids); 367 | bool setReturnPlaytimeStats(uint64_t query_handle, uint32 days); 368 | bool setReturnTotalOnly(uint64_t query_handle, bool return_total_only); 369 | bool setSearchText(uint64_t query_handle, const String &search_text); 370 | bool setSubscriptionsLoadOrder(PackedInt64Array published_file_ids); 371 | void setUserItemVote(uint64_t published_file_id, bool vote_up); 372 | uint64_t startItemUpdate(uint32_t app_id, uint64_t file_id); 373 | void startPlaytimeTracking(Array published_file_ids); 374 | void stopPlaytimeTracking(Array published_file_ids); 375 | void stopPlaytimeTrackingForAllItems(); 376 | void getAppDependencies(uint64_t published_file_id); 377 | void submitItemUpdate(uint64_t update_handle, const String &change_note); 378 | void subscribeItem(uint64_t published_file_id); 379 | void suspendDownloads(bool suspend); 380 | void unsubscribeItem(uint64_t published_file_id); 381 | bool updateItemPreviewFile(uint64_t update_handle, uint32 index, const String &preview_file); 382 | bool updateItemPreviewVideo(uint64_t update_handle, uint32 index, const String &video_id); 383 | bool showWorkshopEULA(); 384 | void getWorkshopEULAStatus(); 385 | bool setTimeCreatedDateRange(uint64_t update_handle, uint32 start, uint32 end); 386 | bool setTimeUpdatedDateRange(uint64_t update_handle, uint32 start, uint32 end); 387 | 388 | // Utils 389 | bool dismissFloatingGamepadTextInput(); 390 | bool dismissGamepadTextInput(); 391 | String filterText(TextFilteringContext context, uint64_t steam_id, const String &message); 392 | String getAPICallFailureReason(); 393 | uint32_t getAppID(); 394 | int getCurrentBatteryPower(); 395 | Dictionary getImageRGBA(int image); 396 | Dictionary getImageSize(int image); 397 | uint32 getIPCCallCount(); 398 | String getIPCountry(); 399 | int getSecondsSinceAppActive(); 400 | int getSecondsSinceComputerActive(); 401 | int getServerRealTime(); 402 | String getSteamUILanguage(); 403 | bool initFilterText(); 404 | Dictionary isAPICallCompleted(); 405 | bool isOverlayEnabled(); 406 | bool isSteamChinaLauncher(); 407 | bool isSteamInBigPictureMode(); 408 | bool isSteamRunningInVR(); 409 | bool isSteamRunningOnSteamDeck(); 410 | bool isVRHeadsetStreamingEnabled(); 411 | bool overlayNeedsPresent(); 412 | void setGameLauncherMode(bool mode); 413 | void setOverlayNotificationInset(int horizontal, int vertical); 414 | void setOverlayNotificationPosition(int pos); 415 | void setVRHeadsetStreamingEnabled(bool enabled); 416 | bool showFloatingGamepadTextInput(FloatingGamepadTextInputMode input_mode, int text_field_x_position, int text_field_y_position, int text_field_width, int text_field_height); 417 | bool showGamepadTextInput(GamepadTextInputMode input_mode, GamepadTextInputLineMode line_input_mode, const String &description, uint32 max_text, const String &preset_text); 418 | void startVRDashboard(); 419 | 420 | 421 | // PROPERTIES 422 | // Inventory 423 | SteamInventoryResult_t inventory_handle = 0; 424 | SteamInventoryUpdateHandle_t inventory_update_handle = 0; 425 | 426 | 427 | protected: 428 | static void _bind_methods(); 429 | static SteamServer* singleton; 430 | 431 | 432 | private: 433 | // Main 434 | String godotsteam_version = "4.6"; 435 | bool is_init_success; 436 | 437 | const SteamNetworkingConfigValue_t *convert_config_options(Dictionary config_options); 438 | CSteamID createSteamID(uint64_t steam_id, AccountType account_type = AccountType(-1)); 439 | SteamNetworkingIdentity getIdentityFromSteamID(uint64_t steam_id); 440 | uint32 getIPFromSteamIP(SteamNetworkingIPAddr this_address); 441 | uint32 getIPFromString(const String &ip_string); 442 | uint64_t getSteamIDFromIdentity(SteamNetworkingIdentity this_identity); 443 | SteamNetworkingIPAddr getSteamIPFromInt(uint32 ip_integer); 444 | SteamNetworkingIPAddr getSteamIPFromString(String ip_string); 445 | String getStringFromIP(uint32 ip_address); 446 | String getStringFromSteamIP(SteamNetworkingIPAddr this_address); 447 | 448 | // Networking Sockets 449 | uint64_t networking_microseconds = 0; 450 | // SteamDatagramHostedAddress hosted_address; 451 | // PackedByteArray routing_blob; 452 | // SteamDatagramRelayAuthTicket relay_auth_ticket; 453 | 454 | // Utils 455 | uint64_t api_handle = 0; 456 | 457 | // Run the Steamworks server API callbacks 458 | void run_callbacks(){ 459 | SteamGameServer_RunCallbacks(); 460 | } 461 | 462 | 463 | // STEAM SERVER CALLBACKS 464 | // Game Server 465 | STEAM_GAMESERVER_CALLBACK(SteamServer, server_connect_failure, SteamServerConnectFailure_t, callbackServerConnectFailure); 466 | STEAM_GAMESERVER_CALLBACK(SteamServer, server_connected, SteamServersConnected_t, callbackServerConnected); 467 | STEAM_GAMESERVER_CALLBACK(SteamServer, server_disconnected, SteamServersDisconnected_t, callbackServerDisconnected); 468 | STEAM_GAMESERVER_CALLBACK(SteamServer, client_approved, GSClientApprove_t, callbackClientApproved); 469 | STEAM_GAMESERVER_CALLBACK(SteamServer, client_denied, GSClientDeny_t, callbackClientDenied); 470 | STEAM_GAMESERVER_CALLBACK(SteamServer, client_kick, GSClientKick_t, callbackClientKicked); 471 | STEAM_GAMESERVER_CALLBACK(SteamServer, policy_response, GSPolicyResponse_t, callbackPolicyResponse); 472 | STEAM_GAMESERVER_CALLBACK(SteamServer, client_group_status, GSClientGroupStatus_t, callbackClientGroupStatus); 473 | STEAM_GAMESERVER_CALLBACK(SteamServer, associate_clan, AssociateWithClanResult_t, callbackAssociateClan); 474 | STEAM_GAMESERVER_CALLBACK(SteamServer, player_compat, ComputeNewPlayerCompatibilityResult_t, callbackPlayerCompat); 475 | STEAM_GAMESERVER_CALLBACK(SteamServer, validate_auth_ticket_response, ValidateAuthTicketResponse_t, callbackValidateAuthTicketResponse); 476 | 477 | // Game Server Stats 478 | STEAM_GAMESERVER_CALLBACK(SteamServer, stats_stored, GSStatsStored_t, callbackStatsStored); 479 | STEAM_GAMESERVER_CALLBACK(SteamServer, stats_unloaded, GSStatsUnloaded_t, callbackStatsUnloaded); 480 | 481 | // HTTP 482 | STEAM_GAMESERVER_CALLBACK(SteamServer, http_request_completed, HTTPRequestCompleted_t, callbackHTTPRequestCompleted); 483 | STEAM_GAMESERVER_CALLBACK(SteamServer, http_request_data_received, HTTPRequestDataReceived_t, callbackHTTPRequestDataReceived); 484 | STEAM_GAMESERVER_CALLBACK(SteamServer, http_request_headers_received, HTTPRequestHeadersReceived_t, callbackHTTPRequestHeadersReceived); 485 | 486 | // Inventory 487 | STEAM_GAMESERVER_CALLBACK(SteamServer, inventory_definition_update, SteamInventoryDefinitionUpdate_t, callbackInventoryDefinitionUpdate); 488 | STEAM_GAMESERVER_CALLBACK(SteamServer, inventory_full_update, SteamInventoryFullUpdate_t, callbackInventoryFullUpdate); 489 | STEAM_GAMESERVER_CALLBACK(SteamServer, inventory_result_ready, SteamInventoryResultReady_t, callbackInventoryResultReady); 490 | 491 | // Networking 492 | STEAM_GAMESERVER_CALLBACK(SteamServer, p2p_session_connect_fail, P2PSessionConnectFail_t, callbackP2PSessionConnectFail); 493 | STEAM_GAMESERVER_CALLBACK(SteamServer, p2p_session_request, P2PSessionRequest_t, callbackP2PSessionRequest); 494 | 495 | // Networking Messages 496 | STEAM_GAMESERVER_CALLBACK(SteamServer, network_messages_session_request, SteamNetworkingMessagesSessionRequest_t, callbackNetworkMessagesSessionRequest); 497 | STEAM_GAMESERVER_CALLBACK(SteamServer, network_messages_session_failed, SteamNetworkingMessagesSessionFailed_t, callbackNetworkMessagesSessionFailed); 498 | 499 | // Networking Sockets 500 | STEAM_GAMESERVER_CALLBACK(SteamServer, network_connection_status_changed, SteamNetConnectionStatusChangedCallback_t, callbackNetworkConnectionStatusChanged); 501 | STEAM_GAMESERVER_CALLBACK(SteamServer, network_authentication_status, SteamNetAuthenticationStatus_t, callbackNetworkAuthenticationStatus); 502 | STEAM_GAMESERVER_CALLBACK(SteamServer, fake_ip_result, SteamNetworkingFakeIPResult_t, callbackNetworkingFakeIPResult); 503 | 504 | // Networking Utils 505 | STEAM_GAMESERVER_CALLBACK(SteamServer, relay_network_status, SteamRelayNetworkStatus_t, callbackRelayNetworkStatus); 506 | 507 | // Remote Storage 508 | STEAM_GAMESERVER_CALLBACK(SteamServer, local_file_changed, RemoteStorageLocalFileChange_t, callbackLocalFileChanged); 509 | 510 | // UGC 511 | STEAM_GAMESERVER_CALLBACK(SteamServer, item_downloaded, DownloadItemResult_t, callbackItemDownloaded); 512 | STEAM_GAMESERVER_CALLBACK(SteamServer, item_installed, ItemInstalled_t, callbackItemInstalled); 513 | STEAM_GAMESERVER_CALLBACK(SteamServer, user_subscribed_items_list_changed, UserSubscribedItemsListChanged_t, callbackUserSubscribedItemsListChanged); 514 | 515 | // Utils 516 | STEAM_CALLBACK(SteamServer, gamepad_text_input_dismissed, GamepadTextInputDismissed_t, callbackGamepadTextInputDismissed); 517 | STEAM_CALLBACK(SteamServer, ip_country, IPCountry_t, callbackIPCountry); 518 | STEAM_CALLBACK(SteamServer, low_power, LowBatteryPower_t, callbackLowPower); 519 | STEAM_CALLBACK(SteamServer, steam_api_call_completed, SteamAPICallCompleted_t, callbackSteamAPICallCompleted); 520 | STEAM_CALLBACK(SteamServer, steam_shutdown, SteamShutdown_t, callbackSteamShutdown); 521 | STEAM_CALLBACK(SteamServer, app_resuming_from_suspend, AppResumingFromSuspend_t, callbackAppResumingFromSuspend); 522 | STEAM_CALLBACK(SteamServer, floating_gamepad_text_input_dismissed, FloatingGamepadTextInputDismissed_t, callbackFloatingGamepadTextInputDismissed); 523 | STEAM_CALLBACK(SteamServer, filter_text_dictionary_changed, FilterTextDictionaryChanged_t, callbackFilterTextDictionaryChanged); 524 | 525 | 526 | // STEAM CALL RESULTS 527 | // Game Server Stats 528 | CCallResult callResultStatReceived; 529 | void stats_received(GSStatsReceived_t *call_data, bool io_failure); 530 | 531 | // Inventory 532 | CCallResult callResultEligiblePromoItemDefIDs; 533 | void inventory_eligible_promo_item(SteamInventoryEligiblePromoItemDefIDs_t *call_data, bool io_failure); 534 | CCallResult callResultRequestPrices; 535 | void inventory_request_prices_result(SteamInventoryRequestPricesResult_t *call_data, bool io_failure); 536 | CCallResult callResultStartPurchase; 537 | void inventory_start_purchase_result(SteamInventoryStartPurchaseResult_t *call_data, bool io_failure); 538 | 539 | // Remote Storage 540 | CCallResult callResultFileReadAsyncComplete; 541 | void file_read_async_complete(RemoteStorageFileReadAsyncComplete_t *call_data, bool io_failure); 542 | CCallResult callResultFileShareResult; 543 | void file_share_result(RemoteStorageFileShareResult_t *call_data, bool io_failure); 544 | CCallResult callResultFileWriteAsyncComplete; 545 | void file_write_async_complete(RemoteStorageFileWriteAsyncComplete_t *call_data, bool io_failure); 546 | CCallResult callResultDownloadUGCResult; 547 | void download_ugc_result(RemoteStorageDownloadUGCResult_t *call_data, bool io_failure); 548 | CCallResult callResultUnsubscribeItem; 549 | void unsubscribe_item(RemoteStorageUnsubscribePublishedFileResult_t *call_data, bool io_failure); 550 | CCallResult callResultSubscribeItem; 551 | void subscribe_item(RemoteStorageSubscribePublishedFileResult_t *call_data, bool io_failure); 552 | 553 | // UGC 554 | CCallResult callResultAddAppDependency; 555 | void add_app_dependency_result(AddAppDependencyResult_t *call_data, bool io_failure); 556 | CCallResult callResultAddUGCDependency; 557 | void add_ugc_dependency_result(AddUGCDependencyResult_t *call_data, bool io_failure); 558 | CCallResult callResultItemCreate; 559 | void item_created(CreateItemResult_t *call_data, bool io_failure); 560 | CCallResult callResultGetAppDependencies; 561 | void get_app_dependencies_result(GetAppDependenciesResult_t *call_data, bool io_failure); 562 | CCallResult callResultDeleteItem; 563 | void item_deleted(DeleteItemResult_t *call_data, bool io_failure); 564 | CCallResult callResultGetUserItemVote; 565 | void get_item_vote_result(GetUserItemVoteResult_t *call_data, bool io_failure); 566 | CCallResult callResultRemoveAppDependency; 567 | void remove_app_dependency_result(RemoveAppDependencyResult_t *call_data, bool io_failure); 568 | CCallResult callResultRemoveUGCDependency; 569 | void remove_ugc_dependency_result(RemoveUGCDependencyResult_t *call_data, bool io_failure); 570 | CCallResult callResultSetUserItemVote; 571 | void set_user_item_vote(SetUserItemVoteResult_t *call_data, bool io_failure); 572 | CCallResult callResultStartPlaytimeTracking; 573 | void start_playtime_tracking(StartPlaytimeTrackingResult_t *call_data, bool io_failure); 574 | CCallResult callResultUGCQueryCompleted; 575 | void ugc_query_completed(SteamUGCQueryCompleted_t *call_data, bool io_failure); 576 | CCallResult callResultStopPlaytimeTracking; 577 | void stop_playtime_tracking(StopPlaytimeTrackingResult_t *call_data, bool io_failure); 578 | CCallResult callResultItemUpdate; 579 | void item_updated(SubmitItemUpdateResult_t *call_data, bool io_failure); 580 | CCallResult callResultFavoriteItemListChanged; 581 | void user_favorite_items_list_changed(UserFavoriteItemsListChanged_t *call_data, bool io_failure); 582 | CCallResult callResultWorkshopEULAStatus; 583 | void workshop_eula_status(WorkshopEULAStatus_t *call_data, bool io_failure); 584 | 585 | // Utils 586 | CCallResult callResultCheckFileSignature; 587 | void check_file_signature(CheckFileSignature_t *call_data, bool io_failure); 588 | }; 589 | 590 | 591 | VARIANT_ENUM_CAST(AccountType); 592 | VARIANT_ENUM_CAST(APICallFailure); 593 | VARIANT_ENUM_CAST(AuthSessionResponse); 594 | 595 | VARIANT_ENUM_CAST(BeginAuthSessionResult); 596 | 597 | VARIANT_ENUM_CAST(CheckFileSignature); 598 | 599 | VARIANT_ENUM_CAST(DenyReason); 600 | 601 | VARIANT_ENUM_CAST(FilePathType); 602 | VARIANT_ENUM_CAST(FloatingGamepadTextInputMode); 603 | 604 | VARIANT_ENUM_CAST(GameIDType); 605 | VARIANT_ENUM_CAST(GamepadTextInputLineMode); 606 | VARIANT_ENUM_CAST(GamepadTextInputMode); 607 | 608 | VARIANT_ENUM_CAST(HTTPMethod); 609 | VARIANT_ENUM_CAST(HTTPStatusCode); 610 | 611 | VARIANT_ENUM_CAST(IPType); 612 | VARIANT_BITFIELD_CAST(ItemFlags); 613 | VARIANT_ENUM_CAST(ItemPreviewType); 614 | VARIANT_BITFIELD_CAST(ItemState); 615 | VARIANT_ENUM_CAST(ItemStatistic); 616 | VARIANT_ENUM_CAST(ItemUpdateStatus); 617 | 618 | VARIANT_ENUM_CAST(LocalFileChange); 619 | 620 | VARIANT_ENUM_CAST(NetworkingAvailability); 621 | VARIANT_ENUM_CAST(NetworkingConfigDataType); 622 | VARIANT_ENUM_CAST(NetworkingConfigScope); 623 | VARIANT_ENUM_CAST(NetworkingConfigValue); 624 | VARIANT_ENUM_CAST(NetworkingConnectionEnd); 625 | VARIANT_ENUM_CAST(NetworkingConnectionState); 626 | VARIANT_ENUM_CAST(NetworkingFakeIPType); 627 | VARIANT_ENUM_CAST(NetworkingGetConfigValueResult); 628 | VARIANT_ENUM_CAST(NetworkingIdentityType); 629 | VARIANT_ENUM_CAST(NetworkingSocketsDebugOutputType); 630 | 631 | VARIANT_ENUM_CAST(P2PSend); 632 | VARIANT_ENUM_CAST(P2PSessionError); 633 | 634 | VARIANT_BITFIELD_CAST(RemoteStoragePlatform); 635 | VARIANT_ENUM_CAST(RemoteStoragePublishedFileVisibility); 636 | VARIANT_ENUM_CAST(Result); 637 | 638 | VARIANT_ENUM_CAST(ServerMode); 639 | VARIANT_ENUM_CAST(SocketConnectionType); 640 | VARIANT_ENUM_CAST(SocketState); 641 | VARIANT_ENUM_CAST(SteamAPIInitResult); 642 | 643 | VARIANT_ENUM_CAST(TextFilteringContext); 644 | 645 | VARIANT_ENUM_CAST(UGCContentDescriptorID); 646 | VARIANT_ENUM_CAST(UGCMatchingUGCType); 647 | VARIANT_ENUM_CAST(UGCQuery); 648 | VARIANT_ENUM_CAST(UGCReadAction); 649 | VARIANT_ENUM_CAST(Universe); 650 | VARIANT_ENUM_CAST(UserUGCList); 651 | VARIANT_ENUM_CAST(UserUGCListSortOrder); 652 | 653 | VARIANT_ENUM_CAST(WorkshopEnumerationType); 654 | VARIANT_ENUM_CAST(WorkshopFileAction); 655 | VARIANT_ENUM_CAST(WorkshopFileType); 656 | VARIANT_ENUM_CAST(WorkshopVideoProvider); 657 | VARIANT_ENUM_CAST(WorkshopVote); 658 | 659 | 660 | #endif // GODOTSTEAM_SERVER_H -------------------------------------------------------------------------------- /godotsteam_server_constants.h: -------------------------------------------------------------------------------- 1 | //===========================================================================// 2 | // GodotSteam - godotsteam_server_constants.h 3 | //===========================================================================// 4 | // 5 | // Copyright (c) 2015-Current | GP Garcia and Contributors (view contributors.md) 6 | // 7 | // Permission is hereby granted, free of charge, to any person obtaining a copy 8 | // of this software and associated documentation files (the "Software"), to deal 9 | // in the Software without restriction, including without limitation the rights 10 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 11 | // copies of the Software, and to permit persons to whom the Software is 12 | // furnished to do so, subject to the following conditions: 13 | // 14 | // The above copyright notice and this permission notice shall be included in all 15 | // copies or substantial portions of the Software. 16 | // 17 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 18 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 20 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 21 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 22 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 23 | // SOFTWARE. 24 | // 25 | //===========================================================================// 26 | 27 | #include "steam/steam_gameserver.h" 28 | #include "steam/steam_api.h" 29 | 30 | // Define Steam API constants 31 | // Constants with 'deprecated/': these were listed in the SDK docs but do not exist in the header files; safe to remove probably 32 | // Possibly deprecated or never existed? 33 | #define ACCOUNT_ID_INVALID k_uAccountIdInvalid 34 | #define API_CALL_INVALID k_uAPICallInvalid 35 | #define APP_ID_INVALID k_uAppIdInvalid 36 | #define AUTH_TICKET_INVALID k_HAuthTicketInvalid 37 | #define DEPOT_ID_INVALID k_uDepotIdInvalid 38 | #define GAME_EXTRA_INFO_MAX k_cchGameExtraInfoMax 39 | #define INVALID_BREAKPAD_HANDLE 0 //deprecated? 40 | #define QUERY_PORT_ERROR 0xFFFE //deprecated? 41 | #define QUERY_PORT_NOT_INITIALIZED 0xFFFF //deprecated? 42 | #define STEAM_ACCOUNT_ID_MASK k_unSteamAccountIDMask 43 | #define STEAM_ACCOUNT_INSTANCE_MASK k_unSteamAccountInstanceMask 44 | #define STEAM_BUFFER_SIZE 255 //deprecated? 45 | #define STEAM_LARGE_BUFFER_SIZE 8160 //deprecated? 46 | #define STEAM_MAX_ERROR_MESSAGE 1024 47 | #define STEAM_USER_CONSOLE_INSTANCE 2 //deprecated? 48 | #define STEAM_USER_DESKTOP_INSTANCE k_unSteamUserDefaultInstance 49 | #define STEAM_USER_WEB_INSTANCE 4 //deprecated? 50 | 51 | // Define Steam Server API constants 52 | #define QUERY_PORT_SHARED STEAMGAMESERVER_QUERY_PORT_SHARED 53 | 54 | // Define HTTP constants 55 | #define HTTPCOOKIE_INVALID_HANDLE INVALID_HTTPCOOKIE_HANDLE 56 | #define HTTPREQUEST_INVALID_HANDLE INVALID_HTTPREQUEST_HANDLE 57 | 58 | // Define Inventory constants 59 | #define INVENTORY_RESULT_INVALID k_SteamInventoryResultInvalid 60 | #define ITEM_INSTANCE_ID_INVALID k_SteamItemInstanceIDInvalid 61 | 62 | // Define Networking Socket constants 63 | #define MAX_STEAM_PACKET_SIZE k_cbMaxSteamNetworkingSocketsMessageSizeSend 64 | 65 | // Define Networking Types constants | Found in steamnetworkingtypes.h 66 | #define LISTEN_SOCKET_INVALID k_HSteamListenSocket_Invalid 67 | #define MAX_NETWORKING_ERROR_MESSAGE k_cchMaxSteamNetworkingErrMsg 68 | #define MAX_NETWORKING_PING_LOCATION_STRING k_cchMaxSteamNetworkingPingLocationString 69 | #define NETWORKING_CONFIG_P2P_TRANSPORT_ICE_DEFAULT k_nSteamNetworkingConfig_P2P_Transport_ICE_Enable_Default 70 | #define NETWORKING_CONFIG_P2P_TRANSPORT_ICE_DISABLE k_nSteamNetworkingConfig_P2P_Transport_ICE_Enable_Disable 71 | #define NETWORKING_CONFIG_P2P_TRANSPORT_ICE_RELAY k_nSteamNetworkingConfig_P2P_Transport_ICE_Enable_Relay 72 | #define NETWORKING_CONFIG_P2P_TRANSPORT_ICE_PRIVATE k_nSteamNetworkingConfig_P2P_Transport_ICE_Enable_Private 73 | #define NETWORKING_CONFIG_P2P_TRANSPORT_ICE_PUBLIC k_nSteamNetworkingConfig_P2P_Transport_ICE_Enable_Public 74 | #define NETWORKING_CONFIG_P2P_TRANSPORT_ICE_ALL k_nSteamNetworkingConfig_P2P_Transport_ICE_Enable_All 75 | #define NETWORKING_CONNECTION_INFO_FLAG_UNAUTHENTICATED k_nSteamNetworkConnectionInfoFlags_Unauthenticated 76 | #define NETWORKING_CONNECTION_INFO_FLAG_UNENCRYPTED k_nSteamNetworkConnectionInfoFlags_Unencrypted 77 | #define NETWORKING_CONNECTION_INFO_FLAG_LOOPBACK_BUFFERS k_nSteamNetworkConnectionInfoFlags_LoopbackBuffers 78 | #define NETWORKING_CONNECTION_INFO_FLAG_FAST k_nSteamNetworkConnectionInfoFlags_Fast 79 | #define NETWORKING_CONNECTION_INFO_FLAG_RELAYED k_nSteamNetworkConnectionInfoFlags_Relayed 80 | #define NETWORKING_CONNECTION_INFO_FLAG_DUALWIFI k_nSteamNetworkConnectionInfoFlags_DualWifi 81 | #define NETWORKING_CONNECTION_INVALID k_HSteamNetConnection_Invalid 82 | #define NETWORKING_MAX_CONNECTION_APP_NAME k_cchSteamNetworkingMaxConnectionAppName 83 | #define NETWORKING_MAX_CONNECTION_CLOSE_REASON k_cchSteamNetworkingMaxConnectionCloseReason 84 | #define NETWORKING_MAX_CONNECTION_DESCRIPTION k_cchSteamNetworkingMaxConnectionDescription 85 | #define NETWORKING_PING_FAILED k_nSteamNetworkingPing_Failed 86 | #define NETWORKING_PING_UNKNOWN k_nSteamNetworkingPing_Unknown 87 | #define NETWORKING_SEND_UNRELIABLE k_nSteamNetworkingSend_Unreliable 88 | #define NETWORKING_SEND_NO_NAGLE k_nSteamNetworkingSend_NoNagle 89 | #define NETWORKING_SEND_URELIABLE_NO_NAGLE k_nSteamNetworkingSend_UnreliableNoNagle 90 | #define NETWORKING_SEND_NO_DELAY k_nSteamNetworkingSend_NoDelay 91 | #define NETWORKING_SEND_UNRELIABLE_NO_DELAY k_nSteamNetworkingSend_UnreliableNoDelay 92 | #define NETWORKING_SEND_RELIABLE k_nSteamNetworkingSend_Reliable 93 | #define NETWORKING_SEND_RELIABLE_NO_NAGLE k_nSteamNetworkingSend_ReliableNoNagle 94 | #define NETWORKING_SEND_USE_CURRENT_THREAD k_nSteamNetworkingSend_UseCurrentThread 95 | #define NETWORKING_SEND_AUTORESTART_BROKEN_SESSION k_nSteamNetworkingSend_AutoRestartBrokenSession 96 | 97 | // Define Remote Storage constants 98 | #define ENUMERATE_PUBLISHED_FILES_MAX_RESULTS k_unEnumeratePublishedFilesMaxResults 99 | #define FILE_NAME_MAX k_cchFilenameMax 100 | #define MAX_CLOUD_FILE_CHUNK_SIZE k_unMaxCloudFileChunkSize 101 | #define PUBLISHED_DOCUMENT_CHANGE_DESCRIPTION_MAX k_cchPublishedDocumentChangeDescriptionMax 102 | #define PUBLISHED_DOCUMENT_DESCRIPTION_MAX k_cchPublishedDocumentDescriptionMax 103 | #define PUBLISHED_DOCUMENT_TITLE_MAX k_cchPublishedDocumentTitleMax 104 | #define PUBLISHED_FILE_ID_INVALID k_PublishedFileIdInvalid 105 | #define PUBLISHED_FILE_UPDATE_HANDLE_INVALID k_PublishedFileUpdateHandleInvalid 106 | #define PUBLISHED_FILE_URL_MAX k_cchPublishedFileURLMax 107 | #define TAG_LIST_MAX k_cchTagListMax 108 | #define UGC_FILE_STREAM_HANDLE_INVALID k_UGCFileStreamHandleInvalid 109 | #define UGC_HANDLE_INVALID k_UGCHandleInvalid 110 | 111 | // Define UGC constants 112 | #define DEVELOPER_METADATA_MAX k_cchDeveloperMetadataMax 113 | #define NUM_UGC_RESULTS_PER_PAGE kNumUGCResultsPerPage 114 | #define UGC_QUERY_HANDLE_INVALID k_UGCQueryHandleInvalid 115 | #define UGC_UPDATE_HANDLE_INVALID k_UGCUpdateHandleInvalid -------------------------------------------------------------------------------- /godotsteam_server_enums.h: -------------------------------------------------------------------------------- 1 | //===========================================================================// 2 | // GodotSteam - godotsteam_server_enums.h 3 | //===========================================================================// 4 | // 5 | // Copyright (c) 2015-Current | GP Garcia and Contributors (view contributors.md) 6 | // 7 | // Permission is hereby granted, free of charge, to any person obtaining a copy 8 | // of this software and associated documentation files (the "Software"), to deal 9 | // in the Software without restriction, including without limitation the rights 10 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 11 | // copies of the Software, and to permit persons to whom the Software is 12 | // furnished to do so, subject to the following conditions: 13 | // 14 | // The above copyright notice and this permission notice shall be included in all 15 | // copies or substantial portions of the Software. 16 | // 17 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 18 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 20 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 21 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 22 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 23 | // SOFTWARE. 24 | // 25 | //===========================================================================// 26 | 27 | #ifndef GODOTSTEAM_SERVER_ENUMS_H 28 | #define GODOTSTEAM_SERVER_ENUMS_H 29 | 30 | 31 | enum AccountType { 32 | // Found in steamclientpublic.h 33 | ACCOUNT_TYPE_INVALID = k_EAccountTypeInvalid, 34 | ACCOUNT_TYPE_INDIVIDUAL = k_EAccountTypeIndividual, 35 | ACCOUNT_TYPE_MULTISEAT = k_EAccountTypeMultiseat, 36 | ACCOUNT_TYPE_GAME_SERVER = k_EAccountTypeGameServer, 37 | ACCOUNT_TYPE_ANON_GAME_SERVER = k_EAccountTypeAnonGameServer, 38 | ACCOUNT_TYPE_PENDING = k_EAccountTypePending, 39 | ACCOUNT_TYPE_CONTENT_SERVER = k_EAccountTypeContentServer, 40 | ACCOUNT_TYPE_CLAN = k_EAccountTypeClan, 41 | ACCOUNT_TYPE_CHAT = k_EAccountTypeChat, 42 | ACCOUNT_TYPE_CONSOLE_USER = k_EAccountTypeConsoleUser, 43 | ACCOUNT_TYPE_ANON_USER = k_EAccountTypeAnonUser, 44 | ACCOUNT_TYPE_MAX = k_EAccountTypeMax 45 | }; 46 | 47 | enum AuthSessionResponse { 48 | // Found in steamclientpublic.h 49 | AUTH_SESSION_RESPONSE_OK = k_EAuthSessionResponseOK, 50 | AUTH_SESSION_RESPONSE_USER_NOT_CONNECTED_TO_STEAM = k_EAuthSessionResponseUserNotConnectedToSteam, 51 | AUTH_SESSION_RESPONSE_NO_LICENSE_OR_EXPIRED = k_EAuthSessionResponseNoLicenseOrExpired, 52 | AUTH_SESSION_RESPONSE_VAC_BANNED = k_EAuthSessionResponseVACBanned, 53 | AUTH_SESSION_RESPONSE_LOGGED_IN_ELSEWHERE = k_EAuthSessionResponseLoggedInElseWhere, 54 | AUTH_SESSION_RESPONSE_VAC_CHECK_TIMED_OUT = k_EAuthSessionResponseVACCheckTimedOut, 55 | AUTH_SESSION_RESPONSE_AUTH_TICKET_CANCELED = k_EAuthSessionResponseAuthTicketCanceled, 56 | AUTH_SESSION_RESPONSE_AUTH_TICKET_INVALID_ALREADY_USED = k_EAuthSessionResponseAuthTicketInvalidAlreadyUsed, 57 | AUTH_SESSION_RESPONSE_AUTH_TICKET_INVALID = k_EAuthSessionResponseAuthTicketInvalid, 58 | AUTH_SESSION_RESPONSE_PUBLISHER_ISSUED_BAN = k_EAuthSessionResponsePublisherIssuedBan, 59 | AUTH_SESSION_RESPONSE_AUTH_TICKET_NETWORK_IDENTITY_FAILURE = k_EAuthSessionResponseAuthTicketNetworkIdentityFailure 60 | }; 61 | 62 | enum BeginAuthSessionResult { 63 | // Found in steamclientpublic.h 64 | BEGIN_AUTH_SESSION_RESULT_OK = k_EBeginAuthSessionResultOK, 65 | BEGIN_AUTH_SESSION_RESULT_INVALID_TICKET = k_EBeginAuthSessionResultInvalidTicket, 66 | BEGIN_AUTH_SESSION_RESULT_DUPLICATE_REQUEST = k_EBeginAuthSessionResultDuplicateRequest, 67 | BEGIN_AUTH_SESSION_RESULT_INVALID_VERSION = k_EBeginAuthSessionResultInvalidVersion, 68 | BEGIN_AUTH_SESSION_RESULT_GAME_MISMATCH = k_EBeginAuthSessionResultGameMismatch, 69 | BEGIN_AUTH_SESSION_RESULT_EXPIRED_TICKET = k_EBeginAuthSessionResultExpiredTicket 70 | }; 71 | 72 | enum DenyReason { 73 | // Found in steamclientpublic.h 74 | DENY_INVALID = k_EDenyInvalid, 75 | DENY_INVALID_VERSION = k_EDenyInvalidVersion, 76 | DENY_GENERIC = k_EDenyGeneric, 77 | DENY_NOT_LOGGED_ON = k_EDenyNotLoggedOn, 78 | DENY_NO_LICENSE = k_EDenyNoLicense, 79 | DENY_CHEATER = k_EDenyCheater, 80 | DENY_LOGGED_IN_ELSEWHERE = k_EDenyLoggedInElseWhere, 81 | DENY_UNKNOWN_TEXT = k_EDenyUnknownText, 82 | DENY_INCOMPATIBLE_ANTI_CHEAT = k_EDenyIncompatibleAnticheat, 83 | DENY_MEMORY_CORRUPTION = k_EDenyMemoryCorruption, 84 | DENY_INCOMPATIBLE_SOFTWARE = k_EDenyIncompatibleSoftware, 85 | DENY_STEAM_CONNECTION_LOST = k_EDenySteamConnectionLost, 86 | DENY_STEAM_CONNECTION_ERROR = k_EDenySteamConnectionError, 87 | DENY_STEAM_RESPONSE_TIMED_OUT = k_EDenySteamResponseTimedOut, 88 | DENY_STEAM_VALIDATION_STALLED = k_EDenySteamValidationStalled, 89 | DENY_STEAM_OWNER_LEFT_GUEST_USER = k_EDenySteamOwnerLeftGuestUser 90 | }; 91 | 92 | enum GameIDType { 93 | GAME_TYPE_APP = CGameID::k_EGameIDTypeApp, 94 | GAME_TYPE_GAME_MOD = CGameID::k_EGameIDTypeGameMod, 95 | GAME_TYPE_SHORTCUT = CGameID::k_EGameIDTypeShortcut, 96 | GAME_TYPE_P2P = CGameID::k_EGameIDTypeP2P 97 | }; 98 | 99 | enum IPType { 100 | IP_TYPE_IPV4 = k_ESteamIPTypeIPv4, 101 | IP_TYPE_IPV6 = k_ESteamIPTypeIPv6 102 | }; 103 | 104 | enum Result { 105 | // Found in steamclientpublic.h 106 | RESULT_NONE = k_EResultNone, 107 | RESULT_OK = k_EResultOK, 108 | RESULT_FAIL = k_EResultFail, 109 | RESULT_NO_CONNECTION = k_EResultNoConnection, 110 | RESULT_INVALID_PASSWORD = k_EResultInvalidPassword, 111 | RESULT_LOGGED_IN_ELSEWHERE = k_EResultLoggedInElsewhere, 112 | RESULT_INVALID_PROTOCOL_VER = k_EResultInvalidProtocolVer, 113 | RESULT_INVALID_PARAM = k_EResultInvalidParam, 114 | RESULT_FILE_NOT_FOUND = k_EResultFileNotFound, 115 | RESULT_BUSY = k_EResultBusy, 116 | RESULT_INVALID_STATE = k_EResultInvalidState, 117 | RESULT_INVALID_NAME = k_EResultInvalidName, 118 | RESULT_INVALID_EMAIL = k_EResultInvalidEmail, 119 | RESULT_DUPLICATE_NAME = k_EResultDuplicateName, 120 | RESULT_ACCESS_DENIED = k_EResultAccessDenied, 121 | RESULT_TIMEOUT = k_EResultTimeout, 122 | RESULT_BANNED = k_EResultBanned, 123 | RESULT_ACCOUNT_NOT_FOUND = k_EResultAccountNotFound, 124 | RESULT_INVALID_STEAMID = k_EResultInvalidSteamID, 125 | RESULT_SERVICE_UNAVAILABLE = k_EResultServiceUnavailable, 126 | RESULT_NOT_LOGGED_ON = k_EResultNotLoggedOn, 127 | RESULT_PENDING = k_EResultPending, 128 | RESULT_ENCRYPTION_FAILURE = k_EResultEncryptionFailure, 129 | RESULT_INSUFFICIENT_PRIVILEGE = k_EResultInsufficientPrivilege, 130 | RESULT_LIMIT_EXCEEDED = k_EResultLimitExceeded, 131 | RESULT_REVOKED = k_EResultRevoked, 132 | RESULT_EXPIRED = k_EResultExpired, 133 | RESULT_ALREADY_REDEEMED = k_EResultAlreadyRedeemed, 134 | RESULT_DUPLICATE_REQUEST = k_EResultDuplicateRequest, 135 | RESULT_ALREADY_OWNED = k_EResultAlreadyOwned, 136 | RESULT_IP_NOT_FOUND = k_EResultIPNotFound, 137 | RESULT_PERSIST_FAILED = k_EResultPersistFailed, 138 | RESULT_LOCKING_FAILED = k_EResultLockingFailed, 139 | RESULT_LOG_ON_SESSION_REPLACED = k_EResultLogonSessionReplaced, 140 | RESULT_CONNECT_FAILED = k_EResultConnectFailed, 141 | RESULT_HANDSHAKE_FAILED = k_EResultHandshakeFailed, 142 | RESULT_IO_FAILURE = k_EResultIOFailure, 143 | RESULT_REMOTE_DISCONNECT = k_EResultRemoteDisconnect, 144 | RESULT_SHOPPING_CART_NOT_FOUND = k_EResultShoppingCartNotFound, 145 | RESULT_BLOCKED = k_EResultBlocked, 146 | RESULT_IGNORED = k_EResultIgnored, 147 | RESULT_NO_MATCH = k_EResultNoMatch, 148 | RESULT_ACCOUNT_DISABLED = k_EResultAccountDisabled, 149 | RESULT_SERVICE_READ_ONLY = k_EResultServiceReadOnly, 150 | RESULT_ACCOUNT_NOT_FEATURED = k_EResultAccountNotFeatured, 151 | RESULT_ADMINISTRATOR_OK = k_EResultAdministratorOK, 152 | RESULT_CONTENT_VERSION = k_EResultContentVersion, 153 | RESULT_TRY_ANOTHER_CM = k_EResultTryAnotherCM, 154 | RESULT_PASSWORD_REQUIRED_TO_KICK_SESSION = k_EResultPasswordRequiredToKickSession, 155 | RESULT_ALREADY_LOGGED_IN_ELSEWHERE = k_EResultAlreadyLoggedInElsewhere, 156 | RESULT_SUSPENDED = k_EResultSuspended, 157 | RESULT_CANCELLED = k_EResultCancelled, 158 | RESULT_DATA_CORRUPTION = k_EResultDataCorruption, 159 | RESULT_DISK_FULL = k_EResultDiskFull, 160 | RESULT_REMOTE_CALL_FAILED = k_EResultRemoteCallFailed, 161 | RESULT_PASSWORD_UNSET = k_EResultPasswordUnset, 162 | RESULT_EXTERNAL_ACCOUNT_UNLINKED = k_EResultExternalAccountUnlinked, 163 | RESULT_PSN_TICKET_INVALID = k_EResultPSNTicketInvalid, 164 | RESULT_EXTERNAL_ACCOUNT_ALREADY_LINKED = k_EResultExternalAccountAlreadyLinked, 165 | RESULT_REMOTE_FILE_CONFLICT = k_EResultRemoteFileConflict, 166 | RESULT_ILLEGAL_PASSWORD = k_EResultIllegalPassword, 167 | RESULT_SAME_AS_PREVIOUS_VALUE = k_EResultSameAsPreviousValue, 168 | RESULT_ACCOUNT_LOG_ON_DENIED = k_EResultAccountLogonDenied, 169 | RESULT_CANNOT_USE_OLD_PASSWORD = k_EResultCannotUseOldPassword, 170 | RESULT_INVALID_LOG_IN_AUTH_CODE = k_EResultInvalidLoginAuthCode, 171 | RESULT_ACCOUNT_LOG_ON_DENIED_NO_MAIL = k_EResultAccountLogonDeniedNoMail, 172 | RESULT_HARDWARE_NOT_CAPABLE_OF_IPT = k_EResultHardwareNotCapableOfIPT, 173 | RESULT_IPT_INIT_ERROR = k_EResultIPTInitError, 174 | RESULT_PARENTAL_CONTROL_RESTRICTED = k_EResultParentalControlRestricted, 175 | RESULT_FACEBOOK_QUERY_ERROR = k_EResultFacebookQueryError, 176 | RESULT_EXPIRED_LOGIN_AUTH_CODE = k_EResultExpiredLoginAuthCode, 177 | RESULT_IP_LOGIN_RESTRICTION_FAILED = k_EResultIPLoginRestrictionFailed, 178 | RESULT_ACCOUNT_LOCKED_DOWN = k_EResultAccountLockedDown, 179 | RESULT_ACCOUNT_LOG_ON_DENIED_VERIFIED_EMAIL_REQUIRED = k_EResultAccountLogonDeniedVerifiedEmailRequired, 180 | RESULT_NO_MATCHING_URL = k_EResultNoMatchingURL, 181 | RESULT_BAD_RESPONSE = k_EResultBadResponse, 182 | RESULT_REQUIRE_PASSWORD_REENTRY = k_EResultRequirePasswordReEntry, 183 | RESULT_VALUE_OUT_OF_RANGE = k_EResultValueOutOfRange, 184 | RESULT_UNEXPECTED_ERROR = k_EResultUnexpectedError, 185 | RESULT_DISABLED = k_EResultDisabled, 186 | RESULT_INVALID_CEG_SUBMISSION = k_EResultInvalidCEGSubmission, 187 | RESULT_RESTRICTED_DEVICE = k_EResultRestrictedDevice, 188 | RESULT_REGION_LOCKED = k_EResultRegionLocked, 189 | RESULT_RATE_LIMIT_EXCEEDED = k_EResultRateLimitExceeded, 190 | RESULT_ACCOUNT_LOGIN_DENIED_NEED_TWO_FACTOR = k_EResultAccountLoginDeniedNeedTwoFactor, 191 | RESULT_ITEM_DELETED = k_EResultItemDeleted, 192 | RESULT_ACCOUNT_LOGIN_DENIED_THROTTLE = k_EResultAccountLoginDeniedThrottle, 193 | RESULT_TWO_FACTOR_CODE_MISMATCH = k_EResultTwoFactorCodeMismatch, 194 | RESULT_TWO_FACTOR_ACTIVATION_CODE_MISMATCH = k_EResultTwoFactorActivationCodeMismatch, 195 | RESULT_ACCOUNT_ASSOCIATED_TO_MULTIPLE_PARTNERS = k_EResultAccountAssociatedToMultiplePartners, 196 | RESULT_NOT_MODIFIED = k_EResultNotModified, 197 | RESULT_NO_MOBILE_DEVICE = k_EResultNoMobileDevice, 198 | RESULT_TIME_NOT_SYNCED = k_EResultTimeNotSynced, 199 | RESULT_SMS_CODE_FAILED = k_EResultSmsCodeFailed, 200 | RESULT_ACCOUNT_LIMIT_EXCEEDED = k_EResultAccountLimitExceeded, 201 | RESULT_ACCOUNT_ACTIVITY_LIMIT_EXCEEDED = k_EResultAccountActivityLimitExceeded, 202 | RESULT_PHONE_ACTIVITY_LIMIT_EXCEEDED = k_EResultPhoneActivityLimitExceeded, 203 | RESULT_REFUND_TO_WALLET = k_EResultRefundToWallet, 204 | RESULT_EMAIL_SEND_FAILURE = k_EResultEmailSendFailure, 205 | RESULT_NOT_SETTLED = k_EResultNotSettled, 206 | RESULT_NEED_CAPTCHA = k_EResultNeedCaptcha, 207 | RESULT_GSLT_DENIED = k_EResultGSLTDenied, 208 | RESULT_GS_OWNER_DENIED = k_EResultGSOwnerDenied, 209 | RESULT_INVALID_ITEM_TYPE = k_EResultInvalidItemType, 210 | RESULT_IP_BANNED = k_EResultIPBanned, 211 | RESULT_GSLT_EXPIRED = k_EResultGSLTExpired, 212 | RESULT_INSUFFICIENT_FUNDS = k_EResultInsufficientFunds, 213 | RESULT_TOO_MANY_PENDING = k_EResultTooManyPending, 214 | RESULT_NO_SITE_LICENSES_FOUND = k_EResultNoSiteLicensesFound, 215 | RESULT_WG_NETWORK_SEND_EXCEEDED = k_EResultWGNetworkSendExceeded, 216 | RESULT_ACCOUNT_NOT_FRIENDS = k_EResultAccountNotFriends, 217 | RESULT_LIMITED_USER_ACCOUNT = k_EResultLimitedUserAccount, 218 | RESULT_CANT_REMOVE_ITEM = k_EResultCantRemoveItem, 219 | RESULT_ACCOUNT_DELETED = k_EResultAccountDeleted, 220 | RESULT_EXISTING_USER_CANCELLED_LICENSE = k_EResultExistingUserCancelledLicense, 221 | RESULT_COMMUNITY_COOLDOWN = k_EResultCommunityCooldown, 222 | RESULT_NO_LAUNCHER_SPECIFIED = k_EResultNoLauncherSpecified, 223 | RESULT_MUST_AGREE_TO_SSA = k_EResultMustAgreeToSSA, 224 | RESULT_LAUNCHER_MIGRATED = k_EResultLauncherMigrated, 225 | RESULT_STEAM_REALM_MISMATCH = k_EResultSteamRealmMismatch, 226 | RESULT_INVALID_SIGNATURE = k_EResultInvalidSignature, 227 | RESULT_PARSE_FAILURE = k_EResultParseFailure, 228 | RESULT_NO_VERIFIED_PHONE = k_EResultNoVerifiedPhone, 229 | RESULT_INSUFFICIENT_BATTERY = k_EResultInsufficientBattery, 230 | RESULT_CHARGER_REQUIRED = k_EResultChargerRequired, 231 | RESULT_CACHED_CREDENTIAL_INVALID = k_EResultCachedCredentialInvalid, 232 | RESULT_PHONE_NUMBER_IS_VOIP = K_EResultPhoneNumberIsVOIP, 233 | RESULT_NOT_SUPPORTED = k_EResultNotSupported, 234 | RESULT_FAMILY_SIZE_LIMIT_EXCEEDED = k_EResultFamilySizeLimitExceeded, 235 | RESULT_OFFLINE_APP_CACHE_INVALID = k_EResultOfflineAppCacheInvalid 236 | }; 237 | 238 | enum ServerMode { 239 | SERVER_MODE_INVALID = eServerModeInvalid, 240 | SERVER_MODE_NO_AUTHENTICATION = eServerModeNoAuthentication, 241 | SERVER_MODE_AUTHENTICATION = eServerModeAuthentication, 242 | SERVER_MODE_AUTHENTICATION_AND_SECURE = eServerModeAuthenticationAndSecure 243 | }; 244 | 245 | enum SteamAPIInitResult { 246 | STEAM_API_INIT_RESULT_OK = k_ESteamAPIInitResult_OK, 247 | STEAM_API_INIT_RESULT_FAILED_GENERIC = k_ESteamAPIInitResult_FailedGeneric, 248 | STEAM_API_INIT_RESULT_NO_STEAM_CLIENT = k_ESteamAPIInitResult_NoSteamClient, 249 | STEAM_API_INIT_RESULT_VERSION_MISMATCH = k_ESteamAPIInitResult_VersionMismatch 250 | }; 251 | 252 | enum Universe { 253 | // Found in steamuniverse.h 254 | UNIVERSE_INVALID = k_EUniverseInvalid, 255 | UNIVERSE_PUBLIC = k_EUniversePublic, 256 | UNIVERSE_BETA = k_EUniverseBeta, 257 | UNIVERSE_INTERNAL = k_EUniverseInternal, 258 | UNIVERSE_DEV = k_EUniverseDev, 259 | UNIVERSE_MAX = k_EUniverseMax 260 | }; 261 | 262 | 263 | // HTTP enums 264 | enum HTTPMethod { 265 | HTTP_METHOD_INVALID = k_EHTTPMethodInvalid, 266 | HTTP_METHOD_GET = k_EHTTPMethodGET, 267 | HTTP_METHOD_HEAD = k_EHTTPMethodHEAD, 268 | HTTP_METHOD_POST = k_EHTTPMethodPOST, 269 | HTTP_METHOD_PUT = k_EHTTPMethodPUT, 270 | HTTP_METHOD_DELETE = k_EHTTPMethodDELETE, 271 | HTTP_METHOD_OPTIONS = k_EHTTPMethodOPTIONS, 272 | HTTP_METHOD_PATCH = k_EHTTPMethodPATCH 273 | }; 274 | 275 | enum HTTPStatusCode { 276 | HTTP_STATUS_CODE_INVALID = k_EHTTPStatusCodeInvalid, 277 | HTTP_STATUS_CODE_100_CONTINUE = k_EHTTPStatusCode100Continue, 278 | HTTP_STATUS_CODE_101_SWITCHING_PROTOCOLS = k_EHTTPStatusCode101SwitchingProtocols, 279 | HTTP_STATUS_CODE_200_OK = k_EHTTPStatusCode200OK, 280 | HTTP_STATUS_CODE_201_CREATED = k_EHTTPStatusCode201Created, 281 | HTTP_STATUS_CODE_202_ACCEPTED = k_EHTTPStatusCode202Accepted, 282 | HTTP_STATUS_CODE_203_NON_AUTHORITATIVE = k_EHTTPStatusCode203NonAuthoritative, 283 | HTTP_STATUS_CODE_204_NO_CONTENT = k_EHTTPStatusCode204NoContent, 284 | HTTP_STATUS_CODE_205_RESET_CONTENT = k_EHTTPStatusCode205ResetContent, 285 | HTTP_STATUS_CODE_206_PARTIAL_CONTENT = k_EHTTPStatusCode206PartialContent, 286 | HTTP_STATUS_CODE_300_MULTIPLE_CHOICES = k_EHTTPStatusCode300MultipleChoices, 287 | HTTP_STATUS_CODE_301_MOVED_PERMANENTLY = k_EHTTPStatusCode301MovedPermanently, 288 | HTTP_STATUS_CODE_302_FOUND = k_EHTTPStatusCode302Found, 289 | HTTP_STATUS_CODE_303_SEE_OTHER = k_EHTTPStatusCode303SeeOther, 290 | HTTP_STATUS_CODE_304_NOT_MODIFIED = k_EHTTPStatusCode304NotModified, 291 | HTTP_STATUS_CODE_305_USE_PROXY = k_EHTTPStatusCode305UseProxy, 292 | HTTP_STATUS_CODE_307_TEMPORARY_REDIRECT = k_EHTTPStatusCode307TemporaryRedirect, 293 | HTTP_STATUS_CODE_308_PERMANENT_REDIRECT = k_EHTTPStatusCode308PermanentRedirect, 294 | HTTP_STATUS_CODE_400_BAD_REQUEST = k_EHTTPStatusCode400BadRequest, 295 | HTTP_STATUS_CODE_401_UNAUTHORIZED = k_EHTTPStatusCode401Unauthorized, 296 | HTTP_STATUS_CODE_402_PAYMENT_REQUIRED = k_EHTTPStatusCode402PaymentRequired, 297 | HTTP_STATUS_CODE_403_FORBIDDEN = k_EHTTPStatusCode403Forbidden, 298 | HTTP_STATUS_CODE_404_NOT_FOUND = k_EHTTPStatusCode404NotFound, 299 | HTTP_STATUS_CODE_405_METHOD_NOT_ALLOWED = k_EHTTPStatusCode405MethodNotAllowed, 300 | HTTP_STATUS_CODE_406_NOT_ACCEPTABLE = k_EHTTPStatusCode406NotAcceptable, 301 | HTTP_STATUS_CODE_407_PROXY_AUTH_REQUIRED = k_EHTTPStatusCode407ProxyAuthRequired, 302 | HTTP_STATUS_CODE_408_REQUEST_TIMEOUT = k_EHTTPStatusCode408RequestTimeout, 303 | HTTP_STATUS_CODE_409_CONFLICT = k_EHTTPStatusCode409Conflict, 304 | HTTP_STATUS_CODE_410_GONE = k_EHTTPStatusCode410Gone, 305 | HTTP_STATUS_CODE_411_LENGTH_REQUIRED = k_EHTTPStatusCode411LengthRequired, 306 | HTTP_STATUS_CODE_412_PRECONDITION_FAILED = k_EHTTPStatusCode412PreconditionFailed, 307 | HTTP_STATUS_CODE_413_REQUEST_ENTITY_TOO_LARGE = k_EHTTPStatusCode413RequestEntityTooLarge, 308 | HTTP_STATUS_CODE_414_REQUEST_URI_TOO_LONG = k_EHTTPStatusCode414RequestURITooLong, 309 | HTTP_STATUS_CODE_415_UNSUPPORTED_MEDIA_TYPE = k_EHTTPStatusCode415UnsupportedMediaType, 310 | HTTP_STATUS_CODE_416_REQUESTED_RANGE_NOT_SATISFIABLE = k_EHTTPStatusCode416RequestedRangeNotSatisfiable, 311 | HTTP_STATUS_CODE_417_EXPECTATION_FAILED = k_EHTTPStatusCode417ExpectationFailed, 312 | HTTP_STATUS_CODE_4XX_UNKNOWN = k_EHTTPStatusCode4xxUnknown, 313 | HTTP_STATUS_CODE_429_TOO_MANY_REQUESTS = k_EHTTPStatusCode429TooManyRequests, 314 | HTTP_STATUS_CODE_444_CONNECTION_CLOSED = k_EHTTPStatusCode444ConnectionClosed, 315 | HTTP_STATUS_CODE_500_INTERNAL_SERVER_ERROR = k_EHTTPStatusCode500InternalServerError, 316 | HTTP_STATUS_CODE_501_NOT_IMPLEMENTED = k_EHTTPStatusCode501NotImplemented, 317 | HTTP_STATUS_CODE_502_BAD_GATEWAY = k_EHTTPStatusCode502BadGateway, 318 | HTTP_STATUS_CODE_503_SERVICE_UNAVAILABLE = k_EHTTPStatusCode503ServiceUnavailable, 319 | HTTP_STATUS_CODE_504_GATEWAY_TIMEOUT = k_EHTTPStatusCode504GatewayTimeout, 320 | HTTP_STATUS_CODE_505_HTTP_VERSION_NOT_SUPPORTED = k_EHTTPStatusCode505HTTPVersionNotSupported, 321 | HTTP_STATUS_CODE_5XX_UNKNOWN = k_EHTTPStatusCode5xxUnknown 322 | }; 323 | 324 | 325 | // Inventory enums 326 | enum ItemFlags { 327 | STEAM_ITEM_NO_TRADE = k_ESteamItemNoTrade, 328 | STEAM_ITEM_REMOVED = k_ESteamItemRemoved, 329 | STEAM_ITEM_CONSUMED = k_ESteamItemConsumed 330 | }; 331 | 332 | 333 | // Networking enums 334 | enum P2PSend { 335 | P2P_SEND_UNRELIABLE = k_EP2PSendUnreliable, 336 | P2P_SEND_UNRELIABLE_NO_DELAY = k_EP2PSendUnreliableNoDelay, 337 | P2P_SEND_RELIABLE = k_EP2PSendReliable, 338 | P2P_SEND_RELIABLE_WITH_BUFFERING = k_EP2PSendReliableWithBuffering 339 | }; 340 | 341 | enum P2PSessionError { 342 | P2P_SESSION_ERROR_NONE = k_EP2PSessionErrorNone, 343 | P2P_SESSION_ERROR_NOT_RUNNING_APP = k_EP2PSessionErrorNotRunningApp_DELETED, 344 | P2P_SESSION_ERROR_NO_RIGHTS_TO_APP = k_EP2PSessionErrorNoRightsToApp, 345 | P2P_SESSION_ERROR_DESTINATION_NOT_LOGGED_ON = k_EP2PSessionErrorDestinationNotLoggedIn_DELETED, 346 | P2P_SESSION_ERROR_TIMEOUT = k_EP2PSessionErrorTimeout, 347 | P2P_SESSION_ERROR_MAX = k_EP2PSessionErrorMax 348 | }; 349 | 350 | enum SocketConnectionType { 351 | NET_SOCKET_CONNECTION_TYPE_NOT_CONNECTED = k_ESNetSocketConnectionTypeNotConnected, 352 | NET_SOCKET_CONNECTION_TYPE_UDP = k_ESNetSocketConnectionTypeUDP, 353 | NET_SOCKET_CONNECTION_TYPE_UDP_RELAY = k_ESNetSocketConnectionTypeUDPRelay 354 | }; 355 | 356 | enum SocketState { 357 | NET_SOCKET_STATE_INVALID = k_ESNetSocketStateInvalid, 358 | NET_SOCKET_STATE_CONNECTED = k_ESNetSocketStateConnected, 359 | NET_SOCKET_STATE_INITIATED = k_ESNetSocketStateInitiated, 360 | NET_SOCKET_STATE_LOCAL_CANDIDATE_FOUND = k_ESNetSocketStateLocalCandidatesFound, 361 | NET_SOCKET_STATE_RECEIVED_REMOTE_CANDIDATES = k_ESNetSocketStateReceivedRemoteCandidates, 362 | NET_SOCKET_STATE_CHALLENGE_HANDSHAKE = k_ESNetSocketStateChallengeHandshake, 363 | NET_SOCKET_STATE_DISCONNECTING = k_ESNetSocketStateDisconnecting, 364 | NET_SOCKET_STATE_LOCAL_DISCONNECT = k_ESNetSocketStateLocalDisconnect, 365 | NET_SOCKET_STATE_TIMEOUT_DURING_CONNECT = k_ESNetSocketStateTimeoutDuringConnect, 366 | NET_SOCKET_STATE_REMOTE_END_DISCONNECTED = k_ESNetSocketStateRemoteEndDisconnected, 367 | NET_SOCKET_STATE_BROKEN = k_ESNetSocketStateConnectionBroken 368 | }; 369 | 370 | 371 | // Networking Sockets enums 372 | enum NetworkingConfigValue { 373 | NETWORKING_CONFIG_INVALID = k_ESteamNetworkingConfig_Invalid, 374 | NETWORKING_CONFIG_FAKE_PACKET_LOSS_SEND = k_ESteamNetworkingConfig_FakePacketLoss_Send, 375 | NETWORKING_CONFIG_FAKE_PACKET_LOSS_RECV = k_ESteamNetworkingConfig_FakePacketLoss_Recv, 376 | NETWORKING_CONFIG_FAKE_PACKET_LAG_SEND = k_ESteamNetworkingConfig_FakePacketLag_Send, 377 | NETWORKING_CONFIG_FAKE_PACKET_LAG_RECV = k_ESteamNetworkingConfig_FakePacketLag_Recv, 378 | NETWORKING_CONFIG_FAKE_PACKET_REORDER_SEND = k_ESteamNetworkingConfig_FakePacketReorder_Send, 379 | NETWORKING_CONFIG_FAKE_PACKET_REORDER_RECV = k_ESteamNetworkingConfig_FakePacketReorder_Recv, 380 | NETWORKING_CONFIG_FAKE_PACKET_REORDER_TIME = k_ESteamNetworkingConfig_FakePacketReorder_Time, 381 | NETWORKING_CONFIG_FAKE_PACKET_DUP_SEND = k_ESteamNetworkingConfig_FakePacketDup_Send, 382 | NETWORKING_CONFIG_FAKE_PACKET_DUP_REVC = k_ESteamNetworkingConfig_FakePacketDup_Recv, 383 | NETWORKING_CONFIG_FAKE_PACKET_DUP_TIME_MAX = k_ESteamNetworkingConfig_FakePacketDup_TimeMax, 384 | NETWORKING_CONFIG_PACKET_TRACE_MAX_BYTES = k_ESteamNetworkingConfig_PacketTraceMaxBytes, 385 | NETWORKING_CONFIG_FAKE_RATE_LIMIT_SEND_RATE = k_ESteamNetworkingConfig_FakeRateLimit_Send_Rate, 386 | NETWORKING_CONFIG_FAKE_RATE_LIMIT_SEND_BURST = k_ESteamNetworkingConfig_FakeRateLimit_Send_Burst, 387 | NETWORKING_CONFIG_FAKE_RATE_LIMIT_RECV_RATE = k_ESteamNetworkingConfig_FakeRateLimit_Recv_Rate, 388 | NETWORKING_CONFIG_FAKE_RATE_LIMIT_RECV_BURST = k_ESteamNetworkingConfig_FakeRateLimit_Recv_Burst, 389 | NETWORKING_CONFIG_OUT_OF_ORDER_CORRECTION_WINDOW_MICROSECONDS = k_ESteamNetworkingConfig_OutOfOrderCorrectionWindowMicroseconds, 390 | NETWORKING_CONFIG_CONNECTION_USER_DATA = k_ESteamNetworkingConfig_ConnectionUserData, 391 | NETWORKING_CONFIG_TIMEOUT_INITIAL = k_ESteamNetworkingConfig_TimeoutInitial, 392 | NETWORKING_CONFIG_TIMEOUT_CONNECTED = k_ESteamNetworkingConfig_TimeoutConnected, 393 | NETWORKING_CONFIG_SEND_BUFFER_SIZE = k_ESteamNetworkingConfig_SendBufferSize, 394 | NETWORKING_CONFIG_RECV_BUFFER_SIZE = k_ESteamNetworkingConfig_RecvBufferSize, 395 | NETWORKING_CONFIG_RECV_BUFFER_MESSAGES = k_ESteamNetworkingConfig_RecvBufferMessages, 396 | NETWORKING_CONFIG_RECV_MAX_MESSAGE_SIZE = k_ESteamNetworkingConfig_RecvMaxMessageSize, 397 | NETWORKING_CONFIG_RECV_MAX_SEGMENTS_PER_PACKET = k_ESteamNetworkingConfig_RecvMaxSegmentsPerPacket, 398 | NETWORKING_CONFIG_SEND_RATE_MIN = k_ESteamNetworkingConfig_SendRateMin, 399 | NETWORKING_CONFIG_SEND_RATE_MAX = k_ESteamNetworkingConfig_SendRateMax, 400 | NETWORKING_CONFIG_NAGLE_TIME = k_ESteamNetworkingConfig_NagleTime, 401 | NETWORKING_CONFIG_IP_ALLOW_WITHOUT_AUTH = k_ESteamNetworkingConfig_IP_AllowWithoutAuth, 402 | NETWORKING_CONFIG_IP_LOCAL_HOST_ALLOW_WITHOUT_AUTH = k_ESteamNetworkingConfig_IPLocalHost_AllowWithoutAuth, 403 | NETWORKING_CONFIG_MTU_PACKET_SIZE = k_ESteamNetworkingConfig_MTU_PacketSize, 404 | NETWORKING_CONFIG_MTU_DATA_SIZE = k_ESteamNetworkingConfig_MTU_DataSize, 405 | NETWORKING_CONFIG_UNENCRYPTED = k_ESteamNetworkingConfig_Unencrypted, 406 | NETWORKING_CONFIG_SYMMETRIC_CONNECT = k_ESteamNetworkingConfig_SymmetricConnect, 407 | NETWORKING_CONFIG_LOCAL_VIRTUAL_PORT = k_ESteamNetworkingConfig_LocalVirtualPort, 408 | NETWORKING_CONFIG_DUAL_WIFI_ENABLE = k_ESteamNetworkingConfig_DualWifi_Enable, 409 | NETWORKING_CONFIG_ENABLE_DIAGNOSTICS_UI = k_ESteamNetworkingConfig_EnableDiagnosticsUI, 410 | NETWORKING_CONFIG_SDR_CLIENT_CONSEC_PING_TIMEOUT_FAIL_INITIAL = k_ESteamNetworkingConfig_SDRClient_ConsecutitivePingTimeoutsFailInitial, 411 | NETWORKING_CONFIG_SDR_CLIENT_CONSEC_PING_TIMEOUT_FAIL = k_ESteamNetworkingConfig_SDRClient_ConsecutitivePingTimeoutsFail, 412 | NETWORKING_CONFIG_SDR_CLIENT_MIN_PINGS_BEFORE_PING_ACCURATE = k_ESteamNetworkingConfig_SDRClient_MinPingsBeforePingAccurate, 413 | NETWORKING_CONFIG_SDR_CLIENT_SINGLE_SOCKET = k_ESteamNetworkingConfig_SDRClient_SingleSocket, 414 | NETWORKING_CONFIG_SDR_CLIENT_FORCE_RELAY_CLUSTER = k_ESteamNetworkingConfig_SDRClient_ForceRelayCluster, 415 | NETWORKING_CONFIG_SDR_CLIENT_DEV_TICKET = k_ESteamNetworkingConfig_SDRClient_DevTicket, 416 | NETWORKING_CONFIG_SDR_CLIENT_FORCE_PROXY_ADDR = k_ESteamNetworkingConfig_SDRClient_ForceProxyAddr, 417 | NETWORKING_CONFIG_SDR_CLIENT_FAKE_CLUSTER_PING = k_ESteamNetworkingConfig_SDRClient_FakeClusterPing, 418 | NETWORKING_CONFIG_SDR_CLIENT_LIMIT_PING_PROBES_TO_NEAREST_N = k_ESteamNetworkingConfig_SDRClient_LimitPingProbesToNearestN, 419 | NETWORKING_CONFIG_LOG_LEVEL_ACK_RTT = k_ESteamNetworkingConfig_LogLevel_AckRTT, 420 | NETWORKING_CONFIG_LOG_LEVEL_PACKET_DECODE = k_ESteamNetworkingConfig_LogLevel_PacketDecode, 421 | NETWORKING_CONFIG_LOG_LEVEL_MESSAGE = k_ESteamNetworkingConfig_LogLevel_Message, 422 | NETWORKING_CONFIG_LOG_LEVEL_PACKET_GAPS = k_ESteamNetworkingConfig_LogLevel_PacketGaps, 423 | NETWORKING_CONFIG_LOG_LEVEL_P2P_RENDEZVOUS = k_ESteamNetworkingConfig_LogLevel_P2PRendezvous, 424 | NETWORKING_CONFIG_LOG_LEVEL_SRD_RELAY_PINGS = k_ESteamNetworkingConfig_LogLevel_SDRRelayPings, 425 | NETWORKING_CONFIG_CALLBACK_CONNECTION_STATUS_CHANGED = k_ESteamNetworkingConfig_Callback_ConnectionStatusChanged, 426 | NETWORKING_CONFIG_CALLBACK_AUTH_STATUS_CHANGED = k_ESteamNetworkingConfig_Callback_AuthStatusChanged, 427 | NETWORKING_CONFIG_CALLBACK_RELAY_NETWORK_STATUS_CHANGED = k_ESteamNetworkingConfig_Callback_RelayNetworkStatusChanged, 428 | NETWORKING_CONFIG_CALLBACK_MESSAGE_SESSION_REQUEST = k_ESteamNetworkingConfig_Callback_MessagesSessionRequest, 429 | NETWORKING_CONFIG_CALLBACK_MESSAGES_SESSION_FAILED = k_ESteamNetworkingConfig_Callback_MessagesSessionFailed, 430 | NETWORKING_CONFIG_CALLBACK_CREATE_CONNECTION_SIGNALING = k_ESteamNetworkingConfig_Callback_CreateConnectionSignaling, 431 | NETWORKING_CONFIG_CALLBACK_FAKE_IP_RESULT = k_ESteamNetworkingConfig_Callback_FakeIPResult, 432 | NETWORKING_CONFIG_P2P_STUN_SERVER_LIST = k_ESteamNetworkingConfig_P2P_STUN_ServerList, 433 | NETWORKING_CONFIG_P2P_TRANSPORT_ICE_ENABLE = k_ESteamNetworkingConfig_P2P_Transport_ICE_Enable, 434 | NETWORKING_CONFIG_P2P_TRANSPORT_ICE_PENALTY = k_ESteamNetworkingConfig_P2P_Transport_ICE_Penalty, 435 | NETWORKING_CONFIG_P2P_TRANSPORT_SDR_PENALTY = k_ESteamNetworkingConfig_P2P_Transport_SDR_Penalty, 436 | NETWORKING_CONFIG_P2P_TURN_SERVER_LIST = k_ESteamNetworkingConfig_P2P_TURN_ServerList, 437 | NETWORKING_CONFIG_P2P_TURN_uSER_LIST = k_ESteamNetworkingConfig_P2P_TURN_UserList, 438 | NETWORKING_CONFIG_P2P_TURN_PASS_LIST = k_ESteamNetworkingConfig_P2P_TURN_PassList, 439 | // NETWORKING_CONFIG_P2P_TRANSPORT_LAN_BEACON_PENALTY = k_ESteamNetworkingConfig_P2P_Transport_LANBeacon_Penalty, 440 | NETWORKING_CONFIG_P2P_TRANSPORT_ICE_IMPLEMENTATION = k_ESteamNetworkingConfig_P2P_Transport_ICE_Implementation, 441 | NETWORKING_CONFIG_ECN = k_ESteamNetworkingConfig_ECN, 442 | NETWORKING_CONFIG_VALUE_FORCE32BIT = k_ESteamNetworkingConfigValue__Force32Bit 443 | }; 444 | 445 | enum NetworkingConnectionEnd { 446 | CONNECTION_END_INVALID = k_ESteamNetConnectionEnd_Invalid, 447 | CONNECTION_END_APP_MIN = k_ESteamNetConnectionEnd_App_Min, 448 | CONNECTION_END_APP_GENERIC = k_ESteamNetConnectionEnd_App_Generic, 449 | CONNECTION_END_APP_MAX = k_ESteamNetConnectionEnd_App_Max, 450 | CONNECTION_END_APP_EXCEPTION_MIN = k_ESteamNetConnectionEnd_AppException_Min, 451 | CONNECTION_END_APP_EXCEPTION_GENERIC = k_ESteamNetConnectionEnd_AppException_Generic, 452 | CONNECTION_END_APP_EXCEPTION_MAX = k_ESteamNetConnectionEnd_AppException_Max, 453 | CONNECTION_END_LOCAL_MIN = k_ESteamNetConnectionEnd_Local_Min, 454 | CONNECTION_END_LOCAL_OFFLINE_MODE = k_ESteamNetConnectionEnd_Local_OfflineMode, 455 | CONNECTION_END_LOCAL_MANY_RELAY_CONNECTIVITY = k_ESteamNetConnectionEnd_Local_ManyRelayConnectivity, 456 | CONNECTION_END_LOCAL_HOSTED_SERVER_PRIMARY_RELAY = k_ESteamNetConnectionEnd_Local_HostedServerPrimaryRelay, 457 | CONNECTION_END_LOCAL_NETWORK_CONFIG = k_ESteamNetConnectionEnd_Local_NetworkConfig, 458 | CONNECTION_END_LOCAL_RIGHTS = k_ESteamNetConnectionEnd_Local_Rights, 459 | CONNECTION_END_NO_PUBLIC_ADDRESS = k_ESteamNetConnectionEnd_Local_P2P_ICE_NoPublicAddresses, 460 | CONNECTION_END_LOCAL_MAX = k_ESteamNetConnectionEnd_Local_Max, 461 | CONNECTION_END_REMOVE_MIN = k_ESteamNetConnectionEnd_Remote_Min, 462 | CONNECTION_END_REMOTE_TIMEOUT = k_ESteamNetConnectionEnd_Remote_Timeout, 463 | CONNECTION_END_REMOTE_BAD_CRYPT = k_ESteamNetConnectionEnd_Remote_BadCrypt, 464 | CONNECTION_END_REMOTE_BAD_CERT = k_ESteamNetConnectionEnd_Remote_BadCert, 465 | CONNECTION_END_BAD_PROTOCOL_VERSION = k_ESteamNetConnectionEnd_Remote_BadProtocolVersion, 466 | CONNECTION_END_REMOTE_P2P_ICE_NO_PUBLIC_ADDRESSES = k_ESteamNetConnectionEnd_Remote_P2P_ICE_NoPublicAddresses, 467 | CONNECTION_END_REMOTE_MAX = k_ESteamNetConnectionEnd_Remote_Max, 468 | CONNECTION_END_MISC_MIN = k_ESteamNetConnectionEnd_Misc_Min, 469 | CONNECTION_END_MISC_GENERIC = k_ESteamNetConnectionEnd_Misc_Generic, 470 | CONNECTION_END_MISC_INTERNAL_ERROR = k_ESteamNetConnectionEnd_Misc_InternalError, 471 | CONNECTION_END_MISC_TIMEOUT = k_ESteamNetConnectionEnd_Misc_Timeout, 472 | CONNECTION_END_MISC_STEAM_CONNECTIVITY = k_ESteamNetConnectionEnd_Misc_SteamConnectivity, 473 | CONNECTION_END_MISC_NO_RELAY_SESSIONS_TO_CLIENT = k_ESteamNetConnectionEnd_Misc_NoRelaySessionsToClient, 474 | CONNECTION_END_MISC_P2P_RENDEZVOUS = k_ESteamNetConnectionEnd_Misc_P2P_Rendezvous, 475 | CONNECTION_END_MISC_P2P_NAT_FIREWALL = k_ESteamNetConnectionEnd_Misc_P2P_NAT_Firewall, 476 | CONNECTION_END_MISC_PEER_SENT_NO_CONNECTION = k_ESteamNetConnectionEnd_Misc_PeerSentNoConnection, 477 | CONNECTION_END_MISC_MAX = k_ESteamNetConnectionEnd_Misc_Max, 478 | CONNECTION_END_FORCE32BIT = k_ESteamNetConnectionEnd__Force32Bit 479 | }; 480 | 481 | enum NetworkingConnectionState { 482 | CONNECTION_STATE_NONE = k_ESteamNetworkingConnectionState_None, 483 | CONNECTION_STATE_CONNECTING = k_ESteamNetworkingConnectionState_Connecting, 484 | CONNECTION_STATE_FINDING_ROUTE = k_ESteamNetworkingConnectionState_FindingRoute, 485 | CONNECTION_STATE_CONNECTED = k_ESteamNetworkingConnectionState_Connected, 486 | CONNECTION_STATE_CLOSED_BY_PEER = k_ESteamNetworkingConnectionState_ClosedByPeer, 487 | CONNECTION_STATE_PROBLEM_DETECTED_LOCALLY = k_ESteamNetworkingConnectionState_ProblemDetectedLocally, 488 | CONNECTION_STATE_FIN_WAIT = k_ESteamNetworkingConnectionState_FinWait, 489 | CONNECTION_STATE_LINGER = k_ESteamNetworkingConnectionState_Linger, 490 | CONNECTION_STATE_DEAD = k_ESteamNetworkingConnectionState_Dead, 491 | CONNECTION_STATE_FORCE_32BIT = k_ESteamNetworkingConnectionState__Force32Bit 492 | }; 493 | 494 | enum NetworkingFakeIPType { 495 | FAKE_IP_TYPE_INVALID = k_ESteamNetworkingFakeIPType_Invalid, 496 | FAKE_IP_TYPE_NOT_FAKE = k_ESteamNetworkingFakeIPType_NotFake, 497 | FAKE_IP_TYPE_GLOBAL_IPV4 = k_ESteamNetworkingFakeIPType_GlobalIPv4, 498 | FAKE_IP_TYPE_LOCAL_IPV4 = k_ESteamNetworkingFakeIPType_LocalIPv4, 499 | FAKE_IP_TYPE_FORCE32BIT = k_ESteamNetworkingFakeIPType__Force32Bit 500 | }; 501 | 502 | enum NetworkingGetConfigValueResult { 503 | NETWORKING_GET_CONFIG_VALUE_BAD_VALUE = k_ESteamNetworkingGetConfigValue_BadValue, 504 | NETWORKING_GET_CONFIG_VALUE_BAD_SCOPE_OBJ = k_ESteamNetworkingGetConfigValue_BadScopeObj, 505 | NETWORKING_GET_CONFIG_VALUE_BUFFER_TOO_SMALL = k_ESteamNetworkingGetConfigValue_BufferTooSmall, 506 | NETWORKING_GET_CONFIG_VALUE_OK = k_ESteamNetworkingGetConfigValue_OK, 507 | NETWORKING_GET_CONFIG_VALUE_OK_INHERITED = k_ESteamNetworkingGetConfigValue_OKInherited, 508 | NETWORKING_GET_CONFIG_VALUE_FORCE_32BIT = k_ESteamNetworkingGetConfigValueResult__Force32Bit 509 | }; 510 | 511 | enum NetworkingIdentityType { 512 | IDENTITY_TYPE_INVALID = k_ESteamNetworkingIdentityType_Invalid, 513 | IDENTITY_TYPE_STEAMID = k_ESteamNetworkingIdentityType_SteamID, 514 | IDENTITY_TYPE_IP_ADDRESS = k_ESteamNetworkingIdentityType_IPAddress, 515 | IDENTITY_TYPE_GENERIC_STRING = k_ESteamNetworkingIdentityType_GenericString, 516 | IDENTITY_TYPE_GENERIC_BYTES = k_ESteamNetworkingIdentityType_GenericBytes, 517 | IDENTITY_TYPE_UNKNOWN_TYPE = k_ESteamNetworkingIdentityType_UnknownType, 518 | IDENTITY_TYPE_XBOX_PAIRWISE = k_ESteamNetworkingIdentityType_XboxPairwiseID, 519 | IDENTITY_TYPE_SONY_PSN = k_ESteamNetworkingIdentityType_SonyPSN, 520 | IDENTITY_TYPE_FORCE_32BIT = k_ESteamNetworkingIdentityType__Force32bit 521 | }; 522 | 523 | enum NetworkingSocketsDebugOutputType { 524 | NETWORKING_SOCKET_DEBUG_OUTPUT_TYPE_NONE = k_ESteamNetworkingSocketsDebugOutputType_None, 525 | NETWORKING_SOCKET_DEBUG_OUTPUT_TYPE_BUG = k_ESteamNetworkingSocketsDebugOutputType_Bug, 526 | NETWORKING_SOCKET_DEBUG_OUTPUT_TYPE_ERROR = k_ESteamNetworkingSocketsDebugOutputType_Error, 527 | NETWORKING_SOCKET_DEBUG_OUTPUT_TYPE_IMPORTANT = k_ESteamNetworkingSocketsDebugOutputType_Important, 528 | NETWORKING_SOCKET_DEBUG_OUTPUT_TYPE_WARNING = k_ESteamNetworkingSocketsDebugOutputType_Warning, 529 | NETWORKING_SOCKET_DEBUG_OUTPUT_TYPE_MSG = k_ESteamNetworkingSocketsDebugOutputType_Msg, 530 | NETWORKING_SOCKET_DEBUG_OUTPUT_TYPE_VERBOSE = k_ESteamNetworkingSocketsDebugOutputType_Verbose, 531 | NETWORKING_SOCKET_DEBUG_OUTPUT_TYPE_DEBUG = k_ESteamNetworkingSocketsDebugOutputType_Debug, 532 | NETWORKING_SOCKET_DEBUG_OUTPUT_TYPE_EVERYTHING = k_ESteamNetworkingSocketsDebugOutputType_Everything, 533 | NETWORKING_SOCKET_DEBUG_OUTPUT_TYPE_FORCE_32BIT = k_ESteamNetworkingSocketsDebugOutputType__Force32Bit 534 | }; 535 | 536 | 537 | // Networking Utils enums { 538 | enum NetworkingAvailability { 539 | NETWORKING_AVAILABILITY_CANNOT_TRY = k_ESteamNetworkingAvailability_CannotTry, 540 | NETWORKING_AVAILABILITY_FAILED = k_ESteamNetworkingAvailability_Failed, 541 | NETWORKING_AVAILABILITY_PREVIOUSLY = k_ESteamNetworkingAvailability_Previously, 542 | NETWORKING_AVAILABILITY_RETRYING = k_ESteamNetworkingAvailability_Retrying, 543 | NETWORKING_AVAILABILITY_NEVER_TRIED = k_ESteamNetworkingAvailability_NeverTried, 544 | NETWORKING_AVAILABILITY_WAITING = k_ESteamNetworkingAvailability_Waiting, 545 | NETWORKING_AVAILABILITY_ATTEMPTING = k_ESteamNetworkingAvailability_Attempting, 546 | NETWORKING_AVAILABILITY_CURRENT = k_ESteamNetworkingAvailability_Current, 547 | NETWORKING_AVAILABILITY_UNKNOWN = k_ESteamNetworkingAvailability_Unknown, 548 | NETWORKING_AVAILABILITY_FORCE_32BIT = k_ESteamNetworkingAvailability__Force32bit 549 | }; 550 | 551 | enum NetworkingConfigDataType { 552 | NETWORKING_CONFIG_TYPE_INT32 = k_ESteamNetworkingConfig_Int32, 553 | NETWORKING_CONFIG_TYPE_INT64 = k_ESteamNetworkingConfig_Int64, 554 | NETWORKING_CONFIG_TYPE_FLOAT = k_ESteamNetworkingConfig_Float, 555 | NETWORKING_CONFIG_TYPE_STRING = k_ESteamNetworkingConfig_String, 556 | NETWORKING_CONFIG_TYPE_FUNCTION_PTR = k_ESteamNetworkingConfig_Ptr, 557 | NETWORKING_CONFIG_TYPE_FORCE_32BIT = k_ESteamNetworkingConfigDataType__Force32Bit 558 | }; 559 | 560 | enum NetworkingConfigScope { 561 | NETWORKING_CONFIG_SCOPE_GLOBAL = k_ESteamNetworkingConfig_Global, 562 | NETWORKING_CONFIG_SCOPE_SOCKETS_INTERFACE = k_ESteamNetworkingConfig_SocketsInterface, 563 | NETWORKING_CONFIG_SCOPE_LISTEN_SOCKET = k_ESteamNetworkingConfig_ListenSocket, 564 | NETWORKING_CONFIG_SCOPE_CONNECTION = k_ESteamNetworkingConfig_Connection, 565 | NETWORKING_CONFIG_SCOPE_FORCE_32BIT = k_ESteamNetworkingConfigScope__Force32Bit 566 | }; 567 | 568 | 569 | // Remote Storage enums 570 | enum FilePathType { 571 | FILE_PATH_TYPE_INVALID = k_ERemoteStorageFilePathType_Invalid, 572 | FILE_PATH_TYPE_ABSOLUTE = k_ERemoteStorageFilePathType_Absolute, 573 | FILE_PATH_TYPE_API_FILENAME = k_ERemoteStorageFilePathType_APIFilename 574 | }; 575 | 576 | enum LocalFileChange { 577 | LOCAL_FILE_CHANGE_INVALID = k_ERemoteStorageLocalFileChange_Invalid, 578 | LOCAL_FILE_CHANGE_FILE_UPDATED = k_ERemoteStorageLocalFileChange_FileUpdated, 579 | LOCAL_FILE_CHANGE_FILE_DELETED = k_ERemoteStorageLocalFileChange_FileDeleted 580 | }; 581 | 582 | enum RemoteStoragePlatform { 583 | REMOTE_STORAGE_PLATFORM_NONE = k_ERemoteStoragePlatformNone, 584 | REMOTE_STORAGE_PLATFORM_WINDOWS = k_ERemoteStoragePlatformWindows, 585 | REMOTE_STORAGE_PLATFORM_OSX = k_ERemoteStoragePlatformOSX, 586 | REMOTE_STORAGE_PLATFORM_PS3 = k_ERemoteStoragePlatformPS3, 587 | REMOTE_STORAGE_PLATFORM_LINUX = k_ERemoteStoragePlatformLinux, 588 | REMOTE_STORAGE_PLATFORM_SWITCH = k_ERemoteStoragePlatformSwitch, 589 | REMOTE_STORAGE_PLATFORM_ANDROID = k_ERemoteStoragePlatformAndroid, 590 | REMOTE_STORAGE_PLATFORM_IOS = k_ERemoteStoragePlatformIOS, 591 | REMOTE_STORAGE_PLATFORM_ALL = k_ERemoteStoragePlatformAll 592 | }; 593 | 594 | enum RemoteStoragePublishedFileVisibility { 595 | REMOTE_STORAGE_PUBLISHED_VISIBILITY_PUBLIC = k_ERemoteStoragePublishedFileVisibilityPublic, 596 | REMOTE_STORAGE_PUBLISHED_VISIBILITY_FRIENDS_ONLY = k_ERemoteStoragePublishedFileVisibilityFriendsOnly, 597 | REMOTE_STORAGE_PUBLISHED_VISIBILITY_PRIVATE = k_ERemoteStoragePublishedFileVisibilityPrivate, 598 | REMOTE_STORAGE_PUBLISHED_VISIBILITY_UNLISTED = k_ERemoteStoragePublishedFileVisibilityUnlisted 599 | }; 600 | 601 | enum UGCReadAction { 602 | UGC_READ_CONTINUE_READING_UNTIL_FINISHED = k_EUGCRead_ContinueReadingUntilFinished, 603 | UGC_READ_CONTINUE_READING = k_EUGCRead_ContinueReading, 604 | UGC_READ_CLOSE = k_EUGCRead_Close 605 | }; 606 | 607 | enum WorkshopEnumerationType { 608 | WORKSHOP_ENUMERATION_TYPE_RANKED_BY_VOTE = k_EWorkshopEnumerationTypeRankedByVote, 609 | WORKSHOP_ENUMERATION_TYPE_RECENT = k_EWorkshopEnumerationTypeRecent, 610 | WORKSHOP_ENUMERATION_TYPE_TRENDING = k_EWorkshopEnumerationTypeTrending, 611 | WORKSHOP_ENUMERATION_TYPE_FAVORITES_OF_FRIENDS = k_EWorkshopEnumerationTypeFavoritesOfFriends, 612 | WORKSHOP_ENUMERATION_TYPE_VOTED_BY_FRIENDS = k_EWorkshopEnumerationTypeVotedByFriends, 613 | WORKSHOP_ENUMERATION_TYPE_CONTENT_BY_FRIENDS = k_EWorkshopEnumerationTypeContentByFriends, 614 | WORKSHOP_ENUMERATION_TYPE_RECENT_FROM_FOLLOWED_USERS = k_EWorkshopEnumerationTypeRecentFromFollowedUsers 615 | }; 616 | 617 | enum WorkshopFileAction { 618 | WORKSHOP_FILE_ACTION_PLAYED = k_EWorkshopFileActionPlayed, 619 | WORKSHOP_FILE_ACTION_COMPLETED = k_EWorkshopFileActionCompleted 620 | }; 621 | 622 | enum WorkshopFileType { 623 | WORKSHOP_FILE_TYPE_FIRST = k_EWorkshopFileTypeFirst, 624 | WORKSHOP_FILE_TYPE_COMMUNITY = k_EWorkshopFileTypeCommunity, 625 | WORKSHOP_FILE_TYPE_MICROTRANSACTION = k_EWorkshopFileTypeMicrotransaction, 626 | WORKSHOP_FILE_TYPE_COLLECTION = k_EWorkshopFileTypeCollection, 627 | WORKSHOP_FILE_TYPE_ART = k_EWorkshopFileTypeArt, 628 | WORKSHOP_FILE_TYPE_VIDEO = k_EWorkshopFileTypeVideo, 629 | WORKSHOP_FILE_TYPE_SCREENSHOT = k_EWorkshopFileTypeScreenshot, 630 | WORKSHOP_FILE_TYPE_GAME = k_EWorkshopFileTypeGame, 631 | WORKSHOP_FILE_TYPE_SOFTWARE = k_EWorkshopFileTypeSoftware, 632 | WORKSHOP_FILE_TYPE_CONCEPT = k_EWorkshopFileTypeConcept, 633 | WORKSHOP_FILE_TYPE_WEB_GUIDE = k_EWorkshopFileTypeWebGuide, 634 | WORKSHOP_FILE_TYPE_INTEGRATED_GUIDE = k_EWorkshopFileTypeIntegratedGuide, 635 | WORKSHOP_FILE_TYPE_MERCH = k_EWorkshopFileTypeMerch, 636 | WORKSHOP_FILE_TYPE_CONTROLLER_BINDING = k_EWorkshopFileTypeControllerBinding, 637 | WORKSHOP_FILE_TYPE_STEAMWORKS_ACCESS_INVITE = k_EWorkshopFileTypeSteamworksAccessInvite, 638 | WORKSHOP_FILE_TYPE_STEAM_VIDEO = k_EWorkshopFileTypeSteamVideo, 639 | WORKSHOP_FILE_TYPE_GAME_MANAGED_ITEM = k_EWorkshopFileTypeGameManagedItem, 640 | WORKSHOP_FILE_TYPE_CLIP = k_EWorkshopFileTypeClip, 641 | WORKSHOP_FILE_TYPE_MAX = k_EWorkshopFileTypeMax 642 | }; 643 | 644 | enum WorkshopVideoProvider { 645 | WORKSHOP_VIDEO_PROVIDER_NONE = k_EWorkshopVideoProviderNone, 646 | WORKSHOP_VIDEO_PROVIDER_YOUTUBE = k_EWorkshopVideoProviderYoutube 647 | }; 648 | 649 | enum WorkshopVote { 650 | WORKSHOP_VOTE_UNVOTED = k_EWorkshopVoteUnvoted, 651 | WORKSHOP_VOTE_FOR = k_EWorkshopVoteFor, 652 | WORKSHOP_VOTE_AGAINST = k_EWorkshopVoteAgainst, 653 | WORKSHOP_VOTE_LATER = k_EWorkshopVoteLater 654 | }; 655 | 656 | 657 | // UGC enums 658 | enum ItemPreviewType { 659 | ITEM_PREVIEW_TYPE_IMAGE = k_EItemPreviewType_Image, 660 | ITEM_PREVIEW_TYPE_YOUTUBE_VIDEO = k_EItemPreviewType_YouTubeVideo, 661 | ITEM_PREVIEW_TYPE_SKETCHFAB = k_EItemPreviewType_Sketchfab, 662 | ITEM_PREVIEW_TYPE_ENVIRONMENTMAP_HORIZONTAL_CROSS = k_EItemPreviewType_EnvironmentMap_HorizontalCross, 663 | ITEM_PREVIEW_TYPE_ENVIRONMENTMAP_LAT_LONG = k_EItemPreviewType_EnvironmentMap_LatLong, 664 | ITEM_PREVIEW_TYPE_CLIP = k_EItemPreviewType_Clip, 665 | ITEM_PREVIEW_TYPE_RESERVED_MAX = k_EItemPreviewType_ReservedMax 666 | }; 667 | 668 | enum ItemState { 669 | ITEM_STATE_NONE = k_EItemStateNone, 670 | ITEM_STATE_SUBSCRIBED = k_EItemStateSubscribed, 671 | ITEM_STATE_LEGACY_ITEM = k_EItemStateLegacyItem, 672 | ITEM_STATE_INSTALLED = k_EItemStateInstalled, 673 | ITEM_STATE_NEEDS_UPDATE = k_EItemStateNeedsUpdate, 674 | ITEM_STATE_DOWNLOADING = k_EItemStateDownloading, 675 | ITEM_STATE_DOWNLOAD_PENDING = k_EItemStateDownloadPending, 676 | ITEM_STATE_DISABLED_LOCALLY = k_EItemStateDisabledLocally 677 | }; 678 | 679 | enum ItemStatistic { 680 | ITEM_STATISTIC_NUM_SUBSCRIPTIONS = k_EItemStatistic_NumSubscriptions, 681 | ITEM_STATISTIC_NUM_FAVORITES = k_EItemStatistic_NumFavorites, 682 | ITEM_STATISTIC_NUM_FOLLOWERS = k_EItemStatistic_NumFollowers, 683 | ITEM_STATISTIC_NUM_UNIQUE_SUBSCRIPTIONS = k_EItemStatistic_NumUniqueSubscriptions, 684 | ITEM_STATISTIC_NUM_UNIQUE_FAVORITES = k_EItemStatistic_NumUniqueFavorites, 685 | ITEM_STATISTIC_NUM_UNIQUE_FOLLOWERS = k_EItemStatistic_NumUniqueFollowers, 686 | ITEM_STATISTIC_NUM_UNIQUE_WEBSITE_VIEWS = k_EItemStatistic_NumUniqueWebsiteViews, 687 | ITEM_STATISTIC_REPORT_SCORE = k_EItemStatistic_ReportScore, 688 | ITEM_STATISTIC_NUM_SECONDS_PLAYED = k_EItemStatistic_NumSecondsPlayed, 689 | ITEM_STATISTIC_NUM_PLAYTIME_SESSIONS = k_EItemStatistic_NumPlaytimeSessions, 690 | ITEM_STATISTIC_NUM_COMMENTS = k_EItemStatistic_NumComments, 691 | ITEM_STATISTIC_NUM_SECONDS_PLAYED_DURING_TIME_PERIOD = k_EItemStatistic_NumSecondsPlayedDuringTimePeriod, 692 | ITEM_STATISTIC_NUM_PLAYTIME_SESSIONS_DURING_TIME_PERIOD = k_EItemStatistic_NumPlaytimeSessionsDuringTimePeriod 693 | }; 694 | 695 | enum ItemUpdateStatus { 696 | ITEM_UPDATE_STATUS_INVALID = k_EItemUpdateStatusInvalid, 697 | ITEM_UPDATE_STATUS_PREPARING_CONFIG = k_EItemUpdateStatusPreparingConfig, 698 | ITEM_UPDATE_STATUS_PREPARING_CONTENT = k_EItemUpdateStatusPreparingContent, 699 | ITEM_UPDATE_STATUS_UPLOADING_CONTENT = k_EItemUpdateStatusUploadingContent, 700 | ITEM_UPDATE_STATUS_UPLOADING_PREVIEW_FILE = k_EItemUpdateStatusUploadingPreviewFile, 701 | ITEM_UPDATE_STATUS_COMMITTING_CHANGES = k_EItemUpdateStatusCommittingChanges 702 | }; 703 | 704 | enum UGCContentDescriptorID { 705 | UGC_CONTENT_DESCRIPTOR_NUDITY_OR_SEXUAL_CONTENT = k_EUGCContentDescriptor_NudityOrSexualContent, 706 | UGC_CONTENT_DESCRIPTOR_FREQUENT_VIOLENCE_OR_GORE = k_EUGCContentDescriptor_FrequentViolenceOrGore, 707 | UGC_CONTENT_DESCRIPTOR_ADULT_ONLY_SEXUAL_CONTENT = k_EUGCContentDescriptor_AdultOnlySexualContent, 708 | UGC_CONTENT_DESCRIPTOR_GRATUITOUS_SEXUAL_CONTENT = k_EUGCContentDescriptor_GratuitousSexualContent, 709 | UGC_CONTENT_DESCRIPTOR_ANY_MATURE_CONTENT = k_EUGCContentDescriptor_AnyMatureContent 710 | }; 711 | 712 | enum UGCMatchingUGCType { 713 | UGC_MATCHING_UGC_TYPE_ITEMS = k_EUGCMatchingUGCType_Items, 714 | UGC_MATCHING_UGC_TYPE_ITEMS_MTX = k_EUGCMatchingUGCType_Items_Mtx, 715 | UGC_MATCHING_UGC_TYPE_ITEMS_READY_TO_USE = k_EUGCMatchingUGCType_Items_ReadyToUse, 716 | UGC_MATCHING_UGC_TYPE_COLLECTIONS = k_EUGCMatchingUGCType_Collections, 717 | UGC_MATCHING_UGC_TYPE_ARTWORK = k_EUGCMatchingUGCType_Artwork, 718 | UGC_MATCHING_UGC_TYPE_VIDEOS = k_EUGCMatchingUGCType_Videos, 719 | UGC_MATCHING_UGC_TYPE_SCREENSHOTS = k_EUGCMatchingUGCType_Screenshots, 720 | UGC_MATCHING_UGC_TYPE_ALL_GUIDES = k_EUGCMatchingUGCType_AllGuides, 721 | UGC_MATCHING_UGC_TYPE_WEB_GUIDES = k_EUGCMatchingUGCType_WebGuides, 722 | UGC_MATCHING_UGC_TYPE_INTEGRATED_GUIDES = k_EUGCMatchingUGCType_IntegratedGuides, 723 | UGC_MATCHING_UGC_TYPE_USABLE_IN_GAME = k_EUGCMatchingUGCType_UsableInGame, 724 | UGC_MATCHING_UGC_TYPE_CONTROLLER_BINDINGS = k_EUGCMatchingUGCType_ControllerBindings, 725 | UGC_MATCHING_UGC_TYPE_GAME_MANAGED_ITEMS = k_EUGCMatchingUGCType_GameManagedItems, 726 | UGC_MATCHING_UGC_TYPE_ALL = k_EUGCMatchingUGCType_All 727 | }; 728 | 729 | enum UGCQuery { 730 | UGC_QUERY_RANKED_BY_VOTE = k_EUGCQuery_RankedByVote, 731 | UGC_QUERY_RANKED_BY_PUBLICATION_DATE = k_EUGCQuery_RankedByPublicationDate, 732 | UGC_QUERY_ACCEPTED_FOR_GAME_RANKED_BY_ACCEPTANCE_DATE = k_EUGCQuery_AcceptedForGameRankedByAcceptanceDate, 733 | UGC_QUERY_RANKED_BY_TREND = k_EUGCQuery_RankedByTrend, 734 | UGC_QUERY_FAVORITED_BY_FRIENDS_RANKED_BY_PUBLICATION_DATE = k_EUGCQuery_FavoritedByFriendsRankedByPublicationDate, 735 | UGC_QUERY_CREATED_BY_FRIENDS_RANKED_BY_PUBLICATION_DATE = k_EUGCQuery_CreatedByFriendsRankedByPublicationDate, 736 | UGC_QUERY_RANKED_BY_NUM_TIMES_REPORTED = k_EUGCQuery_RankedByNumTimesReported, 737 | UGC_QUERY_CREATED_BY_FOLLOWED_USERS_RANKED_BY_PUBLICATION_DATE = k_EUGCQuery_CreatedByFollowedUsersRankedByPublicationDate, 738 | UGC_QUERY_NOT_YET_RATED = k_EUGCQuery_NotYetRated, 739 | UGC_QUERY_RANKED_BY_TOTAL_VOTES_ASC = k_EUGCQuery_RankedByTotalVotesAsc, 740 | UGC_QUERY_RANKED_BY_VOTES_UP = k_EUGCQuery_RankedByVotesUp, 741 | UGC_QUERY_RANKED_BY_TEXT_SEARCH = k_EUGCQuery_RankedByTextSearch, 742 | UGC_QUERY_RANKED_BY_TOTAL_UNIQUE_SUBSCRIPTIONS = k_EUGCQuery_RankedByTotalUniqueSubscriptions, 743 | UGC_QUERY_RANKED_BY_PLAYTIME_TREND = k_EUGCQuery_RankedByPlaytimeTrend, 744 | UGC_QUERY_RANKED_BY_TOTAL_PLAYTIME = k_EUGCQuery_RankedByTotalPlaytime, 745 | UGC_QUERY_RANKED_BY_AVERAGE_PLAYTIME_TREND = k_EUGCQuery_RankedByAveragePlaytimeTrend, 746 | UGC_QUERY_RANKED_BY_LIFETIME_AVERAGE_PLAYTIME = k_EUGCQuery_RankedByLifetimeAveragePlaytime, 747 | UGC_QUERY_RANKED_BY_PLAYTIME_SESSIONS_TREND = k_EUGCQuery_RankedByPlaytimeSessionsTrend, 748 | UGC_QUERY_RANKED_BY_LIFETIME_PLAYTIME_SESSIONS = k_EUGCQuery_RankedByLifetimePlaytimeSessions, 749 | UGC_QUERY_RANKED_BY_LAST_UPDATED_DATE = k_EUGCQuery_RankedByLastUpdatedDate 750 | }; 751 | 752 | enum UserUGCList { 753 | USER_UGC_LIST_PUBLISHED = k_EUserUGCList_Published, 754 | USER_UGC_LIST_VOTED_ON = k_EUserUGCList_VotedOn, 755 | USER_UGC_LIST_VOTED_UP = k_EUserUGCList_VotedUp, 756 | USER_UGC_LIST_VOTED_DOWN = k_EUserUGCList_VotedDown, 757 | USER_UGC_LIST_WILL_VOTE_LATER = k_EUserUGCList_WillVoteLater, 758 | USER_UGC_LIST_FAVORITED = k_EUserUGCList_Favorited, 759 | USER_UGC_LIST_SUBSCRIBED = k_EUserUGCList_Subscribed, 760 | USER_UGC_LIST_USED_OR_PLAYED = k_EUserUGCList_UsedOrPlayed, 761 | USER_UGC_LIST_FOLLOWED = k_EUserUGCList_Followed 762 | }; 763 | 764 | enum UserUGCListSortOrder { 765 | USER_UGC_LIST_SORT_ORDER_CREATION_ORDER_DESC = k_EUserUGCListSortOrder_CreationOrderDesc, 766 | USER_UGC_LIST_SORT_ORDER_CREATION_ORDER_ASC = k_EUserUGCListSortOrder_CreationOrderAsc, 767 | USER_UGC_LIST_SORT_ORDER_TITLE_ASC = k_EUserUGCListSortOrder_TitleAsc, 768 | USER_UGC_LIST_SORT_ORDER_LAST_UPDATED_DESC = k_EUserUGCListSortOrder_LastUpdatedDesc, 769 | USER_UGC_LIST_SORT_ORDER_SUBSCRIPTION_DATE_DESC = k_EUserUGCListSortOrder_SubscriptionDateDesc, 770 | USER_UGC_LIST_SORT_ORDER_VOTE_SCORE_DESC = k_EUserUGCListSortOrder_VoteScoreDesc, 771 | USER_UGC_LIST_SORT_ORDER_FOR_MODERATION = k_EUserUGCListSortOrder_ForModeration 772 | }; 773 | 774 | 775 | // Utils enums 776 | enum CheckFileSignature { 777 | CHECK_FILE_SIGNATURE_INVALID_SIGNATURE = k_ECheckFileSignatureInvalidSignature, 778 | CHECK_FILE_SIGNATURE_VALID_SIGNATURE = k_ECheckFileSignatureValidSignature, 779 | CHECK_FILE_SIGNATURE_FILE_NOT_FOUND = k_ECheckFileSignatureFileNotFound, 780 | CHECK_FILE_SIGNATURE_NO_SIGNATURES_FOUND_FOR_THIS_APP = k_ECheckFileSignatureNoSignaturesFoundForThisApp, 781 | CHECK_FILE_SIGNATURE_NO_SIGNATURES_FOUND_FOR_THIS_FILE = k_ECheckFileSignatureNoSignaturesFoundForThisFile 782 | }; 783 | 784 | enum GamepadTextInputLineMode { 785 | GAMEPAD_TEXT_INPUT_LINE_MODE_SINGLE_LINE = k_EGamepadTextInputLineModeSingleLine, 786 | GAMEPAD_TEXT_INPUT_LINE_MODE_MULTIPLE_LINES = k_EGamepadTextInputLineModeMultipleLines 787 | }; 788 | 789 | enum GamepadTextInputMode { 790 | GAMEPAD_TEXT_INPUT_MODE_NORMAL = k_EGamepadTextInputModeNormal, 791 | GAMEPAD_TEXT_INPUT_MODE_PASSWORD = k_EGamepadTextInputModePassword 792 | }; 793 | 794 | enum FloatingGamepadTextInputMode { 795 | FLOATING_GAMEPAD_TEXT_INPUT_MODE_SINGLE_LINE = k_EFloatingGamepadTextInputModeModeSingleLine, 796 | FLOATING_GAMEPAD_TEXT_INPUT_MODE_MULTIPLE_LINES = k_EFloatingGamepadTextInputModeModeMultipleLines, 797 | FLOATING_GAMEPAD_TEXT_INPUT_MODE_EMAIL = k_EFloatingGamepadTextInputModeModeEmail, 798 | FLOATING_GAMEPAD_TEXT_INPUT_MODE_NUMERIC = k_EFloatingGamepadTextInputModeModeNumeric 799 | }; 800 | 801 | enum APICallFailure { 802 | STEAM_API_CALL_FAILURE_NONE = k_ESteamAPICallFailureNone, 803 | STEAM_API_CALL_FAILURE_STEAM_GONE = k_ESteamAPICallFailureSteamGone, 804 | STEAM_API_CALL_FAILURE_NETWORK_FAILURE = k_ESteamAPICallFailureNetworkFailure, 805 | STEAM_API_CALL_FAILURE_INVALID_HANDLE = k_ESteamAPICallFailureInvalidHandle, 806 | STEAM_API_CALL_FAILURE_MISMATCHED_CALLBACK = k_ESteamAPICallFailureMismatchedCallback 807 | }; 808 | 809 | enum TextFilteringContext { 810 | TEXT_FILTERING_CONTEXT_UNKNOWN = k_ETextFilteringContextUnknown, 811 | TEXT_FILTERING_CONTEXT_GAME_CONTENT = k_ETextFilteringContextGameContent, 812 | TEXT_FILTERING_CONTEXT_CHAT = k_ETextFilteringContextChat, 813 | TEXT_FILTERING_CONTEXT_NAME = k_ETextFilteringContextName 814 | }; 815 | 816 | 817 | #endif // GODOTSTEAM_SERVER_ENUMS_H -------------------------------------------------------------------------------- /icons/SteamServer.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /license.txt: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2015-Current | GP Garcia and Contributors 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. -------------------------------------------------------------------------------- /register_types.cpp: -------------------------------------------------------------------------------- 1 | //===========================================================================// 2 | // GodotSteam - register_types.cpp 3 | //===========================================================================// 4 | // 5 | // Copyright (c) 2015-Current | GP Garcia and Contributors (view contributors.md) 6 | // 7 | // Permission is hereby granted, free of charge, to any person obtaining a copy 8 | // of this software and associated documentation files (the "Software"), to deal 9 | // in the Software without restriction, including without limitation the rights 10 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 11 | // copies of the Software, and to permit persons to whom the Software is 12 | // furnished to do so, subject to the following conditions: 13 | // 14 | // The above copyright notice and this permission notice shall be included in all 15 | // copies or substantial portions of the Software. 16 | // 17 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 18 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 20 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 21 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 22 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 23 | // SOFTWARE. 24 | // 25 | //===========================================================================// 26 | 27 | #include "register_types.h" 28 | 29 | #include "core/config/engine.h" 30 | #include "core/object/class_db.h" 31 | 32 | #include "godotsteam_server.h" 33 | 34 | 35 | static SteamServer *SteamServerPtr = nullptr; 36 | 37 | 38 | void initialize_godotsteam_server_module(ModuleInitializationLevel level){ 39 | if(level == MODULE_INITIALIZATION_LEVEL_SERVERS){ 40 | GDREGISTER_CLASS(SteamServer); 41 | SteamServerPtr = memnew(SteamServer); 42 | Engine::get_singleton()->add_singleton(Engine::Singleton("SteamServer", SteamServer::get_singleton())); 43 | } 44 | } 45 | 46 | 47 | void uninitialize_godotsteam_server_module(ModuleInitializationLevel level){ 48 | if(level == MODULE_INITIALIZATION_LEVEL_SERVERS){ 49 | Engine::get_singleton()->remove_singleton("SteamServer"); 50 | memdelete(SteamServerPtr); 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /register_types.h: -------------------------------------------------------------------------------- 1 | //===========================================================================// 2 | // GodotSteam - register_types.h 3 | //===========================================================================// 4 | // 5 | // Copyright (c) 2015-Current | GP Garcia and Contributors (view contributors.md) 6 | // 7 | // Permission is hereby granted, free of charge, to any person obtaining a copy 8 | // of this software and associated documentation files (the "Software"), to deal 9 | // in the Software without restriction, including without limitation the rights 10 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 11 | // copies of the Software, and to permit persons to whom the Software is 12 | // furnished to do so, subject to the following conditions: 13 | // 14 | // The above copyright notice and this permission notice shall be included in all 15 | // copies or substantial portions of the Software. 16 | // 17 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 18 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 20 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 21 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 22 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 23 | // SOFTWARE. 24 | // 25 | //===========================================================================// 26 | 27 | #ifndef GODOTSTEAM_SERVER_REGISTER_TYPES_H 28 | #define GODOTSTEAM_SERVER_REGISTER_TYPES_H 29 | 30 | #include "modules/register_module_types.h" 31 | 32 | void initialize_godotsteam_server_module(ModuleInitializationLevel level); 33 | void uninitialize_godotsteam_server_module(ModuleInitializationLevel level); 34 | 35 | #endif -------------------------------------------------------------------------------- /sdk/put SDK here: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GodotSteam/GodotSteam-Server/d9d3eae5af1add3fa3f40b44ef31204391977326/sdk/put SDK here --------------------------------------------------------------------------------