Have you ever wondered about how computers work? If so, you're like many others, including myself. Computers are such an integral part of the modern world, and yet their workings remain mysterious for nearly everyone. It's my belief that when properly introduced, understanding and even building a computer from scratch can be accomplished with a little bit of dedication.
I have some prior experience building computers in Minecraft. Minecraft has always been my favorite game, and last year I built a 32-bit Computer in Minecraft using only in-game redstone components. I wouldn’t recommend building one as big as I did, since the larger a circuit is in Minecraft the slower it generally gets. An 8-bit computer can be much smaller and run much faster, although it isn’t capable of running as complicated programs as a 32-bit computer is.
The computers we use, including the one you are reading this article on now, are build with electronic circuitry. Ben Eater has a fantastic tutorial on building an 8-bit computer out of electronic components, but there's one big problem with it: electronic components are expensive and some can be especially difficult to find. How can this be solved? Minecraft! Minecraft is a game where you can build virtually anything out of a wide variety of blocks obtainable in-game. Some of these blocks behave quite similarly to circuitry; these blocks are called redstone.
Building a computer in Minecraft has a couple of great advantages. The largest advantage is that building with blocks is completely free (aside from the $30 cost of the game), whereas building with physical circuit components can cost quite a bit. Rather than being limited by real-world factors like money, computers in Minecraft are only limited by the speed boundaries of the game and the constraints of a 3D voxel-based world.
My aim with this series is to mirror many of the fantastic qualities of Ben Eater's 8-bit computer series, but build the actual computer inside Minecraft rather than in real life.
The series will be broken into a series of lessons. The first few will introduce the mechanics of Redstone for those who haven't dealt with the Minecraft's in-game circuits.
1.) Introduction to redstone
This lesson will introduce the various redstone components and describe their function. For those who are familiar with circuits, each component will be matched to its closest real-world equivilant
2.) Intermediate redstone
This lesson will explore the redstone comparator in more depth, specifically the subtract feature. By the end of this lesson the watcher should have a clear view of exactly what comparators can do, and what this means for making compact circuits in Minecraft.
3.) What makes a computer a computer?
This lesson will explore what makes a computer a computer. We will explore what a program is, and how we might approach building a system to actually run a program.
4.) Expressing logic
How can logic be expressed in circuit form? This lesson will discuss how one might represent the logic of a combination lock in redstone form.
5.) Keeping time in Minecraft
In this lesson we will be building a timer, and explaining the role of "clocks" in keeping a computer synchronized.
6.) Doing math in Minecraft
This lesson will discuss the logic behind math! As we learned in lesson 4, logic can be expressed in circuit form, so we will be expressing the logic of math to do calculations with circuits
7.) Storing things in Minecraft
This lesson will discuss the logic behind storage. How does a hard drive store information? How can we learn from this to perform something similar inside Minecraft?
8.) Making a calculator in Minecraft
Now that we know how to do math and store things in Minecraft, we'll make a basic calculator inside Minecraft by combining these three ideas. Surprisingly, a calculator is fairly close to being a computer, so we'll also go over some of the things a calculator is missing in order to be called a computer.
9.) Displaying data in Minecraft
A computer is useless if it can't output anything. We will be building a display for numbers in this lesson, and attaching it to the calculator we built in lesson 8.
10.) Storing LOTS of things in Minecraft
So far we've only stored a couple of numbers. But what about storing hundreds of numbers? In this lesson we discuss some of the problems of storing large amounts of numbers, and how these problems can be addressed inside Minecraft. When we store lots of numbers, we are building the RAM (random access memory) of our computer. We will also discuss why the RAM is so important, and how it is what stores the programs and variables inside our computer.
11.) Counting numbers
This will be an easier lesson in which we explore how might we build a counter with Minecraft redstone. This is how we will keep track of what line of code our computer should be running.
12.) How to teach computers to read
In this lesson we explore how computers can be "taught" to read programs. By implementing something called the Control Logic, which is some special logic to read and run programs, we can turn our collection of independently-functioning parts into a working computer.
13.) Teaching our computer to read
In this lesson we will build the circuit that will read our programs. This will complete most of our computer, and so we will also discuss how we can start to program it
14.) Running a program
In this lesson we will compute the Fibonacci sequence in Minecraft using a program we will write.
15.) Making our computer a little smarter
Although our computer is at this point very close to a computer, it isn't quite a real computer. It lacks something called turing-completedness, which means it isn't capable of simulating every other possible computer. To make a circuit turing-complete, we have to introduce some sort of conditional statement. By adding conditions, we make our computer turing-complete in a limited sense.
16.) Conclusions - where to go from here
This lesson will explore the implications of what we have built, and where to go from here.
Each lesson will consist of a post here on this blog as well as an associated YouTube video. The YouTube video will contain everything the blog posts contain, but the blog posts won't necessarily be able to convey all the information the YouTube videos will. This is because Minecraft is a visual game, so none of the building will be contained in the blog post and some of the explainations will make more sense in-game rather than in written form.
Each video will link to the corresponding blog posts, and each blog post will link to sections in the YouTube video that will further explain the concept being introduced.
At the time of reading this the series may not be completed. The goal for this project is to finish all the lessons by the end of 2021. This is a large project, and I will make updates on this blog as well as my Twitter.
Building computers is hard. It takes time and patience to build them, but understanding them is a fantastic skill to have. I am confident that anyone with some time and interest will be able to complete this series. However, if for any reason you find yourself stuck or unable to understand a certain concept, let me know! I would love to talk to you and help you get unstuck on your journey to build your own computer in Minecraft. You can email me at firstname.lastname@example.org. I will typically respond in about 2 or 3 days.
The goal for this series is to make Ben Eater's computer series more approachable for those without any experience with circuitry or computer code. As such many of the lessons may initially feel slow or repetetive for those of you who do have experience with coding or circuitry. Feel free to skip over lessons you feel you already know, but beware that each lesson depends highly on the previous ones.