Sporelike Creature Creator

Posted by (twitter: @bytegrove)
April 19th, 2016 2:29 pm
leggy

Hello!

My entry for the theme this time around is not really a game. It’s a creature creator inspired by the one in Spore.

Create a creature by moving the joints in its spine and adding new ones as you go along. Add some bones, shift some shapes. Extrude some limbs and connect them to the ground and the game will estimate what can be used as legs.

creato

Skärmklipp 2016-04-19 20.21.51

Skärmklipp 2016-04-19 20.44.55

gnuu

The various parts are technically a lot simpler than their equivalents in Spore, but I’m really happy I managed to actually put together all these parts during the jam.

A small technical summary:

  • The user operate on a set of connected nodes.
  • The nodes have a size and metaballs are generated along the node connections, with interpolated sizes.
  • Then, the metaballs are used to generate a polygon surface, by writing volume data (and some node data) to a voxel field.
  • After that I run a marching cubes implementation over all the voxels. It’s pretty unoptimized so it’s done on its own thread (free lunch >hue hue<).
  • The polygonization also generates the normals by looking at the voxel neighbours and per-vertex bone weigths by looking up metaball interpolation step and bone owner information (although bone weigths are only set when going into simulation mode).
volume

Debug visualization of the metaball- and voxel data

squid

It’s an octopus

  • When the user then press the simulation button, a skeleton is generated from the nodes. The relation between nodes, bones and metaballs are kept track off so the correct bone weigths can be set per vertex (this step is the most finicky imo).
  • The nodes are used to calculate what constitutes as legs and then leg chains are built for all the legs. These chains are used by the very simple IK solver that animates the legs. I went with a kinda crappy law-of-cosines solution. I didn’t put a lot of effort into making it translate into 3d, so its results are best when the legs are in the sagittal plane. (Spore does way cooler stuff to solve this, I recommend reading Chris Hecker’s paper on it)
  • To move the creature I just look at how far the feet have moved when they were on the ground. To make movement look better on creatures with more than 2 legs I might have to implement a flexible spine or adjustable hips/shoulders.
  • The gait animation is also procedurally generated based on feet rows, leg length and a movement graph that can be scaled.

worm

Play Biota Here

Tags:


Leave a Reply

You must be logged in to post a comment.

[cache: storing page]