Skip to content

Patches

GodotSteam 4.16 Is Finally Here

If you're reading this, back-up all your projects right now. What a few months this has been; various things have gone awry like a massive data loss which nuked all my patches in one go except the 4.16 version of Godot 4. I have also been deep in the middle of a migration to Codeberg.org from Github due to Microsoft's latest round of shenanigans with the platform; though I had started this back in, I think, February and should have completed it sooner. More on that in a bit.

Nonetheless, the day has come and GodotSteam 4.16 is now live for Godot 4.x with versions for both 4.4.1 and 4.5 and well as new MultiplayerPeer variants and GDExtension! The changelog is quite sizeable as I finally tweaked a lot of stuff that needed tweaking which may break some people's projects a bit. But it is also packed with various QoL updates and some minor things to make maintenance easier for me. There will be another large patch for 4.17 coming after I get both the Godot 3 branch updated and both of the GodotSteam Server versions updated. So expect a lot more updates in the coming weeks... followed by even more updates after that.

This update also brings us compatibility with MinGW finally thanks to a patch by DanielSnd which now lives in the extras/ folder in the main Godot 4 branch. You will want to run this patch on the Steamworks SDK before compiling with MinGW; if you are a compiler.

The new MultiplayerPeer version authored by Chris Ridenour aka FriarTruck, sponsored by the awesome folks at BippinBits, is now fully live and availabe in Godot 4.4.1 and 4.5 glory with the new GodotSteam 4.16 patch included. This also drags him in as a maintainer too; sorry, Chris!

Back to the migration points; due to Codeberg's minor limitation on file sizes, we will still be hosting a few things over on Github and keeping the Discussions section intact. However, all of the actual code and the bulk of the releases have been nuked from space. While not all of them have been fully migrated due to error on my part, I can recreate older versions upon request if someone needs them. Just holler at requests@godotsteam.com if so.

Lastly, I finally added LiberaPay as an option for sponsoring the project to start migrating away from Github Sponsors where possible. Either is fine, whatever works for those of you who choose to chip in.

OK, back to the coding pits with me; still so much more to do. See you all again for the next round of updates!

❤ Gramps

GodotSteam Road-Map

Seems like I have been working on this forever and it has been a bit quiet lately so here's a little update and roadmap of what is going on with GodotSteam! There are no specified timelines on all of this but it is the general order of how things are being worked on and will be released.


GodotSteam 3.30 / 4.16 & Big Docs Update

A big patch for both Godot 3.x and Godot 4.x that fixes a variety of functions and callbacks as well as adds in some missing things from the SDK. Why is this taking so long? I am combing through the entirety of the SDK to check for inconsistencies and missing things.

Simultaneously I am updating the docs which are also missing some information from a few patches already and also missing stuff found in this SDK check. The docs post-update will have better explanations of the function arguments, what versions of GodotSteam things are added or removed, expanded explanations of the enums per class, and finally a list of constants with explanations. This will transform the docs into a hybrid of the SDK's information, Valve's docs (which are somewhat outdated), and the existing GodotSteam notes. My attempt to finally blend these together to be as useful as possible to you all.

GodotSteam 3.31 / 4.17

Finally completing the push to the Flat API system which was started a few versions ago. Regrettably, I totally spaced that all of the calls needed changed out and that was a lot of work. These changes are being backported from the GodotSteamKit version but will take some time. Functionally there will be no differences you'll notice but since it require every single function to be changed, it is coming as a separate update. Plus whatever weird quirks and fixes that are found during yet another full-code deep-dive.

Tutorials

A bunch of tutorials based on Skillet's development are next in line, including their video versions for MakerTube. I missed a few video tutorial targets I had due to moving and personal stuff but there will be a 1-to-1 tutorial release during this period.

Skillet Release

Yes, the open-source, massive example project game that has a very barebones repo will finally be released! Progress is coming along and after these two big updates, I will start sharing more files, images, and such. I'll need folks to help test out mulitplayer but we can get into that when the time comes; however, this will probably be done using Steam playtest features so I can also write up some tutorial information on how that works.

GodotSteam 5?! & Starter Kits

I am abandoning my plans for the GodotSteamKit release to limit the already cumbersome list of repos and projects to manage. Instead I will be releasing that version as our GodotSteam 5 variant which will get be available to all sponsors initially. When Godot 5.x finally drops at some point, that will be rolled out as the standard version. Why, you may ask? Because it finally breaks apart GodotSteam into separate classes to match the SDK and would basically break everyone's projects. So to limit confusion, it will wait for a major Godot version when we'll have to migrate to something different anyway.

That being said, people who have access to it can use it for projects but I'd only really start fresh projects unless you want to rename a bunch of calls.

Another thing that was planned were GodotSteam Starter Kits that are based off Skillet's code and will let people skip putting together some of the more cumbersome or repetitive parts of Steamworks like lobbies, networking, Inventory, Workshop, etc. There will be a new repo for those too.


Well, back to the documentation pit with me! Excited to finally roll all this stuff out soon. If you have been enjoying the project and want to help with development, feel free to sponsor the project too!

❤ Gramps

GodotSteam 4.15 Out Now

Both the pre-compiled module and GDExtension versions got updated today to mainly fix the embedded callbacks issue in 4.14. Now you should be able to correctly use it both through the Project Settings option or when passing true to steamInit or steamInitEx. Apparently trying to bind it to the _process function does not work with an object. There were some other small changes and updates; mostly some missing functions or minor tweaks. As I've been creeping from Steam class to Steam class to get our documentation updated, I have found a few things that got overlooked. Currently I'm only at Users / User Stats so there maybe be another chunk coming for 4.16. Including finally porting over all the Flat API changes.

Keen eyes may notice that the 4.1-4.3 version of the GDExtension is now deprecated. This last update fixes the embedded callback portion and that will be the last update 4.3 or earlier gets.

More coming soon!

❤ Gramps

GodotSteam Updates For All Branches

Finally got all the updates for Godot 4.4.1 and Steamworks SDK 1.62 finished and rolled out some hefty changes for all the GodotSteam branches: godot4, godot3, gdextension, server4, server3, and server gdextension! Steamworks SDK 1.62 brought a bunch of new Remote Play features and some minor changes to a few other classes; the docs still need updated for these changes and that will be coming this week. The current in-editor docs should reflect these updates though; with the exception of the GDExtension ones. For whatever reason, they are failing to display correctly again and that is another problem for another time.

One massive change is the ability to auto-initialize Steam before the game starts; thanks to TriMay. This should fix the overlay issues with Forward+ that people have had. While this does not fix overlay when running from editor, it should fix it if you were not able to get overlay running from the Steam client. If you need this, you can enable it from a brand-new project settings: Steam > Initialization:

Project Settings

Wait, instead of calling steamInit or steamInitEx, now what? You can just easily replace either call in your code with get_steam_init_result and this will pass back the expected dictionary of values so very little has to change in your code if you use this initialization process.

In these new project settings, you can also set both your app ID and whether you want callbacks embedded here. Setting them here means you do not have to set them if you call either steamInit or steamInitEx. However, you will want to set app ID here if you are using auto-initialization.

Also, the initialization functions themselves have changed. steamInit now returns a bool, as Valve intended. Both it and steamInitEx now only take two arguments: app ID and embed callbacks. Originally, the first argument was a bool for pulling statistics or achievements at boot but that was removed in SDK 1.61 and we kept it to prevent breakage in projects. However, it has now been removed which bumps up app ID and callback embedding. Used to be Steam.steamInitEx(true, 480, true) but now is Steam.steamInitEx(480, true).

Expect an initialization documentation update for this and a new short video too. Also, embedding callbacks is now available on the GDExtension version too!

That being said, the planned tutorial for Statistics and Achievements got pushed back and instead the next one will be Leaderboards instead. This way I can also release the leaderboards scene for Skillet to pair with that.

Speaking of Skillet, since there is more time currently, production is ramping back up and this week I will put together Github Project cards for tasks that need finished to better keep track of where the game is. Those of you who expressed interest in working on the game will finally be able to chip in. I will write up more on where Skillet is and what needs done in the next news update.

❤ Gramps

Servers 4.5.2 and 3.5.1

Seems like we just updated the servers not too long ago and now there is a new patch to fix an apparently long-standing glitch which caused the servers to crash any time IP addresses were converted internally.

The functions now use a somewhat rolled back method from a few versions ago which seems to work good.

Everything has been pushed public and things are compiled and ready to go! You can find the Godot 4 server here and the Godot 3 server here, with the GDExtension version on the Godot Asset Library.

These IP conversion functions will get backported to the standard branches soon too.