Tomorrow, July 4th, at about 3 PM PDT will be the one year anniversary since I started working on the current Darwinbots 3 source code and directories, not counting the work I did on DNA about a year before that.
I figured I'd post a progress report:
Lines of code: 30117
Accomplishments:
1. There's currently a build system in place I'm pleased with. It works just by scanning for copies of Visual Studio installed on the computer and using it to compile all the solution files it finds by recursively looking through the source tree. It manages this just using batch files. I've seen build systems at two other professional game studios, and I have to say I like this one better than any of those.
If nothing else it's extremely simple (no external dependencies beyond Visual Studio) yet still entirely automated.
2. UnitTestSharp - I've built a unit testing framework in C# that I use to thoroughly test all the other modules in the code. It also happens to be written to test itself, which I thought was pretty cool. Nothing involved with UnitTestSharp, or any of the unit tests I've written, will ever reach the final user, but it helps ensure that the code the final user does get works as expected. Or at least when it breaks and I isolate the bug, it never breaks in that particular way ever again.
3. Physics - Lodestone - Physics is only about 30% done, but I've successfully managed to figure out how it will work, which is good since I had no idea a year ago Also want to thank Prsn since he did a lot of work building the scaffolding for the rest of the physics. My work on physics has also successfully gotten me a job working at Havok, which is pretty cool.
4. Math - Azimuth - I've looked around online for math libraries for .NET with appropriate open source licenses, and they really don't exist. So I built my own As far as I know, this it's the only MIT-style open source library around that can solve systems of linear equations. There's still a lot of work to do with it, though, especially for sparse matrices.
5. Graphics - Work has been started on a vector graphics library. It's still in its infancy, but when done it will allow you to switch between rendering using GDI (and thus you can run Darwinbots on any computer with .NET) or rendering using XNA (for fancier affects and xbox support).
Future work:
6. Basically so far the foundation has been set. Most of the current work invovles fleshing out the middle tier modules (things like graphics, physics, etc. etc.), which are, on a whole, maybe 40% complete.
7. I still need to figure out a system to profile the code. At the moment none of it is optimized.
8. Likewise I need to figure out a system for determining code coverage. At the moment, I have no way of knowing what sections of the code are untested beyond just having a good memory.