Yes, and the last one who survived moved in a way that helped it survive. It's not the best one the ones who reproduce, they all can reproduce, the ones who got closer or went through have more chance.
No, their fit score is how close they got to crossing the finish line. If they don't move, they got no score. If they move in a straight line and still manage to win, hey, that's life. I've observed that the ones who jiggle around are the ones that wins the most.
But do you agree that if they don't move, they will the ones easier to shoot? So, unless you are sparing them, they won't go very far and will have less chance of reproduction.
Of course, but I'm just saying there are so many of them and they are so hard to shoot due to the slow bullet time and only one bullet, that the left to right movement is not making as big of an impact as it could.
I would say just give a try at slowing down the vertical progress, remove the one bullet at a time restriction, and see how that goes.
Not trying to be negative at all, I think it's a great project and the code looks to be very clean. Nice work.
I'm inserted in a context that I don't have anyone to discuss this kind thing, so you don't have to be apologetic. It was very that you liked the project. I've been receiving many suggestions and I'll look into them with care. Thanks a lot.
On average, over many plays, the random aspects of the scoring you are concerned about will average away and the useful traits will be reinforced. Just like evolution.
Over many plays, sure, but how long should one person have to sit there to see results? As far as I can tell, there is no persistence between sessions. I'm saying making the game 'easier' for the player would decrease both the number of plays needed to get better evolutionary results and also decrease the time between each evolutionary cycle.
I've used GAs before in school. One example way to do even session-less evolution faster would be a distributed client/server model where the indivual survivors across all game instances who are lasting the longest are crossbred but that would take longer to code ....
The problem is that "over many plays" would be like thousands at this tempo. I played up until generation 20 or something and it was still completely random who I decided to kill last.
I tried to kill the ones on the sides and/or that moved around more first, which did seem to lead after ~10 generations to lots of static/slow opponents coming down in an easily-dispatched cluster that could be easily mopped up at the end of each round. Conversely I'd imagine prioritizing the slow ones would lead to enemies that tend to move around a lot.