|
1 | 1 |
|
2 | | -Installation information |
3 | | -======= |
| 2 | +About This Project |
4 | 3 |
|
5 | | -This template repository can be directly cloned to get you started with a new |
6 | | -mod. Simply create a new repository cloned from this one, by following the |
7 | | -instructions at [github](https://docs.github.com/en/repositories/creating-and-managing-repositories/creating-a-repository-from-a-template). |
| 4 | +Minecraft faces a scalability issue: as the number of players increases, performance quickly degrades. |
8 | 5 |
|
9 | | -Once you have your clone, simply open the repository in the IDE of your choice. The usual recommendation for an IDE is either IntelliJ IDEA or Eclipse. |
| 6 | +This is fundamentally a scaling problem. As more clients connect, the number of chunk loading requests rises accordingly. This forces the main game thread to manage an increasing number of Entities, BlockEntities, and BlockUpdates, while also handling more requests for generating Chunks that haven't yet been created. |
10 | 7 |
|
11 | | -> **Note**: For Eclipse, use tasks in `Launch Group` instead of ones founds in `Java Application`. A preparation task must run before launching the game. NeoGradle uses launch groups to do these subsequently. |
| 8 | +The problem can be solved by distributing the load across multiple systems. |
12 | 9 |
|
13 | | -If at any point you are missing libraries in your IDE, or you've run into problems you can |
14 | | -run `gradlew --refresh-dependencies` to refresh the local cache. `gradlew clean` to reset everything |
15 | | -{this does not affect your code} and then start the process again. |
| 10 | +To address this, the system should follow these key principles: |
16 | 11 |
|
17 | | -Mapping Names: |
18 | | -============ |
19 | | -By default, the MDK is configured to use the official mapping names from Mojang for methods and fields |
20 | | -in the Minecraft codebase. These names are covered by a specific license. All modders should be aware of this |
21 | | -license. For the latest license text, refer to the mapping file itself, or the reference copy here: |
22 | | -https://github.com/NeoForged/NeoForm/blob/main/Mojang.md |
| 12 | +- Each server should be solely responsible for managing a specific section of the world. |
23 | 13 |
|
24 | | -Additional Resources: |
25 | | -========== |
26 | | -Community Documentation: https://docs.neoforged.net/ |
27 | | -NeoForged Discord: https://discord.neoforged.net/ |
| 14 | +- The system must handle seamless player transfers between servers, without the client being aware of the change. |
| 15 | + |
| 16 | +- The client should continue to receive all game information as if connected to a single server, even though that data may be distributed across multiple servers. |
| 17 | + |
| 18 | +The Minecraft world is dividen in a ring configuration, each ring is handled by only one server |
| 19 | + |
| 20 | +<img width="501" height="484" alt="anillos" src="https://github.com/user-attachments/assets/b82bb872-19be-4c9a-9b56-30bdfe7d4b5d" /> |
| 21 | + |
| 22 | +Player and entities can seamlesly transfer between servers. |
| 23 | + |
| 24 | +//GiF |
| 25 | + |
| 26 | +The next image shows a wide view of architecture of the solution. |
| 27 | + |
| 28 | +<img width="1692" height="754" alt="arquitectura-detallada" src="https://github.com/user-attachments/assets/07a3007f-21bc-41e7-ab1d-047b56b9d01a" /> |
0 commit comments