After running into issues with being able to save out and load assemblies that would coalesce into the same structure each time, we refactored our 'DNA' code to read the structure of an assembly from a regular closest-packing grid instead of by the particular bonds between each node. This allowed us to have assemblies mutate, duplicate, and reproduce reliably due to the fact that their structures were rigidly described. Our sensing and food absorbtion mechanics have remained the same since the 'Survival' experiment, however we elaborated on the 'signal' that is sent between sense nodes and actuator nodes: sense nodes now send information describing the relative vector between their 'forward' vector and the food pellet they are observing, and actuator nodes incur a force on the assembly relative to their own forward vector. Note that neither sense nodes nor actuator nodes 'know' anything about each other; their interactions are initially determined completely randomly, and over time they are refined only through through natural selection.
This experiment also involves some optimized physics calculations on a per-assembly basis, including inertia tensors and center-of-mass. This allows for obliquely-angled actuator nodes to incur both propulsion and rotation on the assembly they are a part of.