Tags: 3D, 3D video, C++, engine, fabric, game, indie, maths, programming, realtime, render
Realike is a holistic simulation engine based upon the idea of atom that unifies what you see with what is detected (What You See Is What You Touch (WYSIWYT)) and let physic interactions emerge by themselves. It’s inspired by my previous work from 2004 Pentium IV 3000MHz II: fabric.
The nominal way of making 3D games was and is being explored thoroughly by most developers, that is: everything in the game is an empty triangle shell controllable through predefined animations. But (and this is a big but) the interactions are performed between invisible bounding volumes. Also if you want something to be breakable you must program it specifically. There’s nothing wrong with this traditional way, several of my all time favourite games fall under this category. But there are another possibilities.
Here is mine: every part of every interactive object in the game behaves as it should by itself. Just put out there your avatar or any interactive part of the scene and attach to it some forces applied to specific parts (= muscles) and you are ready to go. All collision detection will be performed over what you see on screen: What You See Is What You Touch (WYSIWYT). Fracture patterns will appear spontaneously whenever enough stress emerges on some part of the system.
One way to do this is just plagiarism of the way things are done in the real world: everything must be composed of (and exclusively of) atoms. Each atom could have position, size, mass, softness, interactions with other atoms, orientation…
Arising problem: the amount of atoms required to construct anything playable is going to be huge. Very careful design is going to be needed to reduce memory usage. And even more care should be put CPU wise. It could be challenging to animate at 60 fps many thousands of interacting dynamic atoms. Let’s also allow for static atoms used to create non changing parts of the game. Realike has been designed to address this issue. Some of its advantages are:
- Varied material properties arise by themselves from internal specific atom structure (just as in chemical compounds), examples are:
- rubbery materials
- rigid materials
- combination of rubbery and rigid along different axis
- fragile (easily breakable)
- No need for separate handling of bounding volumes for collision detection and visualization, this just happens by itself whenever something is constructed on the engine.
- New exotic types of avatars are possible, for example real bipeds/quadrupeds. Watch the video for another example of a wrinkled thick-fabric like ball.
- The difficult to rate advantage of an exciting new feeling. Hard to describe how enticing is to control an avatar inside an all atom world. You’ll have to trust me on this one until the game ‘Fathomed dodecahedron’ is released.
- On the game editor front whole new approaches are possible all stemming from the fact you are now dealing with real filled objects with internal structure instead of empty shells.
- Potentially everything can bend and/or break without any extra effort, it will just happen under the right stress.
- If individual atom behaviour is well programmed then 2 natural physic traits will emerge by themselves without having expressly been coded: precession on rotating bodies and angular momentum.
- There’s an oportunity here to innovate also at visual level. How are you going to represent the particles? realtime blobs? individual polygon spheres? using the atoms as the skeleton of an empty traditional triangle shell? are you going to raytrace them? billboarding perhaps? …
Here is gameplay capture of ‘Fathomed dodecahedron’, it runs at 150 fps on my PC: