Development Update #11

Haunted: Attack of the Dead Men

Inspired by the most epic and little known battle of the Great War, Haunted: Attack of the Dead Men puts you in the middle of a chaotic fight for your life against hundreds of resurrected Russians. Put your arsenal of 8 weapons to good use through 14 levels as you rid the world of this nightmare...

Hello everyone! Welcome to the eleventh development update for [i]Haunted: Attack of the Dead Men[/i]. It's been another busy month with the release on itch.io (as I'm sure you're aware of by now), but like last month this update will be more technical than previous updates as there isn't a new level to show off. Map 11 (the newest map) is mostly done now, but it needs more polish before it is ready for its own gameplay video. Besides, I included some preview footage of it in the new trailer, which you can find below in case you missed it. [previewyoutube=tLDYah9GEUw;full][/previewyoutube] So what else have I been up to this month then? Well, I was on my laptop for a few weeks so the most pressing issue was getting the game running better on it. That isn't all though - there have been a few more additions which will become available in an update to the demo soon, which I will go over in this post. [h2]AI and Pathfinding[/h2] This is probably the biggest change I've been working on this month, and surprisingly didn't take very long to implement. I mentioned some AI changes in the release notes for v1.3.2, but also mentioned plans for further improvements to this. The main problem with the old AI was this - I had tried to use only simple pathfinding techniques before, to give the enemies a more "retro" feel (in other words, not too precise when avoiding things). However, this approach doesn't work well with the more complex, free-form level design that most of the maps have. This was particularly notable in Map 3, where the enemies struggled to get around the rows of bushes. The new system makes use of Godot's built-in navigation and pathfinding logic, which I have experimented with in the past and found to be clunky. Fortunately, Godot 4 has improved this a lot, and it didn't take long to generate the necessary navigation "meshes" from the level data - I was able to get this (mostly) working in just one afternoon in the end (which may be a running theme in this development update!). The enemy AI then uses this data to navigate the environment in a more intelligent and less error-prone way. So don't be alarmed when the enemies start chasing you more effectively! [h2]New Difficulty Options[/h2] One feature I've wanted to implement for a while now is better difficulty tuning. The basic difficulty options affect how many items you will find and how many enemies you encounter, but for those of you who like a challenge these might not be enough. So, allow me to introduce these new options: [img]{STEAM_CLAN_IMAGE}/42968542/679cf7acc804644a6bd6c5f053dcca75915096c5.png[/img] OK, so the "pistol start" option isn't new. This was previously in the gameplay options menu, but I've thought for a while now that it didn't belong there as it shouldn't be possible to "opt-out" of it if you've started the game that way. This option resets your weapons, ammo, health and armour at the beginning of every level, so you will always be on the hunt for new toys. Permadeath is new though, and it will be very tough to get through the whole game with this enabled. For the benefit of those who don't know what this means, when "permadeath" is enabled you are locked to a single save slot, and when you die this save is deleted. So in effect, you have to beat the whole game without dying. Good luck! If you think the game will get too hard with these new options, well, it probably will. But there are new rewards for enabling them - I have added a score multiplier associated with each. This allows you to get the higher rankings even on [i]Oberleutnant[/i] (medium) difficulty. Naturally, with all this extra score floating around there needed to be new rankings for the masochists among you who want the challenge to still be satisfying - I've added [i]S+[/i] and [i]H[/i] (for [i]Haunted[/i], right?). [i]H[/i] is only achievable by playing on [i]Feldmarschall[/i] (very hard) with both of the new options enabled. You can see this below: [img]{STEAM_CLAN_IMAGE}/42968542/f42c2c6fc33cff94d0c93ddd084e41005aa04ff1.png[/img] That isn't it for difficulty customisation. I plan to add more of these options in the future, and possibly a "new game+" mode to go with them. [h2]The "Minimap"[/h2] This feature was long overdue. The old "minimap" was badly implemented and didn't really help much with navigation, so it needed a complete redesign. The new minimap relies on sprites for all the different objects that make up the background and scenery for each level, which are then placed according to where each object is. I had assumed this redesign would take a long time, but (again) it only took an afternoon to get the basic system in place and working for map 1 - after this all I had to do was add more sprites. A nice advantage of the new system is that I can show and hide sprites based on which "floor" they are on, so you only see what you can actually interact with. Here's an example of it in action: [img]{STEAM_CLAN_IMAGE}/42968542/e31c87ee91db615c3ad750e2c1e86a52287d9918.gif[/img] Another useful feature of the new minimap - it only reveals itself as you explore the level. This way, you can actually see the areas you haven't explored yet, which wasn't possible with the old one. [h2]Performance[/h2] I mentioned in the release notes for v1.3.0 that performance on integrated GPUs was a big problem, and I managed to (partially) fix this in v1.3.1. I've been doing a lot more tuning on my laptop (which has an iGPU) so I'll end this update by going over some of the problems in more detail, and how I've addressed them. So the first problem - what was causing so much lag in v1.3.0, and what did I change to fix it in v1.3.1? Well, it turned out this was actually the "rain" effect - in Godot 4, there are now two types of particles - those that run on the GPU and those that run on the CPU. It turns out, if you want to render a lot of particles on the GPU, you need a dedicated graphics card. Since the rain effect makes heavy use of particles, this was the first thing to change - the small fix in v1.3.1 was simply to switch the effect to use the CPU if the graphics card detected by the game wasn't up to the task. But this isn't great really. My laptop is getting old now, so more modern iGPUs can probably handle this better, so just assuming any integrated chip needs simpler effects is wrong. Instead, there should be an option for it in the graphics menu. How about this one? [img]{STEAM_CLAN_IMAGE}/42968542/95bde30124d9d76e2860153b7043189194de84b4.png[/img] [i]"Advanced"[/i] because nothing is really advanced about pixel art! This new option doesn't just affect the rain though. It actually changes Godot's rendering backend - [i]"Advanced"[/i] is simply better optimised for desktop graphics cards, and supports the most features (it is also the only one that supports the fancy volumetric fog effect). There are two other options - [i]Simple[/i] is better optimised for integrated graphics (and smartphone GPUs, but who cares about those?), and finally, [i]Legacy[/i] is available for those who have older computers which don't support the Vulkan graphics API. You may want to play around with this setting, even if you do have the graphics card for the best quality. You can get a much more "retro" look by lowering the resolution and using the [i]Simple[/i] renderer for example: [img]{STEAM_CLAN_IMAGE}/42968542/67770458091b8d2e8e078e4ba6f5f910e920dbe6.png[/img] [h2]What's Next[/h2] That's it for this development update. The next thing on the list is to update the demo - v1.4.0 will be out (hopefully) later this month. It is almost ready as-is, but needs a bit more tweaking and testing first. More importantly however, there is an engine bug with the [i]Simple[/i] renderer which I would like fixed before I release v1.4.0. Luckily it has already been fixed, but I will need to wait for Godot 4.1.2 first. If that patch release for the engine isn't out by the end of this month I will just go ahead and release v1.4.0 and a later hotfix (v1.4.1) to address the bug. Other than that, a big new milestone is approaching. With the design of all of the maps that take place in Osowiec itself now pretty much finalised, it is time to start on the final three maps - each of these will share a similar new design, centered around the underground lair that the main villain has built for himself. Hopefully I will be able to show some of this off in the next development update! Thanks for reading!