Weekly Devblog July Week 2

Weekly Devblog July Week 2


This week I initially started planning out the next single player campaign mission and getting input from the rest of the team before I start working on the script.  We largely want to keep the campaign missions behind the scenes and out of the public spotlight not because we aren’t eager to show you what we have planned, but because for campaign we don’t want to spoil anything for you!  In any case, here’s a little work in progress teaser shot of another upcoming campaign map that doesn’t reveal anything too important. If it looks familiar there’s a good reason for that, many of the levels in Contagion Outbreak you’ll visit more than once and in different periods of time.

Optimizing all the art (and levels) in the game has largely been my responsibility.  As much as I’ve wanted to upgrade my GPU from the GTX 970 I am on right now, I figure if I can make the game run @90 FPS on my PC that’s better for all of our users!  In any case, I’ll be continuing to focus on optimizing levels, lighting, materials, particles, and doing non-exciting things like this to hopefully improve performance resulting in a smoother experience for everyone.

I also spent a bit of time focusing on problems specific to the user (you!) experience, things like making sure every time you spawn into the game you are facing the right direction, that there are no holes in the world you can fall out of (I’m fairly certain I’ve resolved all of these but if you still experience this please report it!).  It’s worth mentioning I’ve also added more loot that spawns in campaign, so make sure you check inside places you previously found no loot as there may be some now! This next week I’ll be working closely with Victor on finishing and getting a more polished experience for the last 25% of the first campaign mission, we know at launch it was and still is pretty rough!


Started the Save/Load system from scratch, Interim System is roughly 90% the way there. A few bugs have still made it through, such as duplication of keycards sometimes in the backpack as well as not being able to save weapons that are currently held. Both are easy fixes though and will make it in later with the fully completed Slot Save/Load system.

Going back and forth with my Twitch audience, we came up with a neat idea about how to do Slot Saving, inspired by Resident Evil’s Ribbon/Typewriter save system, we’ll be using Lighters and Candles. Eventually, the lighter will have lighter fluid that you’ll have to scavenge about for fuel so that you can save your game (trolllol, nah, but that would have been funny).

Other than the Save/Load systems, I worked on various bugs and UX. Added more tooltips to Starting Apartment and also fixed up Toggle Grip logic on various items. Oh, put Flashlight Batteries into the DataTable so they can get spawned randomly now. Lastly, worked on some Menu stuff, disabling more stuff that’s not currently implemented, as well as fix a bug that made you quit the game by accident.


The first half of this week I was tasked with the glamorous job of hunting down all the warnings that get generated when we “package” the game. Packaging the game is the (mostly automated) process that goes through all the code and content in the whole game project, takes the only the stuff we care about delivering to the end user, and compresses it down and builds an executable that you, the end user, eventually gets to play.

As well as creating the game, we do the vast majority of the testing in the Unreal Engine 4 editor – kind of a construct like environment that we can both build and test the game in. However, the editor takes a lot of processing and memory overhead, as well as containing tons of extra stuff that the end user just wouldn’t need. So, in order to deliver a streamlined product, we “cook” the package, and eventually upload that package for you to play. Like I mentioned above, the process is pretty much automated, but it also can fail in ways that are difficult to foresee. It also shows us where things are not quite failing (errors), but still possibly broken in some way (warnings).

It tells us this information in the form of a log file that gets generated when we cook a package – a *huge* log file. The size of the log for the last build weighed in at about 7 megabytes of pure text – about 46 thousand lines in total. That’s a lot of stuff to sift through!

This is where my task this week becomes relevant – Last week, when we packaged the game, it returned over 1500 warnings. Definitely more than we were comfortable with! I went through with a fine tooth comb and managed to pare it down to just under 70 for the latest build. Not too shabby!


Aw yiss

Most of the errors were resulting from combined Static Mesh assets – where we take several models in-editor and combine them into one asset. for example:

These guys started life as 4 separate wall models, but in the game they are treated as one.

Annoyingly, the automated process that combines them sometimes results in problems that causes tons of warnings in the packaging logs. Fixing it involved exporting the mesh from the editor, bringing it into a 3d modelling package, manually recreating the collision mesh, and bringing it back into the editor to replace the original asset.

There were also a handful of minor issues with various actor blueprints. Nothing major, but small things tends to build up to big problems, and when there are 1500+ of them, it a can be very difficult to figure out where the actual issue is if one should arise.


This week I took on reorganizing all Wwise Audio, improving existing audio, creating new audio for parts of the campaign that are missing, and prep the audio for future features such as Volume controls. I was also able to boost performance by setting a good portion of our audio to stream saving on a significant amount of memory use. The plan is to have this replace everything currently in place in Contagion VR: Outbreak by end of next week.


Weekly Haiku:

Zombies should not fly

But Eugene just flew away

Physics is so cruel!!!!

This week I’ve been focusing on bug fixing and performance on the zombie side, and working alongside Paul to knuckle down on the issues you have experienced with our undead buddies.  Some things of note are: much nerfed zombie range, no more “invisible unhittable zombie” which turned out to be a physics issue, more performance savings on the AI controller and movement code, fixed an issue that caused the riot zombie to be unkillable with melee weapons (if you were daring enough to try), and banished the flying/helicopter zombies from the game.



This week my focus has been on zombie animations. I’m sure most of you have noticed a few things wonky with the zombies. I’ve managed to condense the issues and my workflow for this week into the list below. Now the zombies should feel like zombies and not like philosophical pacifist zombies.

  • Optimization pass for Zombie Animation blueprints

  • Zombies will no longer stop to wonder about their life achievements instead of attacking

  • Fixed Zombie Movement Jitters (which broke their attack logic to attack with a single animation, will patch it ASAP)

  • Riot zombie now has a proper elevator sleep state and will wake up

  • Attacks will no longer cancel themselves mid animation

  • Fixed Zombie hips twisting before and after attack anims

  • Zombie attacks will be more reliable when hitting super short players