Making games in 11 dimensional space.
Posted: 20 Jun 2008, 10:31
Just some musings ive been having that i have nowhere better to put (Oh my god im turning into Caydr/AF >_>). Id put this in games/mods but it doesnt really pertain to spring so much, so its here.
Ive been thinking recently a little bit about string theory. No im not going to bore you with amateur prattling about its implications, i know i could not possibly understand string theory, but the idea of 11 dimensional space (The number of dimensions required for string theory to work) has intrigued me, specifically how to represent dimensions beyond 3 (4, strictly) in an easily understandable context.
Naturally i tried to think how to apply this to a game or simulation. Tesseracts are one way to represent a 4d object in 3d, but thats just too difficult to process, especially for a game.
So. Say we have a finite space, X Y and Z ranging from 0 to 100. Im sure you can visualize this easily enough. Collisions of objects in the space occur when they all share the same X Y and Z coordinates. Add more variables and we can track an object in an arbitrary number of dimensions, and thus an object must also share the A B and C values to collide, as well as the XYZ. But how could we represent this visually?
One way could be to use colour. Light to dark for the 4th dimension, with red blue and green increasing the number of dimensions to 7. Objects can move along these spaces in the same way they move along the first 3 dimensions, with velocities and trajectories. Thus, you have two objects sharing the same X Y and Z coordinates, but one is Dark Blue while the other is Light Red (Assume the same greenspace). You throw the Dark Blue object down the Blue Dimension and up the Red and Light dimensions. If it intersects the same place as the Light Red object, a collision occurs- though the objects do not move in X Y and Z (they have no velocity in those dimensions), rather they are sent hurtling away from eachother in Light and Red space.
Objects can also have sizes within these dimensions, an object occupying 10 units of the 100 unit Red space might be coloured in a gradient of the section of the space it is occupying.
Assuming the object doesnt rotate in the first 3 dimensions (say, it is a point or a sphere) we add rotation to this to give us more dimensions. Say, the object is represented by an arrow (though physically it is a sphere) and an object at a 90 degree y rotation will pass right through an object of 160 degree y rotation, even if it shares the same space in the first 7 dimensions. Using rotation, we can add up to 3 extra dimensions, bringing us to 10.
The 11th is, of course, time. Time works just like any other dimension- if it is a scale from 0 to 100, an object will only collide with another if it shares all the other coordinates as well as the time coordinate. The only difference is that time moves at a constant speed in a single direction and the fact its visualization is made up of a distinct set of instances rather than all time information being displayed at once (though im sure you can visualize all time instances of an object being displayed at once).
This brings up another interesting way you could visualize additional dimensions in the same way you visualize time. You visualize time by taking several instances (in this case, 100) and displaying them one after the other. If each instance consisted of 3 seperate images of the same object, with each instance showing the 3 of 9 dimensions the object is in at one time (by displaying them as regular xyz), an object would only collide with another if they were in the same position in all three images at once.
An easier way to do this would be to have a red object, a green object and a blue object (Ignore the earlier use of the red-green-blue spectra as dimensional locations, this is a new visualization). The three different objects are actually displaying the location of single a 9 dimensional object, by rendering it in 3 seperate instances of 3 dimensions but all at the same time, by colour-coding them. The red, blue and green versions of an object must be colliding with the red blue and green versions of another object in order for collision to occur.
The downside of this representation is that each object must have a distinct shape or signifier to let you know which r-b-g objects are related. So lets discard these models in favour of the first one.
If you've followed me this far, you realise how absurdly difficult it would be to hit anything with objects moving in 11 dimensions. In truth, we have trouble hitting objects moving in 3 dimensions. 2 dimensional collisions are much easier to predict and manipulate (pool, say).
Which brings me to the role of gravity. In Spring, the third dimensions effect on the space a projectile can occupy is reduced because all ballistic projectiles ultimately come back to rest at a single point in the y dimension. This is the ground, which can vary in height, but for our purposes we will call this 0.
Gravity can be represented by a constant force that is applied to an object, bringing it back to 0 on that dimension. If Redspace and Bluespace also had gravity, an object thrown up the blue and red space would slow, stop, turn around and fall back to 0 on the blue and red space, thus making it more likely for these objects to collide (Though this is mostly just a cute thought experiment).
So, what sort of game could actually benefit from being made in 11 dimensional space? Ive no idea. Im sure there have already been games made with similar concepts, with coloured objects only colliding similarly coloured objects, etc, though velocity along a colour dimension is not something i can say ive seen. Most likely, this wouldnt actually make a 'fun' game, and you probably wouldnt get much more than an 11-dimensional bouncing particle screensaver out of the idea.
Ive been thinking recently a little bit about string theory. No im not going to bore you with amateur prattling about its implications, i know i could not possibly understand string theory, but the idea of 11 dimensional space (The number of dimensions required for string theory to work) has intrigued me, specifically how to represent dimensions beyond 3 (4, strictly) in an easily understandable context.
Naturally i tried to think how to apply this to a game or simulation. Tesseracts are one way to represent a 4d object in 3d, but thats just too difficult to process, especially for a game.
So. Say we have a finite space, X Y and Z ranging from 0 to 100. Im sure you can visualize this easily enough. Collisions of objects in the space occur when they all share the same X Y and Z coordinates. Add more variables and we can track an object in an arbitrary number of dimensions, and thus an object must also share the A B and C values to collide, as well as the XYZ. But how could we represent this visually?
One way could be to use colour. Light to dark for the 4th dimension, with red blue and green increasing the number of dimensions to 7. Objects can move along these spaces in the same way they move along the first 3 dimensions, with velocities and trajectories. Thus, you have two objects sharing the same X Y and Z coordinates, but one is Dark Blue while the other is Light Red (Assume the same greenspace). You throw the Dark Blue object down the Blue Dimension and up the Red and Light dimensions. If it intersects the same place as the Light Red object, a collision occurs- though the objects do not move in X Y and Z (they have no velocity in those dimensions), rather they are sent hurtling away from eachother in Light and Red space.
Objects can also have sizes within these dimensions, an object occupying 10 units of the 100 unit Red space might be coloured in a gradient of the section of the space it is occupying.
Assuming the object doesnt rotate in the first 3 dimensions (say, it is a point or a sphere) we add rotation to this to give us more dimensions. Say, the object is represented by an arrow (though physically it is a sphere) and an object at a 90 degree y rotation will pass right through an object of 160 degree y rotation, even if it shares the same space in the first 7 dimensions. Using rotation, we can add up to 3 extra dimensions, bringing us to 10.
The 11th is, of course, time. Time works just like any other dimension- if it is a scale from 0 to 100, an object will only collide with another if it shares all the other coordinates as well as the time coordinate. The only difference is that time moves at a constant speed in a single direction and the fact its visualization is made up of a distinct set of instances rather than all time information being displayed at once (though im sure you can visualize all time instances of an object being displayed at once).
This brings up another interesting way you could visualize additional dimensions in the same way you visualize time. You visualize time by taking several instances (in this case, 100) and displaying them one after the other. If each instance consisted of 3 seperate images of the same object, with each instance showing the 3 of 9 dimensions the object is in at one time (by displaying them as regular xyz), an object would only collide with another if they were in the same position in all three images at once.
An easier way to do this would be to have a red object, a green object and a blue object (Ignore the earlier use of the red-green-blue spectra as dimensional locations, this is a new visualization). The three different objects are actually displaying the location of single a 9 dimensional object, by rendering it in 3 seperate instances of 3 dimensions but all at the same time, by colour-coding them. The red, blue and green versions of an object must be colliding with the red blue and green versions of another object in order for collision to occur.
The downside of this representation is that each object must have a distinct shape or signifier to let you know which r-b-g objects are related. So lets discard these models in favour of the first one.
If you've followed me this far, you realise how absurdly difficult it would be to hit anything with objects moving in 11 dimensions. In truth, we have trouble hitting objects moving in 3 dimensions. 2 dimensional collisions are much easier to predict and manipulate (pool, say).
Which brings me to the role of gravity. In Spring, the third dimensions effect on the space a projectile can occupy is reduced because all ballistic projectiles ultimately come back to rest at a single point in the y dimension. This is the ground, which can vary in height, but for our purposes we will call this 0.
Gravity can be represented by a constant force that is applied to an object, bringing it back to 0 on that dimension. If Redspace and Bluespace also had gravity, an object thrown up the blue and red space would slow, stop, turn around and fall back to 0 on the blue and red space, thus making it more likely for these objects to collide (Though this is mostly just a cute thought experiment).
So, what sort of game could actually benefit from being made in 11 dimensional space? Ive no idea. Im sure there have already been games made with similar concepts, with coloured objects only colliding similarly coloured objects, etc, though velocity along a colour dimension is not something i can say ive seen. Most likely, this wouldnt actually make a 'fun' game, and you probably wouldnt get much more than an 11-dimensional bouncing particle screensaver out of the idea.