Launching my First Multiplayer Godot Game


Hey friends! Ex-Unity dev here. Today I've finally launched a game - it's not a good one, I made it in a few weekends, but it's my first launched game with Godot.

Play Blob Jump Multiplayer!

Blob Jump Screenshot

My Situation

  • Unity is anti-developer, toxic, and slowly dying. I do not want to continue investing time into learning this game engine.
  • I no longer work in the game industry, so making games will be weekend projects from here on
  • To maximize fun and minimize friction, I want to make multiplayer, browser based games only. I have no interest in making singleplayer games or games that require a download

Initial Concerns with Godot

  • Godot is not as optimized as Unity. I was worried about this, but then I didn't code my game like a monkey, and the profiler is great. This turned out to be a non-issue in any prototype I created.

Godot Frustrations

  • The biggest frustration point I experienced with Godot has been errors that have no GDScript stack trace. It is very annoying to be told some Node can't access some Null feature or whatever and have no stack trace
  • I've hit quirky edge cases with Godot physics. These are mostly remediated with Godot 4.5-dev, so I am running Godot compiled from source rather than a released version

Fresh Air

  • Every issue I've run into with Godot has some open source issue tracking it. In Unity, you would see ignored threads for years. In Godot, the maintainers are actively responding, people are giving workarounds, and in some cases, community members are fixing the issues themselves!
  • Godot loads fast. Unity projects can take >1 minute to load; I did not expect how much more productive it would make me to have a fast editor that doesn't break my focus
  • Godot 4's multiplayer system is fantastic. The way it handles multiplayer.is_server(), is_multiplayer_authority, MultiplayerSpawners, MultiplayerSynchronizers and RPCs is at least 2x better than Unity as far as code simplicity, debuggability, and learning time

Multiplayer and Web Issues

  • I originally wrote my game with ENet. Turns out that's not supported in the browser, and I had to switch it all to Websockets. Thankfully this was easy
  • I bought my server off Hetzner (shoutout cheap EU cloud provider). To save money, I went with IPv6 only, which Github doesn't support, and Godot releases their binaries on Github. This was annoying, and after a few other IPv6 issues, I ended up buying an IPv4 address
  • While originally prototyping to process inputs on the server, I chose to process inputs on the client in this game for a better UX. This actually resulted in a worse UX, since now the client needs to calculate player physics, which causes all sorts of issues if the client lags.
  • The game wasn't connecting to the server when I ran it on itch.io - But there were no errors! I reasoned out that Itch.io uses HTTPS, so I configured Nginx to handle SSL encryption and it started working.

Godot Dev Tips

  • Watch Youtube guides. They are amazing
  • Type your variables. It's borderline impossible to do complex things without strong typing.
  • Spend 30 minutes learning the debugger. That thing is golden.

Next Steps

I enjoy writing games in Godot more than I enjoy playing Runescape (but I'm horribly addicted to Runescape so I can't stop). I've only scratched the surface, and hope to keep making more games. Thanks a ton to all the devs and the great community who make it what it is :)

Leave a comment

Log in with itch.io to leave a comment.