wareya / same_old_block_sandbox

An open source open-world voxel sandbox game. License yet to be decided.
4 stars 0 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

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

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.

Test chunks link: https://github.com/WithinAmnesia/ARPG/discussions/15 This is reposted from to keep it up to Godot 4: https://github.com/wareya/not_minecraft/issues/1

WithinAmnesia commented 6 months ago

https://github.com/wareya/not_minecraft/issues/1#issuecomment-1949305924

"It uses threads to avoid most of the hitches from loading in new chunks. Most of the code is written in gdscript, but the meshing etc. is written in C# to be faster.

I'm not sure how multiplayer would tie into it, though." I have heard that multiple threads / multi-threading should be pursued fro this kind of seamless chunk loading and unloading. What should be done to use this in multiplayer? In the test 128x128 chunk demo https://github.com/WithinAmnesia/ARPG/tree/ARPG-Infinite-Worlds it has a server and multiplayer features / layers built in if you are curious to tinker around with it?

Im not sure how to start work on the seamless chunk loading and unloading and I hope to find help and listen to experts the best I can. The code from Theraot looks really promising but I can't read it well and I'm not sure how to best implement it. I think I should be open and positive minded to find solutions and I am looking for any kind of help.

I really hope this works for it can help so many people in the dev community create great games. What should be done to start you think? What are your first thoughts and questions? Any feedback is welcome.