What kind of FPS are you getting at say, a population of 1000 bots?
What kind of FPS would you get in DB2 with the same pop?
I am running 200 bots at about 240 cycles per second, while in darwinbots I am running only 50 bots to reach this speed.
I know Eric did a lot of work to make it faster for large( r) numbers of bots. If you jack it up to 1000, what sort of speed do you get? Unless you've done some broadphase work it should go way, way down since you're doing some O(n^2) work (so you're doing 25 times as much work at 1000 bots as at 200 bots. Which means I'd guess you're getting 1 cyc/sec at 1000 bots, where DB2 might get 2 or 3).
Not that what you have isn't impressive, just saying that how many bots you can run at 240 cyc/sec might not be the best metric for comparison.
Also, I should be able to set up SVN this weekend. If you like, I can set you up with a SVN repo for your code. Or failing that, you should set up a google code project or a sourceforge project.
In AEvolution I get 10 cycles per second at 1000 eye carrying bots, and in darwinbots I get 2 cycles per second with simple algae bots. So the comparison is about the same.
But you could get even a bigger advantage if you run multiple environment/simulations, 2 simulations of 500 bots run at 20 cps/40 total.
These are the main performance checks, which probably could also be applied to darwinbots.
- Colission checks(the 200 stands for the maximum mass which is 100, 100 + 100 = 200...)
For i = Entity + 1 To GLO_TOTALENTITIES ' It doesnt check indexes below him, because they have already checked for colission.
If Entities(i).X - .X > 200 Or .X - Entities(i).X > 200 Or Entities(i).Y - .Y > 200 Or .Y - Entities(i).Y > 200 Then GoTo nextEntity
- Also resizing the index of GLO_TOTALENTITIES to the last highest index of dead entities in main loop.
- And reproduce/repopulation uses the lowest last dead index if there is one.
- DNA gene caching, store the locations of every gene which allows skipping genes faster once the condition is false.
Next week I will create a souceforge project.