MECHANICS
Aright, this part is Anon Guest Person and me working together for an hour or two (he can post after I'm done if there's a point not agreed on:
All game sysvars are divided into groupings called 'mechanics'.
Definition: [you]Mechanics[/you] - a grouping of similar commands and reference variables
Definition: [you]Specializations, or specs[/you] - the more mechanics that are turned off, the more specialized the bot is said to be. The collection of which mechanics are on/off are said to be the bot's specializations.
Mechanics can be turned on/off. DNA files have lines at the start that set mechanics as on/off. Children bots inherit the specializations of their parents. The spec code at the start of the DNA represents the specs the bot inherited from its imaginary parent. Bots can change specializations by turning on/off mechanics but it isn't cheap.
Here's a possible example of the spec code at the start of DNA. If something isn't turned off it defaults to on, for backward compatibility with older bots.
disable ties
disable poison
disable venom
It's just that easy!
To turn on/off mechanics during the simulation, a robot uses a setmech and strmech couple, not unlike the memloc/memval couple.
example:
15 .setmech store
1 .strmech store
This will turn on mechanic number 15. We can make a set of sysvars that label the different mechanics with numbers.
It is expensive to turn on/off mechanics (the degree of this expense is still debated by Anon and me. Input welcome). I'd say something like 15000 energy to enable a mechanic, 10000 energy to disable and several hundred cycles for the changes to take effect. (with safeguards in the program to prevent abuse by weapons, somehow).
Anon wanted a much, much easier way to change specualizations (I believe).
If we go more expensive, we may opt for a piece-meal system to enable/disable mechanisms.
Now, the more mechanics you disable the higher your mechanics multiplier is.
Definition [you]Mechanics Multiplier[/you] - A multiplying force to all actions. The higher it is the less actions cost or the stronger they are (depends on the action). The rough shape of this Mechanics multiplier is (mechanics multiplier = a * b ^ (disabled mechanics)
Why have a mechanics multiplier? It simulates the way some eukaryotic cells have lost the ability to move but used the old cillia mechanisms for other purposes. This should help multibots' cells differentiate, as there is a strong incentive now.
MUSCLES
An analogy is in order. Mechanics are like bones. You must have an arm bone to have an arm, but the bone itself does nothing.
This is where muscles come in. Muscles attach to the 'bone' of the mechanics, allowing actions.
The strength of an action is determined by a heirarchy of muscles. At the top you have general muscles. These can perform all tasks that aren't disabled by a disabled mechanic (no bone, no muscle).
Next you have group muscles. These can only perform the actions of a particular mechanic (like a bicep of your arm).
Last you have specific muscles, that control a single command (like the muscles controlling your index finger).
Look above for more on muscles. The only difference is the mechanics multiplier, which makes muscles stronger.
DIGESTION
Last, but not least, we have digestion. The same mechanics/muscle system applies here but at a much more specialized level.
Each energy type gets its own enzyme. Enzymes are the equivelant of muscles. You can have generalized enzymes and specific enzymes.
Definition [you]Enzyme Template[/you] - The mechanism which produces a particular enzyme.
These enzymes are made from enzyme templates, which are analogous to mechanics. If you disable an enzyme template, the remaining enzymes are made more efficient. This represents the machinery for one enzyme's production being moved to the other enzyme production machinery. This will create a strong incentive for specialized feeding.
Again, look above for more on enzymes.
The beauty of the above system is all the marks it passes.
It fulfills both practice and birth specializations. It allows bots to be as generalized or specialized as they want in feeding, while providing incentive to be specialized. It allows bots to become plants and vice-versa through painful, long evolutionary processes.
Still a few fine points to smooth out, but I think we have an all around system that fullfills all the necessities of a proper system.
I've included the mechanics' groupings Anon worked out. There are about 35 groups he's worked out. I haven't cracked my knuckles yet, I may suggest combining some groups together.