A simple implementation of an 8-bit ALU using Minecraft's in-built redstone mechanics
Throughout the semester, in our Computer Architecture class we designed different circuits using Verilog, one of many Hardware Design Lanaguages. After designing small components and eventually a full CPU in Verilog, we decided to take what we had learned about these components and use it in another type of interface, one many people recognize, and one that is also the best-selling videogame in the world: Minecraft.
Initially our plan was to design and build a whole CPU in the videogame, but due to time constraints we decided to just design one component of it: an 8-bit ALU that has 8 functions (which we will all explain in another tab). We decided to choose Minecraft for our final project because of two reasons. The first is the one we listed above: we were both interested in developing components of a CPU in a different medium than Verilog. Second, we have both enjoyed played Minecraft in the past, and being able to combine both of our interests in this project was a dream come true for us.
One of the important aspects of our process is that we relied on the computer logic more than on the Minecraft mechanics. There are many components that are easier to build with Minecraft components which cannot be replicated easily in real-life Computer Architecture. We decided to stay away from these solutions and instead stick to recreating an ALU in Minecraft with the same mechanics and logic than our Verilog implementation. This is one of the reasons you might find CPU components made in Minecraft that are more compact online, since we decided to stay away from easy solutions.
One of the interesting things about Minecraft is the incredible amount of mechanics built into the videogame. One of the most interesting is its RedStone circuitry, which is what we used in creating our ALU. We explain how RedStone works and how we used it to build our ALU in other tabs of this page. There you can read different sections to understand how, from basic components in the videogame, we built fully functioning ALU.
To design and build the whole system, we started step-by-step with basic logic gates and so on. Besides building these components, we also did Pareto analysis to our gates, and by proxy to all of our components. All of these can be seen in the other tabs of this webpage.
Throught this whole process we learned multiple things: First of all, this is hard. The intricacies of computer components only become more complex when they become bigger and have more constraints, which happens in Minecraft a lot. Second, we learned that it is crucial to take things step-by-step, complex systems like an ALU are hard to understand in the grandscale, so starting with the smaller parts and eventually growing to the complete component makes the process easier and much more understandable. Finally, we also realized how much easier Verilog makes the process of designing components. In Verilog the routing if digital, so changing the order of components is as simple as changing a couple of character in what amounts to a text file. On the other hand, Minecraft components are physical, so we need to destroy the one we have placed and then rebuild it in its new position. Even with WorldEdit (which lets you choose parts of the world and copy/move them to other places) it is an extremely more complicated process than in Verilog.
All our Minecraft files are uploaded on GitHub, and you can download them for testing or for expanding, whatever you want. The files need to be run on a Minecraft server.
Github Link: