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?"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.Suddenly, Minecraft has become even more interesting...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.
Thank you for reading this Techdirt post. With so many things competing for everyone’s attention these days, we really appreciate you giving us your time. We work hard every day to put quality content out there for our community.
Techdirt is one of the few remaining truly independent media outlets. We do not have a giant corporation behind us, and we rely heavily on our community to support us, in an age when advertisers are increasingly uninterested in sponsoring small, independent sites — especially a site like ours that is unwilling to pull punches in its reporting and analysis.
While other websites have resorted to paywalls, registration requirements, and increasingly annoying/intrusive advertising, we have always kept Techdirt open and available to anyone. But in order to continue doing so, we need your support. We offer a variety of ways for our readers to support us, from direct donations to special subscriptions and cool merchandise — and every little bit helps. Thank you.
–The Techdirt Team
Filed Under: computers, minecraft, video games
Reader Comments
Subscribe: RSS
View by: Time | Thread
OK, I need to check out Minecraft
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.
[ link to this | view in chronology ]
Re: OK, I need to check out Minecraft
Was Doom that heavy on the hard drive?
[ link to this | view in chronology ]
Re: Re: OK, I need to check out Minecraft
[ link to this | view in chronology ]
Re: Re: Re: OK, I need to check out Minecraft
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.
[ link to this | view in chronology ]
Re: Re: Re: Re: OK, I need to check out Minecraft
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.
[ link to this | view in chronology ]
Re: Re: Re: OK, I need to check out Minecraft
@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.
[ link to this | view in chronology ]
Re: Re: Re: Re: OK, I need to check out Minecraft
[ link to this | view in chronology ]
Re: Re: OK, I need to check out Minecraft
[ link to this | view in chronology ]
Re: OK, I need to check out Minecraft
[ link to this | view in chronology ]
[ link to this | view in chronology ]
DF
[ link to this | view in chronology ]
Re: DF
[ link to this | view in chronology ]
Re: DF
[ link to this | view in chronology ]
yo dawg, i heard you like computers...
[ link to this | view in chronology ]
Re: yo dawg, i heard you like computers...
[ link to this | view in chronology ]
Re: Re: yo dawg, i heard you like computers...
[ link to this | view in chronology ]
Re: Re: yo dawg, i heard you like computers...
[ link to this | view in chronology ]
Re: Re: yo dawg, i heard you like computers...
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?
[ link to this | view in chronology ]
Question...
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?
[ link to this | view in chronology ]
Re: Question...
[ link to this | view in chronology ]
Re: Re: Question...
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....
[ link to this | view in chronology ]
Re: Re: Re: Question...
[ link to this | view in chronology ]
Re: Re: Re: Re: Question...
[ link to this | view in chronology ]
Re: Re: Re: Re: Re: Question...
[ link to this | view in chronology ]
Re: Re: Re: Re: Re: Re: Question...
They then let the program "grow up". It doesn't turn out as they expected and hijinks ensue....
[ link to this | view in chronology ]
Re: Re: Re: Re: Re: Re: Re: Question...
[ link to this | view in chronology ]
Re: Re: Re: Re: Re: Re: Re: Question...
They always find a way to annoy the beejesus of their parents and somehow we still manage to love them anyways.
[ link to this | view in chronology ]
Re: Re: Re: Question...
Picture turning a camera toward a TV where your showing what your recording.
[ link to this | view in chronology ]
Re: Re: Re: Re: Question...
[ link to this | view in chronology ]
Re: Re: Re: Re: Re: Question...
[ link to this | view in chronology ]
Re: Re: Re: Question...
Does it have to be running itself, or can it just run a copy of itself?
[ link to this | view in chronology ]
Re: Re: Re: Re: Question...
[ link to this | view in chronology ]
Re: Re: Re: Re: Re: Question...
[ link to this | view in chronology ]
Re: Re: Re: Re: Question...
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!
[ link to this | view in chronology ]
Re: Re: Re: Re: Re: Question...
[ link to this | view in chronology ]
Re: Re: Re: Question...
[ link to this | view in chronology ]
Re: Re: Question...
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.
[ link to this | view in chronology ]
Re: Re: Question...
[ link to this | view in chronology ]
Minecraft
[ link to this | view in chronology ]
0_o
Let me pick up my brain matter.
[ link to this | view in chronology ]
Warning to you all
On another note, if you have free time it is definitely worth the 13-15$ (official price 10 Euro so pick a day when the exchange rate is favorable).
[ link to this | view in chronology ]
[ link to this | view in chronology ]
Re:
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.
[ link to this | view in chronology ]
Re: Re:
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.
[ link to this | view in chronology ]
LBP Calculator
[ link to this | view in chronology ]
An intro to minecraft
[ link to this | view in chronology ]
From a 6502 man
[ link to this | view in chronology ]
Re: From a 6502 man
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 :P
[ link to this | view in chronology ]
[ link to this | view in chronology ]
Why not just build a better looking game
[ link to this | view in chronology ]
Re: Why not just build a better looking game
[ link to this | view in chronology ]
Almost there
[ link to this | view in chronology ]
[ link to this | view in chronology ]
then he should do it again on that
[ link to this | view in chronology ]
progress > security
[ link to this | view in chronology ]