I'm probably past half done; maybe more like 66% done. As I get more pieces in my pace seems to pick up (I'm a better coder now than I was years ago, and there's more infrastructure in place so I don't have to go off on a tangent to build some new tech all that often).
I have about 65K lines of code. A final line count of 100K to 150K seems probable. But there's still a lot of GUI code to write, and that's usually little effort per line of code because it's so verbose.
For physics, I have a "solver" more or less done, and I'm working on the collision detection now. After the solver and collision detection are done, I need to combine them into an actual simulation. There's probably another, say, 3 months of work here to get to something I'm comfortable calling "done". Most of the hard problems have been solved, though, so I don't anticipate any blocking issues (for the solver, I actually had to go off and spend a good 2 years learning linear algebra and implementing that in code).
For graphics, I have drawing of basic primitives (triangles, rectangles, and ellipses). And it has some cool antialiasing stuff going on that makes zooming in/out look pretty good. I still need to work out how I want to draw polygons and have them look good (right now there's some seems in places that look terrible). And I still need to work out drawing points, and drawing lines. I've also got a triangulator working (for decomposing the polygons into triangles). So it's maybe 66% done, and needs another few months of work, too.
For the simulation, I have the DNA done. I need to extend the triangulator I mention above so I can break pieces off of polygons (so bots can tunnel in to shapes, for instance. And reproduction might work by bots splitting along an axis into two even halves). That's not too much extra effort. I still need to write something for bot vision so I can query for nearby bots that can see each other. And I still need to write most of the actual "gameplay" logic (but that relies on physics being done). And I need to write the front end that combines everything together into an actual DB3 program. So there's probably a good 6-12 months of work there.
The backend stuff that isn't all that interesting to talk about is about 90% done. Just a few rough APIs I need to clean up and refactor, and the occasional bug fix.
And then probably another 6 months for things I'm not thinking about right now.
And when I say "month" I don't necessarily mean calendar month. Sometimes I don't really feel like working on Darwinbots.
So realistically I'd say something like 2-3 years from a feature complete version. But I'll probably have some early alpha versions with a stripped down feature set earlier than that to test some things. I'll probably release a physics playground app, for instance, to have people test the robustness of the physics engine. That's maybe 6-12 months out.
If you want to see a work log as I work on things,
you can look at this . If the dates are all pretty old there bug me on the forum. Sometimes I just need a kick in the butt to get going again.