BentoBoxWorld / BentoBox

Expandable Minecraft server plugin for island-type games like SkyBlock or AcidIsland.
https://bentobox.world
Eclipse Public License 2.0
323 stars 134 forks source link

Bentobox is unusable very quickly for bedrock players #2409

Closed spookymgmt closed 2 weeks ago

spookymgmt commented 1 month ago

Expected behavior

Well, for java, you can keep expanding your x, z coordinates infinitely. However, when bedrock clients connect to the server, they're capped out at around 200k on either x, or z. This is the Bedrock Edition distance effects

I propose a solution below

Observed/Actual behavior

.

Steps/models to reproduce

Just go really far out on a bedrock client, starts to stutter and break game.

BentoBox version

2.3.0, b403 aoneblock

Plugin list

No response

Other

To fix this, we need islands to span throughout multiple worlds. As soon as the current world has an island at 200k+ on either the x or z coordinate, it'll generate a new world. In my case oneblock_world -> oneblock_world2.

It can start at 0,0 again, and not ruin player experience.

I've had over 100k unique users in the last 4 days. If this isn't fixable my whole gamemode is ruined and 20 grand down the drain on marketing 💀.

As you're familiar with the code base, would this be an easy addition / change?

If you do not have the time possibly I can find another dev who can do this, I'm not sure.

I just don't really have any options right now. It's this, or loose out on too big of an investment.

spookymgmt commented 1 month ago

Alternative solution - make every single island have their very own world.

HamtaBot commented 1 month ago

Alternative solution - make every single island have their very own world.

Def not a good alternative, having 100k worlds wouldnt do the trick at all and cause many issues

spookymgmt commented 1 month ago

Alternative solution - make every single island have their very own world.

Def not a good alternative, having 100k world wouldnt do the trick at all and cause many issues

Why would having 100k worlds be an issue? And it would do the trick as every island would be at 0,0.

HamtaBot commented 1 month ago

Alternative solution - make every single island have their very own world.

Def not a good alternative, having 100k world wouldnt do the trick at all and cause many issues

Why would having 100k worlds be an issue? And it would do the trick as every island would be at 0,0.

when you start the server each worls are loaded into memory , it would take a decent amount of time and also a lot of RAM also 0.0.0 is always loaded meaning all islands will be loaded 24/24 i dont think loading 100k islands at the same time and running the whole day will make the server happy

tastybento commented 1 month ago

BentoBox assumes one world per game mode (excluding nether and end) right now and that's really hardwired into the logic of the game, so moving to multiple worlds per game mode, even an overflow world idea, is a heavy lift and not something that can be done quickly or easily, sorry.

Here are some ideas that may help:

  1. First cap the number of islands per world to the max size of the Bedrock world. It's a config option, so that the worlds won't actually get any bigger than allowed.
  2. Run more than one server - this is the obvious option - have multiple servers so that users pick one, e.g. in a lobby by going through a portal. If the islands can't be made, they can go to another. You'll need to ask others how to set up such servers and the proxy server, but I would assume Paper + Velocity or something similar. I've seen many servers with multiple island worlds for this very reason.
  3. Run purge to clear out old islands.
  4. Reboot the server at least daily to allow in-fill. The server always moves outwards with new islands until a reboot, then it starts to fill in any gaps that were made by deleting islands, resetting, etc.

There is the Slimeworld feature request where that system is used to load and save worlds for per-world islands and the world loading is done using that system. I've looked at it a few times, but it's complex. I agree it could be useful in this context, but still a heavy lift right now.

tastybento commented 3 weeks ago

I saw a comment - can't remember where, where I think you said you had resolved the issue?

spookymgmt commented 3 weeks ago

Yes thank you