Individual NPC Behavior Elizabeth Carter CSE 348 2/11/2010 Agenda Realistic Character Animation Responding to the Player Simulated Animals Autonomous Characters
More Humanlike NPCs Realistic Animation Realistic Character Animation No longer acceptable to animate one part at a time Want character to be able to do multiple things at once Walk, wave, hair blown by breeze
Layering of animation Two methods Animation Controller Layered / prioritized animation system Animation Controller and Layering Animation Controller approach Use separate animation controller for each body part
Can lead to over complicated code and interdependencies Layering Made possible via skeletal animation systems Layers categorized by regions of body that they affect Prioritization and Categorization Each animation receives priority and
category In implementation discussed Priority Integer, with zero being lowest Category Bit flag enumerator describing affected body area Animation Controller for Priory and Categorization In one implementation
Animation controller class has one Member variable Map of animation instances Animation instance = struct storing animation resource file refrance and instance data Sorted by category Core function Requests play of animation Priority utilized to determine if it should be allowed to play
Important Assumptions Each frame stored as list of bone rotations [p 66] Rotations stored relative to same default pose Applying animation to bone overrides any previously applied animation bone rotations Keeping the Motion Natural Blend between animations during transition
Keeps animation from becoming choppy Implementation Store array of quaternions (cache) Quaternion algebra is method for representing 3 dimensional orientation Animation refers to array to gradually blend the animation Reputation
Responding to the Player NPCs should React to players ability React in situation appropriate manner One way to implement this Reputation system Prevents NPC Omniscience
NPC Bob shouldnt know what happened with NPC Larry if not involved Types of Reputation Systems Create global reputations based on average of others opinions Use Centralized authorities to create global reputations inherited by all Problems with Existing
Systems Identity Usually every individual has one known identity Problem identity easily faked Ratings Excessive negative or positive ratings with no substantiation Surreal Software
Implementation Event Driven Data Structures Event Template Reputation Event
Master Event List Long Term Memory (per NPC) Reputation Table (per NPC) Only stores Events involving player Events where NPC killed someone Reputation Event Triggered when player does something that has positive or negative affect on their
reputation Example Kills NPCs friend Kills NPCs enemy Master Event List Holds all important actions NPCs privy to Stored as list of Reputation Events Reputation Event added to this when its created Stores complete information about all
events Events no NPC knows about deleted to keep list small Multiple copies of same event receive one Long Term Memory References all events in Master Event List that NPC in question was involved in Witnessed Heard About
Reputation Table Stores NPCs opinion of player Each NPC has own opinions Is list of groups Group for Player Group for members of each group On recognition of reputation event, reputation effect applied Reputation Details
Implemented via dynamic array Contains reputation meters One meter for each group One meter for player Meter has Group ID 2 Float Variables Like Hate
Long Term Memory Contains compressed versions of Reputation events known to NPC Data Event ID Magnitude of event Time encountered Long Term Memory Example
NPC Bob and NPC Lisa witness the same event Lisa watches to see player kill another NPC Bob runs away Lisa remembers Killed Bob remembers ShootAt Long Term Memory Physical Memory Management Table consists of references instead of the actual
data Dont let NPC learn something they shouldnt know Not witness or recipient of information, shouldnt know it If a tree falls in a forest and no one is there to hear it... the NPC doesnt remember the sound of it falling Let NPC forget Choke Points
How Learning Occurs Event Announcers Sharing Information Memory Match and Updates Event Announcers Spawned by actions at position of object of event On NPC Bobs death event announced immediately Announcer at body stays and continually
announces Bobs death Sharing Let the NPCs Gossip If Eve likes Lisa, theyll share If Eve dislikes Lisa shell keep the info to herself Memory Match and Update For each event NPC checks to see if this event matches
something its already stored Checks subject group, verb, object group, object individual What needs to match Check group, verb, etc, exactly Group, verb, object match but not individual ID Unknown subject group but matches everything else
Seven Rules For Updating (1) Ignore: 1. MagnitudenewEvent <= MagnitudeoldEvent
New Event Subject group Unknown Same subject group for both Object individual ID the same for both events 2. Subject groups match and are already known Old event has maximum magnitude Seven Rules for Updating (2)
Update Magnitude in Long Term Memory, apply reputation effects MagnitudeNewEvent > MagnitudeOldEvent New Event contains unknown subject group or subject groups equal Object individual IDs the same
Seven Rules for Updating (3) Remove existing event and add the one with the greater magnitude, applying reputation effects 1. New event subject group known
Existing event subject group unknown Object individual IDs match New Event has new information 2. Subject groups known and match New event has maximum magnitude
Seven Rules for Updating (4) Add new event and apply reputation effects 1. Subject groups for either or both unknown Object individual IDs different 2. Subject groups known and match Object individual IDs different Neither even has maximum magnitude Applying Updates and
Incomplete Information Applying Update Modifies own Long Term Memory first Then notifies Master Event List If exists there already, update and increase reference count Incomplete Information Complete the information with peer data Bob has an event with an unknown subject group Lisa has a matching event with a known subject
group Simulating Animals Animal NPC Behavior Usage Ambient animals Scenery Secondary animals Some interaction but not focus
Chickens in Zelda Primary animals Primary focus of a game Hunting situations Real Life behavior must be taken into account Behavior Simple Animals Bugs, Solitary Animals, Flocks of Birds,
Schools of Fish General behaviors studied and mimicked Birds and fish unique because travel in flocks/schools Allow for low level multiagent system behavior Behavior Primary and Secondary Animals Generally concerns large mammals Real behavior more varied and intelligent than that of bugs, fish, etc
Best programmed via state machines FSMs adequate Fuzzy logic presents more realistic behavior Autonomous Characters Autonomous Characters Emergent Gameplay Players have freedom to explore and solve
problems without restraint Game world responds appropriately Player rewarded for creativity and exploration Example: The Sims, NOLF2 Controlling Autonomous Characters (1) Need to not stray too far from what it was meant for Ownership of objects prevents NPC Bob from stealing Lisas desk when she uses the
restroom Dependencies Couple two items together to create atomic behavior Toilet usage and hand washing Controlling Autonomous Characters (2) Responsibility Helps player decide what to do appropriately
Relevance NPCs understanding of relevance to the storyline helps decrease overreaction of system Example: NOLF2 rabbit being scared off triggered very intense music, this is undesirable Priority High priority implies urgency to NPC Controlling Autonomous
Characters (3) State of Consciousness If character is sleeping or unconscious it shouldnt be responding to sensory input Expected State Character might expect compatriot to be patrolling, therefore expects to see patrolling behavior Unconsciousness would be unexpected and dealt with according to the game
Character Introspection Suggested questions that agent should ask itself in an emergent environment Ownership is this mine? Dependency is there something I need to do before x? Responsibility what am I supposed to be doing? Relevance how will my actions affect gameplay? Priority whats most important right now?
Consciousness am I conscious? Expected state is everything as I expect it to be? Others how will what I do affect other NPCs Coordinated Behavior Splitting Up Dont have all agents take the same path Solutions Reserve path
Agents reserve pathfinding nodes for themselves so that everyone doesnt go the same way Adopt maximum occupancy rule Only allow a certain number of agents at a given location Use inter-agent communication to find out what other agents are doing and plan accordingly
Getting Out Of The Way Obstruction by ally can be resolved in 4 ways (regarding firing) Do nothing Fire anyway (killing ally)
Agent moves Ally moves Inter Agent Communication Efficient and intelligent utilization of inter agent communication can enable the agents to behave, as a group, much more intelligently than they otherwise might NPC can share knowledge with another NPC NPCs can coordinate behavior
More Humanlike NPCs Sensory Perception (1) First step in making an NPC more humanlike Tactile Achieved through collision detection systems and smart terrain Range Immediate surrounding area on all sides
Sensory Perception (2) Visual Need to model NPC visual system after a person Sensing region should be cone shaped should extend to limited distance in front of agent to simulate binocular vision Lighting conditions can effect NPCs sight realistically Audio Sound attenuates with distance therefore NPC hearing should degrade with distance from sound
NPC should be able to hear same things player can hear Sensory Perception (3) Olfactory Smell should be emitted across some radius depending on strength of smell Smell should deteriorate over time as disperses or get stronger over time if appropriate Corpse smells worse as time goes by
Taste aka Gustatory sensing Not used very often, could be used for game beasts they could get more aggressive when taste raw meat Memory Humans have 3 different kinds of memory Sensory, short term, long term NPC memory
Sensory memory linked to sensory input Short term memory accomplished by utilizing timestamp degradation and importance levels Many ways to implement long term memory Size management can become an issue Personality Model The Big Five Extraversion, agreeableness, conscientiousness, neuroticism, openness
Implement via a desirability algorithm Add bias to decision algorithms depending on agent personality Emotions Eight primary emotions in people Joy, acceptance, fear, surprise, sadness, disgust, anger, anticipation Current game emotions generally scripted
Could implement such that different actions instill different emotions Killing an NPC could invoke sadness, disgust, fear, etc Emotions An Implementation One way that Emotions could be given to an agent is by providing an emotional model to the system Could be divided into 3 parts
Input Internal reaction External Reaction Human Emotions Are three popular theories to how we interpret emotion from external stimulus After external stimulus emotional state alters as result of physiological state change Physiological and emotional states simultaneously affected after receipt of
stiumuls Emotional states determined by perceived cause of stiumulus NPC Emotion Example implementation from IPD for Emotional NPC Societies in Games 5 basic emotions modeled Fear, anger, disgust, sadness, happiness Implementation of Norms was included to
include social acceptability of an action as a consideration Drives included to simulate real world stimulus Social, energy, rest, and heat Physiological Stressors Anything that causes significant change in human body to occur Muscle fatigue, pain, health, anxiety/fear, exposure to cold/hot/chemicals, hunger
If agent is hot, should be sweating If agent comes into contact with chemicals, should receive chemical burns
Mrs. K. Lewis Parts of a Friendly Letter 5 Parts of a Friendly Letter The Heading The Greeting The Body The Closing The Signature Heading Heading ---> 455 East Main Street Mableton, GA 30126 December 1, 2009 The heading of...
Statistical Analysis Cycle. Some useful approaches to analysing data. By the end of this session you should be able to: ... this is the total number of hours I slept during the week. Then I apply a method to calculate...
APPLYING ONLINE TO COLLEGES IN ONTARIO REASONS TO ATTEND COLLEGE Diversity of programs and locations Tuition savings Smaller class sizes Hands on work experience 84% of students found employment within 6 months of graduation Offer University degree programs with easier...
Sneaky Info. Shot. the use of the template pattern sentences, combined into the piece in such a way that the reader doesn't recognize the original template pattern sentences. Example: I love my playful dog. Although he is nearly the size...
Advances in therapy in Diffuse Large Cell B cell and Follicular Lymphoma Dr Robert Marcus Kings College Hospital London * This was a RCT of 4 chemotherapy regimens developed for treatment of DLBC lymphoma.
University Of NSW (Sydney) Q4-17. Members earned Ether cryptocurrency for transacting at 12 campus retailers. vs . 59%. for their favourite loyalty program. 78%. rating. for motivating spend at retailers. vs . 57%. for their favourite loyalty program. 85% ....
ARM 8.3-A Pointer Authentication. 64-bit pointer. Pointer Authentication Codes (PAC) Tweakable MAC. Set in unused bits of virtual address. Key/configuration set at higher privilege level. Instrument with new PAC handling instructions. Opcode determines used key. Operands set PA modifier (tweak...
Ready to download the document? Go ahead and hit continue!