I haven’t had much downtime to sit down and create a concept on an extremely focused topic, but I’ve been jotting down some thoughts on a potential breakdown of function for our macroscopic editor in the meantime. This can hopefully allow anyone with the skills and desire to contribute to a specific part of the editor functionality rather than content with the entire monolith that would be our macroscopic editor.
The following post describes the basic fundamental mechanics that will likely be present in editing limbs and torsos. Part editing isn’t currently discussed with the same sort of formality because concepts there are ambiguous - but we can reasonably assume several fundamental characteristics of editing torsos and appendages.
Torso
Fundamentals/Ease of Access
-
Should be locked along an X axis, not moving in the Z direction (side-to-side).
a. Ensures that a frame of reference is maintained, making sure the player doesn’t misjudge their organism’s positioning. Similar to Spore. -
Should be symmetrical by default.
a. Some form of axis should be granted. Bilateral is needed; additional planes of symmetries are appreciated but aren’t necessary as a base. -
Should be able to add metaballs along X axis, and have each metaball be related/connected to the other.
a. Allows the presence of a continuous center/mass. -
Some sort of Undo function.
a. Quickly allows reverting changes the player didn’t intend or doesn’t like.
Customization
-
Frontward and backward extension of the torso allowed by the addition of more linked metaballs.
a. Allows for increasing and decreasing the length of your organism. -
Scaling of a metaball’s size to make part of the torso larger.
a. Allows variability in mass/structure of torso. -
Allowing for independent scaling/lengthening in the X and Y axis.
a. Allows for a flattening or widening of a certain area of the torso in a specific section, allowing for the creation of tails, organisms similar to flounders, greater customization, etc. This should probably be behind a specific key rather than a default function; in other words, scaling will default. -
Ability to move metaballs to create different alignments of torso.
a. Sort of like dragging the torso in Spore, which allows for the torso to be shaped in a way that is desired. -
Toggleable ability to very finely adjust scale or movement of a metaball.
a. Kind of like a “finetune” button, which slows down the mouse so that very precise movements are easier.
Appendages/Extensions
Fundamentals/Ease of Access
-
Metaballs can be placed on the torso, and can be moved around alongside the torso.
a. This opens up the capability of placing down limbs, as well as decorative metaballs if we desire to implement them. -
You can move your mouse to a point on the metaball segment to add another joint/metaball.
a. This will allow for the creation of joints, and will allow for further decorative control over decorative metaballs. -
Removing a metaball can be done by dragging it off the torso. Dragging a metaball that is not attached to the torso but is instead a segment removes only the child metaballs/segments (the metaballs further down the appendage).
a. Allows for removing metaballs easily from an established limb. Also allows for removing one segment of a metaball without getting rid of the entire appendage/limb.
Customization
-
Ability to drag limb metaballs to create different configurations.
a. Essentially like a move tool in Spore, allowing different orientations of limbs and metaball appendages. -
Ability to scale metaballs.
a. Allows for creating differences in the size of joints and segments. -
Ability for independent scaling/lengthening in X and Y axis.
a. Allows for flattened appendages.
Future Considerations
This is for features that aren’t fully conceptualized or configured, but I foresee as being potentially needed eventually based on prior conversations. So they aren’t necessary or finalized for any sort of implementation, but are important to bring up incase anyone has some ideas, or incase the underlying software needs to be adjusted to allow for these future possibilities.
- We would probably need an approachable mechanism that allows players to customize the appearance of their organism’s skin. A “brushing” mechanic directly akin to sculpting programs is probably too detailed to serve as the basis of this mechanic (though it may be useful as an additional customization tool), but a basic way to create different layers of a coat, scale texture, skin, etc. with the ability to color these layers differently has obvious uses.
- The type of skeleton an organism has - hydrostatic/soft-bodied, exoskeleton, endoskeleton - has an impact on the way limbs and torsos look. For example, organisms with exoskeletons generally appear more streamlined and sharp, while soft-bodied organisms can look very loose and floppy. So I can foresee needing to have some way to tell the editor, “hey, this is an exoskeleton torso, so apply these different rules in how segments align/scale/are manipulated which make the body look more solid”. In other words, an ability for us to apply different cosmetic appearance rules depending on the choices of the player.
- A prior concept I had deals with “shells” and other hard-bodied coverings/platings by treating it similar to a texturing/brushing mechanic, where players designate segments of their torso to have the shell texture/behavior be applied to. The concept isn’t legitimate at this point, but it might be how we deal with such cases in the future.
Keep in mind that “soft-bodied” in the second bullet-point is in reference to organisms without a skeleton, not necessarily any sort of soft-bodied physics that would be applied to the organism. Soft-bodied physics would obviously make the game look much better, but considering their immense challenge of implementation under current Godot, they aren’t necessary; what is necessary is some sort of organism body plan which doesn’t have a skeleton.