lucashuguet / adventurecraft

Minecraft 2D created with godot
3 stars 1 forks source link

Can this work for Godot 4+ games with multiplayer and open world chunks? #1

Open WithinAmnesia opened 6 months ago

WithinAmnesia commented 6 months ago

Test chunks link: https://github.com/WithinAmnesia/ARPG/discussions/15

I'm trying to find a way to seamless load and unload chunks for a 2D multiplayer game project to make an open world with a working server using Godot 4.2.1.NET.

How can this work for multiplayer and what is needed for this to potentially work? What options can be used for chunk loading and unloading seamlessly in Godot 4.2.1.NET? Please give feedback.

lucashuguet commented 6 months ago

I never tried to implement a chunk system so I can’t tell. I made this back then with Godot 3.5 and everything is managed by tilemaps. Nor do I know about the new features in Godot 4. But I heard godot 4 managed by itself the action of loading and unloading what the player don’t see. Are there performance issues without a chunk system or is it because of the multiplayer mechanics ?

WithinAmnesia commented 6 months ago

Here is an update since I last posted. https://jonathaneeckhout.itch.io/jdungeon For the goal right now it is easy to play this but imagine it has seamless chunk loading and unloading. As instead of the black world boundary a new chunk loads in seamlessly. What are your suggestions and thoughts?

Update: https://github.com/WithinAmnesia/ARPG/tree/ARPG-Infinite-Worlds Here is the 128x128 with 32x32 pixel tile chunk to test.

My initial testing seems to feel even faster combat with the 128x128 chunk. This 128x128 chunk has the same amount of entities as the 256x256 chunk. For I moved all of the entities over into the 128x128 chunk. This 128x128 chunk is a good test for using the Infinite-Worlds using the BinarySerializer for Godot 4.2+ from Theraot: https://gist.github.com/theraot/31515e28e2d8bfea33f6c6d5bcd852f6 . There needs to be some testing how to make the chunks seamlessly load and unload. https://gamedev.stackexchange.com/questions/209002/looking-for-help-godot-4-multiplayer-seamless-open-world-chunks

WithinAmnesia commented 6 months ago

I never tried to implement a chunk system so I can’t tell. I made this back then with Godot 3.5 and everything is managed by tilemaps. Nor do I know about the new features in Godot 4. But I heard godot 4 managed by itself the action of loading and unloading what the player don’t see. Are there performance issues without a chunk system or is it because of the multiplayer mechanics ?

Oh the performance is related to the server load / chunk size it looks like after testing. I am looking for people's thoughts and ideas and feedback. Even some testing and like possible insights are very helpful. Do you have an questions or things you think could be a lead? All feedback is welcome.

WithinAmnesia commented 6 months ago

Can this work for Godot 4+ multiplayer open-world chunk system? I am doing a from scratch build now for the multiplayer chunk system. What should I do for the server and the data and chunk storage? I have a few leads and some more thoughts and resources can be found here: https://github.com/WithinAmnesia/ARPG/discussions/16 <Start fresh thread. https://github.com/WithinAmnesia/ARPG/discussions/15 <Previous start thread. It was suggested I build a from scratch Multiplayer seamless chunk system that eventually be put together where it can handle 2K-16K+ players on the same server. What should be done for a web deployment to also run on a browser? I was suggested to try and do a chunk storage system similar to Minecraft or Terraria where each chunk is stored individually and accessed by the server in communication with the player clients. What should be done to solve this chunk puzzle? All feedback is welcome.