Introducing Spy DNA 3D artist

This is a post written by our talented 3D artist Denis Keman. We'll be publishing a series of posts by Denis, which will cover his creative process, and provide insight into how game models are made.

Who am I ?

Hey everybody, my name is Denis Keman. I am a 3D modeler and a 3d generalist. My YouTube channel (Denis Keman - "very creative i know") is all about 3d modeling. I was lucky enough to get a chance to work on the upcoming game Spy DNA. I was hooked on this project because of the old “Jagged Alliance” feel that it had. Then I met the awesome team at Shy Snake Games and we just hit it off instantly. 

Now with that short intro out of the way, i would like to tell you a bit about my workflow. And what i use to do the things i do.

What do i use in my workflow ?

First things first, what you need to know is that 3D work is basically art. To understand it, you need to know the tools that were used. 

In the field of 3D modeling you have a wide array of different tools like Blender, Maya, Rhinoceros, Max etc. All of these are 3D modeling packages, and the one that I use is 3DS Max. I created the high poly and the low poly models in 3ds Max, and texturing was done with Substance Painter. 

If you are not a 3D modeler, you might ask what’s the difference between high and low poly model. Well it's basically two models with different levels of detail for the same thing. The idea is to get the high poly details onto the low poly model (the one you see in game). That way you get a good-looking model that doesn’t eat up all of your system resources when it’s rendered in-game. In order not to get too technical I will leave that for a future post.

The creative process

Getting from point A to point B is not always a straight line, especially in creative work. The first thing that needed to be modeled was the weapons that will be used in-game. The idea here wasn't to simply recreate an existing real-life weapon, but rather to design a unique one. 

The first custom design model was the P-15 handgun. This gun is compact, easy to conceal and carry around. That means that the frame in not bulky and has flowing lines. 

Another thing that i had to keep in mind was the fact that it didn't shoot conventional ammo. Instead it was shooting gun darts, which meant that the barrel had to be different from a conventional firearm. 

Another thing that I had to put into the design was a screen at the back of the gun for showing the shooter their ammo status, firing mode, etc. After going through a few design iterations I ended up with the design you see below.

Summary

Since this is the first blog post from me, I would like to cut it short here. I hope it was fun, and that you enjoyed a glimpse into my design process. You should also have a better idea of what the process behind making a game model looks like now. Next time we will go over how the creation process goes for a different weapon. 

And if you would like to see a more technical look at things, leave a comment down below. Depending on what you’d like to know, I will do my best to explain it. 

For any information about the game hit us up on twitter @ShySnakeGames. And don't forget to share this around so more people can hear about Spy DNA. Remember folks, sharing is caring.

So that would be it for now. I will see you all next time.
-- Denis Keman

Base level preview

Wanting to take advantage of the great outdoors rendering capabilities of Lumberyard, we've "moved" the Spy DNA base to a small island, which can only be reached by sea or air. The island will also feature a helicopter landing pad and an extensive training facility for the Spy DNA agents to use between missions to hone their superhuman skills.

Here's a screenshot of the pier for you while we're working on the base level.

Spy DNA now has a Steam Greenlight Concept page

Folks, we've got some exciting news for you! Spy DNA now has its very own Steam Greenlight Concept page, where you can discuss it with other Steam users and provide your feedback to the team.

We watch the comments very closely and reply to questions and feedback as they come in.

So go ahead, visit Spy DNA on Steam and give us a thumbs up if you like what you see!

Lumberyard

It’s been a really busy two months here at Shy Snake. We have made a few adjustments to the development of Spy DNA which we think will make for a better game. The big change is we have moved from Unreal to Lumberyard game engine. This also created an opportunity to make a few other smaller changes to the game.

We decided to move to Lumberyard because it allows us to make much more dynamic maps. Unlike other engines it doesn’t require us to pre-bake lighting to get good quality lighting on the maps. This frees us up to procedurally generate maps, allowing for a greater replay value and much more variety in missions. It also allows us to change the maps on the fly in response to player actions. This means a more destructible world. 

We are mostly complete with the port of the game code to Lumberyard. AI is the last major piece left to do. At this point the UI is mostly complete, the game logic code is ported, animations are working, and we integrated the articy code for the dialog system. We are still on the same schedule as previously announced with a public demo / early access, possibly as early as December, but for sure in Q1 2017.

Animation is another area that was impacted by the change. We are switching from in-place animation to root-motion animation. What this means for the players is the characters should move in much more realistic ways. The characters’ feet should slip far less. Also we added start, stop, and turn animations so the beginning of movements will look a lot better. 

The transition required us to re-import all of our art assets. We took this as an opportunity to replace our character models with higher quality models. To do this we switched character creation tools and are now using iClone Character Creator. 

Same character created in Autodesk Character Generator on the left and iClone Character Creator on the right.

Now that we have worked with Lumberyard for almost two months, we have learned a lot about it. If fits very well with our code base. As we have settled in the level of productivity on our game, code is settling at a higher level that we achieved with Unreal. This means we will be able to put more effort into building a good AI for you, the player. 

Now it’s not been all positive. On the art side things are going a bit more slowly. Lumberyard is an editor in transition which has created some overhead for us in making maps. In part this is offset by switching many maps to procedural generation. However, it will be a bit before we can show you the before / after of the player base. Yes, even though we can now procedurally generate maps, we can also still hand-generate them. 


We will have much more on this going forward. I believe the engine transition will allow us to ship a game which is more in line with what our players expect. It allows us to generate a much larger variety of maps, allows you to have a larger impact on the map in terms of being able to destroy objects, and allows us to invest more heavily in AI making the gameplay more interesting.

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. 

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 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.

 

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!