Minecraft inside Minecraft. It's possible.
I'm sure many people already joked about making Minecraft out of redstone (yo dawg etc), with all the complex redstone circuits arising. However, recently, I saw the 16-bit ALU, and it motivated me to actually try to get this done. Unfortunately, I have no textbook guiding me, and I never took an actual course (I learned stuff on my own) in electronics nor computer science (ignoring the introductory class), so I'm gonna need all the help I can get, and all the motivation to prevent me from stopping midway. It might even make history, because this may be the first instance of a game inside itself.
If there's anyone (with sufficient knowledge in digital electronics and computers) interested in helping out, please post or PM me.
I'm considering having a SMP server to build this with other people (redstone works if you don't use switches, buttons, etc).
I've learned, from attempting to build a Turing machine, that I should really share as much of the process as possible with a set layout so people wouldn't get lost when debugging.
Planned features of MetaMinecraft
A redstone display with pending resolution
Ability to walk in 4 directions (one block per step) and rotation in all directions (in 30 degree increments)
16*16*16(4096) world (possibly with randomized generated terrain, but that's unlikely)
Build/destroy blocks directly in front of player
Gravity, where the player falls one block per step
Climbing 1 block high ledges, to eliminate jumping
Obstruction
Perspective
Block rendering done in steps
Components
Redstone display
Graphics processing unit
Arithmetic logic unit
Memory storage for map and player
Player physics processing unit
some other stuff
Things to keep in mind
Optimize computation time (keep buses short)
Balance between compactness and accessibility (for debugging/demonstrating)/designing time
Label components and modules with different types of blocks
I'm currently thinking about what components are needed, and how they'll work and be connected. I got some details fleshed out, and if you're interested, I can post them. This needs to be done first, since it's better to make a planned layout of the entire computer from the start.
Once the components and connections are figured out, then comes the frustrating part designing them. After that the tedious part of building them.
Idea for future: MetaMinecraft with redstone blocks, to make it theoretically possible to make a MetaMetaMinecraft.
Rollback Post to RevisionRollBack
My Youtube channel.
Contains Pachebel's Canon made with noteblocks, a working Rubik's cube made with pistons, and the ultimate TNT cannon.
I hate to give you some bad news but its not going to happen. Even when you watch that video he might be using over 50 gates. (Lord knows I stopped counting on this damn 4 bit counter). Even my striped down rough draft of just a 2-bit cpu looks to use more than 200. Thats not including the huge shift array rom storage. I am just going to have to use a map editor for that monster.
But all these problems are easy to solve in TTL chips. Hell, even using raw transistor's. The rules in this game make it very difficult to implement gates en-mass. The fact you have to put down an inverter every 15 blocks to keep a bus line alive. You have this global tick that calculates the redstone rules and you cannot be guaranteed that your system will process everything at the same time. That means more buffers for your lines. Oh, did I mention Minecraft is in alpha and all these rules can change?
That being said I love the game. This whole redstone system is like a huge fun logic puzzle for me:)
Check out the web ring below at the bottom of the link if you want to do it yourself or get an idea of what goes into a cpu. Its a fun project by itself.
The Meaning of Life, the Universe, and Everything.
Join Date:
9/30/2010
Posts:
660
Member Details
I hate to sound like yet another pessimist, but WarlockD is right. The duplication of Minecraft within Minecraft, via redstone, WILL NOT HAPPEN.
Even if you were to assemble the hundreds of millions of gates it would likely require, it would be so inefficient (assuming the game didn't crash or lock up altogether) that it would probably take the rest of your lifetime just to compute one tick of gameplay and render it.
I would suggest starting with small projects and working your way up to something slightly realistic. Maybe Tic-Tac-Toe or Connect Four with AI for single player. (those would be final projects, for me anyhow)
... what about using open/shut doors in Wood/Steel as part of the visual interface?
Most of this stuff is so far over my head it is in danger of bumping into the moon though... I only know enough to be intimidated by how much I do not know. :sad.gif:
This sounds like a smart person trying to do a really dumb thing. I mean, I'm not trying to insult anybody here, but really, listen to this! That'd be like somebody running a Windows 7 virtual machine on a Windows 7 computer; incredibly pointless and a waste of time!
Sorry, but I think you could find a better way to spend your time.
Rollback Post to RevisionRollBack
I now play League of Legends! If you are interested in trying this FREE game, click my ---->REFERRAL LINK!<---- There are NO fees, NO premium-only champions. You can unlock ALL the champions without paying a DIME! Check it out! If you sign up using my link, I get cool bonus stuff! I'll teach you the basics of the game if you'd like, as thanks!
Just because theory allows it doesn't mean you can do it. The game's optimization would prohibit the kind of thing you would need here. Also, it would be prohibitively complex anyway, almost undesignable. A simple ALU or RAM array is peanuts compared to making the whole thing working together. It would probably take minutes, if not longer, for a single system tick, too.
But hey, if you want to go ahead. I'd love to be proven wrong.
someone posted this up on the EVGA forums and I'll basically say the same thing here as I did there (maybe a bit more indepth):
For a display you're pretty much limited to using restone torches. So that's a 1 colour display, also, it'd have to be far enough away for it to be decent resolution to be usable and viewable.
There's 8 bits per byte - pong was like, what, 2kb or even less, still though, 2000 bytes of coding is a lot for really low level coding. The atari was like 1Mhz, and it would have had quite a few chips in it to make it all work.
If you aren't going to program in binary or hex or whatever, what will you use for input? A giant "keyboard" of pressure plates or buttons where you can maybe type like 5 wpm? And even if you did implement that, what are you going to do to program the initial environment (OS or whatever) to start programming your stuff?
Anyway, I think if pong can be accomplished that would be an uber achievement, and 2 buttons per player would be more doable than an entire keyboard.
I think it's awesome this is possible and there's people doing it, but I really think we should be realistic here.
I've always had a bad habit of taking massive leaps instead of small steps.
I already said that MetaMinecraft will be heavily simplified compared to the Minecraft right now, though I'm not sure if it was already taken to account.
But since it appears no one wants to actually help me, I'm asking my school computer science teacher who happens to play Minecraft, and a group of schoolmates who also play Minecraft (I'm still shocked by how many people I know in real life play Minecraft). Perhaps this combined power of autism will make MetaMinecraft real (or at least, save a lot of time).
Another note: MetaMinecraft is going to be programmed with Minecraft hardware, not software with its own programming language. That's just taking it way too far.
We must distinguish the difference between "impossible" and "improbable." And, again, if this works, it may be the first instance of a self-engulfing game.
Also, what do you expect from a resident mad scientist? 8D
Rollback Post to RevisionRollBack
My Youtube channel.
Contains Pachebel's Canon made with noteblocks, a working Rubik's cube made with pistons, and the ultimate TNT cannon.
I applaud this project even if you end up getting locked away for a couple years "rest". Even the broken shards of your insanity will provide many cool things in the world of Minecraft science! CUBOID SCIENCE MUST PROGRESS!
Rollback Post to RevisionRollBack
Quote from will_holmes »
Quote from anon »
Every time I come to these forums, I think more and more that I'm the only person who plays Minecraft normally.
Every time I come to these forums, I think more and more that there is no such thing as playing Minecraft normally.
I've always had a bad habit of taking massive leaps instead of small steps.
I already said that MetaMinecraft will be heavily simplified compared to the Minecraft right now, though I'm not sure if it was already taken to account.
But since it appears no one wants to actually help me, I'm asking my school computer science teacher who happens to play Minecraft, and a group of schoolmates who also play Minecraft (I'm still shocked by how many people I know in real life play Minecraft). Perhaps this combined power of autism will make MetaMinecraft real (or at least, save a lot of time).
Another note: MetaMinecraft is going to be programmed with Minecraft hardware, not software with its own programming language. That's just taking it way too far.
We must distinguish the difference between "impossible" and "improbable." And, again, if this works, it may be the first instance of a self-engulfing game.
Also, what do you expect from a resident mad scientist? 8D
if it is going to be a simplified version is has already been done. i remember seeing a World of warcraft private server where the admin had implemented a small screen where controls[forward back left right, plus attack] were managed by hitting target dummies who cast icebolts to more target dummies layered sky high.
the script to enable the making of this took about 4 hours.
the making of the actual system took almost 6 months, by which time new patches of WoW had been released for retail WoW.
WoW did not have the same restrictions of space nor the delay nor the redstone delay from inverters
in theory, what you sya is possible, in practice, the amount of space it would take up, stacked from bedrock to sky, would be larger than the loaded chunks, meaning your computer would partially disappear mid processing.
now factor in the display, which IS impossible to make unless there is 2x2 empty block insulation around each pixel of the display to allow for 2 lines of informata and inverters on way up [assuming display is flat to the ground]
in theory is is possible, but only if you have a computer that can handle that level of simulation, 3d rendering of the state changes, the tremendous number of processor changes, a hacked client of minecraft that renders about 9x as many chunks as is currently possible, and a few years.
good luck though, im looking forward to how this ends.
Rollback Post to RevisionRollBack
Equ1N0X-RedStone Engineer and Cybernetic architect.
A noble effort, but as was pointed out earlier, we seriously need to work our way up to this. There isn't even a Minecraft Pong yet, let alone Minecraft Tetris. Just building either of those will give us a ton of insight. Pong will show what it's like to keep track of the positions of up to 3 actors and collide them against each other, and Tetris will show us how to work with a 2d data array.
What do we need for pong? I'm thinking two 8-bit registers for the ball's X,Y, one 8-bit register for each paddle, and a 64x64 display or larger. Two more small registers for the ball's motion vector. A clock signal to provide game ticks. A control circuit that checks the registers each tick and detects a win, a loss, or a bounce.
For the display, I'm not sure whether to have a big bank of VRAM to be updated by the control circuit each tick, or give the control a thousand continuous outputs computed from the positions of the ball and paddles.
Each tick, the control circuit has to adjust the paddles' positions according to player input. It also has to adjust the ball according to its motion vector. The control circuit will then check the ball's horizontal coordinate against the edges of the field, and once the ball is found there, detect whether its vertical coordinate is within a paddle. Reverse the ball's direction if a paddle was struck, or else end the game.
I know how to detect collisions using a full CPU - it just subtracts one position from another and compares the result against 0 to find out what happened (storing the result of the comparison in a status register, etc etc...). Doing all of this is excessive for Pong. Someone might need to discover a more compact "Greater-than" circuit that operates much faster and still provides the result we need.
Woah that's really ambitious... but seriouly there are steps to be taken first. How about we start with Tetris or something. What would be a easy game to make?...Minesweeper?
If you really need to make it 3D (assuming it is since the map is 16x16x16), then make the player rotate 45 degrees (or 90) instead of 30. That way you can render it as an isometric image which is a ton easier. Since the display will be one pixel per block, I'd recommend making a 2D version instead. It'll not only be easier to make, but also easier for the player to actually know what's happening.
I'm sure many people already joked about making Minecraft out of redstone (yo dawg etc), with all the complex redstone circuits arising. However, recently, I saw the 16-bit ALU, and it motivated me to actually try to get this done. Unfortunately, I have no textbook guiding me, and I never took an actual course (I learned stuff on my own) in electronics nor computer science (ignoring the introductory class), so I'm gonna need all the help I can get, and all the motivation to prevent me from stopping midway. It might even make history, because this may be the first instance of a game inside itself.
If there's anyone (with sufficient knowledge in digital electronics and computers) interested in helping out, please post or PM me.
I'm considering having a SMP server to build this with other people (redstone works if you don't use switches, buttons, etc).
I've learned, from attempting to build a Turing machine, that I should really share as much of the process as possible with a set layout so people wouldn't get lost when debugging.
Planned features of MetaMinecraft
A redstone display with pending resolution
Ability to walk in 4 directions (one block per step) and rotation in all directions (in 30 degree increments)
16*16*16(4096) world (possibly with randomized generated terrain, but that's unlikely)
Build/destroy blocks directly in front of player
Gravity, where the player falls one block per step
Climbing 1 block high ledges, to eliminate jumping
Obstruction
Perspective
Block rendering done in steps
Components
Redstone display
Graphics processing unit
Arithmetic logic unit
Memory storage for map and player
Player physics processing unit
some other stuff
Things to keep in mind
Optimize computation time (keep buses short)
Balance between compactness and accessibility (for debugging/demonstrating)/designing time
Label components and modules with different types of blocks
I'm currently thinking about what components are needed, and how they'll work and be connected. I got some details fleshed out, and if you're interested, I can post them. This needs to be done first, since it's better to make a planned layout of the entire computer from the start.
Once the components and connections are figured out, then comes the frustrating part designing them. After that the tedious part of building them.
Idea for future: MetaMinecraft with redstone blocks, to make it theoretically possible to make a MetaMetaMinecraft.
Contains Pachebel's Canon made with noteblocks, a working Rubik's cube made with pistons, and the ultimate TNT cannon.
Like this?
Or this?
Contains Pachebel's Canon made with noteblocks, a working Rubik's cube made with pistons, and the ultimate TNT cannon.
MOD EDIT: Do not imagepost. It promotes poor posting habits.
But all these problems are easy to solve in TTL chips. Hell, even using raw transistor's. The rules in this game make it very difficult to implement gates en-mass. The fact you have to put down an inverter every 15 blocks to keep a bus line alive. You have this global tick that calculates the redstone rules and you cannot be guaranteed that your system will process everything at the same time. That means more buffers for your lines. Oh, did I mention Minecraft is in alpha and all these rules can change?
That being said I love the game. This whole redstone system is like a huge fun logic puzzle for me:)
Check out the web ring below at the bottom of the link if you want to do it yourself or get an idea of what goes into a cpu. Its a fun project by itself.
http://members.iinet.net.au/~daveb/simplex/simplex.html#more
My new version of Redstone Simulator
Main Code Site: http://code.google.com/p/red-stone-simulator/
Even if you were to assemble the hundreds of millions of gates it would likely require, it would be so inefficient (assuming the game didn't crash or lock up altogether) that it would probably take the rest of your lifetime just to compute one tick of gameplay and render it.
I would suggest starting with small projects and working your way up to something slightly realistic. Maybe Tic-Tac-Toe or Connect Four with AI for single player. (those would be final projects, for me anyhow)
but those are number adders or dead links, not a GAME
In practice it's impossible due to how much time it would take.
Honestly, I'd go for "proof of concept" rather than an actual working minecraft in minecraft and call it good at that.
Most of this stuff is so far over my head it is in danger of bumping into the moon though... I only know enough to be intimidated by how much I do not know. :sad.gif:
Sorry, but I think you could find a better way to spend your time.
But hey, if you want to go ahead. I'd love to be proven wrong.
MINECRAFT FACTS: BIG LIST OF WHAT NOTCH HAS ACTUALLY SAID ABOUT THE PLANNED FEATURES OF MINECRAFT
For a display you're pretty much limited to using restone torches. So that's a 1 colour display, also, it'd have to be far enough away for it to be decent resolution to be usable and viewable.
There's 8 bits per byte - pong was like, what, 2kb or even less, still though, 2000 bytes of coding is a lot for really low level coding. The atari was like 1Mhz, and it would have had quite a few chips in it to make it all work.
If you aren't going to program in binary or hex or whatever, what will you use for input? A giant "keyboard" of pressure plates or buttons where you can maybe type like 5 wpm? And even if you did implement that, what are you going to do to program the initial environment (OS or whatever) to start programming your stuff?
Anyway, I think if pong can be accomplished that would be an uber achievement, and 2 buttons per player would be more doable than an entire keyboard.
I think it's awesome this is possible and there's people doing it, but I really think we should be realistic here.
I already said that MetaMinecraft will be heavily simplified compared to the Minecraft right now, though I'm not sure if it was already taken to account.
But since it appears no one wants to actually help me, I'm asking my school computer science teacher who happens to play Minecraft, and a group of schoolmates who also play Minecraft (I'm still shocked by how many people I know in real life play Minecraft). Perhaps this combined power of autism will make MetaMinecraft real (or at least, save a lot of time).
Another note: MetaMinecraft is going to be programmed with Minecraft hardware, not software with its own programming language. That's just taking it way too far.
We must distinguish the difference between "impossible" and "improbable." And, again, if this works, it may be the first instance of a self-engulfing game.
Also, what do you expect from a resident mad scientist? 8D
Contains Pachebel's Canon made with noteblocks, a working Rubik's cube made with pistons, and the ultimate TNT cannon.
if it is going to be a simplified version is has already been done. i remember seeing a World of warcraft private server where the admin had implemented a small screen where controls[forward back left right, plus attack] were managed by hitting target dummies who cast icebolts to more target dummies layered sky high.
the script to enable the making of this took about 4 hours.
the making of the actual system took almost 6 months, by which time new patches of WoW had been released for retail WoW.
WoW did not have the same restrictions of space nor the delay nor the redstone delay from inverters
in theory, what you sya is possible, in practice, the amount of space it would take up, stacked from bedrock to sky, would be larger than the loaded chunks, meaning your computer would partially disappear mid processing.
now factor in the display, which IS impossible to make unless there is 2x2 empty block insulation around each pixel of the display to allow for 2 lines of informata and inverters on way up [assuming display is flat to the ground]
in theory is is possible, but only if you have a computer that can handle that level of simulation, 3d rendering of the state changes, the tremendous number of processor changes, a hacked client of minecraft that renders about 9x as many chunks as is currently possible, and a few years.
good luck though, im looking forward to how this ends.
Equ1N0X-RedStone Engineer and Cybernetic architect.
What do we need for pong? I'm thinking two 8-bit registers for the ball's X,Y, one 8-bit register for each paddle, and a 64x64 display or larger. Two more small registers for the ball's motion vector. A clock signal to provide game ticks. A control circuit that checks the registers each tick and detects a win, a loss, or a bounce.
For the display, I'm not sure whether to have a big bank of VRAM to be updated by the control circuit each tick, or give the control a thousand continuous outputs computed from the positions of the ball and paddles.
Each tick, the control circuit has to adjust the paddles' positions according to player input. It also has to adjust the ball according to its motion vector. The control circuit will then check the ball's horizontal coordinate against the edges of the field, and once the ball is found there, detect whether its vertical coordinate is within a paddle. Reverse the ball's direction if a paddle was struck, or else end the game.
I know how to detect collisions using a full CPU - it just subtracts one position from another and compares the result against 0 to find out what happened (storing the result of the comparison in a status register, etc etc...). Doing all of this is excessive for Pong. Someone might need to discover a more compact "Greater-than" circuit that operates much faster and still provides the result we need.
"We will absolutely not keep in mind what external mapeditors will have to do to read data from the disk, that makes no sense whatsoever." - Grum
"Player physics processing unit"...? Frankly, that sounds impossible.
Good luck with the project.