Development Update: Road to Completion

Once again it is time for an update on the current status of Wulverblade. It’s been a little over a month since the last one and we are chugging along toward release. Below I want to give a brief overview of what we’ve been up to during this push to completion.

Finishing the Last Level

The main focus has been on completing the game’s main content. Finally getting to that magic marker of “content complete” has been a major focus for the last few months. We are extremely close to that point right now. The game is 100% playable from start to finish but since there are a few revisions we are still making on a few levels I’m not ready to call it finished yet. The level of polish and pacing we are trying to create in these levels means that it takes many many iterations of playing, tweaking, adding, and replaying before the levels are built up to completion.

One of the biggest areas of iteration for a level is its boss. Finishing the game with a satisfying boss fight is important and so much of my time has been focused on the AI and attack patterns for the Level 8 boss. It is always a slow and repetitive process where the behaviors are layered on top of each other to create a fight that is interesting and challenging without being made to feel cheap or recycled from other bosses.

We also introduce an iconic weapon for the Romans in this final level. It is important to us that we continuously introduce new enemies and challenges to the player to keep the game feeling fresh. This means even in Level 8 introducing something new. I won’t reveal exactly what it is but I thought it worth mentioning to illustrate how much work we’ve done to make sure there is a constant feeling of facing new challenges and new enemy types as you play.

Legionnaire

 

Fixing Analytics

Early on in this project I reused some analytics code from a previous project briefly before ripping it all out. The reason I disabled it was that I discovered it was too much of a performance and memory hog. At inopportune moments during play this system would kick in and could lead to framerate stutters and in an action game that is the last thing we want to allow. It’s been years of development with this system disabled and neglected.

When we went to PAX East last year I improvised a very simple local-only system to record some simple events to get a few key stats while people were playing the game. It worked and I was pretty happy with it but I knew that would never work for launch. It just saved a text file to your machine with some event data on it. A good analytics system makes this data conveniently available to us after launch.

At this point you may be thinking “collecting data about me and sending it back to the developer?” Yes, and it is fairly standard practice. First, I’ll say that the data being collected here isn’t about the player themselves like personal information. The data we’re interested in is not directly tied to any sort of ID that can be traced back to you. What we want to know are events in game, like killing enemies (where, with what weapon), the player dying (where, and from what damage source), finishing levels, tweaking game settings, etc. This kind of data allows us to see when the game is too hard at a specific place, what the most common settings are that people use, and when players may choose to stop playing.

So, a new lightweight analytics system was made and put in place and all the old or temporary systems have been removed. This is definitely one of those tasks that is largely boring to think about and certainly boring for most players to read about. It does take development time so I’m noting it here but it is a tool for us to try to make the game better even though it is not a very sexy system.

UI Polish

One of the things we like to focus on at Darkwind and Fully Illustrated are great UIs. We have slowly tweaked, polished, and replaced the user interfaces as we’ve gone along. A great UI looks great, adds to the feeling of the game, gives the player all the information they need or want, and doesn’t add any friction or annoyance while doing it. I think we’ve done a really good job with those goals so far in Wulverblade. While pushing the game to be content complete in terms of the levels and combat we have also pushed the UI to that stage as well.

There have been a few recent changes that I think help to convey information better and have the added benefit of looking good as well. Recently we’ve spent some time revising a message feature to let the user know about notes, lore, and tutorials as they play through the game. We don’t want to actually stop the action but we also want to make sure the players knows this content is there. I think the design we landed on does the job very well.

Weapon Lore

You can ignore the asterix (star) in those notes that is just our translation system being helpful and telling us that these bits of text are not currently being translated through the system yet. Once we go through localization and flip a switch in the build that will all happen automatically.

Lore and Dialog Writing

Mike has been writing and collecting lore for Wulverblade since before active development began. Recently we’ve furiously increased our pace of finalizing the lore notes, dialogs, and collectibles that will be in the game. We have planned a lot of collectible information sourced from real history. This means a lot of research and a ton of writing. Mike has been writing nonstop for weeks to finalize this aspect.

The writing for the game can be broken down into a few groups.

  • Dialog which is voiced either by characters in the game or by the narrator
  • Story-focused lore notes which are unlocked as you go through the campaign either automatically or as rewards for exploration
  • History-focused lore which is not directly tied to the story but is intended to deepen the setting of the game

The dialog is critical to finalize because it needs voicing and that means voice actors and recording. We have that lined up but we want a 100% completed script so that we can do 1 session and be sure we won’t need another. We can’t wait too long because we need to book studio and actor time reasonably in advance.

The story-focused lore notes are fiction so this is creative writing. It is all based on a real historical setting but this is where we let ourselves add details and create storylines that could have happened.

History notes are sourced and summarized information about what really happened in Briton in the 1st and 2nd century. This all adds to the feeling of authenticity in the game. Some of these characters really existed. These places existed. It’s all real, and when it isn’t real it certainly might have been real. That’s the feeling we want and it takes some time and effort to get that feeling just right.

Game inspired by Mike’s back garden: soggy northern England

Counter Attacks

The last thing I want to talk about is the last combat element that we have added to the game. The combat system of the game has been solid and feeling great for a very long time. We haven’t been adding much to these systems but recently I started tweaking the perfect blocks we had in already. A perfect block is when you block just before an attack lands which will stop all damage and cause the enemy to become open to counter attack. This is a fairly common system with similarities in a number of recent games such as the block-parry mechanic in Witcher 3 and the parry system in Dark Souls.

GuinCounterAttack

Previously this idea of counter attacking was using your regular attacks during the window of opportunity opened up by a perfectly timed block. The new element is that separate attacks have been added to explicitly be these counter attacks. After blocking perfectly you can counter and harshly punish the enemy with attacks that do more damage than normal. So far, this is all working great. It feels especially powerful which was the point as a reward for your good timing. I’m excited for these animations to be polished and I think it adds a nice extra bit of depth to the whole combat system. It creates a strong incentive to try to time your blocks but of course it can easily go wrong since you can find yourself not blocking soon enough and taking quite a lot of damage.