How crazy am I ??
Very! Cubemen was 90% ready to ship and I decided at that exact point to go back to basics and rip out the entire pathfinding system and code that makes all the little Cubemen move and replace it with a brand new pathfinding system.
Why you might ask?
Well one of the things that I always really wanted to have in Cubemen levels was the ability to have bridges/over hanging areas and platforms. But my initial level building system and pathfinding solution didnt support these features and while I put it aside (with the intention of eventually changing it) and kept working on the rest of the game, at some stage I either just forgot, or more likely gave up on the idea of having these features in the game, so decided to just finish v1.0 and get it out.
But, in a fit of pure craziness last week I decided to rip it all out and re-implement a brand new level building system and of course as I mentioned above, a new pathfinding and character motion system, and I am pleased to announce that after a week of pure stress and frustration, the swap over is complete and the new system is awesome! And it took me way less time to do than I thought it would – with the help of an awesome tester and self proclaimed “Bug Magnet” named Ricardo!
So what was my old pathfinding system?
I was originally using a grid based A* pathfinding system… it’s simple and it “seemed” to fit the game concept of having levels created as blocks on a grid, but of course once you add a 3rd dimension to a grid based system, it’s becomes very complex and slow and memory intensive.
My new pathfinding implementation is a NodeGraph (list) system that doesn’t care about what dimension the pathfinding is in, and it’s also memory efficient and fast. I haven’t done any real benchmarking yet (I do plan to) but my initial instincts tell me the system is at least 1.5x – 2x faster than my previous grid based system.
So, this all sounds well and good, but what does it really give the player in terms of a better experience? Well, way more strategically interesting and complex levels. I am now able to split the level complexity into Easy, Medium, Hard & Insane, where the difference is not just about how hard to kill or how many enemies there are to fight, but also about strategy and complexity of unit placement. I am also now able to add bigger levels by using height (Y) as well as just X,Z size.
I have added some new images of some of the new levels in the Screenshot Gallery… Level LaneWays and Level Bridges.
So I am now pretty much back on track with development, though I think I will take a little extra time before I ship to add some cool new levels to the v1.0 release.
Until next time…