Basically you can't call a codule that is already on the call stack
But what if I have 3 codules A, B and C, and A calls B, B calls C and C calls A ? (The classic downfall of some Garbage collectors)
This is how most other ALife sims work. But from what I've read, this actually favors "gray goo" bots over complex behavior. Evolve 4.0 had more successful sims when "free instructions" were increased. This is actually one of the things about Darwinbots which I think makes it work so well.
And if you think in terms of real life, DNA is a massively parallel computer. The longer the DNA gets, the more processing power it has, not less.
I agree that IRL longer dna should mean more processing power, but I was mostly refering to the simulation speed. (Also a bot with more dna wouldn't have less processing power, just the same as shorter dna (Making it slower).)
But I think the issue is just how often you choose to update the world. For example if you only updated every 32000 cycles, even the longes possible bots would be able to comlete their code.
But the advantage would be that self modifying code in a small bot can accomplish a lot internaly during that time, and multibots can comunicate and stuff like that. (Since actions that don't affect the physical worls would be able to have a lower cooldown period.)
The issue I was most worried about would be the dna being out of sync with the update of the physical world, but I don't think it should be an issue as long as sysvars only get errased once they've been used.
If you updated every 10K cycles I think most bots wouldn't even notice.
For some handauthored bots it would probably help to have a flag being set every time the physical world has been updated (Although there should be plenty of other ways to tell).
But after thinking about it I think viruses would probably be the main issue, it would be a lot harder to create viral defences. You wouldn't just be able to block negative effects in the last gene, you would have to check for infections every time the physical world is updated.
So I know it makes things complicated, but I don't think evolution would suffer, and it would make some aspects far more interesting.
I've been hesitant to go down that way, for various reasons. Mostly because it's a super weapon, which means the code has to have special exceptions everywhere to make sure it's not abused. There are probably clever ways around those problems, but I don't want to add it just for the sake of adding it either. The main use I can think of would involve viruses, and for DB3 I'm specifically working to remove the need or ability to self police your genome (stronger defenses against virus infection, and inability to self modify your genome at all. Viruses would work less like retro viruses (injecting into your genome) and more like normal RNA viruses (another genome in your bot vying for control)).
But if you (or anyone) can think of specific use cases I can probably design around them.
Well I don't know what you have planned in that area, and it's hard for me to speculate till I've had a look at how the dna will work in DB3.
I imagined the pointer would be usefull for removing infections and for manualy charging virus code. Figured it might make evo sims more interesting.
But it sounds like you may be rethinking the self modifying code idea, and generaly the way viruses work. So it's hard to say anything realy.