Giter VIP home page Giter VIP logo

godotsteam's Introduction

GodotSteam for Godot Engine

An open-source and fully functional Steamworks SDK / API module and plug-in for the Godot Game Engine (version 4.x). For the Windows, Linux, and Mac platforms.

Additional Flavors

Pre-Compiles Plug-ins Server Examples/Demos
Godot 2.x GDNative Server 3.x Godot 3.x
Godot 3.x GDExtension Server 4.x Godot 4.x
Godot 4.x --- GDNative Server 3.x
Multiplayer Peer --- GDExtension Server 4.x

Documentation

Documentation is available 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 of this repo here.

Version 4.7 Changes

  • Changed: minor organization and readability changes
  • Fixed: htmlInit() not returning bool for success
  • Fixed: incorrect argument bind for createBeacon()
  • Fixed: incorrect argument bind for setItemMetadata()

You can read more change-logs here.

Compatibility

While rare, sometimes Steamworks SDK updates will break compatilibity with older GodotSteam versions. Any compatability breaks are noted below. Newer API files (dll, so, dylib) should still work for older versions.

Steamworks SDK Version GodotSteam Version
1.59 or newer 4.6 or newer
1.58a or older 4.5.4 or older

Known Issues

  • 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.
  • Using MinGW causes crashes. I strongly recommend you do not use MinGW to compile at this time.

"Quick" How-To

For complete instructions on how to build the Godot 4.x version of GodotSteam scratch, please refer to our documentation's 'How-To Modules' section. It will have the most up-to-date information.

Alternatively, you can just download the pre-compiled versions in our Releases section and skip compiling it yourself!

Donate

Pull-requests are the best way to help the project out but you can also donate through Github Sponsors, Ko-Fi, or Paypal!

License

MIT license

godotsteam's People

Contributors

archirockstech avatar freehuntx avatar gramps avatar greenfox1505 avatar jacobcoughenour avatar mikix avatar raulsntos avatar sapphiremh avatar septn avatar slejmur avatar tamper2 avatar ynot01 avatar zeeweasel avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

godotsteam's Issues

Compile error: taking the address of a temporary object

When trying to compile the engine with GodotSteam on Linux, I get the following error:

modules/godotsteam/godotsteam.cpp:1345:105: error: taking the address of a temporary object
of type 'CSteamID' [-Waddress-of-temporary]
...&serverIP, &serverPort, &(CSteamID)serverID);

The same happens when cross-compiling for Windows:

modules/godotsteam/godotsteam.cpp: In member function 'Dictionary Steam::getLobbyGameServer(uint64)':
modules/godotsteam/godotsteam.cpp:1345:116: error: taking address of temporary [-fpermissive]
->GetLobbyGameServer((CSteamID)steamIDLobby, &serverIP, &serverPort, &(CSteamID)serverID);
^~~~~~~~

console window (v215) ERROR: ObjectTypeDB::bind_integer_constant: Method/Function Failed.

In the console window when running windows-engine-215-64bit.exe (...32bit.exe too) this error message will appear 5 times in a row:
ERROR: ObjectTypeDB::bind_integer_constant: Method/Function Failed.
At: core\object_type_db.cpp:413
When running either the "official" Godot_v2.1.5-stable_win64.exe build or windows-engine-306-64bit.exe build there is no error. I've not gotten far on my project and I haven't noticed any actual problems/bugs but when searching "core\object_type_db.cpp:413" I do find https://itch.io/t/343010/error-trying-to-run-on-linux where someone's Godot based game on Linux isn't running. Which version of Godot is used isn't mentioned so I don't know if there would be any similar issues though. I'm using v2.1.5 for its older openGL support. Thanks for any help or clarification regarding this and thank you for your work in creating this branch of Godot.

Questions about integrating Steam matchmaking with Godot multiplayer functions.

It's me again, but this time I'm not bothering you with bugs, instead I'm bothering you with questions ;-)

Now that the lobby functions are working, there's one last step that we don't fully understand. After the player has joined the lobby and knows the Steam ID of the lobby owner, a connection needs to be established using Godot's networking functions. One person told us that the Steam ID could be used like an IP address, so we'd just have to use the Steam ID instead of the other player's IP.
I was skeptical, because don't see how that would work. And apparently it doesn't work.
So how do we have to approach this, so that the players can connect after joining the lobby? I thought that we may need the Steam networking functions to create a P2P Session (https://partner.steamgames.com/doc/api/ISteamNetworking), but it seems this is not implemented in GodotSteam yet. So how do we go about this to make it as painless as possible for our players?

Signals are not working (Godot 2.1)

I don't why, but I cant receive signals from Steam in the code.
My code looks like this:

func _ready():
	if(Steam.steamInit()):
		print("Steam API start")
		set_process(true)
                Steam.findLeaderboard("test")
		Steam.connect("leaderboard_loaded", self, "on_leaderboard_loaded")

func _process(delta):
	Steam.run_callbacks()

func on_leaderboard_loaded(handle, found):
	print(handle)
	print(found)

The "leaderboard_loaded" event is never happen.
What is wrong with my code?
Thanks a lot!

[macos] Compilation issue.

Godot version: 3.0.6 stable.
Godotsteam version: latest godot3 branch sourcecode.
Steamworks SDK version: 1.44
platform: Macos Mojave.

This is the compilation error that appears after the nullptr issue has been fixed, see PR #82

Without the godotsteam module inserted it compiles without any problems so i believe it's not a problem with the engine.

Console log/error:

Mikes-iMac:godot-3.0.6-stable thisismike97$ sudo scons p=osx bits=64 tools=no target=release
scons: Reading SConscript files ...
Checking for C header file mntent.h... (cached) no
scons: done reading SConscript files.
scons: Building targets ...
[Initial build] Compiling ==> platform/osx/crash_handler_osx.mm
[Initial build] Compiling ==> platform/osx/os_osx.mm
platform/osx/os_osx.mm:1569:24: error: cannot initialize a variable of type
'NSSearchPathDirectory' with an rvalue of type 'int'
NSSearchPathDirectory id = 0;
^ ~
1 error generated.
scons: *** [platform/osx/os_osx.osx.opt.64.o] Error 1
scons: building terminated because of errors.

Latest release fails to compile on Linux

The latest release fails to build on Linux (specifically Pop!_OS 18.10). Here are some errors printed to console.

[ 25%] Compiling ==> thirdparty/mbedtls/library/threading.c
modules/godotsteam/godotsteam.cpp: In member function 'bool Steam::showGamepadTextInput(int, int, const String&, uint32, const String&)':
modules/godotsteam/godotsteam.cpp:3337:1: error: control reaches end of non-void function [-Werror=return-type]
 }
 ^
[ 25%] Compiling ==> thirdparty/mbedtls/library/timing.c
[ 29%] Compiling ==> thirdparty/opus/silk/encode_pulses.c
cc1plus: some warnings being treated as errors
[ 29%] Compiling ==> thirdparty/opus/silk/gain_quant.c
[ 29%] scons: *** [modules/godotsteam/godotsteam.x11.tools.64.o] Error 1
Compiling ==> thirdparty/opus/silk/tables_gain.c
scons: building terminated because of errors.

On a side note, building from the latest branch does not fail.

FromSource

Not an important issue, or an issue at all really.

Just wondered if there was a way to get the sourceID of a game server, iterate and check whom is on the game server.

Using,

Steam::getFriendCountFromSource(uint64_t clanID)
Steam::getFriendFromSourceByIndex(uint64_t sourceID, int friendNum)

If it's possible to be in the main menu of the game and access game servers remotely iterating through who's on one of the specific game server. Or if there is another way of doing it.

Thank you!

Adding support for the rest of the Steamworks API?

I've noticed there's many methods that don't seem to be implemented in this module, such as the ISteamNetworking interface, or what seems like a good chunk of the ISteamUGC functions. Assuming the missing interfaces and functions aren't already planned to be added, it'd be nice to have them added.

Module compilation fails

I am trying to compile the engine with the Steam API as descibed. I am using Fedora 27. The compilation fails with the following error:

In file included from modules/godotsteam/godotsteam.cpp:1:0:
modules/godotsteam/godotsteam.h:121:43: error: 'DVector' does not name a type; did you mean 'Vector'?
  bool fileWrite(const String& file, const DVector<uint8_t>& data, int32_t dataSize);
                                           ^~~~~~~
                                           Vector
modules/godotsteam/godotsteam.h:121:50: error: expected ',' or '...' before '<' token
  bool fileWrite(const String& file, const DVector<uint8_t>& data, int32_t dataSize);
                                                  ^
modules/godotsteam/godotsteam.h:142:33: error: 'DVector' does not name a type; did you mean 'Vector'?
  uint32_t writeScreenshot(const DVector<uint8_t>& RGB, int width, int height);
                                 ^~~~~~~
                                 Vector
modules/godotsteam/godotsteam.h:142:40: error: expected ',' or '...' before '<' token
  uint32_t writeScreenshot(const DVector<uint8_t>& RGB, int width, int height);
                                        ^
modules/godotsteam/godotsteam.h:282:24: error: ISO C++ forbids declaration of 'OBJ_TYPE' with no type [-fpermissive]
  OBJ_TYPE(Steam, Object);
                        ^
modules/godotsteam/godotsteam.cpp: In member function 'Image Steam::drawAvatar(int, uint8*)':
modules/godotsteam/godotsteam.cpp:554:41: error: 'FORMAT_RGBA' is not a member of 'Image'
  Image avatar(size, size, false, Image::FORMAT_RGBA);
                                         ^~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:562:11: error: 'class Image' has no member named 'put_pixel'; did you mean '_put_pixelb'?
    avatar.put_pixel(x, y, Color(r, g, b, a));
           ^~~~~~~~~
           _put_pixelb
modules/godotsteam/godotsteam.cpp: At global scope:
modules/godotsteam/godotsteam.cpp:754:49: error: 'DVector' does not name a type; did you mean 'Vector'?
 bool Steam::fileWrite(const String& file, const DVector<uint8_t>& data, int32_t dataSize){
                                                 ^~~~~~~
                                                 Vector
modules/godotsteam/godotsteam.cpp:754:56: error: expected ',' or '...' before '<' token
 bool Steam::fileWrite(const String& file, const DVector<uint8_t>& data, int32_t dataSize){
                                                        ^
modules/godotsteam/godotsteam.cpp: In member function 'bool Steam::fileWrite(const String&, int)':
modules/godotsteam/godotsteam.cpp:758:65: error: 'data' was not declared in this scope
  return SteamRemoteStorage()->FileWrite(file.utf8().get_data(), data.read().ptr(), dataSize);
                                                                 ^~~~
modules/godotsteam/godotsteam.cpp:758:65: note: suggested alternative: 'Math'
  return SteamRemoteStorage()->FileWrite(file.utf8().get_data(), data.read().ptr(), dataSize);
                                                                 ^~~~
                                                                 Math
modules/godotsteam/godotsteam.cpp:758:84: error: 'dataSize' was not declared in this scope
 emoteStorage()->FileWrite(file.utf8().get_data(), data.read().ptr(), dataSize);
                                                                      ^~~~~~~~
modules/godotsteam/godotsteam.cpp: In member function 'Dictionary Steam::fileRead(const String&, int32_t)':
modules/godotsteam/godotsteam.cpp:767:2: error: 'DVector' was not declared in this scope
  DVector<uint8_t> data;
  ^~~~~~~
modules/godotsteam/godotsteam.cpp:767:2: note: suggested alternative: 'Vector'
  DVector<uint8_t> data;
  ^~~~~~~
  Vector
modules/godotsteam/godotsteam.cpp:767:17: error: expected primary-expression before '>' token
  DVector<uint8_t> data;
                 ^
modules/godotsteam/godotsteam.cpp:767:19: error: 'data' was not declared in this scope
  DVector<uint8_t> data;
                   ^~~~
modules/godotsteam/godotsteam.cpp:767:19: note: suggested alternative: 'Math'
  DVector<uint8_t> data;
                   ^~~~
                   Math
modules/godotsteam/godotsteam.cpp: At global scope:
modules/godotsteam/godotsteam.cpp:914:39: error: 'DVector' does not name a type; did you mean 'Vector'?
 uint32_t Steam::writeScreenshot(const DVector<uint8_t>& RGB, int width, int height){
                                       ^~~~~~~
                                       Vector
modules/godotsteam/godotsteam.cpp:914:46: error: expected ',' or '...' before '<' token
 uint32_t Steam::writeScreenshot(const DVector<uint8_t>& RGB, int width, int height){
                                              ^
modules/godotsteam/godotsteam.cpp: In member function 'uint32_t Steam::writeScreenshot(int)':
modules/godotsteam/godotsteam.cpp:918:52: error: 'RGB' was not declared in this scope
  return SteamScreenshots()->WriteScreenshot((void*)RGB.read().ptr(), RGB.size(), width, height);
                                                    ^~~
modules/godotsteam/godotsteam.cpp:918:82: error: 'width' was not declared in this scope
 Screenshots()->WriteScreenshot((void*)RGB.read().ptr(), RGB.size(), width, height);
                                                                     ^~~~~
modules/godotsteam/godotsteam.cpp:918:89: error: 'height' was not declared in this scope
 enshots()->WriteScreenshot((void*)RGB.read().ptr(), RGB.size(), width, height);
                                                                        ^~~~~~
modules/godotsteam/godotsteam.cpp: In member function 'void Steam::_avatar_loaded(AvatarImageLoaded_t*)':
modules/godotsteam/godotsteam.cpp:1006:66: error: no matching function for call to 'Steam::call_deferred(const char [12], const char [14], int&, Image&)'
  call_deferred("emit_signal", "avatar_loaded", avatarSize, avatar);
                                                                  ^
In file included from modules/godotsteam/godotsteam.h:7:0,
                 from modules/godotsteam/godotsteam.cpp:1:
core/object.h:692:7: note: candidate: void Object::call_deferred(const StringName&, const Variant&, const Variant&, const Variant&, const Variant&, const Variant&)
  void call_deferred(const StringName &p_method, VARIANT_ARG_LIST);
       ^~~~~~~~~~~~~
core/object.h:692:7: note:   no known conversion for argument 4 from 'Image' to 'const Variant&'
modules/godotsteam/godotsteam.cpp: In member function 'bool Steam::getAchievement(const String&)':
modules/godotsteam/godotsteam.cpp:1255:71: error: no matching function for call to 'ISteamUserStats::GetAchievement(const char*, bool)'
  return SteamUserStats()->GetAchievement(name.utf8().get_data(), false);
                                                                       ^
In file included from modules/godotsteam/sdk/public/steam/steam_api.h:18:0,
                 from modules/godotsteam/godotsteam.h:5,
                 from modules/godotsteam/godotsteam.cpp:1:
modules/godotsteam/sdk/public/steam/isteamuserstats.h:105:15: note: candidate: virtual bool ISteamUserStats::GetAchievement(const char*, bool*)
  virtual bool GetAchievement( const char *pchName, bool *pbAchieved ) = 0;
               ^~~~~~~~~~~~~~
modules/godotsteam/sdk/public/steam/isteamuserstats.h:105:15: note:   no known conversion for argument 2 from 'bool' to 'bool*'
modules/godotsteam/godotsteam.cpp: In member function 'Dictionary Steam::getImageRGBA(int)':
modules/godotsteam/godotsteam.cpp:1494:4: error: 'DVector' was not declared in this scope
    DVector<uint8_t> data;
    ^~~~~~~
modules/godotsteam/godotsteam.cpp:1494:4: note: suggested alternative: 'Vector'
    DVector<uint8_t> data;
    ^~~~~~~
    Vector
modules/godotsteam/godotsteam.cpp:1494:19: error: expected primary-expression before '>' token
    DVector<uint8_t> data;
                   ^
modules/godotsteam/godotsteam.cpp:1494:21: error: 'data' was not declared in this scope
    DVector<uint8_t> data;
                     ^~~~
modules/godotsteam/godotsteam.cpp:1494:21: note: suggested alternative: 'Math'
    DVector<uint8_t> data;
                     ^~~~
                     Math
modules/godotsteam/godotsteam.cpp: In static member function 'static void Steam::_bind_methods()':
modules/godotsteam/godotsteam.cpp:1781:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method("restartAppIfNecessary", &Steam::restartAppIfNecessary);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1782:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method("steamInit", &Steam::steamInit);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1783:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method("isSteamRunning", &Steam::isSteamRunning);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1784:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method("run_callbacks", &Steam::run_callbacks);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1786:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method("isSubscribed", &Steam::isSubscribed);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1787:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method("isLowViolence", &Steam::isLowViolence);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1788:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method("isCybercafe", &Steam::isCybercafe);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1789:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method("isVACBanned", &Steam::isVACBanned);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1790:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method("getCurrentGameLanguage", &Steam::getCurrentGameLanguage);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1791:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method("getAvailableGameLanguages", &Steam::getAvailableGameLanguages);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1792:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method("isSubscribedApp", &Steam::isSubscribedApp);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1793:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method("isDLCInstalled", &Steam::isDLCInstalled);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1794:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method("getEarliestPurchaseUnixTime", &Steam::getEarliestPurchaseUnixTime);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1795:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method("isSubscribedFromFreeWeekend", &Steam::isSubscribedFromFreeWeekend);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1796:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method("getDLCCount", &Steam::getDLCCount);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1797:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method("getDLCDataByIndex", &Steam::getDLCDataByIndex);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1798:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method("installDLC", &Steam::installDLC);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1799:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method("uninstallDLC", &Steam::uninstallDLC);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1800:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method("getCurrentBetaName", &Steam::getCurrentBetaName);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1801:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method("markContentCorrupt", &Steam::markContentCorrupt);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1803:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method("getAppInstallDir", &Steam::getAppInstallDir);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1804:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method("isAppInstalled", &Steam::isAppInstalled);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1805:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method("getAppOwner", &Steam::getAppOwner);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1806:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method("getLaunchQueryParam", &Steam::getLaunchQueryParam);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1808:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method("getAppBuildId", &Steam::getAppBuildId);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1809:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method("getFileDetails", &Steam::getFileDetails);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1811:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method("activateActionSet", &Steam::activateActionSet);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1812:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method("getActionSetHandle", &Steam::getActionSetHandle);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1813:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method("getAnalogActionData", &Steam::getAnalogActionData);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1814:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method("getAnalogActionHandle", &Steam::getAnalogActionHandle);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1815:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method("getAnalogActionOrigins", &Steam::getAnalogActionOrigins);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1816:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method("getConnectedControllers", &Steam::getConnectedControllers);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1817:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method("getControllerForGamepadIndex", &Steam::getControllerForGamepadIndex);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1818:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method("getCurrentActionSet", &Steam::getCurrentActionSet);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1819:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method("getDigitalActionData", &Steam::getDigitalActionData);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1820:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method("getDigitalActionHandle", &Steam::getDigitalActionHandle);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1821:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method("getDigitalActionOrigins", &Steam::getDigitalActionOrigins);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1822:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method("getMotionData", &Steam::getMotionData);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1823:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method("init", &Steam::init);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1824:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method("runFrame", &Steam::runFrame);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1825:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method("showBindingPanel", &Steam::showBindingPanel);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1826:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method("shutdown", &Steam::shutdown);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1827:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method("triggerVibration", &Steam::triggerVibration);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1829:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method("getFriendCount", &Steam::getFriendCount);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1830:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method("getPersonaName", &Steam::getPersonaName);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1831:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method("getFriendPersonaName", &Steam::getFriendPersonaName);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1832:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method(_MD("setGameInfo", "key", "value"), &Steam::setGameInfo);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1832:28: error: '_MD' was not declared in this scope
  ObjectTypeDB::bind_method(_MD("setGameInfo", "key", "value"), &Steam::setGameInfo);
                            ^~~
modules/godotsteam/godotsteam.cpp:1833:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method(_MD("clearGameInfo"), &Steam::clearGameInfo);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1834:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method(_MD("inviteFriend", "steamID", "connectString"), &Steam::inviteFriend);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1835:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method(_MD("setPlayedWith", "steamID"), &Steam::setPlayedWith);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1836:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method("getRecentPlayers", &Steam::getRecentPlayers);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1837:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method(_MD("getFriendAvatar", "size"), &Steam::getFriendAvatar, DEFVAL(AVATAR_MEDIUM));
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1838:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method("getUserSteamGroups", &Steam::getUserSteamGroups);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1839:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method("getUserSteamFriends", &Steam::getUserSteamFriends);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1840:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method(_MD("activateGameOverlay", "type"), &Steam::activateGameOverlay, DEFVAL(""));
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1841:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method(_MD("activateGameOverlayToUser", "type", "steamID"), &Steam::activateGameOverlayToUser, DEFVAL(""), DEFVAL(0));
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1842:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method(_MD("activateGameOverlayToWebPage", "url"), &Steam::activateGameOverlayToWebPage);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1843:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method(_MD("activateGameOverlayToStore", "appID"), &Steam::activateGameOverlayToStore, DEFVAL(0));
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1844:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method(_MD("activateGameOverlayInviteDialog", "steamID"), &Steam::activateGameOverlayInviteDialog);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1846:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method(_MD("createLobby", "type"), &Steam::createLobby, DEFVAL(2));
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1847:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method("joinLobby", &Steam::joinLobby);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1848:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method("leaveLobby", &Steam::leaveLobby);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1849:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method("inviteUserToLobby", &Steam::inviteUserToLobby);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1851:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method("musicIsEnabled", &Steam::musicIsEnabled);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1852:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method("musicIsPlaying", &Steam::musicIsPlaying);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1853:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method("musicGetVolume", &Steam::musicGetVolume);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1854:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method("musicPause", &Steam::musicPause);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1855:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method("musicPlay", &Steam::musicPlay);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1856:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method("musicPlayNext", &Steam::musicPlayNext);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1857:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method("musicPlayPrev", &Steam::musicPlayPrev);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1858:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method("musicSetVolume", &Steam::musicSetVolume);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1860:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method("fileWrite", &Steam::fileWrite);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1861:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method("fileRead", &Steam::fileRead);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1862:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method("fileForget", &Steam::fileForget);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1863:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method("fileDelete", &Steam::fileDelete);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1864:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method("fileExists", &Steam::fileExists);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1865:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method("filePersisted", &Steam::filePersisted);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1866:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method("getFileSize", &Steam::getFileSize);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1867:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method("getFileTimestamp", &Steam::getFileTimestamp);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1868:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method("getFileCount", &Steam::getFileCount);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1869:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method("isCloudEnabledForAccount", &Steam::isCloudEnabledForAccount);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1870:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method("isCloudEnabledForApp", &Steam::isCloudEnabledForApp);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1871:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method("setCloudEnabledForApp", &Steam::setCloudEnabledForApp);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1872:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method("getFileNameAndSize", &Steam::getFileNameAndSize);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1873:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method("getQuota", &Steam::getQuota);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1874:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method("getSyncPlatforms", &Steam::getSyncPlatforms);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1876:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method("addScreenshotToLibrary", &Steam::addScreenshotToLibrary);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1877:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method("hookScreenshots", &Steam::hookScreenshots);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1878:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method("isScreenshotsHooked", &Steam::isScreenshotsHooked);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1879:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method("setLocation", &Steam::setLocation);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1880:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method("triggerScreenshot", &Steam::triggerScreenshot);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1881:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method("writeScreenshot", &Steam::writeScreenshot);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1883:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method("getAuthSessionTicket", &Steam::getAuthSessionTicket);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1884:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method("cancelAuthTicket", &Steam::cancelAuthTicket);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1885:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method("beginAuthSession", &Steam::beginAuthSession);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1886:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method("endAuthSession", &Steam::endAuthSession);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1887:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method("getSteamID", &Steam::getSteamID);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1888:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method("loggedOn", &Steam::loggedOn);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1889:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method("getPlayerSteamLevel", &Steam::getPlayerSteamLevel);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1890:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method("getUserDataFolder", &Steam::getUserDataFolder);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1891:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method(_MD("advertiseGame", "serverIP", "port"), &Steam::advertiseGame);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1892:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method("getGameBadgeLevel", &Steam::getGameBadgeLevel);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1894:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method("clearAchievement", &Steam::clearAchievement);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1895:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method("getAchievement", &Steam::getAchievement);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1896:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method("getAchievementAchievedPercent", &Steam::getAchievementAchievedPercent);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1897:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method(_MD("getAchievementDisplayAttribute", "name", "key"), &Steam::getAchievementDisplayAttribute);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1898:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method(_MD("getAchievementIcon", "name"), &Steam::getAchievementIcon);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1899:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method(_MD("getAchievementName", "iAchievement"), &Steam::getAchievementName);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1900:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method("getNumAchievements", &Steam::getNumAchievements);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1901:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method("getNumberOfCurrentPlayers", &Steam::getNumberOfCurrentPlayers);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1902:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method("getStatFloat", &Steam::getStatFloat);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1903:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method("getStatInt", &Steam::getStatInt);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1904:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method("resetAllStats", &Steam::resetAllStats);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1905:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method("requestCurrentStats", &Steam::requestCurrentStats);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1906:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method("requestGlobalAchievementPercentages", &Steam::requestGlobalAchievementPercentages);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1907:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method("setAchievement", &Steam::setAchievement);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1908:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method("setStatFloat", &Steam::setStatFloat);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1909:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method("setStatInt", &Steam::setStatInt);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1910:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method("storeStats", &Steam::storeStats);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1911:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method(_MD("findLeaderboard", "name"), &Steam::findLeaderboard);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1912:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method("getLeaderboardName", &Steam::getLeaderboardName);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1913:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method("getLeaderboardEntryCount", &Steam::getLeaderboardEntryCount);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1914:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method(_MD("downloadLeaderboardEntries", "range_start", "range_end", "type"), &Steam::downloadLeaderboardEntries, DEFVAL(GLOBAL));
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1915:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method(_MD("downloadLeaderboardEntriesForUsers", "usersID"), &Steam::downloadLeaderboardEntriesForUsers);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1916:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method(_MD("uploadLeaderboardScore", "score", "keep_best"), &Steam::uploadLeaderboardScore, DEFVAL(true));
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1917:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method("getLeaderboardEntries", &Steam::getLeaderboardEntries);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1918:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method("getAchievementAndUnlockTime", &Steam::getAchievementAndUnlockTime);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1919:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method("indicateAchievementProgress", &Steam::indicateAchievementProgress);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1921:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method("getIPCountry", &Steam::getIPCountry);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1922:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method("isOverlayEnabled", &Steam::isOverlayEnabled);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1923:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method("getSteamUILanguage", &Steam::getSteamUILanguage);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1924:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method("getAppID", &Steam::getAppID);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1925:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method(_MD("getImageRGBA", "image"), &Steam::getImageRGBA);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1926:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method(_MD("getImageSize", "image"), &Steam::getImageSize);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1927:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method("getSecondsSinceAppActive", &Steam::getSecondsSinceAppActive);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1928:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method(_MD("setOverlayNotificationPosition", "pos"), &Steam::setOverlayNotificationPosition);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1929:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method("getCurrentBatteryPower", &Steam::getCurrentBatteryPower);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1930:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method("getServerRealTime", &Steam::getServerRealTime);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1931:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method("isSteamRunningInVR", &Steam::isSteamRunningInVR);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1932:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method("isSteamInBigPictureMode", &Steam::isSteamInBigPictureMode);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1933:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method("startVRDashboard", &Steam::startVRDashboard);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1935:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method("downloadItem", &Steam::downloadItem);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1936:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method("suspendDownloads", &Steam::suspendDownloads);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1937:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method("startItemUpdate", &Steam::startItemUpdate);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1938:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method("getItemState", &Steam::getItemState);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1940:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method("createItem", &Steam::createItem);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1941:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method("setItemTitle", &Steam::setItemTitle);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1942:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method("setItemDescription", &Steam::setItemDescription);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1943:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method("setItemUpdateLanguage", &Steam::setItemUpdateLanguage);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1944:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method("setItemMetadata", &Steam::setItemMetadata);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1945:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method("setItemVisibility", &Steam::setItemVisibility);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1947:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method("setItemContent", &Steam::setItemContent);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1948:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method("setItemPreview", &Steam::setItemPreview);
  ^~~~~~~~~~~~
modules/godotsteam/godotsteam.cpp:1949:2: error: 'ObjectTypeDB' has not been declared
  ObjectTypeDB::bind_method("submitItemUpdate", &Steam::submitItemUpdate);
  ^~~~~~~~~~~~
scons: *** [modules/godotsteam/godotsteam.x11.tools.64.o] Error 1

Error while calling Steam.findLeaderboard()

Hello!

I'm using GDNative version of GodotSteam built on Windows 10.
Steam is initialized correctly, I can get my username as string, and I can see the Steam overlay window.
But when I tried to call Steam.findLeaderboard(), my game died.

I called it with the following code from gdscript:
Steam.findLeaderboard("My_Leaderboard_Name")

The message in log was:
Nothing read: No such file or directory
ERROR: read: Server disconnected!

At: drivers/windows/stream_peer_tcp_winsock.cpp:203

My Godot version is 3.0.6 Mono, if this can help :)
Also, maybe it is worth mentioning, that the game page is not set up yet, the only thing I published in the Steam dashboard is My_Leaderboard_Name leaderboard:
image

"Cannot open shared object file" but it's there!

I've just followed the "How to" up to the point of including the shared object file in "5. Copy Steamworks Redistributables"

I'm in Ubuntu and compiling Godot 2 with GodotSteam 2. The SteamWorks shared object file is right there in the folder with the executable but I still get the error about not being able to find the shared object. Here's the output of the terminal (I've clipped the path name for brevity);

domarius@Domarius-Ubuntu ~/godot-2.1/bin $ ls
godot.x11.opt.64.llvm godot.x11.tools.64.llvm libsteam_api.so
domarius@Domarius-Ubuntu ~/godot-2.1/bin $ ./godot.x11.opt.64.llvm
./godot.x11.opt.64.llvm: error while loading shared libraries: libsteam_api.so: cannot open shared object file: No such file or directory

libpng12 error

./godot.x11.opt.64: error while loading shared libraries: libpng12.so.0: cannot open shared object file: No such file or directory
OS: Kubuntu 17.04

Export Template Manager target is looking for 3.1.1.devel versus 3.1.stable

The pre-compile of Godot 3.1, windows-engine-31-64bit.exe (...32bit.exe too) is looking for a different export template "3.1.1.devel" verses the "official" Godot 3.1 which uses 3.1.stable (Godot_v3.1-stable_export_templates.tpz). It doesn't accept the "install" of 3.1.stable templates as valid for its version when trying to export as well. Trying to download it (3.1.1.devel) within windows-engine-31-64bit.exe will generate a "Error getting the list of mirrors." "Warning" message. I can trick windows-engine-31-64bit.exe to "install" and recognize 3.1.stable as 3.1.1.devel by unzipping Godot_v3.1-stable_export_templates.tpz replacing the text in the version.txt file to "3.1.1.devel" and re-zipping it but I don't know if that will cause any problems with actual exporting as I see even export templates for 3.1.rc3 and 3.1.stable aren't exactly the same (slight file size difference).

latest godotsteam causes stuttering and crashes

Hello, I have been developing a game for over half a year and was aiming for a release on steam now in april. However, this precompiled 1.0 version of godotsteam crashes and stutters my game. Is a new stabler version in the works? The official godot build 3.1 does not stutter and crash.

using win 10 64bit version

dont know if this is an issue

I've tried finding a way to contact you without opening a new issue, but here goes. In trying to download a leaderboard, I get 'null'. More than likely I'm missing something.

(global):
var userlist = []

In the _ready():
Steam.findLeaderboard("HISCORES")
var darray = Steam.downloadLeaderboardEntries(0,1,0)
userlist = darray
get_node("details").text = darray[0]

Error in the exported game.

The godot engine runs smoothly on it. But it gives this error when exporting.

OpenGL ES 3.0 Renderer: Radeon RX 580 Series
SCRIPT ERROR: GDScript::load_byte_code: Compile Error: Identifier not found: Steam
          At: res://Spatial.gdc:9
ERROR: load_byte_code: Method/Function Failed, returning: ERR_COMPILATION_FAILED
   At: modules/gdscript/gdscript.cpp:772
ERROR: load: Condition ' err != OK ' is true. returned: RES()
   At: modules/gdscript/gdscript.cpp:1848
ERROR: Failed loading resource: res://Spatial.gdc
   At: core/io/resource_loader.cpp:186
ERROR: poll: res://Spatial.tscn:3 - Parse Error: [ext_resource] referenced nonexistent resource at: res://Spatial.gd
   At: scene/resources/scene_format_text.cpp:439
ERROR: load: Condition ' err != OK ' is true. returned: RES()
   At: core/io/resource_loader.cpp:149
ERROR: Failed loading resource: res://Spatial.tscn
   At: core/io/resource_loader.cpp:186
ERROR: Failed loading scene: res://Spatial.tscn
   At: main/main.cpp:1688
WARNING: cleanup: ObjectDB Instances still exist!
     At: core/object.cpp:1989
ERROR: clear: Resources Still in use at Exit!
   At: core/resource.cpp:418

Compiled template doesn't find steam_api.so

So I compiled the export template for Godot 3.0 on Linux (both 32 bit and 64 bit) and tried to run a game with them. It gives me the following error, although libsteam_api.so is in the same directory as the excutable:

error while loading shared libraries: libsteam_api.so: cannot open shared object file: No such file or directory

I also tried the pre-compiled binaries and they give me the same error. The windows templates (which I cross-compiled on Linux) work just fine, detect the DLL and run the game. But the Linux binaries fail to find libsteam_api.so even though it's clearly there. Any idea what could be causing this behaviour?

Use steam api

Is there no way to use steam api without compiling the godot engine? Is it possible with the module compiled with gdnative?

Compiling in Mac errors

I'm trying to compile godotSteam but it crash...
I'm using this command:
scons platform=osx tools=no target=release bits=64

this is the log:

In file included from modules/godotsteam/godotsteam.cpp:1:
In file included from modules/godotsteam/godotsteam.h:5:
In file included from modules/godotsteam/sdk/public/steam/steam_api.h:21:
modules/godotsteam/sdk/public/steam/steam_api_common.h:223:54: error: use of undeclared identifier 'nullptr'
        CCallbackManual() : CCallback< T, P, bGameServer >( nullptr, nullptr ) {}
                                                            ^
modules/godotsteam/sdk/public/steam/steam_api_common.h:223:63: error: use of undeclared identifier 'nullptr'
        CCallbackManual() : CCallback< T, P, bGameServer >( nullptr, nullptr ) {}
                                                                     ^
In file included from modules/godotsteam/godotsteam.cpp:1:
In file included from modules/godotsteam/godotsteam.h:5:
In file included from modules/godotsteam/sdk/public/steam/steam_api.h:21:
In file included from modules/godotsteam/sdk/public/steam/steam_api_common.h:229:
modules/godotsteam/sdk/public/steam/steam_api_internal.h:60:11: error: use of undeclared identifier 'nullptr'
        m_pObj = nullptr;
                 ^
modules/godotsteam/sdk/public/steam/steam_api_internal.h:61:11: error: use of undeclared identifier 'nullptr'
        m_Func = nullptr;
                 ^
modules/godotsteam/sdk/public/steam/steam_api_internal.h:120:12: error: use of undeclared identifier 'nullptr'
        : m_pObj( nullptr ), m_Func( nullptr )
                  ^
modules/godotsteam/sdk/public/steam/steam_api_internal.h:120:31: error: use of undeclared identifier 'nullptr'
        : m_pObj( nullptr ), m_Func( nullptr )
                                     ^
modules/godotsteam/godotsteam.cpp:3065:96: error: conversion from 'Steam::(anonymous enum at modules/godotsteam/godotsteam.h:14:3)' to 'const Variant' is ambiguous
        ObjectTypeDB::bind_method(_MD("getPlayerAvatar", "size", "steamID"), &Steam::getPlayerAvatar, DEFVAL(AVATAR_MEDIUM), DEFVAL(0));
                                                                                                      ^~~~~~~~~~~~~~~~~~~~~
core/object_type_db.h:64:26: note: expanded from macro 'DEFVAL'
#define DEFVAL(m_defval) (m_defval)
                         ^~~~~~~~~~
core/variant.h:248:2: note: candidate constructor
        Variant(bool p_bool);
        ^
core/variant.h:249:2: note: candidate constructor
        Variant(signed int p_int); // real one
        ^
core/variant.h:250:2: note: candidate constructor
        Variant(unsigned int p_int);
        ^
core/variant.h:256:2: note: candidate constructor
        Variant(signed short p_short); // real one
        ^
core/variant.h:257:2: note: candidate constructor
        Variant(unsigned short p_short);
        ^
core/variant.h:258:2: note: candidate constructor
        Variant(signed char p_char); // real one
        ^
core/variant.h:259:2: note: candidate constructor
        Variant(unsigned char p_char);
        ^
core/variant.h:260:2: note: candidate constructor
        Variant(int64_t p_char); // real one
        ^
core/variant.h:261:2: note: candidate constructor
        Variant(uint64_t p_char);
        ^
core/variant.h:262:2: note: candidate constructor
        Variant(float p_float);
        ^
core/variant.h:263:2: note: candidate constructor
        Variant(double p_double);
        ^
modules/godotsteam/godotsteam.cpp:3175:135: error: conversion from 'Steam::(anonymous enum at modules/godotsteam/godotsteam.h:14:3)' to 'const Variant' is ambiguous
        ObjectTypeDB::bind_method(_MD("downloadLeaderboardEntries", "range_start", "range_end", "type"), &Steam::downloadLeaderboardEntries, DEFVAL(GLOBAL));
                                                                                                                                             ^~~~~~~~~~~~~~
core/object_type_db.h:64:26: note: expanded from macro 'DEFVAL'
#define DEFVAL(m_defval) (m_defval)
                         ^~~~~~~~~~
core/variant.h:248:2: note: candidate constructor
        Variant(bool p_bool);
        ^
core/variant.h:249:2: note: candidate constructor
        Variant(signed int p_int); // real one
        ^
core/variant.h:250:2: note: candidate constructor
        Variant(unsigned int p_int);
        ^
core/variant.h:256:2: note: candidate constructor
        Variant(signed short p_short); // real one
        ^
core/variant.h:257:2: note: candidate constructor
        Variant(unsigned short p_short);
        ^
core/variant.h:258:2: note: candidate constructor
        Variant(signed char p_char); // real one
        ^
core/variant.h:259:2: note: candidate constructor
        Variant(unsigned char p_char);
        ^
core/variant.h:260:2: note: candidate constructor
        Variant(int64_t p_char); // real one
        ^
core/variant.h:261:2: note: candidate constructor
        Variant(uint64_t p_char);
        ^
core/variant.h:262:2: note: candidate constructor
        Variant(float p_float);
        ^
core/variant.h:263:2: note: candidate constructor
        Variant(double p_double);
        ^
8 errors generated.
scons: *** [modules/godotsteam/godotsteam.osx.opt.64.o] Error 1
scons: building terminated because of errors.

requestLobbyList / lobby_match_list doesn't seem to work

I'm trying to use the requestLobbyList() function, but it doesn't seem to do anything. As I understand it, a lobby_match_list signal is supposed be fired when the request is completed, but that never happens. Other functions and their respective signals (like creating a lobby) seem to work just fine.

[Godot 3.1] LSOpenURLsWithRole() failed with error -10810

[macOS] [compiling]
After compiling the Godot of 3.1's branch with the godotsteam inside modules/ folder, following all the steps, I get the title's error trying to run it using open Godot.app/. Also, if I try to open it by double clicking it, I only see a small movement on the dock as if the engine was going to open but closes before the icon appears there.

The error:
LSOpenURLsWithRole() failed with error -10810 for the file /Path/godot/Godot.app.
(I can successfully run the engine compiled without the godotsteam/ module)

My godotsteam, which I made a clone from the master branch:

SCub
config.pyc
godotsteam.h
register_types.cpp
register_types.osx.tools.64.o
config.py
godotsteam.cpp
godotsteam.osx.tools.64.o
register_types.h
sdk/public/*
sdk/redistributable_bin/*

I don't get any error during compiling (and some of the listed files are generated after the compilation)
The only think I've noticed was at the ending of the compilation:
https://gist.github.com/coelhucas/dbe7c9ea5c3565edfbc39bc9ef51b59e

Besides that, I think I saw something similar when compiling godot without the module.
I have no idea of how to proceed because I don't get any different error.

"steam_api64.dll not found"

ive been trying to get the steam api to work in godot on windows. after figuring out all the things i needed installed i ran the scons platform=windows tools=yes command. the whole thing compiled without a hitch and i thought i was finally done and could statr figuring out the Steam Api in godot. however when trying to launch the compiled program, an error shows up saying steam_api64.dll was not found and promptly closes. I checked in the steamworks zip file i used for the sdk and sure enough the file it was complaining about was there. So i double checked and tried compiling again with the same issue. Am i missing something or did i not compile it correctly?

GodotSteam_Server build error

Hello,
I tried downloading godotsteam_server both from GitHub and from https://gramps.github.io/GodotSteam/ (fun fact, the zip and tar buttons are swapped) and downloading latest stable Godot 3.0.6 and Steamworks SDK 1.44, but I couldn't get the module to build.
At first, I got the following error:

path-to-godot\godot-3.0.6-stable\modules\godotsteam_server\godotsteam_server.h(71): error C2528: 'name': pointer to reference is illegal
path-to-godot\godot-3.0.6-stable\modules\godotsteam_server\godotsteam_server.h(71): error C2528: 'name': pointer to reference is illegal
modules\godotsteam_server\godotsteam_server.cpp(246): error C2511: 'void SteamServer::sendUserDisconnect(int)': overloaded member function not found in 'SteamServer'
path-to-godot\godot-3.0.6-stable\modules\godotsteam_server\godotsteam_server.h(12): note: see declaration of 'SteamServer'
modules\godotsteam_server\godotsteam_server.cpp(250): error C2352: 'SteamServer::createSteamID': illegal call of non-static member function
modules\godotsteam_server\godotsteam_server.cpp(17): note: see declaration of 'SteamServer::createSteamID'
modules\godotsteam_server\godotsteam_server.cpp(254): error C2511: 'bool SteamServer::updateUserData(int,const String &,uint32)': overloaded member function not found in 'SteamServer'
scons: *** [modules\godotsteam_server\register_types.windows.tools.64.obj] Error 2
path-to-godot\godot-3.0.6-stable\modules\godotsteam_server\godotsteam_server.h(12): note: see declaration of 'SteamServer'
modules\godotsteam_server\godotsteam_server.cpp(258): error C2352: 'SteamServer::createSteamID': illegal call of non-static member function
modules\godotsteam_server\godotsteam_server.cpp(17): note: see declaration of 'SteamServer::createSteamID'
modules\godotsteam_server\godotsteam_server.cpp(278): error C2511: 'void SteamServer::endAuthSession(int)': overloaded member function not found in 'SteamServer'
path-to-godot\godot-3.0.6-stable\modules\godotsteam_server\godotsteam_server.h(12): note: see declaration of 'SteamServer'
modules\godotsteam_server\godotsteam_server.cpp(282): error C2352: 'SteamServer::createSteamID': illegal call of non-static member function
modules\godotsteam_server\godotsteam_server.cpp(17): note: see declaration of 'SteamServer::createSteamID'
modules\godotsteam_server\godotsteam_server.cpp(293): error C2511: 'int SteamServer::userHasLicenceForApp(int,AppId_t)': overloaded member function not found in 'SteamServer'
path-to-godot\godot-3.0.6-stable\modules\godotsteam_server\godotsteam_server.h(12): note: see declaration of 'SteamServer'
modules\godotsteam_server\godotsteam_server.cpp(297): error C2352: 'SteamServer::createSteamID': illegal call of non-static member function
modules\godotsteam_server\godotsteam_server.cpp(17): note: see declaration of 'SteamServer::createSteamID'
scons: *** [modules\godotsteam_server\godotsteam_server.windows.tools.64.obj] Error 2
scons: building terminated because of errors.

Once I fixed those errors, I got this:

path-to-godot\godot-3.0.6-stable\core\class_db.h(224): error C2672: 'create_method_bind': no matching overloaded function found
modules\godotsteam_server\godotsteam_server.cpp(549): note: see reference to function template instantiation 'MethodBind *ClassDB::bind_method<const char*,bool(__cdecl SteamServer::* )(uint32,uint16,uint16,uint16,EServerMode,const String &)>(N,M)' being compiled
        with
        [
            N=const char *,
            M=bool (__cdecl SteamServer::* )(uint32,uint16,uint16,uint16,EServerMode,const String &)
        ]
path-to-godot\godot-3.0.6-stable\core\class_db.h(224): error C2784: 'MethodBind *create_method_bind(R (__cdecl T::* )(P1,P2,P3,P4,P5) const)': could not deduce template argument for 'R (__cdecl T::* )(P1,P2,P3,P4,P5) const' from 'M'
        with
        [
            M=bool (__cdecl SteamServer::* )(uint32,uint16,uint16,uint16,EServerMode,const String &)
        ]
path-to-godot\godot-3.0.6-stable\core\method_bind.gen.inc(4386): note: see declaration of 'create_method_bind'
path-to-godot\godot-3.0.6-stable\core\class_db.h(224): error C2784: 'MethodBind *create_method_bind(void (__cdecl T::* )(P1,P2,P3,P4,P5) const)': could not deduce template argument for 'void (__cdecl T::* )(P1,P2,P3,P4,P5) const' from 'M'
        with
        [
            M=bool (__cdecl SteamServer::* )(uint32,uint16,uint16,uint16,EServerMode,const String &)
        ]
path-to-godot\godot-3.0.6-stable\core\method_bind.gen.inc(4188): note: see declaration of 'create_method_bind'
path-to-godot\godot-3.0.6-stable\core\class_db.h(224): error C2784: 'MethodBind *create_method_bind(R (__cdecl T::* )(P1,P2,P3,P4,P5))': could not deduce template argument for 'R (__cdecl T::* )(P1,P2,P3,P4,P5)' from 'M'
        with
        [
            M=bool (__cdecl SteamServer::* )(uint32,uint16,uint16,uint16,EServerMode,const String &)
        ]
path-to-godot\godot-3.0.6-stable\core\method_bind.gen.inc(3990): note: see declaration of 'create_method_bind'
path-to-godot\godot-3.0.6-stable\core\class_db.h(224): error C2784: 'MethodBind *create_method_bind(void (__cdecl T::* )(P1,P2,P3,P4,P5))': could not deduce template argument for 'void (__cdecl T::* )(P1,P2,P3,P4,P5)' from 'M'
        with
        [
            M=bool (__cdecl SteamServer::* )(uint32,uint16,uint16,uint16,EServerMode,const String &)
        ]
path-to-godot\godot-3.0.6-stable\core\method_bind.gen.inc(3792): note: see declaration of 'create_method_bind'
path-to-godot\godot-3.0.6-stable\core\class_db.h(224): error C2784: 'MethodBind *create_method_bind(R (__cdecl T::* )(P1,P2,P3,P4) const)': could not deduce template argument for 'R (__cdecl T::* )(P1,P2,P3,P4) const' from 'M'
        with
        [
            M=bool (__cdecl SteamServer::* )(uint32,uint16,uint16,uint16,EServerMode,const String &)
        ]
path-to-godot\godot-3.0.6-stable\core\method_bind.gen.inc(3594): note: see declaration of 'create_method_bind'
path-to-godot\godot-3.0.6-stable\core\class_db.h(224): error C2784: 'MethodBind *create_method_bind(void (__cdecl T::* )(P1,P2,P3,P4) const)': could not deduce template argument for 'void (__cdecl T::* )(P1,P2,P3,P4) const' from 'M'
        with
        [
            M=bool (__cdecl SteamServer::* )(uint32,uint16,uint16,uint16,EServerMode,const String &)
        ]
path-to-godot\godot-3.0.6-stable\core\method_bind.gen.inc(3402): note: see declaration of 'create_method_bind'
path-to-godot\godot-3.0.6-stable\core\class_db.h(224): error C2784: 'MethodBind *create_method_bind(R (__cdecl T::* )(P1,P2,P3,P4))': could not deduce template argument for 'R (__cdecl T::* )(P1,P2,P3,P4)' from 'M'
        with
        [
            M=bool (__cdecl SteamServer::* )(uint32,uint16,uint16,uint16,EServerMode,const String &)
        ]
path-to-godot\godot-3.0.6-stable\core\method_bind.gen.inc(3210): note: see declaration of 'create_method_bind'
path-to-godot\godot-3.0.6-stable\core\class_db.h(224): error C2784: 'MethodBind *create_method_bind(void (__cdecl T::* )(P1,P2,P3,P4))': could not deduce template argument for 'void (__cdecl T::* )(P1,P2,P3,P4)' from 'M'
        with
        [
            M=bool (__cdecl SteamServer::* )(uint32,uint16,uint16,uint16,EServerMode,const String &)
        ]
path-to-godot\godot-3.0.6-stable\core\method_bind.gen.inc(3018): note: see declaration of 'create_method_bind'
path-to-godot\godot-3.0.6-stable\core\class_db.h(224): error C2784: 'MethodBind *create_method_bind(R (__cdecl T::* )(P1,P2,P3) const)': could not deduce template argument for 'R (__cdecl T::* )(P1,P2,P3) const' from 'M'
        with
        [
            M=bool (__cdecl SteamServer::* )(uint32,uint16,uint16,uint16,EServerMode,const String &)
        ]
path-to-godot\godot-3.0.6-stable\core\method_bind.gen.inc(2826): note: see declaration of 'create_method_bind'
path-to-godot\godot-3.0.6-stable\core\class_db.h(224): error C2784: 'MethodBind *create_method_bind(void (__cdecl T::* )(P1,P2,P3) const)': could not deduce template argument for 'void (__cdecl T::* )(P1,P2,P3) const' from 'M'
        with
        [
            M=bool (__cdecl SteamServer::* )(uint32,uint16,uint16,uint16,EServerMode,const String &)
        ]
path-to-godot\godot-3.0.6-stable\core\method_bind.gen.inc(2640): note: see declaration of 'create_method_bind'
path-to-godot\godot-3.0.6-stable\core\class_db.h(224): error C2784: 'MethodBind *create_method_bind(R (__cdecl T::* )(P1,P2,P3))': could not deduce template argument for 'R (__cdecl T::* )(P1,P2,P3)' from 'M'
        with
        [
            M=bool (__cdecl SteamServer::* )(uint32,uint16,uint16,uint16,EServerMode,const String &)
        ]
path-to-godot\godot-3.0.6-stable\core\method_bind.gen.inc(2454): note: see declaration of 'create_method_bind'
path-to-godot\godot-3.0.6-stable\core\class_db.h(224): error C2784: 'MethodBind *create_method_bind(void (__cdecl T::* )(P1,P2,P3))': could not deduce template argument for 'void (__cdecl T::* )(P1,P2,P3)' from 'M'
        with
        [
            M=bool (__cdecl SteamServer::* )(uint32,uint16,uint16,uint16,EServerMode,const String &)
        ]
path-to-godot\godot-3.0.6-stable\core\method_bind.gen.inc(2268): note: see declaration of 'create_method_bind'
path-to-godot\godot-3.0.6-stable\core\class_db.h(224): error C2784: 'MethodBind *create_method_bind(R (__cdecl T::* )(P1,P2) const)': could not deduce template argument for 'R (__cdecl T::* )(P1,P2) const' from 'M'
        with
        [
            M=bool (__cdecl SteamServer::* )(uint32,uint16,uint16,uint16,EServerMode,const String &)
        ]
path-to-godot\godot-3.0.6-stable\core\method_bind.gen.inc(2082): note: see declaration of 'create_method_bind'
path-to-godot\godot-3.0.6-stable\core\class_db.h(224): error C2784: 'MethodBind *create_method_bind(void (__cdecl T::* )(P1,P2) const)': could not deduce template argument for 'void (__cdecl T::* )(P1,P2) const' from 'M'
        with
        [
            M=bool (__cdecl SteamServer::* )(uint32,uint16,uint16,uint16,EServerMode,const String &)
        ]
path-to-godot\godot-3.0.6-stable\core\method_bind.gen.inc(1902): note: see declaration of 'create_method_bind'
path-to-godot\godot-3.0.6-stable\core\class_db.h(224): error C2784: 'MethodBind *create_method_bind(R (__cdecl T::* )(P1,P2))': could not deduce template argument for 'R (__cdecl T::* )(P1,P2)' from 'M'
        with
        [
            M=bool (__cdecl SteamServer::* )(uint32,uint16,uint16,uint16,EServerMode,const String &)
        ]
path-to-godot\godot-3.0.6-stable\core\method_bind.gen.inc(1722): note: see declaration of 'create_method_bind'
path-to-godot\godot-3.0.6-stable\core\class_db.h(224): error C2784: 'MethodBind *create_method_bind(void (__cdecl T::* )(P1,P2))': could not deduce template argument for 'void (__cdecl T::* )(P1,P2)' from 'M'
        with
        [
            M=bool (__cdecl SteamServer::* )(uint32,uint16,uint16,uint16,EServerMode,const String &)
        ]
path-to-godot\godot-3.0.6-stable\core\method_bind.gen.inc(1542): note: see declaration of 'create_method_bind'
path-to-godot\godot-3.0.6-stable\core\class_db.h(224): error C2784: 'MethodBind *create_method_bind(R (__cdecl T::* )(P1) const)': could not deduce template argument for 'R (__cdecl T::* )(P1) const' from 'M'
        with
        [
            M=bool (__cdecl SteamServer::* )(uint32,uint16,uint16,uint16,EServerMode,const String &)
        ]
path-to-godot\godot-3.0.6-stable\core\method_bind.gen.inc(1362): note: see declaration of 'create_method_bind'
path-to-godot\godot-3.0.6-stable\core\class_db.h(224): error C2784: 'MethodBind *create_method_bind(void (__cdecl T::* )(P1) const)': could not deduce template argument for 'void (__cdecl T::* )(P1) const' from 'M'
        with
        [
            M=bool (__cdecl SteamServer::* )(uint32,uint16,uint16,uint16,EServerMode,const String &)
        ]
path-to-godot\godot-3.0.6-stable\core\method_bind.gen.inc(1188): note: see declaration of 'create_method_bind'
path-to-godot\godot-3.0.6-stable\core\class_db.h(224): error C2784: 'MethodBind *create_method_bind(R (__cdecl T::* )(P1))': could not deduce template argument for 'R (__cdecl T::* )(P1)' from 'M'
        with
        [
            M=bool (__cdecl SteamServer::* )(uint32,uint16,uint16,uint16,EServerMode,const String &)
        ]
path-to-godot\godot-3.0.6-stable\core\method_bind.gen.inc(1014): note: see declaration of 'create_method_bind'
path-to-godot\godot-3.0.6-stable\core\class_db.h(224): error C2784: 'MethodBind *create_method_bind(void (__cdecl T::* )(P1))': could not deduce template argument for 'void (__cdecl T::* )(P1)' from 'M'
        with
        [
            M=bool (__cdecl SteamServer::* )(uint32,uint16,uint16,uint16,EServerMode,const String &)
        ]
path-to-godot\godot-3.0.6-stable\core\method_bind.gen.inc(840): note: see declaration of 'create_method_bind'
path-to-godot\godot-3.0.6-stable\core\class_db.h(224): error C2784: 'MethodBind *create_method_bind(R (__cdecl T::* )(void) const)': could not deduce template argument for 'R (__cdecl T::* )(void) const' from 'M'
        with
        [
            M=bool (__cdecl SteamServer::* )(uint32,uint16,uint16,uint16,EServerMode,const String &)
        ]
path-to-godot\godot-3.0.6-stable\core\method_bind.gen.inc(666): note: see declaration of 'create_method_bind'
path-to-godot\godot-3.0.6-stable\core\class_db.h(224): error C2784: 'MethodBind *create_method_bind(void (__cdecl T::* )(void) const)': could not deduce template argument for 'void (__cdecl T::* )(void) const' from 'M'
        with
        [
            M=bool (__cdecl SteamServer::* )(uint32,uint16,uint16,uint16,EServerMode,const String &)
        ]
path-to-godot\godot-3.0.6-stable\core\method_bind.gen.inc(498): note: see declaration of 'create_method_bind'
path-to-godot\godot-3.0.6-stable\core\class_db.h(224): error C2784: 'MethodBind *create_method_bind(R (__cdecl T::* )(void))': could not deduce template argument for 'R (__cdecl T::* )(void)' from 'M'
        with
        [
            M=bool (__cdecl SteamServer::* )(uint32,uint16,uint16,uint16,EServerMode,const String &)
        ]
path-to-godot\godot-3.0.6-stable\core\method_bind.gen.inc(330): note: see declaration of 'create_method_bind'
path-to-godot\godot-3.0.6-stable\core\class_db.h(224): error C2784: 'MethodBind *create_method_bind(void (__cdecl T::* )(void))': could not deduce template argument for 'void (__cdecl T::* )(void)' from 'M'
        with
        [
            M=bool (__cdecl SteamServer::* )(uint32,uint16,uint16,uint16,EServerMode,const String &)
        ]
path-to-godot\godot-3.0.6-stable\core\method_bind.gen.inc(162): note: see declaration of 'create_method_bind'
scons: *** [modules\godotsteam_server\godotsteam_server.windows.tools.64.obj] Error 2
scons: building terminated because of errors.

Do I need to use different engine version or different SDK version?

Steam not found when exporting to Runnable

I am trying to export my project to a runnable binary for x86_64 Linux. When executing the exported game, I get the following error:

SCRIPT ERROR: GDScript::load_byte_code: Compile Error: Identifier not found: Steam
   At: res://game.gdc:19.
ERROR: load_byte_code: Method/Function Failed, returning: ERR_COMPILATION_FAILED
   At: modules/gdscript/gdscript.cpp:772.
ERROR: load: Condition ' err != OK ' is true. returned: RES()
   At: modules/gdscript/gdscript.cpp:1848.
ERROR: _load: Failed loading resource: res://game.gdc
   At: core/io/resource_loader.cpp:186.
ERROR: poll: res://game.tscn:3 - Parse Error: [ext_resource] referenced nonexistent resource at: res://game.gd
   At: scene/resources/scene_format_text.cpp:439.
ERROR: load: Condition ' err != OK ' is true. returned: RES()
   At: core/io/resource_loader.cpp:149.
ERROR: _load: Failed loading resource: res://game.tscn
   At: core/io/resource_loader.cpp:186.
ERROR: start: Failed loading scene: res://game.tscn
   At: main/main.cpp:1672.
ERROR: ~List: Condition ' _first != __null ' is true.
   At: core/self_list.h:100.
ERROR: ~List: Condition ' _first != __null ' is true.
   At: core/self_list.h:100.
WARNING: cleanup: ObjectDB Instances still exist!
   At: core/object.cpp:1989.
ERROR: clear: Resources Still in use at Exit!
   At: core/resource.cpp:418.

When exporting to a ZIP file, everything works fine. I can also see that both the Steamworks library and the steam_appid.txt I added to my project path are exported to the ZIP archive. I don't now if that is the case for the packed binary, but I would assume so.

I am not even sure if this concerns this project or if it is a problem with Godot itself, but if any more information is needed I can provide it.

Clearer description of how to install

Could you write out what the directory is supposed to look like by the end of this installation?
You keep referencing the project's root and it would be nice to see how everything is intended to be set up next to a working project.

For the GD native branch

Thanks!

Compilation error: `object_type_db.h` missing

Hi!

First of all, thanks for this awesome library!
However I'm having troubles compiling it:

modules/godotsteam/register_types.cpp:2:10: fatal error: object_type_db.h: No such file or directory                                                                                             
 #include "object_type_db.h"                                                                                                                                                                     

I couldn't find any traces of ObjectTypeDB or object_type_db.h in Godot... Any ideas?

Godot: master branch (3.0-stable+1849)
SteamWorks: v1.42
GodotSteam: latest version from godot3 branch

Thanks!

Game crashes when accepting a lobby invite from a friend while the game is not running

To reproduce:

  1. Don't have the game open
  2. Accept a lobby invite from a friend

We get the following errors:

ERROR: No loader found for resource: res://+connect_lobby
ERROR: Failed loading scene: res://+connect_lobby

By default, when accepting a lobby invite, Steam launches the game with command line arguments +connect_lobby <SteamIDLobby>, but I guess in Godot it searches for a scene if given cmd args.

The current workaround is to simply open the game first before accepting a lobby invite

Migrating to latest pure GDNative

Good day,

I've tried to build GDNative version of your module and failed. Then I decided to update it to latest GDNative so it also won't use godot sources. But I'm having problems (mainly with SteamSDK).

I will be grateful if you could suggest me something on this errors:

In file included from include/sdk/public/steam/steam_api.h:392:0,
                 from include/GDSteam.h:6,
                 from src/GDSteam.cpp:2:
include/GDSteam.h: In member function 'virtual void GDSteam::CCallbackInternal_OnLobbyCreated::Run(void*)':
include/sdk/public/steam/steam_api_internal.h:195:105: error: expected primary-expression before ',' token
    thisclass *pOuter = reinterpret_cast<thisclass*>( reinterpret_cast<char*>(this) - offsetof( thisclass, m_steamcallback_ ## func ) ); \
                                                                                                         ^
include/sdk/public/steam/steam_api_internal.h:187:58: note: in expansion of macro '_STEAM_CALLBACK_3'
 #define _STEAM_CALLBACK_HELPER( _1, _2, SELECTED, ... )  _STEAM_CALLBACK_##SELECTED
                                                          ^
include/sdk/public/steam/steam_api_internal.h:188:45: note: in expansion of macro '_STEAM_CALLBACK_HELPER'
 #define _STEAM_CALLBACK_SELECT( X, Y )      _STEAM_CALLBACK_HELPER X Y
                                             ^
include/sdk/public/steam/steam_api.h:219:2: note: in expansion of macro '_STEAM_CALLBACK_SELECT'
  _STEAM_CALLBACK_SELECT( ( __VA_ARGS__, 4, 3 ), ( /**/, thisclass, func, __VA_ARGS__ ) )
  ^
include/GDSteam.h:294:2: note: in expansion of macro 'STEAM_CALLBACK'
  STEAM_CALLBACK( GDSteam, OnLobbyCreated, LobbyCreated_t );
  ^
include/sdk/public/steam/steam_api_internal.h:195:107: error: invalid use of non-static data member 'GDSteam::m_steamcallback_OnLobbyCreated'
    thisclass *pOuter = reinterpret_cast<thisclass*>( reinterpret_cast<char*>(this) - offsetof( thisclass, m_steamcallback_ ## func ) ); \
                                                                                                           ^
include/sdk/public/steam/steam_api_internal.h:187:58: note: in expansion of macro '_STEAM_CALLBACK_3'
 #define _STEAM_CALLBACK_HELPER( _1, _2, SELECTED, ... )  _STEAM_CALLBACK_##SELECTED
                                                          ^
include/sdk/public/steam/steam_api_internal.h:188:45: note: in expansion of macro '_STEAM_CALLBACK_HELPER'
 #define _STEAM_CALLBACK_SELECT( X, Y )      _STEAM_CALLBACK_HELPER X Y
                                             ^
include/sdk/public/steam/steam_api.h:219:2: note: in expansion of macro '_STEAM_CALLBACK_SELECT'
  _STEAM_CALLBACK_SELECT( ( __VA_ARGS__, 4, 3 ), ( /**/, thisclass, func, __VA_ARGS__ ) )
  ^
include/GDSteam.h:294:2: note: in expansion of macro 'STEAM_CALLBACK'
  STEAM_CALLBACK( GDSteam, OnLobbyCreated, LobbyCreated_t );
  ^
include/sdk/public/steam/steam_api_internal.h:198:4: note: declared here
  } m_steamcallback_ ## func ; void func( param *pParam )
    ^
include/sdk/public/steam/steam_api_internal.h:187:58: note: in expansion of macro '_STEAM_CALLBACK_3'
 #define _STEAM_CALLBACK_HELPER( _1, _2, SELECTED, ... )  _STEAM_CALLBACK_##SELECTED
                                                          ^
include/sdk/public/steam/steam_api_internal.h:188:45: note: in expansion of macro '_STEAM_CALLBACK_HELPER'
 #define _STEAM_CALLBACK_SELECT( X, Y )      _STEAM_CALLBACK_HELPER X Y
                                             ^
include/sdk/public/steam/steam_api.h:219:2: note: in expansion of macro '_STEAM_CALLBACK_SELECT'
  _STEAM_CALLBACK_SELECT( ( __VA_ARGS__, 4, 3 ), ( /**/, thisclass, func, __VA_ARGS__ ) )
  ^
include/GDSteam.h:294:2: note: in expansion of macro 'STEAM_CALLBACK'
  STEAM_CALLBACK( GDSteam, OnLobbyCreated, LobbyCreated_t );
  ^
include/sdk/public/steam/steam_api_internal.h:195:132: error: 'offsetof' was not declared in this scope
    thisclass *pOuter = reinterpret_cast<thisclass*>( reinterpret_cast<char*>(this) - offsetof( thisclass, m_steamcallback_ ## func ) ); \
                                                                                                                                    ^
include/sdk/public/steam/steam_api_internal.h:187:58: note: in expansion of macro '_STEAM_CALLBACK_3'
 #define _STEAM_CALLBACK_HELPER( _1, _2, SELECTED, ... )  _STEAM_CALLBACK_##SELECTED
                                                          ^
include/sdk/public/steam/steam_api_internal.h:188:45: note: in expansion of macro '_STEAM_CALLBACK_HELPER'
 #define _STEAM_CALLBACK_SELECT( X, Y )      _STEAM_CALLBACK_HELPER X Y
                                             ^
include/sdk/public/steam/steam_api.h:219:2: note: in expansion of macro '_STEAM_CALLBACK_SELECT'
  _STEAM_CALLBACK_SELECT( ( __VA_ARGS__, 4, 3 ), ( /**/, thisclass, func, __VA_ARGS__ ) )
  ^
include/GDSteam.h:294:2: note: in expansion of macro 'STEAM_CALLBACK'
  STEAM_CALLBACK( GDSteam, OnLobbyCreated, LobbyCreated_t );
  ^

Best

Need to access underlying ticket struct

Hello @Gramps . Just started using Godot and I'm a big fan of your work. I have a problem though, I want to validate the AuthSessionTicket that getAuthSessionTicket() retrieves. Unfortunately inorder to do that on a server (via steams web api) it seems I need access to the underlying buffer and size variable in the struct. Do you have any existing methods to access these?

https://github.com/Gramps/GodotSteam/blob/49742f8566de8f324a0aae8bd7da6201d5189789/godotsteam/godotsteam.h#L383

[Feature] MacOS Support

Hello, just wondering if you guys are going to be adding mac OS support in the future?

Love what you guys have done here!

libpng16 not found error - steamOS (works fine in ubuntu)

Hello, my build fails to launch on SteamOS through Steam and when launched through the terminal the following error message is displayed:

/home/desktop/.local/share/Steam/steamapps/common/Spooky Ghosts Dot Com/SpookyGhostsDotCom: error while loading shared libraries: libpng16.so.16: cannot open shared object file: No such file or directory

I am using the precompiled linux template from here: https://github.com/Gramps/GodotSteam/releases/tag/g214-s142-gs180

I am exporting from windows to linux 64bit, here are my export settings: https://i.imgur.com/GOFE7jA.png

Strangely, it works great on Ubuntu 🤔. Unfortunately I don't currently have access to steamOS (working on it), this was reported while Steam was reviewing my build for launch.

Build failures on Linux, ambiguous type error.

I wasn't having this issue building on Windows, but trying things out in Ubuntu with the latest commit, there seems to be some conversion issue with the CSteam ID, I assume because it isn't the standard integer that the methods convert it to. Probably a small fix, but I wasn't sure what the organizational intentions were with the ID getter, or what sort of validations or error handling that might be needed there if the ID given is invalid.

https://github.com/Gramps/GodotSteam/blob/9db71c13324255137f202d58079996adab93b673/godotsteam/godotsteam.cpp#L960

Here are the errors, I've also included the log, it seems to be pouring out a lot of messages, so not sure if that will alleviate when the errors are resolved, or if something else may be off.

modules/godotsteam/godotsteam.cpp: In member function 'void Steam::getPlayerAvatar(int, uint64_t)':
modules/godotsteam/godotsteam.cpp:960:26: error: conversion from 'uint64_t {aka long unsigned int}' to 'CSteamID' is ambiguous
avatarData->m_steamID = steamID;
^~~~~~~

Seems to also affect the line in my recent PR as well.

modules/godotsteam/sdk/public/steam/steamclientpublic.h:568:7: note: initializing argument 1 of 'constexpr CSteamID& CSteamID::operator=(CSteamID&&)'
class CSteamID
^~~~~~~~
modules/godotsteam/godotsteam.cpp: In member function 'void Steam::_avatar_loaded(AvatarImageLoaded_t*)':
modules/godotsteam/godotsteam.cpp:1763:100: error: conversion from 'uint64 {aka long long unsigned int}' to 'const Variant' is ambiguous
ignal", "avatar_loaded", avatarData->m_steamID.ConvertToUint64(), width, data);

scons.log

Game crashes when I use GodotSteam

Hi! When I trying to run my build it crashes with: "Parse Error: Identifier 'Steam' is not declared in the current scope." but Steam singletone is found. What should I do to fix that?

0

1

Steam.getFriendAvatar() errors.

Using a build with this module for Win10 64-bit godotengine/godot@22ee7ba / GodotSteam3: 62d03d8

With the following code:

func _ready():

	if(not Steam.steamInit()):
		if(not Steam.restartAppIfNecessary(480)):
			print("Game failed to launch.")
			return
		
	Steam.connect("avatar_loaded", self, "loaded_avatar")
	Steam.getFriendAvatar(Steam.AVATAR_MEDIUM)
	
func loaded_avatar(size, img_data):
	printt(size, img_data)

The game stalls and spams these errors into the console.

image

user_achievement_stored not existent signal

I tried to connect to user_achievements_stored signel but it appears not exist.
I'm using 2.1.5 godot version.

ERROR: In Object of type 'Steam': Attempt to connect nonexistent signal 'user_achievements_stored' to method 'Node._achievement_stored'

About getLobbyData, setLobbyData and requestLobbyData

I'm having problems with lobby metadata, but I'm not sure if it's a bug or something I'm doing wrong. After receiving the lobby_match_list signal, according to the Steamworks SDK documentation I should be able to use getLobbyData on the lobbies in the list. But getLobbyData always returns empty strings.
So that could mean that either my setLobbyData calls aren't working and there's no data to get in the first place. Or getLobbyData isn't working. Or contrary to the Steamworks documentation, the data isn't available after the lobby_match_list callback. Or maybe I understood something wrong about how it is supposed to work.
I also tried to use requestLobbyData, but I noticed that the corresponding callback (lobby_data_update?) isn't implemented in GodotSteam. Maybe this is related?

how can i do rpc at steam network match?

if can use godots high level api with steam,it will be awosome。i need to use godots lan network with steamserver,steam gots natand transmit server,i can make a room base game。but i donot know if rpc of high level api in godots doc can be used to synchronize peer。 forgive my poor english,thx

GodotSteam with Godot 3.1 RC

So, was just compiling Godot 3.1 RC with GodotSteam module and it's not working correctly and i'm also not quite sure what to change in GodotSteam actually. The engine itself is running and the Steam singleton is found but it crashes without any information or does nothing when calling Steam functions. Any ideas?

steamworks p2p

Hey, if im correct the whole steam networking part is not yet supported.
Are there any plans to implement it in the near future?
I realy like godot but i also need the p2p networking from steam and i dont think there is any other way of achieving this in a reasonable easy way, without switching the game engine (Unity, Unreal)

Join_Requested not working

So, trying to make a simple lobby system and creating and joining your own lobby is working with the signals like this:

Steam.connect("lobby_created", self, "_on_LobbyCreated")
Steam.connect("lobby_joined", self, "_on_LobbyJoined")

And

func _on_LobbyCreated(status, lobbyId):
	if (status == Steam.LOBBY_OK):
		print("STEAM: Lobby created (%s)!" % str(lobbyId))
	else:
		print("STEAM: Lobby creation failed!")
	
	Steam.setLobbyData(lobbyId, "name", "%s's Game" % Steam.getPersonaName())
	Steam.setLobbyData(lobbyId, "steam", "false")
	Steam.setLobbyMemberData(lobbyId, "ready", "false")

func _on_LobbyJoined(lobbyId, permissions, locked, response):
	SteamManager.currentLobbyId = lobbyId
	Steam.setLobbyData(lobbyId, "hostId", str(Steam.getLobbyOwner(lobbyId)))
	Steam.setLobbyMemberData(lobbyId, "ready", "false")
	
	if (response == Steam.RESULT_OK):
		print("STEAM: Lobby Joined!")
		
		# Set Lobby GUI
		lobbyTitle.set_text(Steam.getLobbyData(lobbyId, "name"))
		readyButton.disabled = false
		inviteButton.disabled = false
		steamToggle.disabled = false
		loadingScreen.hide()
	else:
		print("STEAM: Failed to join Lobby!")

But now we want to let people join by invite. That is handled with the join_requested signal and we used it like this:

Steam.connect("join_requested", self, "_on_JoinRequested")

And

func _on_JoinRequested(steamId, connection):
	print("STEAM: Joining Lobby..")
	print("STEAM: Con-String: %s" % connection)
	Steam.joinLobby(steamId)

But that isn't called by joining a friends lobby via Steam or accepting his invite. (The whole function isn't called)

Any clue why this isn't working but the others are?

EDIT:

Could this be the problem? You've got this parameter for that signal in your code:

void Steam::_join_requested(GameRichPresenceJoinRequested_t* callData)

But i think it should be

void Steam::_join_requested(GameLobbyJoinRequested_t* callData)

Feature request: Convert GodotSteam to GDNative

With GDNative in Godot v3 (https://godotengine.org/article/dlscript-here) the future of integrating 3rd party libraries with Godot will be much easier and will avoid recompiling the engine.

It seems to me that this could be also a better way to provide Steam integration for Godot users, with minimal hassle. For this, a simple wrapper has to be coded to bridge GDNative and the SteamSDK. I think most of the current code can be used and just a few tweaks need to be done. Perhaps a new branch could be opened for this?

Cons: no built-in documentation for the steam API

getFriendGamePlayed FriendGameInfo_t needed for friend lobbies

getFriendGamePlayed missing the return of FriendGameInfo_t through a reference tag https://godotengine.org/qa/3611/how-to-bind-a-c-method-with-pointer-argument
is an essential feature to get friend lobbies working in godot.

See this code snipped (converted from an example from the steamworks docs:

func get_friend_lobbies():
	var cFriends : int = Steam.getFriendCount()
	for i in range(cFriends):
		var friendGameInfo
		var steamIDFriend = Steam.getFriendByIndex(i, Steam.FLAG_IMMEDIATE)
		if ( Steam.getFriendGamePlayed(steamIDFriend, FriendGameInfo) && Steam.FriendGameInfo.m_steamIDLobby.IsValid() )
	    {
	        #Steam.FriendGameInfo.m_steamIDLobby is a valid lobby, you can join it or use Steam.requestLobbyData() get its metadata
	    }
#from the steamworks docs:
#for ( int i = 0; i < cFriends; i++ )
#{
#    FriendGameInfo_t friendGameInfo;
#    CSteamID steamIDFriend = SteamFriends()->GetFriendByIndex( i, k_EFriendFlagImmediate );
#    if ( SteamFriends()->GetFriendGamePlayed( steamIDFriend, &friendGameInfo ) && friendGameInfo.m_steamIDLobby.IsValid() )
#    {
#        // friendGameInfo.m_steamIDLobby is a valid lobby, you can join it or use RequestLobbyData() get its metadata
#    }
#}

The "proper" solution would be to return all the values that the base function provides in this wrapper function, however making a new function that returns a list of lobby id's from your friends using the above c++ code is a simple workaround for this specific issue. That is not an ideal solution however so I am working on implementing passing a reference myself, but I am not knowledgeable about how modules work quite yet, and do not know if I custom data types are allowed to be sent back or if it needs to be a VectorPoolArray. If someone already knows how to pass things by reference and has a fix for this, that would be awesome, otherwise I will be attempting to put together a pull request for this once i can figure out how to pass values by reference from a godot module.

getSteamId() is returning incorrect id for me?

Steam.getSteamId() is returning steamID XXXXX730 when my actualy steamID is XXXXXX731 ?

I was thinking this issue was on my end but I tried getPersonaName() and that correctly returned my steam persona.

Thanks in advance!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.