I figured it’d be good to write a little news roundup about what’s been going on with I Won’t Die for the last few weeks. I’ve been working on a lot of under-the-hood stuff, so there haven’t been many opportunities to post fun screenshots. Things have still been progressing steadily, though, despite the radio silence!
A* Pathfinding
Most recently, I’ve implemented an A* pathfinding algorithm, to use for NPC AI. For the laymen in the audience, A* a method to help find a path from somewhere (like an enemy) to somewhere else (like you) which will pass around obstructions like walls, trees, or other NPCs. I’ve done this a few times, professionally, so the recent version went really smoothly, which was a very pleasant surprise. (That said – half of the time working on it was still spent bug fixing!)
Goodbye, Threads
Before that, I actually removed a fairly big feature that had been in for a while – having graphics drawing in a separate thread from the actual game logic. While conceptually it was nice, maintaining such a structure was a bit out of the realm of my experience – and had the nasty side-effect of making the game very unstable. It turns out that fiddling with what should be on screen while you’re in the middle of putting it on screen can lead to unpredictable (and crashy) results! In the end, the performance benefits of writing in pure C++ have made any gains I was getting from separating the threads completely negligible. I Won’t Die still runs way faster than 60 fps when the framerate isn’t capped, with threading or without.
That said, I do still thread other aspects of the game – like loading assets from disk. In the future I also still plan to implement a separate thread for world generation. Long term concurrent threading was creating more problems than it was solving for the game in the mean time, however.
Aesprite
The final big change I’ve made recently was to build up engine support for a sprite editor named Aesprite. Up to this point I was only using Photoshop for image editing. While I haven’t used it a ton yet, Aesprite has some cool game-dev specific features like animation previews, which have been a great help for someone like me who isn’t a pixel artist by nature. The app exports useful metadata that I parse through with my Manifest Builder (a separate app I wrote to help maintain I Won’t Die‘s assets – which will probably be an article itself at some point) in order to generate code describing the sprite sheet information. In the end that means way less work on the programming end when it comes down to actually integrating assets.
If you’re interested in hearing more about any of these topics, drop me a line! To get the ball rolling on my actual “dev blog” I’ll probably write up a post about the scrolling cloud layer and blowing wind effects, but if there’s something else that piques your interest, by all means let me know.
Until next time, stay safe, stay warm and stay hydrated. It’s a dead world out there.