demo

Life after Kickstarter

By Alex Maier, writer of words

It’s been just over two years since we’ve concluded our Kickstarter campaign, without hitting our funding target. If I said that we were completely unfazed by this setback, I’d be lying, but despite the disappointment we decided to continue on with the project anyway.

As the new demo and early access are drawing closer, I felt a bit nostalgic, so I began to compare our actual progress to the goals we set out to hit two years ago. And you know what? That made me feel good. Aside from having to push out our release dates, we’ve stayed largely on course.

Also, it helps to remind ourselves just how far we’ve come in those two years. So let me take you along for a trip down memory lane, beginning with the Kickstarter video.

First off, I gotta say, thank you Denis for kicking my butt to create our current logo, it is definitely better than what we had back then.

Spy DNA screenshot August 2016

Spy DNA screenshot August 2016

Spy DNA screenshot, August 2018

Spy DNA screenshot, August 2018

We’ve also improved the UI to make it look more like a sci-fi game. Gone are the sharp rectangles and mostly gray-on-gray elements, but on a deeper level, we’ve also streamlined the way our players interact with the game.

Lab tech Oxalana Guy before and after

Lab tech Oxalana Guy before and after

But one of the changes most noticeable to me are our new character models, unique guns, and the look of the in-game world. Then there are things like large landscapes with literal thousands of trees on them rendered at high FPS rates, and level loading times of 10-15 seconds. In our playthrough video, you can see how quickly a 1 x 1 km map loads.

Now, let’s look at the game we’ve promised to you when we launched that Kickstarter campaign, and how we did on each point.

Super-realistic combat and AI make you feel like a real super-spy on a mission
If you watch our latest mission playthrough demo, you’ll see the realism in action, and in a little bit of time, you’ll be able to try it out yourself when we release the new demo

Realistic weapons behaviour, aiming, and cover
We account for character stats, time spent aiming and recoil when calculating shot accuracy, and we take projectile velocity and total energy plus aerodynamic drag when calculating damage. We use actual line of sight for determining which parts of the target are in cover and which can be seen and shot at.

He's got his heart in the right place, so you can aim for it

He's got his heart in the right place, so you can aim for it

Hit points replaced with anatomical damage
We’ve got per-polygon collisions enabled for characters, so we know where they get hit, and if the bullet has been stopped by cover or armor. We’ve additionally filled our character models with collision primitives that represent different organs and parts of the skeleton, and base the actual physical consequences of getting shot on what parts have been hit.

Dynamic turn duration based on character stats; turns execute at the same time
Yep. Got that one.

Immersive story and deep branched dialog
Okay, you’ll have to basically take me at my word on this one, but that 200-page script that I was showing off in the KS vid is still alive and kicking. It's been expanded quite a bit, and we’ve added Lua scripting support to the dialog, to make the conversations have real effect on the game.

Rich character attributes and skills allow you to create and play a character based on your own play style
While some games try to simplify everything down to just a couple stats that have to stand in for a bunch of marginally-related skill checks, we’ve gone the opposite way, providing the detail and granularity to help the player have a clear understanding of what their characters are good at.

Character creation August 2016

Character creation August 2016

Character creation, August 2018

Character creation, August 2018

High tactical flexibility creates replay value
When we wrote this sentence, what we had in mind were static, hand-made levels where only the NPC placement and their actions would vary on each playthrough. Today, we’ve taken this idea much farther: to generating all the levels procedurally, based on mission scenarios that we create in our Editor tool. In today’s version of Spy DNA, you will have a different map each time you replay a given scenario/mission, and the mission objectives won’t alway be in the same spots, so you have to approach each mission individually.

Gratuitous picture of two Spy DNA agents shooting the same target at the same time

Gratuitous picture of two Spy DNA agents shooting the same target at the same time

As you play, you will encounter two types of scenarios: storyline missions and side quests. The storyline missions will be required for you to complete the story arc, while the side quests are one-off missions that you can take (or leave) between storyline ones. Storyline missions will feature unique dialogs and allow you to develop relationships with the members of your squad, who we’ve made as different from each other while still being useful for the team, as we could.

Side quests will be based on several different scenarios, which, coupled with a unique map generated each time the scenario comes up in your intelligence screen, will provide you with hours of challenging levels to beat.

arps-objective-window.PNG

The demo will ship with only a handful of scenarios and none of the storyline missions, but you’ll see the first few story-arc levels in the early access release.

In addition, we’ve also built a few things from the stretch goal list: guns that you can customize in-game, and recorded voice-over “barks” for our squad.

So while we’re going to be shipping the game quite a bit later than originally planned, we’ll be shipping the game we promised we would, and in some aspects, it will even be a better game than we ourselves could anticipate back in 2016.

Let me wrap up here before I pat ourselves on the back too much. Please subscribe to our newsletter and follow us on social media to make sure you know when that demo will be ready for you to download and try out.

New demo update

We hit an important milestone a few days ago: Now we can play missions all the way though, which starts when a mission is generated at the base, continues to mission planning, infiltration and team selection, mission execution, and finally, return to base.

Here’s a video we made of the full mission sequence all the way through successful completion.

At this point, the development here at Shy Snake has shifted gears towards stabilizing and polishing the release. Here is a quick list of the top issues resolved this month:

1: Added grass and ground cover to generated maps
2: Addressed performance issues with having lots of trees on a map
3: Added the mini-map in the HUD (For the body-cam fans, don’t fret, it is still available)
4: Fog of war visualization on the map
5: Viewing characters when obstructed by building walls or roof
6: Loading times optimization

We’ve been optimizing our development for the end goal of shipping the Spy DNA game. So we have often delayed or skipped short-term objectives if they didn’t help to get us to the end goal. As a result we are a bit behind on the playtest, but pretty much on schedule for the demo and early access.

BugTrackerCapture.PNG

Here’s a view of our internal bug tracker:

Let me explain what these milestones mean to us.

First playtest:
At this point we feel the game is mechanically complete. The core player experience is in place and should give the player a good representation of what to expect in the final product.

First demo:
Everything in the playtest with more mission and character progression. Save/Load must be robust and the base fully functional.

Early access:
Everything in the demo plus access to the full party. The first chapter of the story line has to be playable and several side quests need to be finished. A lot of the bugs in the 0.4 bucket are not necessary for 0.4, we just haven’t created the 0.5 bucket yet.

During early access we will be adding content and polishing the animation and AI systems along with fixing any issues that come up.

We had a few bloopers getting ready to record the video. In one case, I wanted to make sure when a character went down they dropped their weapon. But I forgot to mark the weapon dropped in one case and this happened.

Then while recording the playthough a few missions failed painfully early.

2018-09-01-karstens-nightmare.png

So with that I will leave it, and please enjoy the first public video of a full mission playthrough.

Demo prep

We are getting ready for the demo. Today we made a new video from the latest build. This is the first time we’ve shown a play-though from character creation to combat. We’ve been focused on playability over the last few weeks, so we’re fixing lots and lots of smaller issues.

The big task was working through issues with load and save of games. Because the demo takes you through character creation before you can start taking sample missions, we wanted players to be able to save a character they generated. We also implemented a loading screen while working on load game. We hope these additions make the demo more enjoyable for players.

Another significant change from our previous videos is an updated camera system. While watching people play, we found players used three camera positions frequently. So we added direct support for the most common camera uses. 

  • A low camera which shows things from the view of the character
  • A high camera which shows the tactical situation
  • A target camera which flies the camera over to the active target
  • And we still have “free” camera so the player can move it around as they desire

For the low and high camera they save the player's view height and angle so if you switch away and come back you won’t have to reset the camera each time.

We also implemented a compass; it shows which way the character is facing. More interestingly, we also added contact ticks to the compass. So you can see which way contacts are relative to your active character. Also you can click them to fly the camera over to any contact.

The map generation has been heavily tested and we have recently implemented a number of performance enhancements. Currently the large maps can strain some mid-range systems so we put some effort into improving performance. There is more to be done, but we got a very nice performance bump for the demo.

For the playable characters we doubled the number of commander appearances available for the demo. There are two male and two female commanders to choose from, each with their three outfits depending on mission. There will be many more for the shipping game.

The demo will also include default genetic enhancements for all the playable characters. You will get to see a small example of the enhancements in action. In the shipping game you will be able to select and choose how your commander is enhanced to mirror your play style.

We implemented new shaders for the trees, firing range, roof of the base, and a few other items. This was done to make them more friendly to the camera so they cut or blur away so you can continue to see the most important parts of the map.

The status screen has been updated to show not only injuries, but also attacks which were stopped by armor or implants. You can mouse over any hit and see the force and type of attack along with how much of it any armor you may have stopped. 

Movement was reviewed. and walk, jog, and sprint speeds were double checked for the demo. We spent a bit of time graphing the various movement speeds vs attributes. These are the base speeds with zero encumbrance.

Walk speed graph

Walk speed graph

Jog speed graph

Jog speed graph

Sprint speed graph

Sprint speed graph

The jog (max sustained movement speed) graph is 3D because it’s based off both quickness and stamina. This was triggered when we picked up a few too many weapons at the firing range and unintentionally tested our encumbrance system.

Barring any unexpected problems we expect to have the demo out this month. Stay tuned!

Demo Complete!

We finished putting the final touches on the demo and are sending it out to a few testers tonight.  Once they have had a chance to play with it and we address any issues, we will send it to a wider list.

We have also decided to make the demo available to anyone that has backed our Kickstarter campaign at Beta or higher.  I.e. those that wanted an early look and were willing to put up with the limitations of early builds.  It’s around 1.4Gb for the two demo levels.  

One of the good side effects of working on the demo is it forced us to address some long standing bugs that we had been putting off.  

Examples:

  • Write a manual
  • Add objectives to the maps
  • Sort the dialog answers so “goodbye” was always at the bottom
  • Put the status indicator over the character portraits
  • Assign skills to the NPCs

We also added the end of mission screen which includes the status of the objectives, the party, and some statistics about the equipment used.

We also added an “event cam” to the game.  It’s purpose is to highlight important events to make sure the player is fully aware of what is happening in the game.  We will add settings for the final product so players can customize which events are highlighted.  

Changes of note:

  • Added check marks to objective list

  • Made movement modes available to AI waypaths

  • Maps can now specify if the characters start with a weapon equipped

  • Hide shooter weapon in gunsight cam to avoid possibility that weapon would block view

  • Fixed bullet trails and sounds for some weapons

  • Enabled event cam for kill shots

  • Fixed AI bug that cause NPCs to sometimes empty the clip into a already down character

  • Taught AI to reload

  • Added medium and heavy combat armor

  • Fixed icons for armor

  • Tweaked ROF for a few rifles

  • Added new pistol models

  • Added descriptions to armor

  • Fixed bugs applying armor to hits

  • Added keyboard shortcut for previous and next target visible to selected character

  • Replaced generic sounds with per-character sounds

  • Removed occlusion check for muzzle flashes.  Was causing flicker.

  • Greyed character portrait when stunned, unconscious, or dead

  • Set skills for all NPCs on demo maps

  • Replaced placeholder NPC models with correct models

  • Fixed bug causing turns for unconscious characters.

  • Reviewed max-texture sizes for small objects

  • Added post-mission summary and stats screen

  • Fixed bug with default aim point after a melee attack

  • Updated 3D queue overlay to fix bug with stuck targeting line

  • Fixed gun empty sound

  • Hide contact counts when character is unconscious or dead

  • Added sorting support to dialog answers

  • Changed default to show long answers rather than short summary

  • Fixed cursor hitbox for hud to resolve small dead-space area

  • Added skill check for spotting and rate limit spot checks

Demo development update

This is Jason with a long[ish] update on our progress towards demos. We have been hard at work getting a demo ready. I wanted to give everyone a feel for what it’s like to develop a game with a small team.

AI 

Shipping a demo with combat requires the AI to behave in a reasonable way. Up to this point they have been heavily scripted, but to make a more interactive demo we have accelerated implementing a few things related to perception and reaction to threats. 

  • We now simulate “a quick glance”. If a character hears a noise and the source of the noise is in their line of sight but not field of view, they now have a chance to also visually detect and evaluate the source. 
  • We revised “contact tracking”. Previously the fog of war system was too aggressive hiding characters within the line of sight but out of field of view. Now you can track due to sound and neutral and friendly contacts are retained for longer. 
  • NPC AI now has separate tactics and actions. This allows them to return to their previous actions when interrupted and make better choices about when to take an interrupt vs continue what they were doing. 
  • AI commands can now be issued from the dialog scripting language. This was a temporary regression from switching to the new dialog editing software. 
  • Changed vision markers to appear if any party member has contact with enemy, not just selected character. 

Dialog 

Alex has been entering all the dialog for the demo and initial levels. This has exposed a few issues during testing and we have been fixing those as they pop up. 

  • Scripts can now be attached to any dialog node. Previously they only worked on player answers. 
  • Added support for N-way conversations. Previously dialogs could only be between the player and one NPC. 
  • Some sequences would cause the wrong portrait to be displayed in the chat. This has been fixed. 
  • Added scripting command to make a NPC face an object. 
  • Added scripting command to play a specific animation. 
  • Added item list to instruction nodes to allow item transfers between NPCs and player inventory. 
  • Characters now play a conversation animation while talking. 
  • [todo] Add sorting option to answers Fixed bug where NPC could interrupt an existing chat to start a new one. 

Objectives 

The game has always had a plan to present the player with specific mission objectives. We decided to pull this in [schedule wise] for the demo. So about three days ago I started implementing the objective screen. 

  • Implemented an Objectives tab in the character screen. 
  • Added a place to edit the objective list in the UE4 level editor. 
  • Linked the text descriptions to the description objects in the dialog editor. 
  • Added C++ code to track progress of objectives. 
  • Added C++ code to display objective state changes (complete or failed) to player log. 
  • Added objectives to test map and played though. 
  • Fixed bugs resulting from above additions. 
  • [todo] UI cleanup of objectives screen. Display check or X for pass and fail. 

Maps 

Alex has also been cleaning up the base map for the demo. We should have done this one earlier because the improvement in graphical quality have been huge. 

  • Review post-processing settings for map. 
  • Reviewed lighting on map. Added descriptions to items, which will appear in-game as tool tips if you hover over an item. 
  • Fix some material issues where the materials were too metallic (too reflective). Floors are never clean enough to behave like a perfect mirror. 
  • Fixed window transparency to work with the fog of war. 
  • Added AI paths and tasks to NPCs on base map. 
  • Added lots of environmental items to make the map look more like a real office environment. 

Misc 

  • Fixed bug where weapons could fire in a wrong mode if the player used the default mode. 
  • Added contact counts to character portraits, showing how many friendly, neutral, and enemy NPCs a character perceives. 
  • Fixed bug with NPC movement that would sometimes use the wrong movement speed (e.g. walk instead of run). 
  • Fixed bug where movement animation would not stop when a character finished following another character. 
  • Moved item descriptions from in-game editor to external tool to support localization. And yes, we hope to have the resources to localize the game. 
  • Fixed character names getting corrupted in event log. 

I hope this gives everyone an idea what two weeks of development here at Shy Snake look like. We operate at a higher than normal velocity and want our backers to know about the progress we’ve made. 

Kickstarter update 3: Homebrew arcade

Folks, we're currently on Kickstarter, and sharing a lot of our updates there. We'll be also sharing the updates here for your convenience. If you haven't yet, help us by making a pledgesharing our project on social media, or be daring and do both!

Yesterday we went to demo Spy DNA at the Homebrew Arcade event. The demo day was held at the AFK lounge in downtown San Jose.

We’ve had a great time showing off the progress we’ve made with Spy DNA, and watching people take it for a spin. It’s really exciting to share the project we’ve been working on for over a year with like-minded gamers who enjoy strategy RPGs.

Thank you everyone who stopped by, and special thanks to Terry and Angelo who made it all happen!