Thursday, September 5, 2013

Target Acquired

About two and a half weeks ago, I set a six-week goal for having my first "alpha" product functional. Each week would have its own set of goals coinciding with the premiers of the last six episodes of my current favorite television show, Breaking Bad. As of now, I'm quite behind schedule.

In part, the reason for my lateness (this time) is because I felt the need to finalize my decision about which physics engine to use. I've had Newton Game Dynamics hooked up for some time, but it's not being supported much these days. Its capabilities are limited to rigid objects - no soft bodies, cloth simulation, or built-in rope physics. Bullet, on the other hand, has all of those things and more and is getting updated frequently. I knew I'd eventually want to switch. Yet it was a complete unknown to me as to how to get Bullet, a C++ static library, working with BlitzMax. My plan was to put it off until it was absolutely necessary and probably to hire someone to do it (if possible).

However, I really wanted some basic rope physics in my demo. When I looked into using Newton for that, the official site was down. Leave it to fate to show me a new path! I took it as a sign that I should look into Bullet further, and I can now happily say that I'm glad I did. After a bit of head scratching and hair pulling, Mana now uses Bullet for its physics. The implementation still needs some work, but rigid objects, constraints, soft bodies and rope physics are all functioning!

As much fun as it would be to keep playing with Bullet for the next month and implement ragdoll and vehicles (vroom, vroom) and cloth physics, my original six-week target is calling again.