Tombstone
Evolution4K
Oct 2001 โ Feb 2002 ยท age 19โ20
What it was
Evolution 4000, a 3D space game in C++, SDL and OpenGL in the mould of Elite: fly a ship between planets, fight, and one day trade at depots. Everything under it was hand-built. A custom binary model format came out of MilkShape exports, with interleaved vertex arrays that held both base and animated positions. Motion was stored as a base position plus velocity times elapsed time, so it stayed exact at any frame rate. Collisions were solved in continuous time between moving spheres. Planets and satellites came from fixed-width text tables, the GUI was cut from a sprite sheet described in a text file, and an NPC tailed the player at a polite distance. The demo flew two ships around a moon, fired bullets and lasers, and drew explosions. The trade screen had five buttons and nothing behind them.
Wins, for the age
- At nineteen, Jeff wrote a real continuous collision detector: solve the quadratic for when two moving spheres touch, rewind both, advance to just before contact, separate them, fire the event, replay the rest of the frame. Quake III had shipped swept traces two years earlier; this was found alone.
- Made impulses the only point where motion changes, which bought frame-rate independence for free.
- Made firing conserve momentum, so shooting backwards pushed the ship forwards. A mammal who had never been to space respected Newton anyway.
- Reinvented the sprite atlas and shared geometry between objects that each kept their own physics, the flyweight idea, reached without the book.
What it taught
- Continuous collision is a quadratic you can solve; the hard part is what to do after contact.
- A custom content pipeline teaches vertex layouts and materials better than any tutorial, and it eats the time meant for gameplay.
- Finish the game loop before the content pipeline. The trade screen was where the game stopped being a game and became a plan.
- Demos tolerate bugs that happen to cancel: the collision solver used the wrong relative velocity and worked only because planets do not move.
Genealogy
Ancestors: Ant Colony: an earlier hand-rolled OpenGL game with its own MilkShape asset pipeline. Descendants: Zenerd: the model library and its interleaved vertex layout. Lib Quest: game logic pulled out as a library of its own. Cauldron v1: skinned meshes and the engine instinct, finally with animation finished.
Epitaph
Here lies Evolution 4000: two ships, a moon, and a trade screen whose buttons did nothing yet. The physics was ahead of the game, and the game never caught up.