Code center > Bug reports
Simple repro or robage faulty? 2.43s RESOLVED (NO REPRO)
Numsgil:
The changes to the way DNA works should be backwards-compatible for hand authored bots. It's only evo bots, with their rather peculiar mix of nonsensical DNA, that would be broken.
If that first gene isn't working, it's a bug.
Peter:
--- Quote from: Numsgil ---The changes to the way DNA works should be backwards-compatible for hand authored bots. It's only evo bots, with their rather peculiar mix of nonsensical DNA, that would be broken.
If that first gene isn't working, it's a bug.
--- End quote ---
Yes, there is somehow *.robage doesn't come over 200.
Still what has changed, wasn't it something like the stack is being reset at a cond statement, that case some hand-made bots could have a problem, just a few but there are some.
Numsgil:
There are two stacks. One is what we usually mean when we say "stack". It holds numbers. That one isn't affected. The other is a boolean stack that handles conditions. That's the one where changes have been made. A cond resets the boolean stack (I think), but doesn't affect the integer stack.
Testlund:
--- Quote from: Peter ---Yes, correct, there are some more, I am not too sure about the statement of testlund, if it is true it is really drastic.
--- End quote ---
I expressed that a little bluntly, but the fact is that removing every logic operator on my Chainbot restored it to functionality, the same with my tiebot (both coming from the same zerobot ancestor), but it could very well be that I also caused some change in the bots behavior that I'm unaware of.
But removing some logic operators on hand written bots should stop some of there functionality, for instance the Animal Minimalis shouldn't be able to reproduce when it's above 10000 energy if it didn't have the '>' operator.
EricL:
Allow me to inject some clarity.
As Nums says, the new conditional paradym should be 100% backward compatable with hand authored bots. People can code their bots as they always have without caring about or understanding this change if they like. In particular, ALL EXISTING HAND AUTHORED BOTS SHOULD CONTINUE TO WORK AS THEY DID BEFORE. If they don't, it's a bug.
The change in question is restricted in present versions to allowing the execution of conditionals in the gene body (the part after start). There have been no changes to the conditional portions of genes (the cond part). In particular, stores are still disallowed in the cond section. Anyone wanting to better understand the new paradym should look here.
As Nums says, the gene in the first post of this topic should work perfectly as coded. The new conditional paradym is orthoginal to this discussion. It has no bearing on it. If the gene does not workas coded, it is a bug. I will look into this and keep this bug open until I do.
Testlund is, um, mistaken. Conditionals should not be removed from hand authored bots. They do what they have always done. They just do it in more places (they now work in the gene body and if present, impact what happens in the gene body). Removing the "=" in the cond section of the gene above has nothing to do with the new paradym. What it does is cause the gene to always fire since there is now no conditional logic in the cond portion of the gene, so it defaults to true.
If you have an evolved bot which evolved in a version prior to 2.43r, they way you preserve that bot's logc is to remove all conditionals from the BODY of it's gene(s). In particular, if you managed to evolve a bot with a cond section that actually works, you SHOULD NOT tinker with it. (And if you have actually managed this, you have won the Conditional Logic Prize).
A "cond" statement does indeed reset the boolean stack. Nums is correct again. It is important to note however, that a "start" does not.
True and False mearly push true or false onto the boolean stack. I've updated the Wiki on these.
Navigation
[0] Message Index
[#] Next page
[*] Previous page
Go to full version