Yogoda / ZoneLoadingSystem

Dynamic zone loading system for Godot
Creative Commons Zero v1.0 Universal
221 stars 12 forks source link

Can this work with multiplayer server? (large area help) #19

Open WithinAmnesia opened 7 months ago

WithinAmnesia commented 7 months ago

Hello can this be used to help seamlessly load large maps made up of small chunks with a working multiplayer server? This is how most open world multiplayer games work I think? This is for solving this mystery of lag on bigger maps? https://github.com/WithinAmnesia/ARPG/tree/Large-Area-Branch

Yogoda commented 6 months ago

Hello,

Not really, this is for a world made of many small areas connected, think old games, not open World.

For an open world game you can try the Terrain 3D plugin, however this is only for the terrain, I'm not sure how to handle the other assets, since Godot does not have an asset streaming system yet.

Yogoda commented 6 months ago

https://github.com/TokisanGames/Terrain3D

Yogoda commented 6 months ago

I love Godot but to be fair if you go for a multiplayer 3D open world, I would suggest using Unreal Engine instead, it is much more suitable for that type of games, think Palworld.

Yogoda commented 6 months ago

Ok, I just came across this video, so maybe you can do it in Godot too :)

https://www.youtube.com/watch?v=YuZJrjN9pk8

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

"> Hello,

Not really, this is for a world made of many small areas connected, think old games, not open World.

For an open world game you can try the Terrain 3D plugin, however this is only for the terrain, I'm not sure how to handle the other assets, since Godot does not have an asset streaming system yet. https://github.com/TokisanGames/Terrain3D I love Godot but to be fair if you go for a multiplayer 3D open world, I would suggest using Unreal Engine instead, it is much more suitable for that type of games, think Palworld. Ok, I just came across this video, so maybe you can do it in Godot too :)

https://www.youtube.com/watch?v=YuZJrjN9pk8 "

Thank you. I have used Unreal 5 and it works good but its complicated and not one source and I have Multiplayer game work with Unreal for 4K,8K,16K with EasyRPG but it takes a lot of time and its not ready in like 3-5 years so in the mean time I hope to make a 2D game with Godot and make the foundation for 2D massive multiplayer games and then hopefully make a really good 2D game then expand with Godot 4+ into 2.5D and 3D iterations as well.

Any testings or feedback or any like ideas or like suggestions are helpful. Please testing the test 128x128 chunkhttps://github.com/WithinAmnesia/ARPG/tree/ARPG-Infinite-Worlds Here is the 128x128 with 32x32 pixel tile chunk to test. Its important right now to get any ideas and or suggestions on what could be pursued for a potential solution too.

Please if you can help it would be super important for the community will win too once this puzzle is solved. What should be done towards to start solving this puzzle of multiplayer seamless chunk loading and unloading? Any feedback is welcome.

Yogoda commented 6 months ago

Hello,

I thought your game was in 3D, but it's actually in 2D, so it is much simpler.

You need a chunk loading/unloading solution. I saw many Godot games with that kind of system, but I never implemented one myself, maybe you can find something already done.

My asset loads scenes asynchronously, so it can be used to load chunks as well, but it was made for Godot 3.

In Godot 4 there is an easier way to load things asynchronously, using ResourceLoader.load_threaded_request.

Simply make each chunk one tscn file and use that to load/unload chunks as you move ;)

WithinAmnesia commented 6 months ago

Thank you for the inisight.

"In Godot 4 there is an easier way to load things asynchronously, using ResourceLoader.load_threaded_request.

Simply make each chunk one tscn file and use that to load/unload chunks as you move ;)"

Hmm so how do we make this work? I have some demos I seen but they donnt do this exactly but I know minecraft stores individual chunk data so that makes sense? But how can this work for multiplayer servers too mhmm? Lots to think about ya.