by Mike Masnick

Filed Under:
computers, minecraft, video games

Guy Building A Working (Yes, Working) Computer Inside A Video Game

from the mindblowing-minecraft dept

I have to admit that I haven't been all that familiar with Minecraft, the video game, though I keep hearing about it. We did recently write about how the game's developer, Markus Persson, has taken a very user friendly view towards "piracy," arguing that it's better to give people a reason to buy than worry about the people who will never buy. We got a number of comments from people who really liked the game, and now Karl Bode points us to a Kotaku story about a guy, who goes by the incredibly accurate username theinternetftw on YouTube, is literally building a computer within the game. Yes, a computer within the game. A working one. It's slow and limited, but as he says, "it's implemented in a video game, what do you want?"
So far, he's built a 16-bit arithmetic logic unit (ALU), and he's planning to build an entire computer around in. As Kotaku explains:
In this video he demonstrates a city-sized, fully-functional arithmetic logic unit, or ALU. The ALU is one of the fundamental building blocks of a central processing unit (CPU), responsible for performing arithmetic and logical operations.

Now that the ALU is complete, the creator plans to continue building the rest of the computer, starting with the memory. Once it's done he hopes to make the computer will run code based on the "Hack" machine described in the book The Elements of Computing Systems: Building a Modern Computer from First Principles.

Just in case you aren't clear here, the man is building a working computer inside a computer game using a textbook as his guide.

Suddenly, Minecraft has become even more interesting...

Reader Comments

Subscribe: RSS

View by: Time | Thread

  1. identicon
    Jose_X, 29 Sep 2010 @ 4:23pm

    Re: Re: Re: Re: OK, I need to check out Minecraft

    There are books and courses and just single page drawings that show all you need to build an ALU. [The guy that crafted the ALU suggested one. In my college days, I also had access to decent ones. I'm sure I'm not a unique case.]

    The logic building blocks usable within minecraft can be borrowed from here to save yourself time. [The basic logic functions are effected thanks to the interaction mainly of blocks, Redstone powder (the wires), and Redstone torches.]

    To automate, you need to build a number of other basic storage cells (buffer registers and common memory into which to load a program) and then build the controller. The controller will implement things like JUMP ADD SUB SHIFT TESTFLAGX JUMPIFGREATER etc. The ending step in most of these instructions (eg, after you test values or perform some sort of ALU function or write to a memory location off register values) is to load the next instruction (ie, increment the instruction counter by one). It's all very interesting in how it works. Eg, an instruction cycle might start by loading a value from a given memory location (eg, load the next instruction, whose address was all set up as the last step of the prior instruction): you have to pass an address value into the inputs controlling the memory, enable this input address into output data, then have this output data pass over to a particular buffer/register/Redstone torches on blocks, then have this value determine what happens next (eg, you load another value into a holding buffer or you use existing values from earlier to ADD or ...) ... with the last step of the instruction cycle being to load into the address input the next value to begin the cycle anew. [This linking across instructions allows you to create a potentially never ending cycle. It's the difference between manually setting inputs by walking around minecraft vs having the results of the last operation lead automatically right into the next.] So each basic instruction (ADD, JMP, ... like real computer assembly language) is composed of a number of clocked steps as just roughly described. Of course, you have to draw a clock line (after you build a clock/fast oscillator?) to many of the basic components, and this can get ugly in terms of lots of "wiring". You also have to make sure the clock cycle period is long enough, so that when you drive the next cycle of values, all values are settled down and correct (since like real hardware, the game takes some time to effect a "signal" across long series of connections). This means you have to do timing analysis of all paths, and the minecraft page linked above I think gives clues to how frequently the different devices are triggered. You can also just pick a large conservative value for the clock cycle if you want to avoid the timing hassles and play it by ear.

    Anyway, I suspect a bit that the best way to approach this if you want to build a full-blown computer is to use the minecraft format (I'm not sure if this page has the necessary info or not ) so that instead of walking around setting countless of tiles, you can design at a higher level on "paper" and convert that file automatically into the proper minecraft map file. Of course, at that point, you might want to write software to do various forms of optimization (and routing of wires, etc). Perhaps this ALU map was done just this way.

    Also, the main developer of minecraft probably will pay people a bit of money eventually to help promote the software further by building very sophisticated worlds. Hopefully, he'll also think of community and not just in making money.

Add Your Comment

Have a Techdirt Account? Sign in now. Want one? Register here
Get Techdirt’s Daily Email
Use markdown for basic formatting. HTML is no longer supported.
  Save me a cookie
Follow Techdirt
Techdirt Gear
Shop Now: I Invented Email
Report this ad  |  Hide Techdirt ads
Essential Reading
Techdirt Deals
Report this ad  |  Hide Techdirt ads
Techdirt Insider Chat
Report this ad  |  Hide Techdirt ads
Recent Stories
Report this ad  |  Hide Techdirt ads


Email This

This feature is only available to registered users. Register or sign in to use it.