update

Shy Snake’s got their hands full

snake with tools

We’re working on a few things here, one is almost done, and the others will follow soon after.

Thing One is one of those quick changes that turn out really big and involved. The idea was to switch out the scripting language we used in missions and dialog flows to help Alex write and debug missions quicker.

If you ever did a DIY project of your own, you know that sometimes, you open things up and go, “Well, while we’re in here, might as well do that other thing I was meaning to do.” And soon you have a disassembled motor on your dining room table and tools on every available surface, and there’s no turning back, just through. So, good news, we’re almost at the point where the motor goes back in. Jason will write up a blog post about that soon. Once the motor is in, that is.

As soon as the motor is back in and running, we’ll push an update to the Beta channel on Steam. You should see some stability and performance improvements from that. The maps should load quicker, for example.

Now Thing Two is directly tied to that first bit. While Jason’s been working on pulling things apart and putting them back together again, Alex was using the new scripting language to create new missions, which are now just waiting for a bit of testing and polish before they can be added to the game for you to play. That bit will come a little while after Thing One is up on Steam.

So stay tuned, and we’ll have a new shiny version for you to play with soon.

Maps in Spy DNA

By Jason Sams, Lead Developer

We have been hard at work making the maps in Spy DNA look and perform better. We had a few objectives for improvements in our maps:

  1. make the maps look better
  2. increase the size of the maps
  3. decrease level load times
  4. provide a mini-map
  5. include area maps for mission planning stage

The first major change we made was to increase the amount of decor on the maps. In spy DNA decor items (trees, rocks, signs, roads, etc) serve both to make the map visually interesting, but they also give the player and NPCs cover.

We have also increased the size of the maps. When we tested the various maps, we noticed that the buildings that were necessary for the mission were occupying too much of the area, causing the player to start near the building and so limiting the choice of approach.

This was happening on the small maps, usually 256 x 256 meter in size and smaller. So we have scrapped the sub 256-meter maps and most missions will now default to a 512 m or 1 km map. Some missions will now default to 2 km. 

Those of you that have played the demo might be wondering about the load times on the large maps. We have overhauled the code that generates the map which has greatly reduced the time it takes to load a map. Now the 1 km maps load about as fast as the old 256 m maps and there is no longer a significant difference on load times on maps smaller than 1 km. Even the 2 km maps are now loading in under 30 seconds.

The new code is split into two sections. There is the map itself, and now the Unreal Engine visualization of the map is separate from that. This allows us to do something neat: We can now show the map of the mission area during mission planning at the base. This has also opened up some new options for infiltration such as scouting options to identify points of interest on the map.

This same map is used for the mini-map during a mission. You see a lot of trees on the mini-map right now as we are stress-testing the system.

Because a map with this many trees would normally make it impossible to see your party, we will hide the leaves when you have the camera looking down. The vegetation will progressively fade away as the camera moves higher, resulting in a view like this.

This will let you keep tabs on your whole party and any NPCs that they can see. The fog of war will still apply and hide NPCs if no-one in your party has a line of sight.

That’s it for my update this month. I hope you have enjoyed the screen captures from the game. Next month we should have some video with live missions.

Getting ready for Early Access

It’s been a heads-down month here getting ready for early access. I’ll talk about what we are doing to go from demo to a full game. The transition from demo to full game for us has been about adding progression and content. 

The first big change is the result of a mission now affects your game. You can now also train your team at the base. Wounded characters will need some time to heal at the base before they are available for future missions. We’ve implemented the save game system and made the full character roster available. It’s all pretty obvious stuff, but it still needed to get done. 

While on mission, a character can advance their skills by using them in the field. On the skills page you will now see a count of how many times that skill has been used. Each use will improve the skill. 

The amount of the improvement will depend on several factors. First, each skill has associated attributes which govern how well your character can learn the skill. These are separate, though possibly overlapping, from the attributes which bias the ability to use the skill. For example “mental motivation” is a factor in learning most skills, however, it is used in few skill checks. These determine the character’s learning rate modifier for that skill. 

In addition each skill has a base learn rate to adjust for skills that are used frequently vs rarely. For example we don’t want to penalize hacking and lockpicking progress just because there are fewer chances to use the skill. 

Back at the base, skill training is a passive activity. You can assign each character two skills (primary and secondary) to train. Then as each day passes, any characters at the base that are healthy, will train those skills. So characters that are not taken on missions will still be making progress. A character that is not healthy may still make some progress. For example, a broken leg will prevent training physical skills, but would allow the character to keep working on mental skills. 

Injury recovery is similar to training at the base. A character will survive a mission as long as they are alive at the point when the “end mission” screen is triggered. In theory we can simulate post-mission death due to injury, but that would be an opt-in for extreme difficulty. Because we track each injury a character suffers, we do healing per-injury. Different injuries can heal at different rates. As they recover, they will automatically resume training as their health allows.

In the case of non-fatal injury to the Commander, if one or more other characters are available, you will be able to designate an acting commanding officer to cover the Commander’s duties and lead the squad on missions until recovery. If no one is available, time will fast forward until the Commander recovers. 

For early access we also wanted to make the full character roster available. So in addition to Ivan, Karsten, Nuri, and Zoe from the demo, you will now have Alexey, Marguerite, Ronda, Shinichi, and Rustam. 

Saving and loading has been implemented. The game will now autosave after each mission at the base. For initial early access saving will be limited to while at base. We will implement saving while on mission later.

We also have been hard at work on the UI. We received a lot of feedback about the look and feel of the UI and have responded with some improvements. Functionally the location of the controls is largely unchanged. What we have done is softened the appearance of the buttons, borders, and dialogs, and replaced some of the radio buttons with icon based sliders that make it easier to visualize how the controls work together.

We published a video for those wanting to see more of the new UI.

One final change for realism and game ballance we’ve made, was to implement the penalties for attacking moving targets. Simply put, it’s harder to hit something that is moving than something that is still. The mechanic implements this is two ways. One, there is a penalty to the circular error probable (CEP) for any given aim time. Two, the moving target limits the amount of time that can be spent aiming. The strength of the penalty is based on how fast the target is crossing the character’s field of view and how far away they are.

The first batches of character voices have started to arrive. Each playable character will have an unique voice and persona which they will use to acknowledge your commands and give you status updates.

The last area of getting ready was the implementation of settings screens. We have made a pass over all the sound effects and broke them into channels so each can have its own volume control (music, ambient sounds, combat sound effects, player character voices). We have also started implementing the settings for difficulty and new game options. These will be exposed soon.

With all these changes, the core engine of Spy DNA is pretty much ready for early access. What we are finishing up now is getting enough of the missions ready that the game has some content to go with the engine. 


 

Kickstarter update 4: Stealth

Update from Jason

It’s been a busy week here at Shy Snake.  We just pushed the update to move Spy DNA to Unreal 4.12.  We were waiting until our demo at AFK was complete so as to not break anything right before it was time to show.

I’ve been 100% focused on AI.  One big part of AI is making the system respect stealth.  In Spy DNA we have a system that gives each character attributes for senses.  These, combined with the characters skills, will determine how likely a character is to detect a player.  

Sound:

Everything a player does can generate a noise.  Some things such as sneaking are quiet, while firing a gun would be loud.  The sounds will dissipate over distance and with obstacles.  The sound strength when it reaches the character is used to make a check against the character's ability to determine if they hear it.  If they do then they may react.  For the players, when your character hears a sound, we add a symbol with an arrow to indicate the direction of the sound. 

Sight:

Sight in Spy DNA serves two purposes.  First is to detect a character.  The second is to evaluate the character.  Being a spy will often place you in locations where you will not be overtly carrying weapons.  This means that in an area mixed with friendlies, enemies, and civilians, an enemy would both have to see you and then decide you are a threat.  This means checks against their ability to spot hidden weapons, provided you don’t have a rocket launcher on your back.  Anything in your inventory that could blow your cover is a risk for detection even if it’s not equipped.  Obviously not having something equipped does make it harder for them to detect it.  This creates an incentive to carry light and concealable weapons on many missions. 

The sight AI includes a cone of vision so the enemies have to look in the correct direction to see you. If they hear a noise they will turn to look, provided they're not doing something more important already. The AI also ranks everything it sees in terms of “potential threat.”  A civilian going about their normal business would register near zero.  One running and screaming would start to move the needle.

Smell:

This isn’t really used to detect enemies, but rather hazards.  Gas leak, smoke, or a specific perfume could all be clues or hazards.  


Alex has also been busy.  While I have been implementing stealth, she has been working to de-stealth Spy DNA and make sure the fans of thoughtful tactical games know about us.  If you know anyone that would be interested in Spy DNA, please give her a hand in getting the word out.