Development update July 2019

It’s been an exciting month of June here at Shy Snake. We are doing a lot of testing now to make sure the game runs smoothly for players. We made good progress, so let’s get to the specifics.


We are continuing work on the NPC AI system in the game. They now evaluate cover and will take cover if they need to. The AI evaluates cover based on where the PCs are, and only PCs it knows about are considered. So if you have a hidden sniper, you may be able to drive an NPC into their field of fire. Now, once you spring the trap, the others may choose cover more wisely.

Screenshot of cover points. The size of the red dots shows how good the AI thinks a given cover is.

Screenshot of cover points. The size of the red dots shows how good the AI thinks a given cover is.


We made another set of revisions to the gunsight. We made it larger, because when it’s open the rest of the HUD and other game UI is inaccessible, so there’s no reason to keep the gunsight small. This also provided room to add the various attack modes we were planning. Not all of these are implemented yet, but you can see buttons to select the six different types of attacks. Changing an attack mode will change the controls on the right-hand side to reflect the options available in that attack mode. In some cases, this will also change the aim point shape.

For instance, selecting “aim” will remove the controls to select the number of shots and will only show the maximum aim time circle. “Aim” is useful in situations when you want to max out your chance to hit on a target and be able to quickly fire with that increased chance to hit at a later time. Example, your sniper is positioned and aiming. If things go bad, they would get a quick shot at max aim to open the conflict.

Screenshot of the updated gunsight view. The buttons on the left are: aim, hip shot, aimed shot, area fire, overwatch, and suppression fire

Screenshot of the updated gunsight view. The buttons on the left are: aim, hip shot, aimed shot, area fire, overwatch, and suppression fire

Player base changes

The base has been moved to a generated map. The building and everything the player interacts with remain unchanged. However, this allows us to split up the base map so each function is better served and most importantly, dramatically reduce load times.

Map layout improvement

Our generated maps have gone through some iterative refinements to improve how we place buildings. They are now better form more realistic groups. In addition the new code is much more robust when placing buildings on smaller maps. This lets us avoid generating extra large maps for missions that don’t require it. AKA, take place mostly indoors.

2D UI improvements

We have cleaned up a number of issues in the UI. The graphs for movement and weapons have been cleaned up and updated to match the rest of the UI style. In addition we have updated several of the UI assets for a more consistent UI feel.

3D UI changes

For markers in game we have switched from the old 3D meshes above a character’s head to using 2D sprites. We now clip the position of markers to the edge of the screen so you can see at a glance which way you would need to pan the screen if you want to look at the marked object.

Internal cleanup & testing

Markers along edges of the screen show where the marked objects and characters are in relation to current camera view

Markers along edges of the screen show where the marked objects and characters are in relation to current camera view

We have done a lot of code cleanup to bring stuff that was written in the early days of Spy DNA development in sync with the latest changes. We also created targeted testing maps for several game mechanics and underlying components. This allows us to verify changes more quickly, plus the simple tests also act as good examples of how to use the mechanics.

Thanks for reading, hopefully this gives you an idea of the progress we have made.

Training in Spy DNA

by Alex Maier, your virtual training guide

In Spy DNA, player characters improve their skills by using them out in the field. However, trying to learn to disarm an explosive trap with a skill of zero may not give a squad member much of a chance to learn anything. So to help with that, the Spy DNA base has virtual reality training stations that allow player characters to hone their skills without risking their life and limb, or their freedom for that matter.

Spy DNA (64-bit DebugGame PCD3D_SM5)  2019-05-30 17_47_00.png

All party members as well as the Commander will be able to use VR training to learn new skills or get better at the ones they already possess. The rate of improvement will be comparable to improving your skills in the field, with the same hyperbolic learning curve, meaning that it’ll be fairly easy to go from skill level zero to five or ten, but going from 40 to 41 will require multiple times that much practice.

While at the base, you will be able to assign your squad members to training, which they will complete in the time they spend at the base. Their training will be halted while they are out on a mission, but will resume upon their return.

Spy DNA (64-bit DebugGame PCD3D_SM5)  2019-05-30 17_54_50.png

The team status screen will show which characters have been assigned to complete a particular skill training.

In case of the Commander needing to learn or improve a skill that is critical for game progression, you can have your character use the training stations to launch a VR training scenario, such as lock picking, alarms and traps disarming, target practice, or combat simulation. Imagine your trap disarming specialist having a particularly Bad Day™, and now someone else will have to learn to do their job.

Some of the simpler training scenarios, such as lock picking or basic gun training, will primarily serve as a player tutorial, or to help you overcome a difficulty spike, but others, more complex ones that mimic the gameplay loop, will be enjoyable in their own right, and we see players using them more than once to try out new tactics without risking their health.

Some scenarios such as the combat sim, will allow the Commander to take some of the squad members with them.

Spy DNA (64-bit DebugGame PCD3D_SM5)  2019-05-30 17_29_11.png

After the training session is over, the Commander (and the squad mates who were in it as well) will get to keep all the experience gained, with none of the injuries! Now ain’t that a sweet deal?

The demo release will include some training scenarios for you to try out, but more will be included in the full version, to cover all the skills available on the character sheet.

Gameplay and difficulty settings

by Jason Sams, lead developer

This month I’d like to show how players will be able to customize their gameplay experience when starting a new game. We previously showed the character customization screens for new games, and now we can show the first draft of the gameplay and difficulty screens.

First I want to talk about how we handle PC deaths on a mission. A death of the commander will always be a game-over event, where you will have to reload from a save (unless in Ironman mode, in which case the saves will be destroyed when Commander dies).

For the remaining members of the party, we’ll be implementing three options. The first (already done) is permanent PC death. This means that if a player character dies on a mission, they are lost for the remainder of the game. Now this may be considered very harsh by some players, so we will have two less severe options.

Spy DNA (64-bit DebugGame PCD3D_SM5)  2019-05-30 16_44_20.png

The first is cloning. If a character dies on a mission, they are lost for the remainder of the mission, but once you return to base, their clone will be thawed and they may continue on, sans any experience from that last mission.

The third option replaces death with being critically wounded. The PC can be rendered unconscious on a mission, but will recover once you return to base.

Next thing I want to talk about is the ability to adjust the randomness of skill and attribute checks. This will impact things such as lock picking, disarming traps, charisma checks, etc. We will give the player the ability to adjust the “fuzziness” of these checks. At one extreme, full deterministic, if your skill is greater than the check difficulty you always succeed, if it’s less you always fail. At the other extreme, skill checks are highly randomized, and luck and skill will have roughly equal weight.

The remaining gameplay options are about the type of missions you will be given, and the amount of time you’ll have to complete them. For non-storyline missions we have a pool of mission types available at any point. The sliders for mission intensity and map size will bias the selection from that pool, so the side-quest mission you see will be weighted towards the mission types you prefer.

Now for difficulty, we have talked about Spy DNA being a combat simulation. We want to maintain that feeling on both the difficult and easy modes. We do this by not altering the basic combat system, or adjusting the enemy AI. Instead we can adjust the strength of the player and the enemies.

Spy DNA (64-bit DebugGame PCD3D_SM5)  2019-05-30 16_45_19.png

For player characters, we allow some change in toughness. We do this by altering the strength of the genetic enhancements the character receives.

We also provide an adjustment for the starting skills and skill learning rate. Effectively this acts as an XP multiplier allowing the players to progress more or less quickly. The effect of both of these will be minor.

The last thing that affects the PCs is a “bad luck” adjustment. We give the player the ability to curtail random catastrophic events in combat. We do this because with a true combat sim, a bad luck event, such as getting shot in the head, is usually lethal. This will have three settings, “no one-shot kills,” each PC gets one exception per mission, and realistic.

The final knob we have for adjusting the difficulty is similar to the player options, but applied to the NPCs. You will have the option to adjust how good of equipment the NPCs get, both armor and weapons-wise, and how skilled they are.

We feel these difficulty settings will work better with our mission design, instead of adding more enemies or trying to vary the intelligence of the enemy AI.

Next month, luck pending, we will have another gameplay loop video. We want to re-play the same mission we showed before with all the progress we’ve made on map generation, AI, and attack types.

Procedural maps in Spy DNA Pt. 2: A peek under the hood

by Jason Sams, Lead Developer

I wanted to talk a bit about how we’re generating mission maps. A few days ago, Alex showed some of the visual results, and now I’m going to share some details on how we generate those maps.

In the past we would generate a map when loading it. This meant that if you took a mission at the base, saved the game, and then went on the mission, you might see a different map if you reloaded your game and tried the mission again. With the new code the map is fully generated up-front, so if you want to replay a mission, the map will not change when you reload. This was also an important step as we work towards supporting saving mid-mission.

Several things need to happen when generating a new map. Anyone who wants to create a custom mission for Spy DNA will want to understand how we do this in order to be able to create a map description in the mission editor that fits the scenario they had in mind.

1: We start by generating the terrain height map based on the size of the map, the amount of hills specified, and the roughness of the map

Mission editor “Map” tab has all the options needed to generate the mission map

Mission editor “Map” tab has all the options needed to generate the mission map

2: We place the main roads (if any) based on the map settings

3: We divide the map up into blocks. The size of the blocks depends on the setting (Ex: Urban, Suburban, etc)

4: We place the locations specified in the mission. These may require placement of buildings or other items. If buildings are placed, the blocks in which they are placed will be zoned (commercial, residential, industrial) to match the type of buildings being placed.

Mission editor “Gameplay” tab has all the elements of the mission, such as NPCs, key locations, and objectives

Mission editor “Gameplay” tab has all the elements of the mission, such as NPCs, key locations, and objectives

5: We fill in the map with “decor” buildings. They provide cover, hiding places, and also enhance the overall look of the map

6: Secondary roads are added

Debug snapshot of a map in process of being generated, with roads placed and plots zoned

Debug snapshot of a map in process of being generated, with roads placed and plots zoned

7: Map decor is added. These are things such as trees, grass, street signs, and other things you expect to see in the setting

At this point, steps 1-5 in the map generation are fully implemented. Step 7 is also partially done, and we will be adding the decor you expect to see along roads soon.

At this point the maps are complete for going to early access. The cosmetic Steps 6 and 7 will be refined during the early access period.

The next update will talk about the progress we are making with AI and dealing with larger numbers of NPCs on the map. Thanks for reading.

Procedural maps in Spy DNA

Procedural map generation isn’t just terrain, it’s also placing all the things that go on top of the terrain. This includes vegetation (got that one covered) but also roads, buildings, and locations for NPCs and objectives (more about them in a second).

At this point, our game can generate a terrain up to 2x2k meters, and more or less cover it with trees,bushes, and grasses. We’re talking literal thousands of them per square kilometer, with wind animation, and for trees also collision, so they can be used for cover.

Arps - Unreal Editor 2019-04-29 12_47_16 (2).png

But we thought our players would like to do a bit more than just run around in the woods each mission, so we added buildings.

That in turn means, taking another pass at the terrain and smoothing it under buildings, and removing vegetation on each plot designated for a building, because having a Douglas fir in the middle of your living room isn’t everyone’s taste. Also, having to go through literal bushes on the way to the bathroom may be a bit much to ask, even of an NPC.

Additionally, we have to make sure that the locations defined in the mission are all placed on the map in a way that makes the mission flow better for the player. The “location” in this context means anything from a building where the objectives are (item to be retrieved, hostage to be saved, etc.), to a place on the map where the player starts, or an item for the player to pick up.

Over the past weeks, Jason’s been working on improving the code that interprets the mission description from our Editor tool, and generates a level from that. Now we have the ability to place locations within a certain distance from another location, to make sure that things that need to be close together stay that way, such as office buildings on a campus for example.

Another thing we can do now is group buildings by type, so that if we’ve got some residential houses and some industrial buildings, they will be placed on different blocks of the map, like one would expect. Jason implemented a sort of “zoning code” for the map generation, so that a block can be zoned residential, commercial, etc. and only the buildings suited for that zone can be placed there.

Locations that are most important for the mission must be placed on the map, while filler buildings can be optional. This is why we spawn our locations in order, according to what Alex has set in the Editor. This way we can be sure that locations such as the building where the objective is hidden, or the extraction vehicle you need to reach to escape the enemies, are placed on the map before a filler building that’s only there to make the map look good.

Here’s an example sequence of a map being generated. The code creates a bitmap after each location is created, to help us debug it if something doesn’t look right. So we thought we’d share these images with you to illustrate the process.


Here the most important location is placed on the map right at the start. This is the parking garage where an illegal deal is happening. The area around it is zoned commercial, shown in blue.


Now we’re placing a restaurant on the same block with the parking garage, where some NPCs will be spawned after the map is all done.


Next, a residential block across the street is created, and the first house placed there. It’s a small house, so it gets a small lot.


Skipping a few steps ahead, you’ll see another couple commercial buildings placed in the commercial block, and another house in the residential. And so it goes, you get the idea.

As Jason continues working on this code, we’ll be adding more decoration to the maps, things such as road signs and street lights and so on, to add visual interest to our levels, so stay tuned!

The future has rounded corners

by Alex Maier, a literal rounded rectangle

As Early Access release draws closer, we’re beginning to think of generating some exciting visuals to help get people interested in our game.

We’re proud of how far we’ve come with our simulation and visualization of what your characters can perceive and do in the world around them. At the same time, we’re aware that the game needs some visual polish before it’s ready to be shared with an external audience.

So Alex went to town to sci-fi up the look of Spy DNA world.

Some of the things that were “futurized” include:

  • Rounded sci-fi looking windows

  • Glowing details on furniture and equipment

  • Futuristic doors and wall materials

  • Futuristic (or at least very modern-looking) furniture

Additionally, materials on interior decorations have been modified to have a similar color palette, to give each level a unified look.

Here’s a gallery of screenshots taken today to show you some of these improvements. Let us know what you think!

Spotting and senses

by Jason Sams, Lead Developer

Let’s talk about spotting and senses in Spy DNA.

In any game where stealth is a factor, you also need to consider detection. We just finished some improvements for a mission. I don’t want to spoil the mission, but I can talk about the improvements to the spotting system.

In Spy DNA we have three senses, visual, sound, and smell. Each of these has their own set of rules. A character has attributes for each, so it’s possible for them to be very good at one, while poor at others. We also have a skill for observation, I’ll go over how they work together in a bit.

Let’s start with vision because you will need a visual detection of a target before you can evaluate or attack it. Vision controls whether we render an NPC, so if no member of your party has visual contact with an NPC, you will not see it in game.

Here is a list of some of the things that factor into visual detection of an NPC.

  • Distance to the target: farther things are harder to spot.

  • Senses: eye attribute of the spotting character.

  • Lighting conditions: bright light will make something easier to spot, darkness makes it harder.

  • Movement of the target: moving objects are easier to spot. We also factor in movement speed.

  • Movement of the spotter: if the spotting character is moving it will make spotting things more difficult. We use a different curve here vs the target speed because movement affects both differently.

  • The clothing of the target being spotted: camouflage makes one harder to spot. Ex

  • Genetic enhancements of the spotter will make detection easier. The “Eye Resolution” enhancement will make it easier to spot objects at longer ranges, while the IR enhancement will reduce the effectiveness of darkness, camo, or the stealth skill.

  • Stealth: knowing how to blend in with the environment is a skill

  • Observation skill

You might ask what the difference is between a characters eyesight attribute and their observation skill.

When we calculate the chance to spot, we do two separate calculations. First we calculate the strength of the signal. That is the physical question of can the character actually see target. This is basically an eye-chart test. Then we factor in the difficulty due to the environment such as lighting, movement, stealth skill, and we combine this with the spotters skill. So we have two numbers, can the character see the target, and how hard is it to pick it out of the noise. We combine those into one number representing the percentage chance to detect the character and run the check.

I should also note that spotting is continuous. Failing the first check does not mean you will never spot something. Your character will continue to try to spot a target as long as they remain in their field of view.

We treat sound in a similar way to vision. There are a few important distinctions. Detecting a sound will not tell you where the source of that sound was, only the direction it came from. We also have different enhancements to improve a character’s hearing. Sounds will also tend to be impulses. Meaning the detection isn’t continuous but done each time the target makes a sound (footstep, uses an object, fires a weapon, etc.).

Smell is different than the other two. In general it won’t be used to detect an NPC, but rather environmental hazards. Another difference is, it will need time to propagate. So if a bad guy cuts the gas line, it will need some time before it’s detectable at a distance.

We are proud of the results of our detection systems. While not every single one of the genetic modifications and senses will be fully implemented in the Early Access, you should get a pretty good idea of how detailed and realistic our simulation is.

Character creation in Spy DNA

by Jason Sams, Lead Developer

When you download and start to play Spy DNA, one of the first experiences you will have is creating your character. We want to make a good first impression, so we’ve spent some time making the new game experience look and feel more like the rest of the game.

Here is a screenshot from the updated “New Game” screen.

Spy DNA (64-bit Development PCD3D_SM5)  2019-01-30 16_07_33.png

You can compare this to the old “New Game” screen.


We have split the new game options across multiple pages to allow for us to describe what effects on your game experience each of the choices will have. It will also gives us more room to put in more options for gameplay customization and difficulty options.

As you make your choices, the next page becomes available.

Here you can see the gameplay effects that will occur based on changing how a character looks. The choices here are merged with the choices you later make going though the character personality questionnaire. We don’t show raw +/- value at this stage, because the values are not simply added. We tried this, but found we needed an additional step to combine the values that would produce more human-like results.

We combine the choices in a way that preserves your ranking. So whatever values you prioritized will continue to be your strongest attributes. What we add is a rounding of the character. So for example if you made a character that focused on strength, you will also get smaller buffs to other strength related attributes such as stamina and quickness.

We will have screenshots of the gameplay and difficulty options in future update. Right now they are still undergoing some changes.

Please let us know what your think of the new UI look for the new game screen.