I made another pass through the game looking for improvements to be made, quite a few things got touched up in the process. Here are the details:
Language Changes
- New thread operator – works like fork to start parallel execution, but only requires one label. No more CONTINUE_FROM_FORK labels!
- New log operator – prints out the name and value of top item on the stack, if its a valid item leaves it on the stack. So, you can print out strings by logging a unknown read value name and it will safely be removed from the stack, but if its a complex value you just calculated, you don’t have to store it off into a variable to keep it after its logged.
- Combined if operator – removed ifstack ifelsestack ifgoto and ifelsegoto in favor a single if operator that handles block logic similarly to C except the blocks are required. Blocks are denoted by { and } respectively. Else is also supported and works as else does in pretty much any other language.
Balance Changes
- Split energy build attribute into battery and generator. Battery works as energy did, increasing your maximum stable energy limit. Generator allows you to produce more energy per round. So you can now have a bot that generates a lot of energy per round, or a bot that can charge up slowly to release large bursts all at once.
- Reduced all build attributes to range from 0-5.
- CPU build attribute doubled in per point effectiveness (now 10 operations per round)
- Shields build attribute reduced to 1 maximum shield limit per point spent. The aim is to make shields a damage reducing feature, not a impenetrable recharging barrier.
I’ve posted a demo bot using the new features if your interested to see how everything comes together. It is a fully functional bot so download the source and see if you can beat it 🙂