Comments (8)
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.
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.
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.
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:
- The player steps into a new chunk. To render the surrounding area, the client asks the server for the surrounding chunks.
- 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.
- 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.
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.
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.
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.
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
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from chunx.