Giter Site home page Giter Site logo

Comments (8)

SlashScreen avatar SlashScreen commented on June 27, 2024

I made this is an afternoon and haven't had time to test it more thoroughly. Some people have left me hate mail describing some of its downfalls.
This is a client-side type of thing, though. It may be able to work with your multiplayer infrastructure.

from chunx.

WithinAmnesia avatar WithinAmnesia commented on June 27, 2024

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

from chunx.

WithinAmnesia avatar WithinAmnesia commented on June 27, 2024

I made this is an afternoon and haven't had time to test it more thoroughly. Some people have left me hate mail describing some of its downfalls. This is a client-side type of thing, though. It may be able to work with your multiplayer infrastructure.

Well I'll be nice. I'm not very good at lots of scripting types myself and like I'm just looking for some help with this challenging thing. Any help and insights would be greatly appreciated. I am trying to use this big script given by Theraot but I'm not sure how to use it well and what else should be needed? Any thoughts and questions are welcome. Please give feedback.

from chunx.

SlashScreen avatar SlashScreen commented on June 27, 2024

Sorry for the late reply, I have been on vacation.

I am unfamiliar with your codebase and exact situation, but here's how I would approach a multiplayer infinitely-generating world. Keep in mind that Chunx is not designed for this purpose.

  • I would handle all terrain generation on the server side. The server would store and generate chunks of however many tiles, and the Client would request chunks from the server.
  • The terrain should be generated in such a way where it is 1) deterministic, meaning that given the same set of inputs, it would create the same result, and 2) generated in such a way where 2 chunks generated next to eachother blend with eachother. This sounds harder than it is: It can be as simple as sampling 2 adjacent regions of a perlin noise map, for example.

The process could look something like this:

  1. The player steps into a new chunk. To render the surrounding area, the client asks the server for the surrounding chunks.
  2. For each chunk requested, the server checks to see if that chunk has been created already; if so, it sends it to the client. If not, it generates a new chunk, then sends it to a the client.
  3. The client receives this information, and uses it to display the new chunk, enemies, etc. Keep in mind that pretty much all multiplayer games have all game logic like collision, damage, etc. done on the server, for security reasons. The client is just a pretty picture.

I am trying to use this big script given by Theraot but I'm not sure how to use it well and what else should be needed?
The big script appears to be a way of serializing a chunk's data to send over the network. This will not help you create chunks, but it could be useful for the networking side of things.

By the way, my project Skelerealms will almost certainly not help you create an ARPG, Infinitely generated or otherwise. It is made for Bethesda-Style RPGs, like Skyrim, with heavily authored content. It is also not made with multiplayer architecture in mind, although with some modification it should be able to translate to multiplayer.

from chunx.

WithinAmnesia avatar WithinAmnesia commented on June 27, 2024

Update!
WithinAmnesia/ARPG#16
"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:
WithinAmnesia/ARPG#16 <Start fresh thread.
WithinAmnesia/ARPG#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."

from chunx.

WithinAmnesia avatar WithinAmnesia commented on June 27, 2024

Sorry for the late reply, I have been on vacation.

I am unfamiliar with your codebase and exact situation, but here's how I would approach a multiplayer infinitely-generating world. Keep in mind that Chunx is not designed for this purpose.

* I would handle all terrain generation on the server side. The server would store and generate chunks of however many tiles, and the Client would request chunks from the server.

* The terrain should be generated in such a way where it is 1) deterministic, meaning that given the same set of inputs, it would create the same result, and 2) generated in such a way where 2 chunks generated next to eachother blend with eachother. This sounds harder than it is: It can be as simple as sampling 2 adjacent regions of a perlin noise map, for example.

The process could look something like this:

1. The player steps into a new chunk. To render the surrounding area, the client asks the server for the surrounding chunks.

2. For each chunk requested, the server checks to see if that chunk has been created already; if so, it sends it to the client. If not, it generates a new chunk, then sends it to a the client.

3. The client receives this information, and uses it to display the new chunk, enemies, etc. Keep in mind that pretty much all multiplayer games have all game logic like collision, damage, etc. done on the _server_, for security reasons. The client is just a pretty picture.

I am trying to use this big script given by Theraot but I'm not sure how to use it well and what else should be needed?
The big script appears to be a way of serializing a chunk's data to send over the network. This will not help you create chunks, but it could be useful for the networking side of things.

By the way, my project Skelerealms will almost certainly not help you create an ARPG, Infinitely generated or otherwise. It is made for Bethesda-Style RPGs, like Skyrim, with heavily authored content. It is also not made with multiplayer architecture in mind, although with some modification it should be able to translate to multiplayer.

I have been on the hunt for solutions to learn from to make a ground up solution and so far I have found some promising leads for data and chunk storage for multiplayer in Godot 4.2.1.NET "Leads and Suggestions:
Solicey/minecraft-made-with-godot#1 (Multiplayer Minecraft clone written in C# with Godot 4.2.1.NET)
...
xellu/xelcraft#6 (Multiplayer Planned Minecraft clone written in C# with Godot 4.2.1.NET)
...
hakanero/minecraft-clone#1 (Minecraft clone written in C# and GDscript with Godot 4.2.1.NET)
...
pvini07BR/mijocraft#2 (GDScript Multiplayer Minecraft in Godot 3.XX)
...
fanherbaty/crustycraft#1 (2D Minecraft with cave levels in Godot 4.2.1.NET+)
...
https://www.youtube.com/watch?v=LEZGrHyWNmQ + https://astruggletosurvivedevblog.blogspot.com/ (C# software engineer seamless large tile / chunk map that can possibly do multiplayer and browser support game)
...
sirarandor/lux-terra#1 (Multiplayer expanding tile / chunk game with fog of war)"

What are your thoughts and and suggestions? What should I do next? All feedback is welcome.

from chunx.

SlashScreen avatar SlashScreen commented on June 27, 2024

I've already given my thoughts on the technical side. However, I think you're overthinking thins. Focus on making a fun ARPG first.

from chunx.

WithinAmnesia avatar WithinAmnesia commented on June 27, 2024

I've already given my thoughts on the technical side. However, I think you're overthinking thins. Focus on making a fun ARPG first.

I am making big game examples that needs big game system that work from the start to empower people to make big game in Godot 4+. Game can be fun if the are designed well but I think every game must work to have the the chance to be fun. I wish things were simple but with one big charge and big successes the foundation can be made for big games for the creative community and open source and forever free; big games need big working big game systems and then everything fun can be created.

from chunx.

Related Issues (2)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.