I had already realized that I had to adjust the fitness function to give points for killing, not just surviving, since the first attempt had created robots that instead of skillfully picking off the opponents one by one - as I had envisioned - took speed for the nearest corner and then just sat there waiting to be killed by one of the other traditionally programmed robots.
I realized that the corner strategy made sense as they got the most protection there, but it was a bit unsatisfactory to watch...
In the second try the robots scurried to their usual corners, waiting to be killed, but this time firing randomly, occasionally killing one of their opponents by luck before they got hit.
The evolutionary algorithm sort of hit a plateau there, and besides I kind of wanted to use my computer for other things rather than spending days and days simulating robot fights.
But I learned two things:
* Evolution most likely is a thing.
* It's really really hard to write fitness functions...