game

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

Jog 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!

Putting the RP in RPG

Those of you following our updates closely may have wondered just how much story and actual role-playing will we have in Spy DNA. Well, wonder no more.

We just purchased a dialog/script tool that will allow us to both visualize the existing dialog branches and stories, and to integrate them with the game. The tool is called Articy:draft, and so far, we’ve been quite impressed with what it can do.

Aside from offering a handy way to keep track of all the characters, locations, and dialog lines, the tool integrates with our existing source control (big plus!) and with Unreal Engine. Once we’ve got that configured, we’ll be able to assign dialog directly to the characters, wherever they pop up in the game.

As is the Shy Snake tradition, we’re already planning some custom work in order to have the dialog have effect on NPC disposition and story line, and vice versa, have character skills and attributes as well as prior actions result in more (or fewer) dialog options when talking to NPCs.

Right now, I’m busy migrating the existing script from the ODS file into the Articy tool, and what I’m discovering is that the visualization makes it very clear where more dialog options can be added. Conversations without any branches or with only very few ones become immediately apparent once you lay them out like a flow chart.

So once all the dialog is in, I’ll be taking a second pass over it, adding more branches and optional outcomes, to make the role-playing aspect of the game match the combat in complexity and richness. How will I do it?

NPC disposition
Depending on where your behavior falls on the scary to nice spectrum, the NPCs you’re interacting with will like you more or less. The more they like you, the more information they will share, and the more readily will they comply with your requests. Not to say that you always have to be Miss Manners, because some NPCs may need scaring before they become cooperative, such as the baddies you take prisoner.

Skills and attributes
When you are talking with NPCs, you’ll find that your attributes and skills influence your dialog options as well as how convincing your character will be saying those lines. Going with your character’s strengths will mean having more successful conversations.

Going against your character’s “nature” may result in humorously bad outcomes. Not every character will be a natural at diplomacy and negotiation, so you can imagine that some conversations may not go as planned.

History
Things that your character already knows or places they’ve been will influence what dialog options they’ll have when talking to NPCs. Same goes for previous actions and acquired items.

All in all, my goal is to write enough dialog branches that you will not be able to explore them all in one play-through. You’ll have to create different characters and play a couple times to discover all the dialog options.

What do you like (or dislike) about dialog and story in games? When you play, do you try to exhaust every dialog branch or do you just click through the bare minimum so you can get back to fighting? Tell us below in the comments!

Kickstarter update 2: Combat visualization

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 pledge, sharing our project on social media, or be daring and do both!

It’s been a busy week as we get ready for a live demo at Homebrew Arcade.

We’re focusing on improving the visualization of combat. Now it’s easier to see where the shots are going with trails on the 3D map. We also implemented cover and missed shot handling so it’s been a productive week. Missed shots means if you miss the intended target, we still track the shot in case you hit something else interesting. 

This also reminds me to briefly mention how cover works. We showed in the video how when a target is obscured it is grayed out to make clear what’s in and out of your line of sight. If you fire, and hit the cover, it’s actually treated as armor. So you really want to hide behind something solid. A concrete wall is good cover, a cardboard box, not so much. 

Here is a short video clip showing “missed” shots being used to effect. I forgot to remove the debug logging where I was fixing some hit location code this week so ignore the text on the left.

Next week will be focused on AI.

Combat in Spy DNA

This is Jason with an update on the Spy DNA combat system.  We’ve been making some graphics and demo videos for our Kickstarter pitch, and I thought we should share some of them with you. In today’s post, I’ll start with our new gunsight, that we use for aiming, and then move on to the combat system.

In Spy DNA we have put a lot of thought into making combat feel as real as we can.  One of the areas that’s often disappointing in games is the critically important mechanism you use to attack the enemy. 

Most games assign a character a simple chance to hit, usually modified by range and cover.  We use a full 3D world instead.  To avoid the problems, such as identifying obstacles and cover, when aiming in the  top-down view, we open a gunsight view when you pick a target.  

Single shot firing sequence

The biggest thing we do differently is replace the “chance to hit” with “Circular error probable”.  The rings around your aim point represent the 50%, 90%, and 99% likelihood of your shot landing within those rings. 

You trade off time aiming for more accuracy in your shot.  You can adjust it to try to get the first shot off quickly, or take some time to make sure you hit. You can also adjust the number of shots, burst, or burst length.  

When using automatic fire, burst or full auto, recoil will reduce precision of later shots as recoil adds up.  For single shot and burst your character will re-aim so follow on shots meet the same accuracy requirement you set.

Our damage model is based on your weapon and where you hit the target, not on a random dice roll.  So you will be able to aim for weak spots in the armor or for vital parts of your target.  Cover is handled the same way.  The ability to move the target point around lets you aim for exposed parts of the target. 

Now let’s talk about how our combat system works. We call our system Concurrent Turn-Based.  I’ll explain what this means.  We differ from traditional turn-based games  in some important ways.  

Let me start with what we are trying to accomplish. 

  1. The player should have time to think and take in the battlefield and environment.  
  2. The moves available to the player should as close as possible mirror the options that  a real-life soldier would have.
  3. The results of actions should be be realistic.

After a lot of experimenting we have settled on a system where the game focuses on a character when it is their turn to start their next action.  So while combat is ongoing, the game engine cycles though characters as their turns come up.  In this way it feels like a traditional turn-based game.  There is one very important difference.  While the game is progressing to the next player turn, every character and object in the game moves.  

This was not a decision we took lightly.  We made this decision to avoid the time quantization problem that traditional turn-based games have.  Think of the frustration where near the end of the player turn you move a character and trip one or more enemies.  Now your character (or whole party) just sits there helpless while the enemy takes a turn (or full round) worth of actions.  This is a side effect of games trying to map combat to a mechanism that doesn’t exist on a battlefield.  

In Spy DNA we are trying a more direct simulation of the world.  The character that makes contact would actually have the initiative.  The characters that spots them would make a reaction time roll (based on their attributes and combat experience) to see how fast they can react.  Also because other characters in the player party may be mid-action, such as movement, you could cancel those long actions and give them a new task.

I made a short video where a character ambushes two unaware NPCs.  The action commands I give the game are:

  • Throw a grenade
  • Draw my pistol
  • Crouch
  • Aim and shoot to finish off the second target

About three seconds of game time actually elapses in this demo.

Compared to Turn Based games, we have two major differences.  The first is turns in Spy DNA are not uniform in size.  Turns come up as the character completes their previous command.  This means that fast actions such as firing a single shot will result in that character's turn coming up again quickly.  Slow actions such as moving a long distance will mean many other characters are likely to take their turns before coming back to that character. 

The second major difference is the turns progress concurrently, i.e. all at the same time.  So if you give a move order to one character, and a quick attack order to another,  each time the second character attacks you will see the first make some progress on their move order.  In effect, you will see time progress forward for everyone until one of your characters completes all the commands in their queue.

Should a character spot something needing your attention while they completing an command, the game will stop and focus on the character.  This allows you to react to things that come up mid action such as an enemy coming around a corner.  

I hope this gives everyone a feel for the type of gameplay we are trying to deliver.  

 

 

Characters and animation

We’re getting ready to go to Kickstarter with our game, to help us raise the money needed for the custom art, animations, and hopefully original music for Spy DNA. This means we’re making a new video to show off the progress we’ve made in the past couple of months.

One important improvement you’ll notice is that we’re using custom characters to replace the placeholders we got from the Unreal Engine asset store.

The cool thing about using custom characters is that we can make them look all different, use different body types, skin and hair colors, and of course different clothing.

Now the challenge with that is that once you stray from the Unreal Store, you need to rig up and animate the characters from scratch.

While we’re working on funding custom motion captures, we’re using some animations we purchased from mo-cap vendors with our characters.
We have (finally!) settled on an animation workflow for the project. We use Autodesk MotionBuilder for working with animations. This allows us to retarget an animation from one character to another. This is important because depending on the source of the character they may have a different skeleton, which makes the animations incompatible. This tool allows us to solve this problem.

Next, we get the animations into our project in Unreal Engine. That done, there is still a lot of work to do. The first step is selecting which animation to play for a character at any given time. At last count we have nearly 1,000 animations captured. Selecting the right one to play at any given time is complex enough we had to abandon the normal UE4 blueprint system and move most of the animation logic to C++. Once the system knows which animation is to be played, it may be necessary to slightly speed up or slow down the playback to match the speed of the specific character. 

It’s at this point that things start to get hard (as if it wasn’t hard enough already, heheh). So now that you have your base animation, you want to adjust it for the environment, so that a character's feet don’t go through the ground or hang in the air. Also you want the character to look and aim in the right direction. For these effects we are evaluating some middleware solutions (HumanIK, Morpheme, and IKinema). These provide tools for improving the interaction between the animation, character model, and the environment. In some cases they can also generate animations on the fly in response to environmental stimulus. A good example would be falling down stairs after dying.

In the process of getting it all to work, we get to watch many animations that look pretty funny. Do you have your favorite animation bloopers from a game you played? Share it with us in the comments.

GDC session highlight: Making a game fun for all kinds of players

There were so many awesome sessions going on at the GDC, it was hard to choose which ones to go to! Luckily, attendees get access to the recordings after the event, so we’re looking forward to watching the sessions we didn’t attend in person.

When beginning to write this post, I noticed that GDC team have made some of this year’s sessions available to watch for free on YouTube already. As they continue to add to the playlist, I will post the more relevant talks here with my comments.

Just how hard would you like your game to be?

Just how hard would you like your game to be?

One of the sessions GDC already published makes great points about building games that can be fun to play for a wide range of users. We wanted to link this video here for you and share our thoughts on how this relates to what we’re doing here with Spy DNA.

The two main takeaways from this talk for me are:

  • Ability to remap controls is not just nice; for some users, it’s critical to be able to play at all.

    Spy DNA is primarily targeting the PC market, and we’re planning to allow the player to use either mouse and keyboard, or the game controller to play. To make our game playable for people who can’t use the standard key mappings, we will include the ability for the users to remap their controls to suit their needs.
  • From “almost impossible to lose” to “almost impossible to win” is a sliding scale of difficulty, and many players would enjoy choices beyond just “easy” and “hard.”

    We are giving this one a lot of thought.  We want to avoid the temptation to take the easy way out and just make a the enemies stronger or more numerous.  Instead we are putting our effort into the most realistic version of the game.  This will be the hardest setting.  For players that do not enjoy the harshness of realistic combat, we will have a variety of options to make the game easier.  Examples would be accelerated healing for the PCs, starting with more skill points, or a reduction in the enemy's ability to land the most damaging shots. 

    We understand we are building a hard-core combat system that will be more challenging than most strategy games. However, once someone buys our game, it’s theirs to play, the way they want to.  So if limiting the enemy to low-power weapons is something you want to do, that will be your option.   

    This means that in Spy DNA, on one end of the continuum, there will be a full “ironman” mode, where you don’t get to reload, and only very few (if any) checkpoints. On the other end, there will be a super-easy mode, for people who either don’t have the ability to master the harder difficulty levels, or don’t play the game for the challenge.

    We don’t want to limit the difficulty settings to just Hard, Medium, and Easy. Instead, we’re aiming to offer our players many more points on the continuum to choose from, both to make Spy DNA appealing to players of all levels, and to provide a gradual difficulty increase for better replay value.

Anyways, that’s what we thought when we listened to this talk. Even if you don’t watch the whole video (or any of it), I hope we got the two main takeaways across. Use the comments below share your opinions.

Testing weapons at our virtual shooting range

As you've heard us say many times before: realism in combat is going to be the calling card of our new game, Spy DNA.

Of course, this means that we need the weapons to be as realistic as possible, so we built a kilometer-long virtual shooting range to test them in the world of our game. We brought some pistols and rifles to try out, and took some screen captions for your enjoyment.

To dial in the weapons, we used real-world data from target shooting competitions. For example, the current record holder at 1000 yards is Tom Sarver, who shot a 1.403 inch 5-shot group in 2007. So we took his group size for a base line when writing the code that determines where the bullets land at a given distance.

Tell us what you think in the comments!

The Crolimax report: December 2015

December is usually the time to kick back and slow down for the holidays, but not here at Shy Snake! We’ve been busy building Spy DNA, making new levels, models, and character behaviors.

In the weeks since our last update, we’ve focused on finishing the first draft of the game “screenplay,” AI, realistic damage, and additional weapons and forms of combat.

Story

As of today, we’ve cleared a major milestone: the first complete draft of the game script is finished!

Screen capture from a demo level

Screen capture from a demo level

What does this mean? That we’ve got the entire story arc outlined and every level that moves the story forward described in detail, with character dialogue and different action options.

The script is a little over 31,000 words long, and 190 pages at this point. We’ve got the game spanning four chapters, each chapter about fifteen levels long:

  1. Character creation and background
  2. Game premise introduction
  3. Investigation and pursuit of the bad guys
  4. Escalation to final boss fight

The game is focused around the protagonist (the character that you create and play throughout the game) uncovering an espionage plot and pursuing the evil guys across the world to prevent classified tech from falling into the hands of a rogue government.

As the story develops, complexity and battle intensity grow to continue challenging the player while their skills and attributes grow.

We’d love to tell you much more about it, but we don’t want to spoil the game for you, so the last bit we’d like to share is that we expect the script to grow by at least another 50 percent or more as we add deeper dialog trees and extra side quests. We can’t wait to share the game with you!

Level design

The script has 45 levels in it, give or take, which cover the main storyline from start to finish, and this number will only continue to grow as we add side quests. Each of these levels is a detailed 3D map living in the world of Spy DNA fifty years in the future, with landscapes, buildings, cars, and of course people!

Screen capture from the level design editor

Screen capture from the level design editor

Level design is what will take an enormous amount of time from today on, all the way to the beta release, after which we expect to focus on polish, and not add any more content.
If you wonder what level design looks like, here is a screen capture of Alex working on one of the early levels on the game, which takes place in an apartment complex.

The Crolimax secret base is going to be one of the maps that the player will return to after most missions, to both heal from any battle injuries as well as to receive intelligence reports and new genetic enhancements. This map is what we’ll be focusing on this week, before moving on to getting the character creation working. 

These three levels (character creation, Crolimax base, and the apartment complex) will become our first playable demo, which we’ll make available to a small group of players who we’ll look to for feedback and suggestions.

AI

A good Artificial Intelligence (AI) is critical if we want to make the game fun and challenging for players, whatever difficulty they choose. The AI will control both the enemies as well as neutral and friendly NPCs, and be able to adjust on the fly, based on the player’s actions and commands.

Getting the AI to do all the necessary things for the playable demo is another one of our main goals this month and next.

Combat

Of course, what would a strategy game be without combat? We’re getting to the point where we’re pretty happy with how our projectile weapons work, and are now switching gears to create a hand-to-hand combat system for those situations where you want to avoid attracting attention with gunfire, or just don’t want to shoot any civilians.

The villains are driven by the in-game AI, which makes them act in response to player actions

The villains are driven by the in-game AI, which makes them act in response to player actions

On a side note, the grenades also work now, and you can see how that looks in the level design screen capture that’s linked above. Now that we have grenades, adding destructible objects to the game is our next priority, because seeing things blow up is half the fun in throwing a grenade, right?

All in all, we’re quite happy with the progress we’ve made this month, and are looking forward to sharing more with you next year.

Happy New Year from Shy Snake!