Hacker News new | ask | show | jobs
by MattCruikshank 29 days ago
I'm so continuously confused why Minecraft doesn't have a show-off mode where a team of people can build something, and then someone else can spectate it, without causing undue server load.

I should be able to give you a URL to some location, and when you click it, it opens up Minecraft, streams the blocks, and you're viewing it.

minecraft://server/loc?w=0&x=0&y=0&z=0

w is the overworld, nether, end, etc.

And if you want to set up a server where you and your friends can interact with each other and make edits, the server should be able to stream blocks from some backing server, but copy-on-write them to your own local storage.

How is this not a thing?

If you want to be really awesome, set it up like bittorrent, where you can share the load, so the central server isn't hammered.

And if bittorrent doesn't really work as a model, then set it up so that "downloader pays" for bandwidth, plus a small royalty for the creator. As a downloader, I get to set up rate limits, etc, to not accidentally spend more than I want to, etc.

This whole 2b2t would cost $2,111.04 to download from AWS, if I'm doing the math right. But that's a trillion blocks. You don't need a trillion blocks to enjoy flying around some awesome maps.

6 comments

It's easy enough for a server which wants to provide some sort of "easy viewing cool builds" functionality to do it multiple ways such that something native would only be a minor convenience and many would still just use the more customized methods anyways.

2b2t wants to provide a certain anarchy server experience which would not align with that kind of functionality, spending quite a bit of effort in the opposite direction really, so this project is more about fighting to do cool things on the server than it is about dealing with Minecraft limitations.

Yes, the anarchy and inability to truly protect anything is part of the appeal of 2b2t.

There was an interesting base project wherein the true coordinates were only known to the top leaders. All other builders connected through a custom client that offset the coordinates to hide the true location. If anyone became untrusted, they were simply blocked from the client and could not expose the coordinates. There was care taken to ensure the area outside the proxy was never shown, block place directions were randomized to prevent reversing the proxy, etc.

The base apparently thrived for months or years before finally being discovered and destroyed.

If I remember one of these stories right, a screenshot of netherrite blocks on the floor. A member of the community calculated the block placement in the chunk and used this to determine where it was on the actual map.
That's happened a number of times on various items - bedrock patterns, nether rack layout, etc.

It's all based on the seed and coordinates.

i am amazed at the amount of unemployed you have to be to do things like this.
Last time I checked, kids aren't allowed to work.
But they do yearn for the mines!
It's not in the base game, but there is a plugin that generates a map of your server and hosts it, called Bluemap [0]. It has an example. [1] I always toss it on the servers I host.

[0]: https://modrinth.com/mod/bluemap

[1]: https://bluecolored.de/bluemap/

A +1 for Bluemap. Plus because it's actually tied into the server[0], all your wacky mods have their blocks rendered correctly instead of confusing whatever map generator you're trying to use.

[0] Plus you can get live player positions, update markers in real time, etc.

> I'm so continuously confused why Minecraft doesn't have a show-off mode where a team of people can build something, and then someone else can spectate it, without causing undue server load.

You'll be confused by Minecraft in general then. Mojang's core team seems like they never changed a bit in all these years despite becoming a billion dollar studio, for better or for worse. Last time I played it, mods can still make the game run twice as fast.

They actually added a lot of indirection to the code soon after being acquired. Instead of an array containing the number 1 (meaning dirt) it now contains a pointer to an object with a string name and a hashmap of properties. Instead of drawing a cube in code, it's loaded from an interpreted DSL - all possible calls to that DSL are fixated at load time. The chunk generation process creates and executes a graph of micro-tasks which forms that weird pixel map you see when creating or loading the world. It transitions each chunk through about 15 different states on the way from nonexistent to fully loaded.

They used to talk about wanting to store block update relationships to prevent BUD (block update detector) behavior. I didn't like it at the time, but from a certain perspective it would have been an improvement. Instead they spent their complexity points on pointless memory waste.

the id change was actualy much needed for the modding community. As there was only 65 536 possible IDs which in some modpacks was not enough especially accounting microblocks. And also you had massive ID conflicts that you had to manually set in configs every time. Because there was no separation of ids per mod.
In 1.7 there was automatic ID allocation. The limit could have been expanded to 4 bytes.
Having run multiple 1.7 servers, the automatic ID allocation only sort of worked. It was by far the biggest headache.
The whole point of 2b2t is anarchy and also secrecy.

Hiding bases is absolutely vital. There are groups with goals to destroy what you build and it is completely a core part of the server.

Having a live external map view compromises the gameplay allowing those griefers significant advantages. And they already do find exploits and such to sniff out targets but a live external map would be server ending.

> I should be able to give you a URL to some location, and when you click it, it opens up Minecraft, streams the blocks, and you're viewing it.

> minecraft://server/loc?w=0&x=0&y=0&z=0

Probably no real reason why not... but I think it'd make more sense to take a snapshot, upload, and then have it viewable on the web.

> And if you want to set up a server where you and your friends can interact with each other and make edits, the server should be able to stream blocks from some backing server, but copy-on-write them to your own local storage.

How is this different from just loading your world in a server and having your friends join?

> If you want to be really awesome, set it up like bittorrent, where you can share the load, so the central server isn't hammered.

BitTorrent isn't going to work. You could shard it so different parts of the world are handled by different servers. But it gets complicated and Minecraft's server software doesn't support doing this out of the box

> How is this different from just loading your world in a server and having your friends join?

Because player location, inventory, actions, are all load on the server. That's why servers have player limits.

> BitTorrent isn't going to work.

You and I are talking about different things. I'm talking about serving up the raw blocks alone.

And yes, I know, Minecraft servers don't support static file serving, or streaming from another source, or copy-on-write. I'm saying these are all nearly trivial to implement.

> You and I are talking about different things. I'm talking about serving up the raw blocks alone.

So shareable cloud saves? Who covers the cost for them?

That's why I wrote, "then set it up so that "downloader pays" for bandwidth, plus a small royalty for the creator. As a downloader, I get to set up rate limits, etc, to not accidentally spend more than I want to, etc."

So, I set up a server.

You put $10 in your Minecraft account.

You load up my world, say 96 chunks at first. 1.15 MB of data.

Let's say you fly around long enough to load 1 GB of my world. That's a crap-ton of flying around, by the way.

You pay me $0.10. $0.09 of that goes to my AWS/Azure egress, and the final $0.01 goes towards the AWS/Azrue storage and my own royalty. That's right - I actually get paid for making a world that you wanted to visit. Imagine that.

Maybe I can't even get that money back out of Minecraft's walled garden. Maybe I can only use that to fly around other people's world, or to buy Minecoins that I can use to purchase mod packs and stuff, to make even more interesting worlds, to attract more players.

Seems like a nice economy, to me.

> Let's say you fly around long enough to load 1 GB of my world. That's a crap-ton of flying around, by the way.

Minecraft worlds aren't static. Will you be billed to download updated chunks too?

Also what happens if you don't put money into your Minecraft account? Can you still play with others?

> Seems like a nice economy, to me.

On paper, sure. In reality there are only going to be relatively few maps people might actually want to explore. The rest are going to be 99.9999% Minecraft procedural generation with a few player built houses around. And no, I don't think a tiny cut would change that. You're more likely to see people set up servers with that map which are pay to access, have item shops, donations, etc. which actually can rake in a decent amount of money.

> Minecraft worlds aren't static. Will you be billed to download updated chunks too?

There are two hard problems in computer science - caching, naming things, and off-by-one errors.

Yes, I can imagine multiple choices.

1) When you're downloading a chunk, always download the newest version of it.

2) When you're downloading a chunk, download it as it existed at the moment of a snapshot. Heavier burden on the server, to keep multiple snapshots. Perhaps some servers only keep one snapshot. Perhaps some keep one snapshot every 24 hours, but only for 4 days. You only have to keep multiple copies of chunks that actually got modified. And in fact, if a chunk never got modified, you only download a flag that says to let it get generated by the seed.

3) You periodically ask to download chunks, to keep relatively up-to-date. Maybe every hour. Maybe you only stream chunks from the backing server, if you haven't modified them locally. Maybe you choose that locally-modified chunks win. Maybe there's a way in-game to say you want this chunk (and its neighborhood) to update from the backing server. Commands, command-blocks, etc.

> Also what happens if you don't put money into your Minecraft account? Can you still play with others?

I'm not proposing to change anything about how Minecraft currently works. I'm proposing adding something new. Whatever ways you currently play with your friends, you can continue to do that.

But yes, if you stand up a server that streams from my server, and you run out of money, you could get notified you're out of money, and then as you continue to explore, I guess the thing that makes the most sense is that you just use the original seed to generate more terrain.

> On paper, sure. In reality there are only going to be relatively few maps people might actually want to explore.

Okay. Right now, you can visit the Marketplace to pay Minecoins to download maps others have made. If you look at the prices, they're absurdly inflated.

I'm proposing a way more organic and cheaper marketplace. I think a "reddit of cool places to visit" that you just click a link, and you're in someone else's map for as long as you want to be, could be really nice.

Add ways in-game to make a portal to someone else's server... and you're making something really neat.

Whoever host the server? The difference is instead of only serving 50 people before lowering fps, instead now it can serve much more.
> Whoever host the server?

Many are self hosted.

> The difference is instead of only serving 50 people before lowering fps, instead now it can serve much more.

2b2t has 920 players online right now. That's quite a lot for a single instance, IMO.

It is, for Minecraft. But not in the scale of "people who might want to visit Middle Earth Minecraft," or "The Earth in Minecraft", or...
Yeah I mean whoever hosts the server can add some (tiny?) expenses to host a "static" version of their server. Though I'm not sure why spectator mode isn't sufficient.
I have a Minecraft-compatible game engine and it'd be an awesome project to host a copy of this world that people can fly around in if there's no legal issues.
If you seek legal issues you will find - if someone reproduced a copyrighted work in this world then you could technically be sued for copying it. How likely do you think it is though?