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…

Filed Under: , ,

Rate this comment as insightful
Rate this comment as funny
You have rated this comment as insightful
You have rated this comment as funny
Flag this comment as abusive/trolling/spam
You have flagged this comment
The first word has already been claimed
The last word has already been claimed
Insightful Lightbulb icon Funny Laughing icon Abusive/trolling/spam Flag icon Insightful badge Lightbulb icon Funny badge Laughing icon Comments icon

Comments on “Guy Building A Working (Yes, Working) Computer Inside A Video Game”

Subscribe: RSS Leave a comment
55 Comments
Chronno S. Trigger (profile) says:

OK, I need to check out Minecraft

This morning I watched a video about a guy who made a 1:1 model of the Enterprise D, and now I see someone build a mechanical computer the size of a city.

Yep I figured, I just looked it up on the pirate bay (didn’t download, just looked) and it’s 34MB. Figures something that open is so small.

slacker525600 (profile) says:

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

I havent played, it looks like an epic time sink. but dwarf fortress is the better analogy than doom. Every element in the game is breakable and movable. You start off the game with nothing, and need to create your own tools, and then combine and use materials in your inventory to do stuff. http://www.penny-arcade.com/comic/2010/9/17/

as for building a computer in a game, somebody did something similar in little big planet first http://www.youtube.com/watch?v=ZiRgYBHoAoU although not quite as impressive as a general purpose logic unit.

Jose_X (profile) says:

Re: Re: Re:2 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. http://en.wikipedia.org/wiki/File:2-bit_ALU.png [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 http://minecraftwiki.net/wiki/Redstone_circuits 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 http://www.minecraftwiki.net/wiki/Alpha_Level_Format#See_Also ) 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.

Chronno S. Trigger (profile) says:

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

I’ve heard of it before, but I’ve never looked into it before today. From what I can figure from my limited exposure, it’s multiplayer, up to 32, and you build your own maps. I’ve only ever seen this video and the Enterprise one, so I don’t know if you can place enemies.

@Dark Helmet
Doom 1 was about 8M installed in Dos and Doom 2 to was about 10M if I remember correctly. I only have the Windows 95 versions so they’re a little larger.

Dewy says:

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

Absolutely not a doom clone, except in the very loosest of comparisons. The main comparisons are that its an FPS, and that there are monsters at night. Besides that it could very easily be just about whatever you want, short of RTS. You could, in a way do racing, using levers to switch tracks. Obvious implications for role-playing, because you MAKE your own role. It’s a level designer in and of itself, and so much more. I think the only thing you can really compare it to is DF. Like, a first-person DF adventure mode.

ltlw0lf (profile) says:

Re: Re: yo dawg, i heard you like computers...

13th floor ftw.

If anyone really is interested in an interesting sci-fi story here, rent the 13th floor. It may be a little cheezy, but after listening to some of the physicists, it could actually be a reality that we already exist in some sort of grand computer simulation. If we are building grand computer simulations ourselves, could it possibly be some sort of infinite recursion that we are part of too?

Dark Helmet (profile) says:

Question...

Figures into something I’m working into a book I’m finishing right now:

Is this sort of a step in the direction of a universal computer? Something along the lines of a Turing-Complete Automotron. Obviously it isn’t complex enough yet, since the program can’t simulate a program of its own complexity, but this is certainly a step, no?

Chronno S. Trigger (profile) says:

Re: Question...

Here’s a counter question. Is what he doing so different then what I have running at home one my server? All he’s really doing is virtualizing a mechanical PC. While extremely cool the way he’s doing it, is it all that different from VMware? And if it isn’t different, then VMware can already run Windows, something more complex then itself.

Dark Helmet (profile) says:

Re: Re: Question...

Is Windows more complex than VMware in the Turing-Complete sense? I don’t think it is. To be Turing-Complete, VMware would have to be capable of running not only Windows itself, but a copy of VMware capable of running Windows (and another copy of VMware, and so on and so on).

Now, if VMware could simulate Windows and Windows could simulate VMware, they would Turing-Equivalent. What a Universal Computer could do, as I understand it, is simulate every other computer function on the planet, including itself.

That’s the supposed argument in Digital Philosophy that the only true Universal Computer that will ever be created is our own dimensional universe….

Rich says:

Re: Re: Re: Question...

That’s not strictly true. Turing completeness doesn’t require that it can run any program. It means it can execute an algorithm. Something can be Turning Complete, but lack the ability to run graphics. Lacking graphics it can’t run a program requiring that ability, but that makes not different as to whether or not it is Turning Complete.

Dark Helmet (profile) says:

Re: Re: Re:4 Question...

Ugh, now I have to go back and recheck my research. The story was about a company using Digital Philosophy and quantum computing to construct the first truly conscious AI by mapping a human fetus and making the distributed biology programming for it a turing-complete automoton, similar to cellular automotons that have been created.

They then let the program “grow up”. It doesn’t turn out as they expected and hijinks ensue….

Chronno S. Trigger (profile) says:

Re: Re: Re: Question...

I just tried it and I can’t run a VMware slice in a VMware slice, but the error it gave me wasn’t one of compatibility, but of payment. They want me to pay for another version of VMware before I can do that, so it is physically possible.

Does it have to be running itself, or can it just run a copy of itself?

Dark Helmet (profile) says:

Re: Re: Re:2 Question...

It would just need to be capable of running itself as I understood it, though some are saying that isn’t correct for Turing-Complete, but more for Universal Computer status. So, I guess a VMware software that could run all other VMware software itself would be a Turing Universal VMware….

Chuck Money says:

Re: Re: Re:2 Question...

Indeed VMWare can be run within VMWare. I have a friend (full disclosure: he pirated it, and I don’t use it…) who had 13 instances of VMWare running within itself, one inside the next. Even better, each instance was a different OS. His physical hardware was Windows 7, the first VMWare guest “layer” was Windows XP, then Ubuntu Linux, then Windows 2000, then Fedora, and at some point in all this he even had a hacked version of Snow Leopard (and I should add, it was not the innermost layer, either!)

When it was all done, he didn’t use it for anything, he did it just to see if he could, and he said he stopped at 13 because he ran out of different OS’s to try. He had a screenshot showing each VM, resized slightly smaller than the last, with notepad and hello world in Windows 98 in the final VM.

This all said, the problem here is, as I understand it, the Turing Test is a test of AI. That is, the criteria for a computer to pass a Turing Test is for a user to be at the other end of a network cable, communicate with 2 systems, and be unable to tell which system has a human and which is purely AI. Maybe I am misunderstanding the test or perhaps Turing created several different tests, I don’t know and have never been very interested in the whole AI concept, except for a personal view that “easy” AIs in video games should actually be easy! Sometimes I play an FPS where I am head-shotted 10 seconds after a respawn every single time, and I’m sorry folks, that is NOT easy!!! If I thought that was fun (remember, GAMES are supposed to be FUN) then I’d go fight real people. But I digress…

In any case, I don’t think a VM being able to function within a VM is in any way related to a Turing Test. Now, if you could make a VM that ran so much like a host that, when the user connected to both the host and the VM remotely, they could not tell which is which, I suppose that could be considered Turing Complete, but that’s not AI, that’s just really good hardware emulation and people who don’t know how to start Device Manager or lspci 😉

In any case, this is a big step in a good direction. I don’t think this is the same as a VM-in-a-VM, but a true Turing test could be applied to this.

If he can develop his “minecraft computer” to the point where it can, itself, play minecraft, and other human players believe that the “minecraft computer” is another flesh and blood human like them, then that would most certainly be Turing Complete. But that is a test of AI, not a test of nesting. Again, nesting has nothing to do with a Turing Test to my knowledge, which I admit is somewhat limited.

Still really cool anyhow, and I sincerely hope he keeps going!

The Groove Tiger (profile) says:

Re: Re: Question...

Just wanted to point out that the word you’re looking for is Emulation.

What’s the difference between Emulation and Virtualization? An emulator uses the existing processor to create a virtual “copy” of a different processor, which then uses to execute the programs made for that processor. Virtualization, on the other hand, creates a virtual PC with “existing pieces”, using the host’s processor to delegate tasks.

This distinction is important, because you can’t virtualize a different architecture (so an Intel-based PC can only create virtual Intel CPUs). Also performance is much different.

Let’s say you need your “virtual PC” to add two numbers. Virtualization would simply give the host program the actual instruction and it would execute it. The emulator would have to receive the values, and use the “emulated computer” to run the instructions needed to add them, which could be completely different than the host’s.

These computers-within-a-game fit more in the Emulation type, I think. A virtual computer would simply ask your PC to return the computed results.

Peter says:

Re: Re: Question...

The awsomeness doesnt come from how complex the virtualization he made, but that he created all the pieces for the virtualization. Every bit. With literally buliding it out of torches and grounds and all. It is way more complex than you sitting down infront of your computer and click a few times, and run a machine. I bet you have no clue how that works either. Now this guy has, and he is creating virtualization. Now that is something awesome. IMO it is different.

Jose_X (profile) says:

Re: Re:

Many companies, instructors, past students, etc, have built up large archives like this material already (it’s a very old problem).

And you can use your PC to save a lot of grief if you know how to program so as to generate the map files automatically instead of by walking slowly through minecraft animation. Automate the circuit stuff.. and then maybe add carpeting and drapes by hand.

Jose_X (profile) says:

Re: Re: Re:

The file format might be explained here http://www.minecraftwiki.net/wiki/Alpha_Level_Format , and this other linked page shows you some of the many ordinary items possible: http://www.minecraftwiki.net/wiki/Data_values

So if this info is accurate, you can generate your own map world however you want without having to build anything up (or gain raw materials, etc), ie, avoid sweating the “manual” labor. Those that like programming, might find this as interesting or more so than the game. Certainly, it can allow you to build things you likely would never otherwise afford the time and energy to build the long way.

Chuck Money says:

Re: From a 6502 man

To answer your question: Read the NFOs for software torrents on TPB. Most of those people are 20-somethings and clearly know a thing or two about instruction-level programming.

That said, for every 5-man crack team that knows that stuff, there are 500 script kiddies, and 100 C/JAVE/etc. programmers. So, the answer is, there are still people like you – they’re just harder to find. And if they could code a crack for Civ5 in C++, they’d probably all disappear!

Personally, I wrote a small calculator that did nothing but addition in assembler once. I decided it would be a nice skill to have, but not worth the time. I still plan to go back and actually learn it some day (probably x86-64, or even better, ARM, since everything with a cell phone radio seems to also have an ARM CPU these days) but in the mean time, PHP is just too much easier 😛

Add Your Comment

Your email address will not be published. Required fields are marked *

Have a Techdirt Account? Sign in now. Want one? Register here

Comment Options:

Make this the or (get credits or sign in to see balance) what's this?

What's this?

Techdirt community members with Techdirt Credits can spotlight a comment as either the "First Word" or "Last Word" on a particular comment thread. Credits can be purchased at the Techdirt Insider Shop »

Follow Techdirt

Techdirt Daily Newsletter

Ctrl-Alt-Speech

A weekly news podcast from
Mike Masnick & Ben Whitelaw

Subscribe now to Ctrl-Alt-Speech »
Techdirt Deals
Techdirt Insider Discord
The latest chatter on the Techdirt Insider Discord channel...
Loading...