Thursday, October 24, 2013

Improving the AI in Assassin's Creed 3...






Tree Hugger


The Assassin's Creed franchise has always been a step above many games in its genre, managing to create a unique experience for its players while maintaining the mechanics and dynamics fans have come to love about the series. With its latest installment, Ubisoft decided to take it all a step further and refresh the animation system without changing the technology much. 

This blog is going to cover the techniques implemented within Assassin's Creed 3 which make it a new experience and far better than any of the previous titles. We will cover the navigation system, the climbing system and the free-running system. The information on this blog has been extracted from a talk on the postmortem of Assassin Creed III's AI delivered by Aleissia Laidacker, the Team Lead and Richard Dumas the Tech Lead at Ubisoft Montreal. This talk was given at GDC 2013 and can be found here.







Introduction

Ten years ago the AC3 team started working on what would become the core pillar and staple of the franchise – the free-running and navigation systems. The technology behind these features really hadn't changed much. With AC3, the team decided to change everything which proved to be a major challenge. They wanted to primarily focus on four main areas: the ground navigation, the free-running, the climbing and a new system called tree-running. The biggest challenge for a massive brand like Assassin’s Creed was to change everything but but at the same time, change nothing. They couldn't change the way the game was played so the core of the game had to be familiar. But they wanted to lift the experience for the player by trying out new technology in their system.

Animation has always been a major focus in the Assassin’s Creed franchise and so with the new game, the team wanted to really invest in procedural animation research. They knew that a big part of the game would happen in the forests. They were inspired by running through a forest in Apocalypto. Essentially, the team wanted to have the character’s movement react to the environment around him. To achieve something like this would mean a lot of challenges. A full forest would mean rocks, slopes, trees and uneven terrain.
The forest specs would be the main challenge.






Ground Navigation

The team realized earlier on that they would have to support not only ground navigation but fights and assassinations as well as all other behavior on uneven surfaces. As such, they invested a lot in procedural animation. The ground navigation would either not work or not look good if they continued using their previous system. In the previous games, they had to tell their level designers to avoid ground inclinations over 30 degrees because although they technically supported it with the IK, it actually looked really bad. So they bridged the gap in AC3 by supporting the ground inclinations in addition to having smooth transitions between the change in height. They wanted to allow their designers complete creative freedom with level set-ups. 

The ground navigation blends with a slope navigation layer so that 0 to 45 degrees looks good. Beyond the 45 degree mark the character progresses into sliding or scrambling behavior. Human IK is used throughout the process to ensure that the foot actually connects. Once the set up to support any ground inclinations was successful, they decided to invest a lot of time into researching how the same could work with any ground debris. They wanted the character to properly connect with whatever object was below him. In the forest they would be a lot of rocks and logs and in the towns there would be a lot of steps and ledges. Simon Clavet worked on a technology called predictive foot placement. 

Over three years there were many different approaches for foot placement. At first it was done using only capsule collision and later there were rays thrown under the feet and then fitting the plan to ground points. This required no prediction. Later, they came up with predicted landing and used highest points on leg swing. Throughout this process, they had to make sure there was compromise between quality and performance. Especially with analyzing the environment, it was crucial to work on optimizations. In the end, based on the animation and the speed of the character they were able to find where the foot was going to step in advance. Then by analyzing the environment through physics casts and ray casts they found the highest point the character would need to step over.







With this information, they were able to have the IK solver position the foot on the detected obstacle and then adjust the pelvis and the height of the 2 feet during the foot placement update. For better quality they worked on something called front strafing which was purely to change the look of how the main character navigated himself through the world. This is something that isn't seen too much in video games nowadays. Thanks to a mix of foot planting and animation they tried to achieve something very different and cool. Traditional video games have rotation of the character based on intention. Usually there is some damping on the rotation but usually it comes down to moving straight and rotating the character. The team at Ubisoft Montreal really wanted to achieve something more natural where the character is able to keep its facing direction while incorporating strafing for the rotations. The end result is a mix of all the technologies developed and some new animations as well. 

So how does it all work? When the character changes directions they move their foot procedurally whether interior or exterior depending on the step that the character is at using the predictive foot placement technology. Also, when the character begins to move in a direction he is never rotated right away. They begin by strafing the player in the desired direction and then activate the rotation. This way, if you’re moving your stick in a certain threshold, the character is really just strafing back and forth and moving him forward without rotations. After three years of research in procedural animation they never got to see their hard work in the actual game until 8 months or so before the game finally shipped at which point it was all about optimizations.

All this tech was made to work for all the NPCs in the game as well. However, there was a limited number of ray casts used for the NPCs so depending on how many there were on the screen at a time, the quality differed. Still, they were able to get the technology to work for NPCs which was an achievement in itself. Some things weren't developed out of a lack of time but in the end the whole team was proud with the final result. The ground navigation was a huge success!






Free running

The team’s initial expectation was not to change too much in the free-running system, but as the game progressed they realized that the style of the free-running reminded them too much of Ezio (the main character from the previous AC games). This didn't really fit with the style of Connor. Luckily, it was around this time that the team had decided to change every single animation in the game so that it would reflect a new style for the game's protagonist. This meant a huge job for the animators on the team, while on the programming side simple changes were necessary to support new variety and opportunities in free running. Ezio’s jump system from the previous games was just a blended animation system – where is it that the character needs to jump, find the animations and blend everything together.

Changes were made to highlight new jump moves in AC3, especially those that would be seen a lot more often in the Frontier. However, the team kept all of the short jumps that blended together since these were very time sensitive and they had no interest in changing how the system worked – they simply wanted to refresh the animations for the short jumps. The long jumps would be one-offs so that the animators could really focus on creating new varieties and different options for those animations. They wouldn't have been able to achieve a unique style with the jumps if the animators had to worry about how they were going to blend with all the jump animations. They also made this work for the animals in the Frontier.







Climbing

The climbing system has been a staple of the Assassin’s Creed franchise since the very beginning. For AC3 they decided to give the system a “good facelift”, as Richard Dumas puts it. For inspiration, they took a look at some very famous speed-climbers. This convinced the team to go over things and make them smoother and faster than ever before. The first thing to tackle was the input system.

Before, there was only support for a vertical and horizontal manner of moving along ledges. Now, the system supports a 360 degree range of motion, essentially allowing the player to go wherever they want in a much more precise manner. The next thing to work on was the fluidity. What they wanted to focus on was preserving the characters momentum as he traveled from one ledge to another. Previously, a normal jump animation would be played fully, followed by the settle animation before the player was allowed to move again. Now, the same jump animation is played but when the end is reached, the system analyzes all the possible traversal scenarios in the environment near the character as well as the player’s input. Depending on these a special link-up animation will be played to whatever move is coming next, whether a jump or a simple movement cycle. This was very costly to do but resulted in a much more fluid system.

Most of the navigation is just a series of small cut up animations that are molded together depending on contextual environment detection. Another thing to improve was the range of surfaces the character would be able to climb. In previous games, most of the building surfaces were flat but with AC3 there were a lot more organic surfaces like rock faces and trees that the designers had to ensure the character was able to reach as they were much further. Crack climbing was a new move added in direct reference to the speed climbers the team took inspiration from. The character would climb vertical rock faces as a pose to the traditional horizontal ones. 







Going Dynamic

The team wanted to go from more of a static world to a fully dynamic one. They really wanted to support unstable rock formations and moving window sills and falling flower pots, etc. They also had to find a way to support all the naval battles with the ships in the game that behaved as gigantic moving platforms. The first change was the introduction of several procedural modifiers on the character so that the body position is constantly adjusted depending on whether there’s a ceiling coming near or making sure that he doesn't stick his out over a building where guards are waiting to spot him. 

The legs were also treated with dynamic contextual detection. This proved to be a harder challenge as they define the support the Assassin lies on.Going from a position where he has his feet on the wall to hanging while moving and vice versa was quite tricky to get flowing smoothly. The body position is even adjusted to ensure that the player is able to grab onto an individual moving anchor making the world and the player’s response to it even more dynamic. Although the system worked really well, it wasn't showcased in the game as much as the team would have liked. They never got to have moving props on building facades due to memory and production constraints. Still, the momentum preservation and follow-through makes the game feel much more fluid and diverse than before. 







Tree Running

The team had to adapt their navigation systems to work with a fully realized forest. Usually a forest in video games is created with invisible walls everywhere to avoid problems and headaches. In AC3, however, the Frontier is the biggest map in the game and completely covered in forest forcing the team to tackle the challenge of supporting such an environment in the game. The team had a few clear goals in mind and many objections.These included making sure that the Assassin didn't climb trees like a koala bear or swing on vines like Tarzan. From a level design perspective, they wanted the trees to act as elevators bringing the player up as fast as possible. This would allow the player to become an immediate predator, hunting down guard and animals from higher up.

There were a few specific tree set-ups used in the game. The first of these was the unclimbable tree which is more of a filler for the artists. Some trees were covered with standard climbing anchors using the climbing system with horizontal branches. This type of tree is slow to climb up. However, once you’re up there, moving horizontally along treetops is very fast. The V-shape tree is the last tree set-up which allows for speedy vertical ascent. It also allows for jumping navigation between trees of its kind. To solve the problem of navigating fast horizontally when you’re up in the tree tops, the Assassin will grab the tree trunk and simply go around it. The game supported all kinds of V-shape configurations allowing the artists and level designers to do pretty much whatever they wanted with the level design. Kick-jump moves were designed to propel the player from one V-shape tree to the other. This was not only much faster than the standard navigation sequence but was a welcome visual change. This is all integrated within the climbing system, thereby allowing the player to quickly ascend the trees and hunt down his targets. 

One of the biggest challenges with creating the V-shape system was making sure that the orientation and position of the trees didn't matter, allowing the system to support everything. The team solved this by creating several ejection and reception animations that link up with the normal free-running system. In addition, the system uses some procedural modifications to ensure that the link up in and out of the V-shape system is fluid to preserve the momentum. The last thing to solve was navigating through the tree tops as fast as possible. This was overcome with the “trunk around” maneuver which was simply a bunch of animations displaying the character circling the tree trunks and combined with free-running and navigation. 

The tree system was actually quite successful because it really allowed the artists and level designers to make an organic forest. In addition, it really complements the free-running system as all systems are well integrated together.







In Conclusion

When the team started on AC3, their intention was to re-do everything but change nothing. They wanted focus on refreshing the second-to-second feeling but not break the experience for the players who knew the system very well. As can be seen through this post-mortem, the animators and AI team worked hard to give the level designers a lot of creative freedom. This meant a lot more work for the programmers and artists, but it was well worth it when the game finally came together as a smooth well-oiled machines.

Assassin's Creed 3 is a fantastic game with an AI strongly based on animation. It works well with the game's mechanics and systems and still manages to stand out in its own right. A well-designed game with a lot to teach us about animation and AI is just over the horizon as we impatiently anticipate the arrival of Assassin's Creed IV: Black Flag.









Wednesday, October 23, 2013

Knowledge Keeper Quest 5...






Reward Systems


Reward systems are present in every game, providing players with incentive to put more time into the game world out of a need to feel accomplished. In the book Man, Play and Games, Roger Caillois explained different types of games and how they can be classified into 4 categories. He pulled terms from various different languages to explain his theories and identify features of games that cause them to fall into one category as a pose to another. We can use his model and many others to interpret reward systems in game design to gain a better understanding of how rewards influence the manner in which certain players immerse themselves in games.

This blog will cover various classifications of reward systems, touching briefly on Caillois' model as well as that of Wang and Sun. We will also talk about characterizing rewards, how players use rewards and conditioning. 






Caillois, Salen and Zimmerman

Let's begin by introducing the four terms Caillois used to classify games. 
  • Agon
  • Alea
  • Mimicry
  • Ilinx


Agon is all about competitive games. Players compete to display their skills to others. This form of play implies that the player has a certain perseverance in improving the skill they are demonstrating. Scores or items are treated as a means to compare players to other players as far as rewards go.

Alea is where players have no control of the game's outcomes. In this style of play, chance is used to balance out a skill-based game as not everyone may possess the skill in question. Caillois stated that games of chance may involve gambling which can be a part of gameplay. The fun of attaining a random reward is at the core of the chance reward system as the player never know what they might get.

Mimicry refers to games of simulation where the player might portray imaginary characters in order to simulate something that they aren't. Being someone you're not or thinking differently than you normally would is at the core of mimicry. 

Ilinx is where players surrender the stability they have in the physical or mental world and choose non-control. They do something that they're not used to such as skiing or bungee jumping. 

Caillois suggested that games within these classifications run on a spectrum with paida (improvised, emergent play) and ludus (rule-based, fixed play) at either end. Salen and Zimmerman group games into three different categories (game play, ludic activities, being playful). While game play can be something that doesn't necessarily need to have a goal, ludic activities are more fluent and rule-bound. Ludic activities are concerned with setting a task for the player before completing that task. It is all informed by game design. Being playful, at the other end of the spectrum, is almost child-like by being focused on just wanting to play as a pose to paying close attention to the actual game and its rules. 






Wang and Sun

Reward systems strengthen the feedback systems in the game and feedback systems make the outcomes of games more discernible. In game play, you would want to generate feedback in order to establish an external system telling the player how to play the game. Wang and Sun came up with 8 reward forms based on the classification scheme that categorizes general rewards in life by glory, sustenance, facility and access. Let's begin by talking about the "Score Systems," the first reward form.

Score systems use numbers to mark player performance. They are used as a controlled feature to find whether or not your game is fun. This is based highly on the belief, back in the day, that scores in games were essential to fun - not so true anymore. The social factor is really important for the scoring system and is used for self-assessment by players. Humans really like to compare themselves to each other and get pleasure from relative personal progress. In fact, the only thing more exciting than having a personal score is having a team score that everyone has worked together to achieve. The social element is core to rewards. Scores are accumulated over time in a persistent game world so players can use them to rate themselves. 

RPGs use experience leveling systems as a facility for avatars during gameplay, thereby allowing players to achieve specific goals within the game. Experience leveling facilitates what an avatar can do over time. Rewards in this form are given through skills that help the avatar improve. A lot of games nowadays are increasing player skills over time.






Item granting consists of collecting virtual items that the player can use. They can facilitate how the avatar progresses through the game and how the player can complete certain actions quicker/better. Item granting can be ties into an overall system where item collection is the main source of fun for some people who may collect items simply to show them off and achieve a sense of glory. 

Collectible and usable resources will affect the gameplay you're engaging in. A great example of this is the manner in which wood and food are invaluable and essential resources within Age of Empires, fueling the gameplay. Such collectibles are used as both rewards and resources. An important differentiation to make here is that between resources and items. While resources are for practical game use or for sharing with other players, items are for collecting and comparing with others. 

Achievement systems consist of titles that get linked to avatars based on their skills and gear. A lot of RPGs use this system for weapons and items. The achievement a player feels is ranked based on the title they have. This form or reward system can be seen on a meta-level of gameplay. 

Feedback messages are generally used to provide instant rewards to evoke a momentary positive feeling. Juiciness is exactly what represent this positive feedback that results from player actions. It is essential to games, yet all these reward types are ephemeral which means that they will leave soon and won't be remembered once they dissipate. Plot animations and pictures are milestone markers. A video or cutscene will serve to drive the story or theme forward and provide some kind of fun because they are visually appealing and mark the completion of something major. Finally, unlocking mechanisms make players go through in order for more thing to be unlocked. A good example of this is how extra content is unlocked upon completion of the game. 






Reward Characteristics

Rewards should have social value which makes them suitable for comparing within social interaction. It is common for players to invite people to their homes or upload their achievements in order to compare results. This characteristic is all about performing and showing off in addition to comparison. Kids have competition among themselves intrinsically. We get social value out of a reward by comparing it to another person's. Scores are the simplest way to enforce this reward characteristic.

The second characteristic of rewards is the manner in which they effect gameplay. Richard Bartle introduced 4 different player types - achievers, killers, explorers and socializers. While some players find fun in earning rewards, other players have a greater interest in superficial game aspects (socializers). A common motivation between various player types is achieving rewards that have the potential to influence how the player will perform in the game. Suitability of a reward for collection and review is another important characteristic, more so for achiever player types, but overall as well. Rewards could be used as markers for game memories as things achieved generally give the player a sense of satisfaction. 

In addition, time taken to earn or receive the reward influences how the reward is viewed. The school system, for example, is based on a long-term achievement or reward. More generally, different time spans tend to mark the value of the reward for a player. In the real world, rewards take a much longer time to achieve (a promotion) than they do in a game world. This is generally not how we function as we are more inclined to receiving instant rewards and experiencing multiple feelings in a short amount of time. This exactly why game are so exciting to us. It is imperative to analyse the time required to receive a reward and whether the reward is worth the wait. Remember that a small reward is usually better than no reward in the time it takes to achieve a long-term reward.






How Players Use Rewards

To analyse how players use rewards, we make use of a dual axis model. The horizontal axis ranges from "Self" to "Other" while the vertical axis ranges from "Progress" to "Casual". The Self-Other axis represents whether you're playing by yourself or playing to have a good social connection with other players. The Progress-Casual axis is very similar to the plotting of games on a spectrum between Paida (free-form) and Ludus (rule-based). Four particular categories emerge from this dual-axis model. 

Players generally use rewards for forward progression through the game, to build their avatar's strength or mitigate challenge levels thereby triggering the feeling of increased skill and power. Personal advancement is the first of the four categories and is fun or appealing from the view of advancing your character's skills. Review is the second characteristic portrayed and involves players checking their achievement collection or viewing their avatar's weapons and equipment. Sociality is another characteristic and is important for establishing social status and expressing the player's self. It deals with players showing off their personality within a community in terms of social status and connections. The final category, cooperation and collaboration has to do with sharing one's resources and selling items in a social forum.  







Jesse Schell

Schell had his own categories for rewards and listed them as follows:

  • Praise - The system gives you instant feedback.
  • Points - Given based on skill or luck to in order measure the player's success that may be linked to other rewards.
  • Prolonged Play - Explores the idea of risking certain resources in order to rack up others without losing what you put at risk. A reward item such as this helps you play the game longer. A good example of this is the ability to rewind time in Prince of Persia. It essentially appeals to the survivor player type in all of us.
  • A Gateway - This is where we explore our desire to find new areas in a game and be rewarded as a result. It ties into our natural curiosity in providing access to something we didn't previously have access to.
  • Spectacle - This is something beautiful and instantly visually appealing. It makes us very happy because it has a high aesthetic value attached to it.
  • Expression - This is where we try to express our individuality and respond to our urge to make a mark in the world.
  • Powers - These alter our form and give us ways to reach our goal much quicker. Having new powers may speed up certain game processes.
  • Resources - Currency for certain transactions used to advance within the game.
  • Completion - Appeals to our natural need for closure. We must understand why events in a game take place and if we aren't able to answer our questions, we often make up explanations. Completion is a very powerful driver.






Classical and Operant Conditioning

The famous experiment of Pavlov and his dogs can be used to explain Classical Conditioning in a nutshell. A stimulus is attached to something that isn't necessarily related as humans learn to build value. You can take a neutral stimulus and make it a conditioned stimulus through repetition of introduction. The Little Albert experiment though highly unethical helps us look at different stimuli invoking varying conditions. The experiment proves that Pavlov's theory was transferable to humans. Initially the child showed no fear to the stimulus it was presented with. Then a loud noise was made when the stimulus was presented and soon the child became conditioned to being afraid whenever the stimulus was displayed to him even when the loud noise wasn't made. The unconditioned stimulus here was the loud noise which was used to create a natural response (fear). The conditioned stimulus was the rat which was used to condition the child to cry. 

Later on, these tests were re-created with testing rats as B.F. Skinner introduced the term reinforcement as well as reinforcement schedules into classical conditioning. What Skinner was attempting to demonstrate was that behavior being reinforced tends to be repeated while behavior that isn't reinforced tends to die out. The rats learned to utilize the lever every time they wanted food thus learning to exhibit this behavior through positive reinforcement. The negative reinforcement tests sent electric current through the rat till it pressed the lever. This forced the rat to learn quickly how to avoid the electric stimulus, reinforcing the behavior negatively. 

There are two types of learning in reinforcement. Escape learning and avoidance learning. Escape learning is learning by going away from the stimulus that gives the subject and unpleasant feeling whereas avoidance learning is when the subject will avoid certain stimulus because it provides an unpleasant feeling. This leads to an understanding of how reinforcing works. In essence, you're making an event stronger and increasing the behavior that follows the event. There are two types of reinforcers. Positive reinforcers remove unfavourable events or outcomes that are presented after the behvaiour takes place. Negative reinforcers remove the unfavourable event or outcome altogether strengthening the response as a result. 

Punishment is used to weaken behaviours. Positive punishment is when you're presented with an unfavourable event or outcome after a behaviour that you do not want to reinforce. Negative punishment is what happens when you remove a favourable event as a result of a behaviour that you do not want to reinforce. Positive punishment is adding an event whereas negative punishment is removing an event. 






Types of rewards for people

Tom Chatfield spoke about types of rewards there are for people. There are two distinct processes going through a person's mind when they are engaged. These are "wanting" and "liking". Wanting is about ambition and drive requiring intense emotional engagement. Liking, on the other hand, covers fun, affection and delight. These drivers can be measured in a game. You can essentially track all data points that the game gives you in order to get all the information you can about the data in the game. 

Reward schedules are based on reinforcement rewards. It is important as a game designer to think about calibrating the rate, nature and type of reward to see how much time people put in the game. Reward schedules can be seen in getting certain items upon completing objectives within the game. It's like opening the cereal box to see your prize - some enemies drop loot and some don't, also the loot can vary based on your skill level and the difficulty of the enemy you're facing. Loot dropping is engaging behaviour with a chance of reward. It is intermittent and random. In order to keep people engaged, think about having an optimal number of rewards to collect. This number will additionally influence the drop-rate of the reward and the quality of the item. You can even calibrate your rewards by the chance the player has of obtaining them. 






In Conclusion

We have been hard-wired over time to find some things more stimulating than others. Now we are finding out what things may or may not be stimulating based on rewards. Experience bars are great at this, measuring progress and grading people incrementally as they advance through the game. The player is now more used to having long-term aims as games are trying to get the player to earn their reward and get credit where credit is due. All of this encourages players to put effort into the game.

At the end of the day reward systems on a design side are all about ticking boxes. Feedback needs to be rapid, frequent and clear and the element of uncertainty should always be present. Generally people are more excited to participate in an activity just to see if they'll get a reward for it. This is due to the fact that obtaining rewards increase the dopamine levels in our brains. Based on this knowledge we can predict how likely people are to learn something. People will build confidence in activities that are positive and rewarding for them. The most important thing to remember as a game designer is that it is neurologically satisfying for players to engage and compete with other players. Working with other people is the greatest driver for us. This is the reason we excel in life and why we remain adamant about displaying our social status. 








Friday, October 18, 2013

CryEngine 3...






Taking names

The Crysis series has always been one known for setting industry standards in graphical prowess and optimization. Ever since the Far Cry and the original Crysis, Crytek's repertoire has been held in the highest regard by players and industry professionals alike. From CryENGINE 1, the company has been kicking butt and taking names and now with latest release of Crysis 3 made using CryENGINE 3, Crytek is once more the talk of the town. 

Today we will talk about some of the neat features of CryENGINE 3 and what makes Crysis 3 such a great-looking game. We will talk about the graphics and power of the new engine. The blog itself won't be long and drawn out, but short and interesting. The information on today's blog is taken from Sean Tracy's Presentation on CryENGINE 3 at Crytek's Community Day. The presentation can be found here.






Let the games begin...

The video displays the same level (Canyon) that Crytek decided to put on display at E3 prior to the initial release of the game. The engine features a new particle system which features new particle shading and new particle lighting. Tracy made it clear throughout the demo that what the audience was seeing is what they would be playing, and boy is it all mighty impressive. 

One of the newest things about CryENGINE 3 is the way in which they handle their cloth simulation. It's not so different on the asset level compared to Crysis 2 but in the performance level, it's a whole different ballgame altogether. It's faster and added in a lot more places within the game. It also includes realistic depiction of interaction with wind and forces such as explosions. Particle shadows are one of the cooler new features present in CryENGINE 3. All though they came out a little later on in the development of Crysis 2, they work the best in Crysis 3. Other effects that work well with particle shadows include volumetric fog and smoke amongst many other particle effects. 

Another neat new addition to the engine this time around is the shader which performs Pixel-Accurate Displacement Mapping (PADM). This technique doesn't use tessellation and is particularly effective in high detail/high density portions of models such as the trunk of a tree. Traditionally, tessellation was a common technique used before PADM came along and replaced changed the way such models were rendered. This allows modelers to produce models with much lower poly counts. Even silhouettes can be created without geometry, but with pixel displacement. Not to mention, it allows for really really fast rendering. When your vertex-bound high poly count scene is rendering with no hesitation, you can truly see PADM shine. It uses the pixel shader instead of the vertex shader which is what attributes to its speed. In addition to all this goodness, the manner in which it reacts with light is great as you can see effects like self-shadowing portraying the differences between the 2D plane used for sprites and the pixel accurate 3D model of tree trunk. 







The 3D composite lens flare is improved in CryENGINE 3 with the introduction of a new flare editor. The editor includes a library of different flares for various levels and allows the developer to turn different types of flares on and off. Even smaller portions of the lens flare may be toggled such as the glow, glow streak, chroma rings, orbs, etc. All parameters within the editor are exposed immediately and each lens effect has a ton of them. The editor even allows the developers to include dynamics so that certain environmental activities such as a bird flying by will cause the lens flare to bend around the bird and react appropriately. The developers may even assign various textures to the flare and increase or decrease the number of orbs. 

Another new change is the ability to apply properties directly on to lights in contrast to the former procedural method of doing things. This works for any of the lights within a given level. With CryENGINE 3, Crytek decided to go the stylistic route of putting a film camera on the player's head instead of employing a photorealistic one as people can get more immersed within a filmy looking game. A great addition to the new engine is the change in point light attributes. Typically, you're used to seeing a point light with a point highlight on the ground in the shape of a circle. To hide this, the engine performs texture projection on the point light to give it a particular shape in order to avoid the lack of realism that comes with point highlights. Furthermore, you can place an area light in front of the point light to produce a different effect than the point highlight. One of the key difference in this lighting system is that the light doesn't cast behind itself avoiding having to clip the back or project a texture behind the light. 

The area light always maintains a Field of View (FOV) of 180 degrees or less. A new feature introduced with area lights is softening the shadows they cast and placing them in a more physically accurate location. This was previously only done with sun shadows. Thanks go to the more physically-based renderer which promotes the idea of getting a much more realistic feel for lighting across any given level. When area lights are on, they use variable penumbra soft shadows allowing their edges to increase in size the further away they are from the area light. With the ability to place the specular multiplier into a shape why not place it within a texture. When put into practice, this process yields very realistic looking textures. In a huge warehouse where there might be several light above the player, the developer will fill the area with hundreds of lights and place one area light behind them. They will then create a texture of both the diffuse and specular light cast down from the many lights above. The texture is then used in combination with the area light for lighting the entire interior of the warehouse. 






Within Crysis 3, the water simulation is done really well. When you look at the water form far away, what you're seeing is a cube map or an environment probe. Basically, just a texture that's telling the water how to reflect certain things. This level of detail is perfectly acceptable since the player can't really tell what is and isn't being reflected from high up. However, on approaching the water or standing in it, the engine keeps track of the player's incident angle and then blends the real-time reflection into the cube map as he looks up or down. The water also feature dynamic caustics which are generated by waves in order to simulate realistic ripples propagating. Furthermore, the engine has control of not only the color, but what the caustics project on, how far they project out, etc. 

The Crysis series has always had volumetric fog but they have never been able to hold shadows, this has been changed within CryENGINE 3. Shadows of enormous buildings can be projected through fog so the player can see the ray of the shadow dampened by the volumetric fog. 

One of the most frustrating things with working on vegetation in Crysis 2 was that it didn't grow on brushes. Essentially, you could create terrain and then paint vegetation around it as you liked but would never be able to tell the tool to paint onto brushes. CryENGINE 3 allows for painting anywhere the artist or level designer pleases. In the original Crysis there was a lot of different vegetation that would bend and react to the player navigating through but this effect took artists to create joints within the vegetation which resulted in a significant waste of time and resources. In Crysis 3, however, this has been optimized and can be done a lot faster as all vegetation comes with pre-defined joints allowing the artist to just paint it down. Now the vegetation moves with real wind simulation and reacts to dynamic objects and players on a huge scale. The best part of all, the vegetation also reacts to grenades and large explosions. This effect also works on consoles, which is fantastic. Wind areas within the game are defined as bounding boxes with a certain amount of wind (size) and speed. Essentially, the engine produces several directions which are used to simulate the realistic force of wind. 







In Conclusion

Well, it's clear that Crytek has done it again with a phenomenal game backed by an exemplary engine. The capabilities of CryENGINE 3 are made clear in the fantastic visuals and terrific realism present throughout the Crysis 3's campaign and multiplayer. The most amazing feat in all of this is Crytek's ability to optimize their engine and have it running smoothly as a result. There's a lot to learn and even more to explore within the game itself. I've barely touched the surface, a world of beauty awaits you within Crysis 3. 









Wednesday, October 16, 2013

Knowledge Keeper Quest 4...






Playtesting

This week's lecture afforded us a guest speaker, Pejman who taught all about playtesting, the truth and myth behind it and how it's done in the industry nowadays. One of the most important things to remember with playtesting is that Quality Assurance is NOT the same thing as playtesting. While QA focuses on bugs, system fails or technical faults, playtesting is concerned with players and how they react to your game.

This blog is going to discuss what playtesting is, different methods of performing user tests as well as some important things to keep in mind when performing them. We will talk about what playtesting is, what it isn't and where most development teams trip up in testing their games or interpreting the data collected. 






Testing the waters

Playtesting deals solely with player interactions and reactions to your game. The data collected should reflect their experience and how much fun they had playing your game. It is important to identify what parts they liked and, more importantly, what parts they didn't. In playtesting, it is the designer's goal to evaluate their intended design and how the player perceives it by identifying whether the game was played the way the designer meant for it to be played. There should be healthy motivation behind playtesting and certain considerations taken when it is being conducted. The tester's main motivation should always be the player as it is important to keep in mind that you are making the game for another person and not yourself. This is why reading how the player (and not the tester himself) interprets your design is crucial for good playtesting.

Steady focus on the tester's purpose and motivation ensures that the designer doesn't fall into the trap of getting too emotionally involved in the game development process. The whole point of playtesting is to avoid this and to make sure that the designers focus on what their players want and not what they themselves want to see in their game. One of the best sources of motivation is the focus on creating a good-quality game with plans for prototyping using an iterative approach. This keeps the designer centered on delivering the most value for players who are looking for quality in their game purchase.
An important practice to follow is embedding everything the player may need to play or enjoy the game within its design. This comes from a realization that you won't be shipped with the game, which means you may not be able to explain things to the player and you can't expect them to know you reasoning behind certain design decisions. At the end of the day you need to implement all your thoughts in a way that makes sense to not you, but your players. The steps in doing this is begin with a good design idea, prototype it, evaluate it and user test it. User testing helps you focus on your goals. 






Testing...one...two

A typical user test follows these steps:


  • You create your product.
  • Your run test sessions.
  • You list issues found during these sessions.
  • You analyze these issues.
  • You select which issues to report.
  • You report those issues to the development team.
  • You create a new version of your game.
  • The cycle begins once more.

You could be an independent play tester who reports to a client/company, or you may need to communicate your findings to the programmers and the rest of the development team. The rule of thumb is that one cycle of user testing usually isn't enough. There is certain criteria to follow in regards to user testing including representative, accurate, specific, timely, cost-effective, actionable, and motivational. Let's discuss these a little further. 

Finding a representative user (your target user) is the first and most important criteria for user testing. If you aren't able to find one, your testing becomes invalid. You cannot consider yourself a representative user of your own game, just as you can't let your colleagues or friends test either. You also need to be accurate with your results. In terms of accuracy, there are several way to increase the validity of your results including multiple methods of testing. Specificity is crucial in gathering good user data as you need t be specific about what was good and bad and how to improve your game.

All user tests must be maintained within an understandable time-frame otherwise results of the playtest will not be useful anymore. You will have to meet deadlines so choose the appropriate method that doesn't waste excessive amounts of your time. Make sure your results are cost-effective. If there's a $100 issue to fix which costs you $1000 to fix, it isn't worth it. Stick to your pre-defined game budget. You would also need to ensure that your issues are really fixable and aren't too big. This is called being actionable to ensure that your issues don't have the potential to break the whole game. The user test should also be motivational in order to help you encourage your team to fix the bug. 

User test labs are generally designed to simulate comfortable and real living rooms. Generally, televisions and several cameras are present to capture gameplay feeds as well as player reactions. Additionally, there are often observation rooms used to monitor the player as they immerse themselves within the game. 






Let's talk

The various methods of user testing include focus groups, observation, surveys and questionnaires, interviews, heuristic evaluation, thinking aloud, diary studies, game metrics, and physiological metrics. Let's explore these further.

Focus groups are typically for 4-8 people and are a common approach in market research. The concept is to invite people to an exchange of ideas. This kind of testing is great for the beginning stages in game development. It is best to recruit users and discuss concepts and types of features to get some general feedback from users. Sometimes the feedback can be too much as members may get distracted from the main topic or idea. At the same time, you must be open to new and different ideas. You need a good facilitator to make sure everyone in the focus group gets a chance to talk. Someone who will make sure that dominating ideas won't push their way through. Focus groups are good opportunity to hear good ideas and to explore certain ideas on a deeper level. This method could also be used later on in the development process. For example, after they have played the game, the user may talk about how it made them feel.

Observation studies are one of the most common methods of user testing. You begin by creating a playable version of your game and then observing how the user plays the game. You really just need a game system and someone to watch. It provides good data and you get to see how users interpret your design. It can be intrusive for the player to have you watch over their shoulder and you need to make sure they know that you’re not looking at how well they play the game. They should have absolutely no pressure on them. It is important to know who is observing the gameplay. Usually you will have someone just conducting the session who isn't part of the development team. At least 2 game designers will then monitor the results. You need to be careful about your own interpretation of what the player is doing which is why having 2 people is ideal. Observing body language is very important for finding trends in players' emotions in relation to game moments. It can be time consuming to re-watch sessions for analysis.

Surveys and Questionnaires are easy and fast common methods to use. You would typically ask your users to fill out the questionnaires after they have tried out your game. You can often generalize surveys making them convenient for analysis. If you’re collecting it in scales, it’s even easier as you can use the information to make graphs and charts. You could use this method to collect some demographic information before you begin the game. After the gameplay is done, it may be used for overall experience testing. What’s the player's game type? Do they like to explore? Find out what your target audience likes and find a way to deliver this. You shouldn't interrupt players to ask questions, but there are acceptable times to pop in during gameplay (after the player dies). One of the most important considerations with surveys and questionnaires is that if you forget to ask something you don’t know the user’s opinion on it. Make sure you know what you want to know before you begin your questionnaires. Also make sure you frame it right – don’t put pressure on the user and don’t have them answer the way you want them to. It is also important to have clear consistent scales with your questions like the Likert-scale. It is impossible to follow-up a questionnaire because after collecting the results there might be something that you can’t explain, but you might not be able to get back into contact with your testers. You also need a large sample of people to conduct surveys or questionnaires. If you’re hoping to collect data online, it’s not that easy to find users to fill out a questionnaire. This is especially true of very specific questionnaires.







·   Interviews act as a one-to-one discussion between the developers and the testers. In playtesting, you usually get the user to interact with your product and then you sit down and talk about their experience. You need to know who you are interviewing. Maybe you’re making a game for doctors in hospitals, so you might want to interview professional doctors for your game (interview knowledgeable people and get their ideas). You usually interview players to go deeper and find out what matters to them. The guidelines of creating a good questionnaire works the same way for an interview. You need a good moderator in addition to having the questions that you want to ask setup beforehand. You could always be more flexible and ask more follow-up questions. Ask relevant questions. When you are questioning people, they need to be aware of the experience they had and remember it so that they might be able to explain it to you. Therefore, it is imperative that you don’t make play sessions too long. Your players might try to please you, so be wary of making them comfortable with criticizing the game. A good technique it to tell them it isn't your game and that you’re testing it for someone else. Let them know that you’re only interested in improving the game and not in knowing how well they did. Make sure you take notes – you will not be able to remember information later on. If you can record the Q&A session, even better! Don’t do the interview alone, get another team member to take notes. Have all your notes organized in a way you can review them (transcript) so that you can find common threads. Combine all the data and find the issues you’d like to fix.
·    
   Heuristic Evaluation deals with having design guidelines (questions) which help you evaluate your game. Have a game design expert evaluate your game and then compare the results to the list of heuristics you have. There will be a number of questions which will help you evaluate your game to see whether you’re succeeding or breaking the game. A problem with this approach is that it’s very subjective as it is based on the evaluator’s opinion. So having 2 or 3 members act as the experts is usually ideal. This method is cost and time efficient since you can be your own expert. Use this method at different stages of game development. When you have some ideas, compare the mechanics to your heuristic list and see if you are or aren't going against your list.







     Thinking Aloud can be done with observation. Ask your users to talk aloud about how they feel. The approach generates a lot of useful data as you can see how users interpret your design. The problem is it may be difficult for users to speak like this naturally. There are some users who might not be good at thinking aloud. They might do it for the first 2 minutes and then stop talking due to riveting gameplay. Try it and see how it works for your game/ in your setting. It’s a good idea to record the player’s comments and gameplay at the same time.

·        
    Diary Studies are suitable for observation over longer periods of time. You leave the user with the game and a journal to record their experience. Ask them to record this for a couple of weeks to allow them a longer period of time spent interacting with your product. After the study is over, you have a rich source of data which you have collected. It’s a good method of collecting data on player behavior and demonstrates how your game influences this. The hard part is having dedicated users to be disciplined in following the journal entries. It’s a good idea to keep in touch with your users throughout the study. Weekly meeting are a great idea. A Google doc to track entries may be helpful. The response can be slow since it’s a time-consuming study. Sometimes users are paid (at the end of the study) keeping them motivated to carry on through the study. Invite them back at the end of the study to interview them and discuss their experience. 






In Conclusion

As a play tester you need to know what you want know and how to figure this information out. Don't forget about the critical criteria for user tests and make sure you find appropriate representative users to participate in them. Pick methods based on your resource constraints and based on the questions you're trying to answer. And finally, listen to what your users say and compare this information what your intended game design was. Happy testing!