I’ve been playing a very time-intensive game of musical chairs with various three-dee engines over the course of the last two-and-a-half weeks in an attempt to find the one that would be best suited to my particular development style and the kind of game I want to create. And I can safely say that, tonight, I have reached the ultimate solution. That’s right, after toying around with things like TorqueX, Torque Game Engine Advanced, OGRE, Irrlicht, Nebula3, and, finally, PowerRender. The latter two of the list appeared to have the most potential, with PowerRender being the closest thing to what I was looking for, but the most recent iteration of the engine is still under heavy development and, what was the most troublesome, seems to be getting very infrequent updates. So, after all of the wasted time, I decided that I was going to dig out my old C++/D3D9/D3D10 framework and just rip out the D3D9 parts for use in a new framework which I could use in the future.
I got exactly an hour-and-a-half of work done on that last night before I realized that it felt way too much like the kind of engine work I do at my job every weekday. So now, and for realsies, I’m back with XNA. I’ll be releasing Asplode! this weekend in its terribly-performing state (and open source) and, hopefully, everything I learned in the development of that will help me create a far more useful toolset this time around as far as memory management is concerned. The most important lesson I have with me that I learned from Asplode! is that the most important thing about memory within a managed environment isn’t necessarily the allocation of memory so much as it is the deleting of it. Apparently the garbage collector is a wicked beast that must be appeased in order to maintain stable gameplay performance. I don’t know. I’m still getting the hang of the intricacies of C#. When I was working on Asplode! — and this will be readily apparent in the source if people peruse it — I didn’t know anything about C#. I simply coded as if I would code a game using C++ and, when code didn’t compile, I read up on why the error occurred and what I needed to do/learn in order to fix it. Hopefully, this time around, I’m a bit more well-prepared. It also helps that Drilian and I are teaming up for some of the more game-independent stuff.
As a random note, I beat Final Fantasy 7: Crisis Core earlier this week. While I have the same issues with it that I do most RPGs (that the combat becomes asininely annoying by the end of the game), the game did the Final Fantasy 7 universe — and FF7 is the only JRPG I’ve ever enjoyed (and loved) — absolute justice. The story was incredible and provided a lot of great depth on Zack, the inner workings of SOLDIER, and the root for Cloud’s identity disorder. And seeing Sephiroth function in more “normal” times and take actual solace in communication with friends/peers was cool. I’m just waiting for my copy of Advent Children to arrive so I can re-watch that. Now it’s back to Wipeout Pulse, AoE3: The Asian Dynasties, and more Rock Band. And GT5: Prologue. Grand Theft Auto 4 can come out anytime now as well.
Anyway, yeah, that’s about it. I hope everybody has been The Daily GameDev.net news pieces I’ve been posting every weekday morning. They’re almost asininely fun to write up but they do tend to take the place of dev journal updates at times, so if this thing has become a bit more stagnant than usual then that’s probably the reason.