MMMinecraft: An Introduction
Greetings my friends,
I’d like to discuss the idea of a very ambitious mod and plugin (it will by necessity incorporate both, as you will see by reading on) that will if successful enable things I have considered and wanted for nearly as long as I’ve played Minecraft.
I have in mind a system that takes Minecraft mulitplayer in a slightly different direction, allowing people to have their own servers and worlds, while simultaneously being able to discover new places that belong to other people- seamlessly and without the use of artificial and immersion-breaking systems like portals.
Background
From the first time I played Minecraft singleplayer, I was entranced by how endlessly fun it was to build, but I was also captivated by exploring. I would build little benchmarks out of crafting tables, make maps and even had a system of “quads” sort of like the USGS’ system for real-world mapping. I built boats and explored, made little survival huts, and had a great time looking around.
I set up a multiplayer server on Bukkit for me and some friends, and continued exploring there. We built lots of stuff, had (and still have) a great time. Instead of my little in-game maps we used dynmap, and found lots of cool stuff and places to look at.
But there was still something missing. I knew that no matter how far I would travel, how far I pushed the frontiers of what I knew, I wouldn’t meet anyone new or find anything built by someone else. I’d never meet a foreigner or be met by someone who saw me as one.
I kept wishing I could find a road out in the wilderness that led to a real town or city, or come over a hill and find a castle built by someone else.
I wanted to find new lands.
The Problem
By definition in Minecraft, the known world expands from spawn as new chunks are discovered. Whether single-player or multiplayer, you move the frontiers outward, but you never have the experience of pushing across someone else’s frontier into thier known space, where you are the foreign land.
MMMinecraft
I propose a system that allows multiple servers to share the same seed, and each one has its own “domain”, an area of the map. I’m thinking each one would have a very large area by default. Servers would be organized into networks, sharing certain information between them, but generally only on bordering domains.
Domains
A domain is that area of the Minecraft world “owned” by a given server. It is the primary owner of that area, its chunks and all the actions within it. Updates to a domain are shared to the bordering domains, so each server maintains its own information and is informed about updates to the eight domains around it (this has a salutary side-effect: No matter how big a world gets, you only need a server that can handle the data for nine domains).
Domains that border one another share information about chunk updates and changes. When a player crosses a border, they are seamlessly transferred to the server that “owns” that domain: they’ve crossed into a new land. If a server goes down, the bordering servers have all the chunk information, so if a player crosses into a “dead” domain, for example, they don’t just get disconnected. Questions about what they can actually do in “dead” domains are open, but resolvable, I believe.
Domain Networks
Networks of domains would be set up by like-minded server operators. They would share the same world seed and establish rules for joining the domain network as well as what happens when a server leaves or goes down permanently. Since chunk updates and other information would be shared, a server leaving isn’t the end of the world.
Other issues that would need to be established at the domain network level are things like required/banned/optional plugins and mods, player behavior rules, and so forth.
One thing I love about the concept is the possibility of people running into other domains where all of a sudden magic works (i.e., there’s plugins that create different effects), or different game mechanics (within reason) are at play.
Challenges
Let’s be totally clear here- this is an extremely ambitious concept. EXTREMELY ambitious. The number of technical issues alone are at best mind-boggling (how the hell will it share chunk information and updates between servers? I have no idea yet). However, I think it’s doable. Make no mistake, “doable” doesn’t necessarily mean “practical” or “feasible”. To make this possible will require a lot of hard work over a long period of time involving talented developers.
This post doesn’t even scratch the surface of the technical issues; this is intended to gauge whether people see it as interesting enough to be worth working on.
Why Sponge? This seems like a Forge mod
Well, as I’m envisioning it, this would be a Forge mod that would require the domains to be using Sponge. That would allow domain networks to establish consistent rules about plugins and versions, among other things.
Crazy, huh?
You betcha damn briches it is. Utterly insane. The question is whether it’s the good insane or the stupid kind. I’d like to hear some thoughts on whether this exists within the realm of possibility.
Summary
This is not intended to be anything more than an elevator pitch- I have some ideas about how the code and tech might work, but that’s way down the road, if it ever occurs at all. I’m mostly right now throwing out the broad strokes and seeing what people think of the idea in general.
Thanks for reading!