Remix.run Logo
MattCruikshank 6 hours 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.

zamadatix 5 hours ago | parent | next [-]

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.

accrual 5 hours ago | parent [-]

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.

pixl97 5 hours ago | parent [-]

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.

bombcar 3 hours ago | parent [-]

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.

GreenDolphinSys 5 hours ago | parent | prev | next [-]

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/

zimpenfish 4 hours ago | parent [-]

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.

lunar_rover 3 hours ago | parent | prev | next [-]

> 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.

chadgpt3 2 hours ago | parent [-]

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.

Rohansi 6 hours ago | parent | prev | next [-]

> 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

MattCruikshank 3 hours ago | parent [-]

> 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.

2001zhaozhao 3 hours ago | parent | prev [-]

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.

chadgpt3 2 hours ago | parent [-]

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?