Macroscopic Editor, Progression, and Principles

I will give some examples of how some parts would be defined using a parametric parts system in more detail. But first, I thought it would be good to distinguish between three different kinds of parameterized part:

Parametric Part Types:

Pre-Made Parametric Parts:

These are parts that are 3D modeled by our graphics team, and will be morphed between different versions of the parts depending on the parameter configuration. This is ideal for parts that are unable to be constructed using metaballs, either because of geometry problems or because of how detailed the parts need to be.

Procedurally Generated Parametric Parts:

These parts are generated completely from scratch by the parts system. They could be thought of as computer assisted generation of the parts, as they would be visibly similar to a construction done manually by directly placing metaballs with a free-form sculpting system. The generation of these parts will typically be done using the metaball system but some parts may benefit from other systems to generate their features, such as L-Systems for feather or leaf generation for example.

Hybrid Parametric Parts:

Many parts will be able to incorporate pre-made assets into the core procedurally generated part. For example: teeth or claws could be pre-made elements that are applied to the metaball based surface of the part. This results in hybrid parts, created from both procedural and pre-made assets.

Part Complexity Comparison:

Simple parts are those parts that do not have a large amount of customization options, and as such should be simpler to design, evaluate, and use. These are the only type of parts that will be pre-made parametric, though many simple parts could also have some elements of procedural generation as well. This category will contain most of the parts with a more typical upgrade path, though even they will still have tradeoffs.

Medium parts will have a lot of configuration options and tradeoffs to consider, but most of its configuration will be localized to the part itself. These parts will be Hybrid parametric.

Difficult parts will not only have a large amount of configuration options, but these parts will also affect neighboring parts. This will create a much more difficult parametric system that interacts with other parts, and players will need to take into account any cascading affects that result from modifying these parts. These parts will be Hybrid parametric as well.

I will go over some examples of these different part categories here:

Simple Parts: Eye

The eye is a simpler part to design, as it seems to have a fairly simple progression with a couple of extra paths. It is also more of an “increasing complexity is pretty much always an upgrade” kind of part. A more developed eye is nearly always better than a simple one if you have the brain power to use it. (This is as opposed to something like a limb, where a hand is not necessarily an upgrade compared to a fin. An organism might even change back to a fin like cetaceans did.) Most of the player’s decision making with these parts comes with developing the prerequisites for effective use (brain/neuron count) and the alternate paths or minor adaptions that can be taken for the eye. Eye placement is also a good idea for functional differences, though figuring out how to translate that to in-game visual ability could be more difficult to figure out.

The standard eye progression goes like this for typical vertebrate eyes:

Alternate paths include compound eyes:

Some modifications to eyes would include different pupil slits, code/rod density, color vision, size of eye, or even telescopic eyes like jumping spiders have.

Medium Parts: Limbs

These are perhaps the most important part to focus on, and is responsible for a large part of the design of an organism. Limbs can develop over time and get more complex, but more complex limb features are not always an upgrade. Instead, almost all limb modifications are a tradeoff of various different goals.

Construction of a limb would involve:

  • Adding joints
  • Changing lengths of limb segments
  • Duplicating or removing digits (like fingers)
  • Increasing or decreasing webbing between segments
    • Internal-Webbing between digits, like fin webbing
    • External-Webbing from limb to body or other limb, like bat or flying squirrel wings
  • Changing digit endings, adding or adjusting claws or nails

These and more adjustments would be internally represented as parameters, and a user friendly version of these parameters would be made available in the 3D editor. Some parameters will be affected by the adjustment of others, like much more powerful muscles might result in a joint having a smaller range of motion.

Limbs can be used as fins, wings, legs, and arms. Limbs would not be fixed to a specific use, but instead evaluated dynamically for how well it functions at each task. How good it would be when used as a fin would depend of surface area of the limb, how well it would be for support as a leg would depend on the range of motion of the joints to be able to plant the limbs on the ground as well as their strength at lifting the organism, how well it could be able to grasp/manipulate an object would depend on its digits flexibility and range of motion, how well it would function as a wing would be similar to the fin calculations but using aerodynamics instead of hydrodynamics.

For example, a human arm also works a ‘fin’ when in the water, it just isn’t adapted to be particularly good at that task, and useless as a wing (Except maybe on a planet with extremely low gravity and thick atmosphere?).

We could have some possibilities for great emergent gameplay here: imagine the case of the flying fish. If the player has incidentally designed their creature in a somewhat aerodynamic way and they try to jump out of the water to escape a predator, they might discover that their organism can glide for a surprisingly long distance. They might then decide to intentionally adapt their creature to being more focused on its gliding ability. Or perhaps the player never realized the latent potential in their design, but auto-evo does and splits off the player’s organism to a more flying-fish like organism by adjusting its fins. Specifically, this could be done by adjusting some of the limb’s size attributes that correspond to increasing the surface area of the fin or rotating the fin to be more useful in a glide. Auto-evo would be able to select the correct fin to modify by checking which limb(s) contribute most to its aerodynamic lift by checking the surface area and orientation.

If we did not use a parameterized limb system, how would auto-evo know how to modify the organism’s fin to increase lift? I can imagine auto-evo being able to determine that the organism is currently decent at gliding, but how would it determine where to place metaballs or which ones to modify and then how to modify them if it was using a completely free sculpting system? Perhaps we could figure out a solution for a free sculpting system for limbs with enough effort, but then we would be left with an even more difficult area to figure out—Mouths.

Difficult Parts: Mouths

The mouth is particularly difficult because it is tightly integrated into the head of a creature, and an articulated jaw can change the shape of neighboring surfaces on the face quite a lot.

Simple mouths could likely be made fairly easily, just being mostly a hole. Later on it could have some control over opening and closing, and eventually teeth would need to be added as a possibility. After that point though, it gets more difficult to reason about, as jaws get involved, face muscles are tightly integrated with the mouth, and more. This will be difficult enough to figure out how to parameterize this system, trying to figure out how to evaluate and design this as a completely free sculpting system seems near insurmountable.

Some aspects of customization would include:

  • Mouth shape
    • Aspect Ratio
    • Length
  • Internal symmetry
    • Radial- Most basic, a lamprey mouth for example
    • Mirrored- Has two planes where teeth can be attached
  • Tooth Parameters
    • Count
    • Size
    • Material Type
    • Shape (Useful for defining herbivore vs carnivore teeth, or more advanced options)

These parameters would adjust the placement and generation of metaballs for the mouth shape as well as placing individual features such as teeth. While inverse metaball placement could be used to create a simple open mouth hole, a more complex closed mouth would likely involve some other method to create the mouth opening. You can imagine the mouth of a crocodile for example being essentially a bisected muzzle, which seems like it would involve creating the mouth by dividing the mouth related metaball surface in half instead of adding holes to it.

Another important aspect of mouths involves mandibles and other mouthparts of arthropods. These features likely could be added in later if arthropod-like construction is put later on the roadmap, but is worth considering its distinctive features.

Note that insect mandibles are thought to be evolved from leg limbs, so some of the complex arthropod-like mouthparts might involve integration with limb modification somehow. Look at Anomalocaris for example, it had two limbs that it used to grab prey similar to how the large mandibles in insects work. So these mouth features might be best represented by having specific limbs able to be grouped with the mouth, which would enable compound actions of those limbs and the mouth to be synchronized. (And so that the animation system would know what to do with those limbs and relate it to the mouth movements and actions)

As an aside, remember that it is the animation system that is likely to be the most difficult area of all, and that generating the organism in a fixed position is only the beginning of the challenge. A major benefit of a parameterized system is enabling an animation system to have much greater insight into the nature of the organism’s construction, with the animation system knowing how to relate changes in different parameters to changes in how the animations should be handled. For a simple example, limb joint maximum angles of rotation and rotation speed are parameters that are extremely useful for the animation system even if they are not the parameters that are directly shown in the 3D Editor, perhaps instead giving a ‘joint range of motion’ or ‘joint flexibility’ parameter.

5 Likes