Need help with GodotSteam?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

Gramps
985 Stars 82 Forks MIT License 244 Commits 0 Opened issues

Description

Steam API for the Godot game engine

Services available

!
?

Need anything else?

Contributors list

# 86,896
C++
steamwo...
Godot
steam-a...
152 commits
# 259,810
Flask
C++
steamwo...
Godot
9 commits
# 207,742
steamwo...
Godot
steam-a...
ESLint
5 commits
# 344,407
C++
steamwo...
Godot
steam-a...
4 commits
# 370,681
C++
steamwo...
Godot
steam-a...
3 commits
# 406,383
C++
steamwo...
Godot
steam-a...
2 commits
# 394,489
steamwo...
Godot
steam-a...
TeX
2 commits
# 135,259
Ruby
Godot
steam-a...
Zsh
1 commit
# 16,023
C++
C#
Shell
Godot
1 commit
# 181,065
C++
C
Godot
steam-a...
1 commit
# 399,135
PHP
steamwo...
Godot
steam-a...
1 commit
# 473,449
C++
steamwo...
Godot
steam-a...
1 commit
# 470,042
C++
steamwo...
Godot
steam-a...
1 commit
# 157,630
C
Anki
gitlab-...
Godot
1 commit

GodotSteam for Godot Engine

Steam API for the Godot game engine (version 3.x). For the Windows, Linux, and Mac platforms.

Additional flavors include: - Godot 2.x - Godot 4.x - Server - GDNative

Documentation

Documentation is available here and there is the project's Wiki page here.

You can also check out the Search Help section inside Godot Engine after compiling it with GodotSteam.

Feel free to chat with us about GodotSteam on the CoaguCo Discord server.

Current Build

You can download pre-compiled versions (currently v3.10.2) of this repo here.

Version 3.10.3 Changes - Changed: various internal variable / arguments names for clarity, will affect signal-returned dictionaries

Version 3.10.2 Changes - Removed: not logged in as error condition in steamInit function

Version 3.10.1 Changes - Changed: various compilation errors for OSX, thanks to SapphireMH - Removed: receiveRelayAuthTicket, findRelayAuthTicketForServer, getHostedDedicatedServerAddress, and getGameCoordinatorServerLogin as they rely on datagram header that was removed from base SDK

Version 3.10 Changes - Added: various Steam Deck specific functions, thanks to EIREXE - Added: new AppLists class of functions and callbacks - Added: new or missing App functions, callbacks, and enums - Added: OverlayToWebPageMode enum and unreadchatmessageschanged callback for Friends class - Added: new Input functions and callbacks - Added: new Parental Settings fuctions, callback, and enums - Added: new Remote Storage functions, callback, and enums - Added: new UGC functions, callbacks, and enum - Added: memory allocation corrections - Changed: updated various Input class functions - Changed: lots of argument names internally, has no effect on usage - Fixed: some enum names - Fixed: various server list filter functions in Matchmaking Servers class - Fixed: receivedRelayAuthTicket, getGameCoordinatorServerLogin, FindRelayAuthTicketForServer in Networking Sockets class - Removed: second call for steamapi.h in godotsteam.cpp

Known Issues

  • Using MinGW causes crashes. I strongly recommend you do not use MinGW to compile at this time.

Quick How-To

  • Download this repository and unpack it.
  • Download and unpack the Steamworks SDK 1.52; this requires a Steam developer account.
  • Download and unpack the Godot source 3.x.
  • Move the following to godotsteam/sdk/ folder:
    sdk/public/
    sdk/redistributable_bin/
    
  • The repo's directory contents should now look like this:
    godotsteam/sdk/public/*
    godotsteam/sdk/redistributable_bin/*
    godotsteam/SCsub
    godotsteam/config.py
    godotsteam/godotsteam.cpp
    godotsteam/godotsteam.h
    godotsteam/register_types.cpp
    godotsteam/register_types.h
    
  • Now move the "godotsteam" directory into the "modules" directory of the unpacked Godot Engine source.
    • You can also just put the godotsteam directory where ever you like and just apply the
      custom_modules=.../path/to/dir/godotsteam
      flag in SCONS when compiling. Make sure the
      custom_modules=
      flag points to where godotsteam is located.
  • Recompile for your platform:
    • NOTE: use SCONS flags
      production=yes tools=yes target=release_debug
      for your editor and
      production=yes tools=no target=release
      for your templates.
    • Windows ( http://docs.godotengine.org/en/stable/reference/compilingforwindows.html )
    • Linux ( http://docs.godotengine.org/en/stable/reference/compilingforx11.html )
    • If using Ubuntu 16.10 or higher and having issues with PIE security in GCC, use LINKFLAGS='-no-pie' to get an executable instead of a shared library.
    • MacOS ( http://docs.godotengine.org/en/stable/reference/compilingforosx.html )
    • When creating templates for this, please refer to this post for assistance as the documentation is a bit lacking ( http://steamcommunity.com/app/404790/discussions/0/364042703865087202/ ).
  • When recompiling the engine is finished do the following before running it the first time:

    • Copy the shared library (steamapi), for your OS, from sdk/redistributablebin/ folders to the Godot binary location (by default in the godot source /bin/ file but you can move them to a new folder).
    • Create a steamappid.txt file with your game's app ID or 480 in this folder. Necessary if the editor or game is run _outside of Steam.
  • The finished hierarchy should look like this (if you downloaded the pre-compiles, the editor files go in place of these tools files, which are the same thing):

    • Linux 32/64-bit
      libsteam_api.so
      steam_appid.txt
      ./godot.linux.tools.32 or ./godot.linux.tools.64
      
    • MacOS
      libsteam_api.dylib
      steam_appid.txt
      ./godot.osx.tools.32 or ./godot.osx.tools.64
      
    • Windows 32-bit
      steam_api.dll
      steam_appid.txt
      ./godot.windows.tools.32.exe
      
    • Windows 64-bit
      steam_api64.dll
      steam_appid.txt
      ./godot.windows.tools.64.exe
      
  • Lack of the Steam API DLL/SO/DyLib (for your respective OS) or the steam_appid.txt will cause it fail and crash when testing or running the game outside of the Steam client.

    • NOTE: For MacOS, the libsteamapi.dylib and steamappid.txt must be in the Content/MacOS/ folder in your application zip or the game will crash.
    • NOTE: For Linux, you may have to load the overlay library for Steam overlay to work: ``` export LDPRELOAD=~/.local/share/Steam/ubuntu1232/gameoverlayrenderer.so;~/.local/share/Steam/ubuntu12_64/gameoverlayrenderer.so

or

export LDPRELOAD=~/.local/share/Steam/ubuntu1232/gameoverlayrenderer.so; export LDPRELOAD=~/.local/share/Steam/ubuntu1264/gameoverlayrenderer.so; ``` This can be done in an .sh file that runs these before running your executable. This issue may not arise for all users and can also just be done by the user in a terminal separately.

From here you should be able to call various functions of Steamworks. You should be able to look up the functions in Godot itself under the search section. In addition, you should be able to read the Steamworks API documentation to see what all is available and cross-reference with GodotSteam.

  • When uploading your game to Steam, you must upload your game's executable and Steam API DLL/SO/DyLIB (steamapi.dll, steamapi64.dll, libsteamapi.dylib, and/or libsteamapi.so). Do not include the steam_appid.txt or any .lib files as they are unnecessary.

Donate

Pull-requests are the best way to help the project out but you can also donate through Patreon or Paypal!

License

MIT license

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.