Should I use Godot 4 beta to prototype an idea and possibly turn into a small release?

:information_source: Attention Topic was automatically imported from the old Question2Answer platform.
:bust_in_silhouette: Asked By ForsakenBacon

Looking to start exploring Godot to make a browser multiplayer game. I’ve done some dev with the engine about 6 months back, but stopped as I was waiting for Godot 4.

I’ve got a multiplayer game idea I want to explore, so I’m unsure if I should just dive into Godot 4 beta and start there? A lot of my time will be learning how to use websockets to get something running smoothly, so I’m hoping (like many of us I’m sure) that by the time I’m ready for actual development, Godot 4 will be on a stable release?

During this time I might even release a small short singleplayer game (just to put my skills to the test), but I’m unsure if beta is recommended for a release?

What do people suggest? I’m not a big fan of learning something old, when I could just learn the newest thing.

:bust_in_silhouette: Reply From: stormreaver

I’ve been using Godot 4 for all of my new projects since the Alpha releases, and I don’t regret it. It has solved several insurmountable problems I had with the 3.x series, so I’m in the “do it” camp.

I know there was a sprint to finish the documentation at the end of Jan. But what it’s like developing with missing docs? I’m unsure what is old content and what’s new.

The primary area this concerns me is when I start playing with the high-level networking features.

ForsakenBacon | 2023-02-03 23:44

In the beginning, it was a bit challenging. However, people with more time than I had made some videos about Godot 4 Alpha that got me up to speed with the changes between 3.x and 4. It was really not that difficult to find pertinent documentation on Youtube. Between Youtube and the built-in documentation, I was able to figure out what I needed.

Since I am not a fan of Godot’s built-in multiplayer subsystem, I knew I was going to write one from scratch; so I did. All I needed from Godot was its low-level networking API, and that was completely documented already.

Basically, Godot 4’s documentation is good enough as-is.

stormreaver | 2023-02-04 00:13

Good to hear, thank you!

I’m gonna prototype and stress test some of their high level stuff first, but I expect I will have to switch to the low level (due to websockets being TCP and RTC being peer to peer).

Any chance you could provide brief info on how you implemented low-level? A bit of a push in the right direction. Obviously only if your time permits.

ForsakenBacon | 2023-02-04 00:25

It’s pretty involved, so I’ll just hit the highlights.

  1. I use PacketPeerUDP for all in-game data that send and receive raw packet data. Stay away from TCP for in-game packets unless you want to create a huge decoding problem for yourself. Perhaps counterintuitively, UDP is far easier to deal with than TCP for in-game data transmission.

  2. I documented every data packet used by the subsystem I created, as well as creating a simple network topology graphic to remind me how my networking classes are related to each-other. This is absolutely crucial unless you have an infallible photographic memory.

  3. I created classes to encode and decode data packets. Do NOT encode/decode within your mainline game code. You will quickly program yourself into an inescapable hole. The decoder receives raw data from the PacketPeerUDP object, and emits signals for each data packet it has detected, and those signals pass meaningful parameters to the listeners that were parsed from the raw data. The encoder contained parameterized functions the generate raw data to be transmitted.

stormreaver | 2023-02-04 01:05

You’re a legend, thank you!

ForsakenBacon | 2023-02-04 01:19