Live data from Hacker News

How we built an auto-scalable Minecraft server for 1000+ players

worldql.com

11–20 of 145 posts

Re: How we built an auto-scalable Minecraft server for 1000+ players

#11
Is there any chance of this supporting modded servers? Performance is universally the limiting factor on modded minecraft; if you're not careful you can start having performance problems only thirty hours into a single-player world, and I've never seen a modded server support more than three or four players without severe lag setting in quickly.

Re: How we built an auto-scalable Minecraft server for 1000+ players

#12
post #6

Hi, I made this! Was gonna wait until it was downloadable and the documentation was more complete before posting it on HN. Thanks for sharing it though. The Minecraft setup will be available and useable by anyone Wednesday of next week. More documentation and a roadmap will follow shortly after.

I rent a small Linode to run a minecraft server for my extended family. Sometimes it struggles to keep up with just a half dozen of us, and when I tried swapping from a spigot based system to a forge one so the kids could have mods it was basically unplayable. I can't imagine scaling out to thousands of users, this was some amazing work.

While developing this did you come up with any best practice recommendations for individual nodes?

Re: How we built an auto-scalable Minecraft server for 1000+ players

#13
post #11

Is there any chance of this supporting modded servers? Performance is universally the limiting factor on modded minecraft; if you're not careful you can start having performance problems only thirty hours into a single-player world, and I've never seen a modded server support more than three or four players without severe lag setting in quickly.

I’ve gotten this question a lot. At the moment it’s not a priority because it’s frankly too challenging right now.

However, once the documentation is complete, someone could hypothetically implement it using https://github.com/magmafoundation/Magma-1.16.x

Re: How we built an auto-scalable Minecraft server for 1000+ players

#15
post #7
post #6

Hi, I made this! Was gonna wait until it was downloadable and the documentation was more complete before posting it on HN. Thanks for sharing it though. The Minecraft setup will be available and useable by anyone Wednesday of next week. More documentation and a roadmap will follow shortly after.

This is very impressive work! Do you plan to make WorldQL highly available? It seems like if it died you'd loose the server.

Thank you for your kind words!

WorldQL uses Postgres under-the-hood to store permanent information. I was inspired by companies like TimescaleDB which build new functionality on top of Postgres’s rock-solid base.

Any high-availability solution for Postgres will also be available for WQL.

Re: How we built an auto-scalable Minecraft server for 1000+ players

#16
post #8

I’m curious to know how or if this solved any of the issues inherent with multithreading. Moving the threads to new processes can’t fix race conditions.

It utilizes a rollback-based system to mitigate races between Minecraft servers. I’m writing up some formal documentation on it now, I really wanted to have that done before this project was exposed to the scrutinizing Hacker News community, but I can’t control what people share! :) Stay tuned.

Using rollback is surprisingly popular in games. For example, CSGO servers will rollback if a client fires a shot at a player ducking around a corner, and on the shooter's screen the shot lands, but on the other players screen they had dodged the bullet - the server will "rewind" and say the shot hit.

Re: How we built an auto-scalable Minecraft server for 1000+ players

#17

How did MMOs like Asheron's Call and Wow handle this?

For WoW, at a very high level, instancing and sharding. Players are spread across realms. The zones are so large that by nature players will be spread out leading to less interactions. Raids are instanced to just your party. In areas with natural congestion (such as auction houses), things could lag at times. While combat and movement is realtime, it's mostly waiting for timers, so the latency and bandwidth requireme…

With WoW they would obviously run each continent as an independent “instance”, but for Wrath, they clearly had multiple servers handling Northrend. There were places where mobs would not path over which was where the two “instances” would overlap.

WoW later introduced a kind of dynamic overlay of the same open world area from two realms where it was not very populated in the area so that players would be more likely to actually see other players.

There was also a feature where you could party up with a friend on a different realm and you would transparently be playing on their server in the open world (with restrictions like not being able to trade with them).

I haven’t played WoW since Mysts, so I don’t know how it’s changed since, but WoW was definitely more complicated than just sharding and instancing.

Re: How we built an auto-scalable Minecraft server for 1000+ players

#18
post #12
post #6

Hi, I made this! Was gonna wait until it was downloadable and the documentation was more complete before posting it on HN. Thanks for sharing it though. The Minecraft setup will be available and useable by anyone Wednesday of next week. More documentation and a roadmap will follow shortly after.

I rent a small Linode to run a minecraft server for my extended family. Sometimes it struggles to keep up with just a half dozen of us, and when I tried swapping from a spigot based system to a forge one so the kids could have mods it was basically unplayable. I can't imagine scaling out to thousands of users, this was some amazing work. While developing this did you come up with any best practice recommendations for…

Your single-core performance is the most important thing for a Minecraft server, especially for Forge mods.

For vanilla, I’d try Paper (a high performance spigot fork) and see if you still have problems. If you’re lagging with 6 people while running Paper, you simply need a better CPU.

Re: How we built an auto-scalable Minecraft server for 1000+ players

#20
post #6

Hi, I made this! Was gonna wait until it was downloadable and the documentation was more complete before posting it on HN. Thanks for sharing it though. The Minecraft setup will be available and useable by anyone Wednesday of next week. More documentation and a roadmap will follow shortly after.

Is there a specific reason why Minecraft hasn’t been “adapted” from the original game to a robust design that could scale to larger worlds and player populations before your project ?
Post reply on HN