Activate an eye only if the bot tries to read from its memory location.
Catching the read is the hard part. The bot DNA can address the memory location a dozen ways from Sunday
e.g. 100 5 mult inc *
So it's not enough to look for eye statements in the DNA. In fact, I'm unfortuantly going to have to turn off the existing perf optomization code that doesn't populate the eye values for bots without .eye sysvars. More than once I've evolved bots that use indrect eye addressing but they are blind because their eyes arn;t getting populated.
I get having explicit sysvars under bot control that enable/disable eyes and then charging for eyes being enabled, whether the bot reads from it or not.
I get charging for writing to sysvars that do something like .up or .eye5dir.
I get making the amount charged partially a function of the value written I.e. 5 .up store costs less than 40 .up store.
I even get adding eye features such as vision range and charging for bots that want to see farther - this is a simple matter of catchign a sysvar write.
I don't get how one charges for reading from a mem location or how we can effeciently decide NOT to popuate certain environmental sysvars such as eyes and refvars. Doing the work to figure out whether a bot reads from a mem location or not in order to determine whether to do the work to populate it or not or whether to charge for it or not seems to me like a losing perf proposition...