Our World is a Simulation

May 1st, 2019

The experience of managing a Minecraft server that was the digital home for 500 players at peak times had a huge impact on my personal life. Through it, I got involved with game design, 3D modeling, and honed my skills in web and app development.

The result was eventually many years later:

creaftOS — Society simulated in Minecraft

Let's start from the beginning

In 2009, Minecraft slowly appeared on the surface. Excited by the possibilities, I hosted a small game on a friend's server. What we did not know yet was that the game would literally explode — just like our machine. Dig3.NET, as it was called then, grew into one of the largest German-spoken servers and gave me the opportunity to become a kind of president. This little oasis of bits and bytes was our home for many years.

After I quit, the server split and successors came. My passion for Minecraft was no more, but app development was on. After years of school, I turned back to the ideas I had dreamed of during the server days. So I took it upon myself to develop the *best* server software ever! It should represent all necessary aspects of a real society. I wanted free markets and economies, businesses, real estate, a press and police — even a secret service was planned.

But there was a problem. Minecraft was changing quite frequently and and since I didn't want to rewrite parts of the app every time the server update, I started working on a command-based Software using Node and JavaScript. This allowed me to start a child process Process and listen for its output. Minecraft commands will Display a success or error message. This is usually enough to replicate the functionality of a fully modified server.

creaftOS has been initialized

Well, there was another problem. To this day — you cannot create your own commands on a Vanilla Server. There are workarounds but I'd prefer to use a device everyone's fortunately already familiar with — their phones.

But how to Society?

Let's begin the thought experiment. To simulate a society in the best possible way, a lot of different factors are needed. For the sake of simplicity, let's disregard certain things and take care of the most basic. People need food, so do our players, and they need to interact with the environment. This results in goods that can be exchanged for other goods. Since we are in the future, all citizens will be equipped with an app, called creaftOS that will be used to interact with the platform.

Chat

For interaction we need to have a chat. The app offers ways to communicate with the players on the server. Additional team chats allow for more strategic interactions. Furthermore, the chat informs about the players who come online and have gone offline.

Forum

An important part is provided by valuable contributions in the form of written knowledge. Such should be rewarded to the author. For this purpose, the platform offers a library, in which articles are displayed, that can be commented and purchased for a small amount. In return, you get a book item in the game. Journalists should be able to finance themselves in this way.

Bank

Since money has proven to be an extremely useful tool and as the game uses so-called experience points, we can use them to provide players with a currency to trade. These points can be mined and obtained through actions in-game. On the platform, the experience points can be transferred to the bank. This credit will be used to purchase goods and services. Purchased goods end up in the online inventory and can be managed from there. Services are, for example, the creation of teams and zones.

Stock

Players can upload items to the Stock to store them for later use. To find items in the Stock, they can search for them or use QuickUpload to upload them directly. When needed, Items can be downloaded in Single, 16, 32 or 64 stacks. This only works if the player is in-game. But selling items works all the time. By changing into Selling-Mode, the player can set the price as well as a limit on how much to keep and the item will be available for sale.

The process of uploading, downloading and managing items.

Market

The realtime market shows all the offers which can be filtered using the search. A player can also see graphs of the price development of an item. This is helpful to determine a good price. And while it's a free market, the prices will adjust themself to the demand eventually.

Broker

The Broker is a future service which will allow players to sell their land. This will introduce new ways to earn money, just like being a Real Estate Broker or an Architect.

Teams

A team is the basis for the acquisition of land and to do so, players can join an existing team or create their own for a small fee. To gain access to other players, they can be added to the whitelist. A player can choose between the teams he has access to in order to make it the active team. The active team is the one that will be used to buy zones for.

Zones

To ensure the players own land and a safe place to retreat, it requires six command blocks buried under one of those zones. These check in a 256^3 cuboid if there are players of a certain team in it. Those are set to Survival Mode. All others are automatically in Adventure Mode. In this no blocks can be mined, but further with doors and switches etc. to be interacted. However, there are still possibilities to get into other people's houses through explosion damage.

Security

To prevent the players from going on a wild ride, a bounty will increase on every kill they make. This bounty will be payed to the bounty hunter. If the lunatic can't pay the bounty, he will be banned from the server.

Polls

Players will have the opportunity to vote on the server. This can affect rules, availability and prices of services and items.

Source Code and Development

A short note about the source code: This project is many years old and I learned a lot while working on it. Please be aware that the code can be confusing at some points and not every feature is guaranteed to work. It's still a work in progress and not intended to be used as a final product. I'm just catching up, where I left things. But feel free to fork it and make it your own.

Github