Weekly Update: May 31, 2024

In the last update I mentioned that I couldn’t autodetect whether the game was running on the Steam Deck, something I wanted to do so that the new text-scaling feature could automatically be applied.

Two years ago when I was starting integration with Steamworks, I evaluated two possible C# libraries for Valve’s API. One was “Steamworks .net,” an unofficial straight 1:1 port of the API to C#, the other was “Facepunch,” made by the maker’s of the popular sandbox game, Garry’s Mod. I ended up going with Facepunch because a) it’s more of a proper C# implementation of the Steamworks API and b) the author of Steamworks .net himself recommended people use it instead. It works very well, but hasn’t kept up with Valve’s changes to Steamworks.

So last weekend I started migrating the workshop integration to Steamworks .net. Unfortunately, there’s not a lot of documentation on the correct way to handle workshop calls. The examples I found felt brittle, and I ran into an issue that caused the Editor to freeze, which was both unsettling and time-consuming to troubleshoot.

After spending two and a half days attempting the migration, I decided it was turning out to be too time consuming (and too risky) for too little reward. The only feature I really wanted to do the migration for wasn’t even connected to the Workshop, just find out if the game was on the Deck. So I ended up writing a two-line method based on the GPU (the deck uses a custom AMD GPU called “VANGOGH”). It’s a hack that works, but not ideal– for example it may not detect the next iteration of the Deck.

Game dev is fundamentally a process of exploration, and it’s inevitable that some time will be lost investigating paths that lead nowhere, but still frustrating to abandon days of work.

I did make some progress in the past week:

  • Worked on some missing controls for gamepads
  • Fix for battlestation and shield “charge” not persisting across saves (not Havok, though)
  • Changes to a late game player “weapon” that make it a bit easier to use for its intended purpose and more fun

As always, changes discussed in these posts are works in progress and will not be immediately available to players until a build is deployed.

Until next week!
– Kevin