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.  

 

 

Gearing up for Kickstarter

As you may have heard us say once or twice, we’re getting ready for our Kickstarter campaign. Our goal is to launch it in a couple of weeks (so stay tuned!), when all the parts are ready.

What are all the parts?

Well, we’re updating the UI (see Jason’s post), and making the user experience better and clearer overall. We’re improving our game’s fog of war, and of course continuing to work on game levels and artificial intelligence (AI).

Then of course there’s the work on the campaign itself. Before we launch it, we need to define the funding goal so that it’s not too little, not too much, just right. Then there’s the stretch goals, which are things that we would like to include in the final game, but can do without, if we don’t exceed the funding goal by a sufficient amount. There’s some math involved, and also some inspired guesses.

Funding levels and associated rewards packages are also a big deal. We’re trying hard to find things that people will find appealing, and which we can realistically fulfill on schedule. I hope you like what we’ve got in stock for you!

And finally, there’s the Kickstarter video. You all know it, that’s the thing at the top that gives you the project pitch and explains the team’s motivations. We’ve been working on that too. And just like with the other stuff, it’s also not all that simple.

While we know what inspires us, and why we think our game is awesome, we could talk about it for hours. And we did, in front of a camera, actually. And then we had to cut all this footage down to five minutes. Ouch.

At this point, we have a pretty good approximation for what will go into the video, but we’re still finishing some of the demo footage, and looking for ways to make the video a bit snappier still.

So here we are, so close to launching our project on Kickstarter, and here's a little sneak peek for you.

Spy DNA gets a UI update

Jason from Shy Snake here with some screenshots from our UI update. We’ve been working through our UI, going screen by screen, to make it easier on the eye. While doing this, we have kept our focus on presenting information clearly to the player.

First up the attribute screen. This posed a bit of a challenge for us because we have a larger than normal list of attributes. We chose to have many attributes, to give each character a unique feel. For example rather than simply making a “strong” character you can be quick, powerful, or have great stamina.

Each primary attribute has three sub-attributes within it, to give the character extra detail. For the players that don’t want to see this level of information you can simply look at the major groups that give you an overview.

Next up the inventory screen. Here we went with a pretty standard list of icons with numbers to designate stacks of items. Selecting any item will fill the right side with a description of the item.

In this screenshot you can see some details on one of the games weapons. I’m taking this as an opportunity to show the attention to detail we put into the weapons in this game. While the values are not final you can get an idea of what we are building. 

At the bottom of the inventory screen you can see how we track encumbrance. In this case the character is lightly loaded so the effect is minimal. No significant effect on walking speed but a minor one to sprinting. We talked at length about the mechanics in an earlier post but here you can see it in action.

We've worked hard to make these changes, and the work isn't quite done yet. Tell us in the comments what you think of these updates!

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.

Shy Snake went to GDC 2016

Two weeks ago, the Shy Snake team went to the annual Game Developers Conference (GDC) in San Francisco, CA. We took part in the indie dev Summit and attended a bunch of talks and events. If we missed you at the GDC, here’s a quick recap for you.

We visited a number of vendors on the show floor, many of whose products we use every day in creating Spy DNA.

We use UnrealEngine 4.10 to build our game, so it was really exciting to visit the Epic Games booth and talk to the Unreal Engine product managers, developers, and docs writers. It was so awesome in fact, that we stopped there on three separate days! We had great discussions with Epic booth staff, and are hoping to continue growing our relationship with this company.

We also paid a visit to Intel and NVIDIA exhibits to find out more about their developer programs, to help us both find our audience and help support the development of Spy DNA.

In search of a source for custom animations for our game, we spoke to several mo-cap companies, and looked at their software solutions. Why can’t we use the standard animations from the widely available libraries? Glad you asked, because we think you’ll like the answer.

Human bodies have an incredible ability to communicate what’s wrong with them, say by limping, clutching an injured limb, or possibly crawling. Since we’re placing all this emphasis on realism in our combat, we’d like to make the characters in the game to move differently if they are in any way impaired. That’s the kind of stuff that we’ll have to work on with professional motion capture artists in a studio.

We’ve made connections with a few freelance 3D artists, in hopes to find the person(s) who can help us build the custom items, weapons, and characters for the game. If you know someone who is interested in talking to us about it, have them ping games@shysnake.com. We’d love to hear from them.

Custom animations and 3d art are awesome, but they also cost a lot of money, so we’re hoping to raise the funds to help pay for them on Kickstarter.

We’ll be announcing the exact dates  here on our blog, and on the mailing list. Please subscribe to our announcements if you’d like to be the first to know when we launch our Kickstarter campaign!

 

Development update: UI

We've been working hard on the UI for Spy DNA.  One of the challenges with creating realistic combat is how to present the many options that are immediately available to a real combatant in a simple and intuitive UI.

We recently did our first round of play testing.  The chance to observe people playing is very valuable to a developer. From this we made a list of UI interactions the players didn’t find obvious and have addressed each one.

One example of this is the action of changing equipment.  Watching people play a common pattern was to pause the game, go through inventory and find the weapon they wanted, then equip it.  Now because the game is timeline based this would generate an action to equip the weapon.  However, since the game was paused, it didn’t immediately appear equipped.  This created confusion.  So we now show the state at the end of all queued actions where appropriate.  

For interacting on the 3D map we moved from placing all the controls on the HUD to popping up context-sensitive controls where it makes sense.  Now you can quick-click an enemy to attack as before.  However, a long click will open up a menu with all the various attack options for the combination of attacking character and target. A quick click executes the default action as before.

The same applies to movement.  Clicking on the map selects the default movement speed.  If you hold down the left button for about half a second the speed options also appear. 

Some controls such as character selection and character state remain in the HUD.  The idea is the state of the currently selected character should always be visible and the common controls ready.  

Welcome new team member!

Yay, this month Shy Snake has doubled its team! We're two now, and finally the "we" is not just a figure of speech anymore :)

I'm super excited to announce that this month a brilliant developer who also happens to be my husband, is joining the Shy Snake team as the company CTO: R. Jason Sams!

Jason is an expert in computer graphics and compute. He has many years of experience having worked at Be (BeOS), PalmSource, Nvidia, and most recently Google (on Android).

Jason will focus on the engine behind our games, starting with creating a kick-ass AI to control all the NPCs in the game and an animation system to make the characters feel life-like.

By Alex Maier, founder of Shy Snake.