Instancing Resources

Will this be nice to have as a resource?


  • Total voters
    3

VertCodeDev

Software Development Company
Ultimate
Feedback score
3
Posts
39
Reactions
14
Resources
2
Hello BBB Community,

I have been working on a Instance core for my own server and wanted to check if server owners are interested in this becoming a set of resources online. (Example: Instanced Essentials, Instanced Teams Plugin, World Splitting into multiple servers & much more)

Examples:

Survival Realm: (1 world = 1 server)
- Spawn World = survival-spawn (1 instance/server)
- Overworld = survival-overworld (1 instance/server)
- Nether = survival-nether (1 instance/server)
- End = survival-end (1 instance/server)

LifeSteal Realm: (1 world = Multiple servers, each big world is basically a grid system of servers)
- Spawn World #01 = ls-spawn-01
- Spawn World #02 = ls-spawn-02
- Overworld Part #01 = ls-ow-01
- Overworld Part #02 = ls-ow-02
etc.
 
Last edited:
PebbleHost
High performance, consistent uptime and fast support. Minecraft hosting that just works.

Shaff

shaff.dev
Supreme
Feedback score
11
Posts
159
Reactions
42
Resources
1
Absolutely. I wanna see more competition in the instanced, multiworld, scaled stuff
 

I_Luv_Cowz

Feedback score
5
Posts
292
Reactions
120
Resources
4
Hello BBB Community,

I have been working on a Instance core for my own server and wanted to check if server owners are interested in this becoming a set of resources online. (Example: Instanced Essentials, Instanced Teams Plugin, World Splitting into multiple servers & much more)
What do you mean by instanced plugin?
 

VertCodeDev

Software Development Company
Ultimate
Feedback score
3
Posts
39
Reactions
14
Resources
2
That you can split 1 world into different servers (instances) or just do 1 world = 1 server (example: spawn world = survival-spawn, overworld = survival-ow), so basically splitting 1 realm into multiple servers

What do you mean by instanced plugin?
Replied above, also added some examples to the initial message 😉
 
Last edited:

I_Luv_Cowz

Feedback score
5
Posts
292
Reactions
120
Resources
4
That you can split 1 world into different servers (instances) or just do 1 world = 1 server (example: spawn world = survival-spawn, overworld = survival-ow), so basically splitting 1 realm into multiple servers


Replied above, also added some examples to the initial message 😉
How does this improve performance more than just multi-threading a world in 1 java instance?
 

VertCodeDev

Software Development Company
Ultimate
Feedback score
3
Posts
39
Reactions
14
Resources
2
How does this improve performance more than just multi-threading a world in 1 java instance?
With multi threading, you still have limits (World sizes etc) because you can still end up being in need of more cpu usage. With instancing you can split this up in multiple dedicated servers which makes it just more scalable.

And with multi threading, you still limit it to 1 cpu
 
Last edited:

I_Luv_Cowz

Feedback score
5
Posts
292
Reactions
120
Resources
4
With multi threading, you still have limits (World sizes etc) because you can still end up being in need of more cpu usage. With instancing you can split this up in multiple dedicated servers which makes it just more scalable.
Are you going to create proxy & server software to render everything to player asynchronously (and load balance infinitely) and share memory in a database like redis?
How far off am I on a technical level?
 

VertCodeDev

Software Development Company
Ultimate
Feedback score
3
Posts
39
Reactions
14
Resources
2
Are you going to create proxy & server software to render everything to player asynchronously (and load balance infinitely) and share memory in a database like redis?
How far off am I on a technical level?

For my own server (the resources that will also be released) we have Velocity as our proxy software, instanced with a plugin. (We have 2 proxy servers running at all time)

And for the servers:
Player Data will load from MongoDB when the player joins to instance "network" (For example survival) and synced with redis from there on.
Server Data, in our core called Singleton Objects (Warps, Spawn point) is stored in memory, and updated on change (since they are almost never changing)
Other data is stored in Memory or Redis, depending on how they are needed.

For custom server software, on our server we have a custom jar which almost doesn't change anything since Purpur does fine. We only added automatic downloading of Jenkins & our config sync software (custom coded)
 

I_Luv_Cowz

Feedback score
5
Posts
292
Reactions
120
Resources
4
For my own server (the resources that will also be released) we have Velocity as our proxy software, instanced with a plugin. (We have 2 proxy servers running at all time)

And for the servers:
Player Data will load from MongoDB when the player joins to instance "network" (For example survival) and synced with redis from there on.
Server Data, in our core called Singleton Objects (Warps, Spawn point) is stored in memory, and updated on change (since they are almost never changing)
Other data is stored in Memory or Redis, depending on how they are needed.

For custom server software, on our server we have a custom jar which almost doesn't change anything since Purpur does fine. We only added automatic downloading of Jenkins & our config sync software (custom coded)
Your server doesn't have instanced multi-world, does it?
 

VertCodeDev

Software Development Company
Ultimate
Feedback score
3
Posts
39
Reactions
14
Resources
2
Okay, can you explain what exactly you mean by 9 servers for overworld?
Are there 9 Purpur servers that are actively sending players chunk data or am I missing something?

Okay so, every server is 10.000 blocks x 10.000 blocks (Might increase before release).
They all just act like 1 world (So basically you have a 30.000 x 30.000 world) since we don't do multiple instances YET of 1 part of the world (Example grid X: 0, Z: 0) the only thing we sync right now is the data of players etc.

So just to make it simple, the 9 Purpur servers just work like a part of the world. So no need to sync chunk data, only the player data. We are working on expanding our core for later gamemodes, so we can sync chunk data. (So we can have for example 2 instances of world part X: 0, Z: 0)
 

I_Luv_Cowz

Feedback score
5
Posts
292
Reactions
120
Resources
4
Okay so, every server is 10.000 blocks x 10.000 blocks (Might increase before release).
They all just act like 1 world (So basically you have a 30.000 x 30.000 world) since we don't do multiple instances YET of 1 part of the world (Example grid X: 0, Z: 0) the only thing we sync right now is the data of players etc.

So just to make it simple, the 9 Purpur servers just work like a part of the world. So no need to sync chunk data, only the player data. We are working on expanding our core for later gamemodes, so we can sync chunk data. (So we can have for example 2 instances of world part X: 0, Z: 0)
So everytime you cross a chunk border, you will be loaded into a new server?
 

VertCodeDev

Software Development Company
Ultimate
Feedback score
3
Posts
39
Reactions
14
Resources
2
So everytime you cross a chunk border, you will be loaded into a new server?
Yes, when you come close to the border it will show particles, once you cross it it will send you to the instance belonging to that part of the world.
 

I_Luv_Cowz

Feedback score
5
Posts
292
Reactions
120
Resources
4
Yes, when you come close to the border it will show particles, once you cross it it will send you to the instance belonging to that part of the world.
Hmm, doesn't seem like a very elegant solution. If technically possible, it would be kind of revolutionary if you could do a behind-the-scenes load-balanced computations.
Post automatically merged:

After a little more research, I found https://github.com/MultiPaper/MultiPaper - seems like a much more elegant solution than 9 servers & particle chunk borders imo.
 
Last edited:

VertCodeDev

Software Development Company
Ultimate
Feedback score
3
Posts
39
Reactions
14
Resources
2
Hmm, doesn't seem like a very elegant solution. If technically possible, it would be kind of revolutionary if you could do a behind-the-scenes load-balanced computations.
Post automatically merged:

After a little more research, I found https://github.com/MultiPaper/MultiPaper - seems like a much more elegant solution than 9 servers & particle chunk borders imo.
Hey,

We also saw this before and didnt go with it for the main reason that we wanted purpur.
 
Top