950 likes | 1.33k Views
Game Programming (Game AI Technologies). 2011. Spring. What is AI?. Artificial Intelligence (AI) The computer simulation of intelligent behavior What is Intelligence? Behavior that exhibits great ability to adapt and solve complex problems Produce results that are completely unrealistic
E N D
Game Programming(Game AI Technologies) 2011. Spring
What is AI? • Artificial Intelligence (AI) • The computer simulation of intelligent behavior • What is Intelligence? • Behavior that exhibits great ability to adapt and solve complex problems • Produce results that are completely unrealistic • Behavior that is close to that of human • Humans are not always brilliant Game AIs are not just “problem solving robots” but lifelike entities
Roles of AI in Games • Opponents • Teammates • Strategic Opponents • Support Characters • Autonomous Characters • Commentators • Camera Control • Plot and Story Guides/Directors
AI Entity • AI entity • Agent • A virtual character in the game world • Ex) enemies, NPCs, sidekicks, an animated cow in a field • These are structured in a way similar to our brain • Abstract controller • A structure quite similar to the agent, but each subsystem works on a higher level than an individual • Ex) strategy game The entity that acts like the master controller of the CPU side of the battle
Goals of AI action game opponent • Provide a challenging opponent • Not always as challenging as a human -- Quake monsters. • What ways should it be subhuman? • Not too challenging. • Should not be superhuman in accuracy, precision, sensing, ... • Should not be too predictable. • Through randomness. • Through multiple, fine-grained responses. • Through adaptation and learning.
Structure of an Intelligent Agent • Sensing: perceive features of the environment. • Thinking: decide what action to take to achieve its goals, given the current situation and its knowledge. • Acting: doing things in the world. • Thinking has to make up for limitations in sensing and acting. • The more accurate the models of sensing and acting, the more realistic the behavior.
Simple Behavior • Random motion • Just roll the dice to pick when and which direction to move • Simple pattern • Follow invisible tracks: Galaxians • Tracking • Pure Pursuit • Move toward agent’s current position • Ex) Head seeking missile • Lead Pursuit • Move to position in front of agent • Collision • Move toward where agent will be • Evasive – opposite of any tracking • Delay in sensing gives different effects
Moving in the World: Path Following • Just try moving toward goal. Goal Source
Problem Goal Source
Create Avoidance Regions Goal Source
Path Finding • A* Algorithm • find a shortest-path between two points on a map • Starting with the base node • Expand nodes using the valid moves • Each expanded node is assigned a “score” • Iterate this process • until these paths prove invalid or one of these paths reach the target
Path Finding • The overall score for a state • f(node) = g(node) + h(node) • f(node): the total score (the sum of g and h) • g(node): the cost to get from the starting node to this node(측정치) • A component that accounts for our past behavior • h(node): the estimated cost to get from this node to the goal(추정치) • A component that estimate our future behavior • The Manhattan distance (4-connected game world) • Manhattan(p1, p2) = | p2.x – p1.x | + | p2.z – p1.z | Ex) p1 (2,2), p2 (1,0) h = 3 • Euclidean distance (8-connected)
Game AI • Game AI • A* algorithm • Quite smart, but not very realistic • Need to keep a reasonable degree of imperfection built into the AI design • A balance between generating • behavior that is both highly evolved and sophisticated • And behavior that is more or less human Game AIs are not just “problem solving robots” but lifelike entities Comparison between A* and a human path finder
Can be extremely expensive Can be modulated by “think” Finite-state machines Decision trees Neural nets Fuzzy logic Rule-based systems Planning systems Execution Flow of an AI Engine Sense Environment Think Act
Structure of an AI System • Sensing the world (The slowest part of the AI) • All AIs need to be aware of their surroundings • use that information in the reason/analysis phase • What is sensed and how largely depend on the type of game • Ex) an individual enemy in Quake • Where is the player and where is he looking? • What is the geometry of the surroundings? • Which weapons am I using and which is he using? • Ex) master controller in a strategy game (Age of Empires) • What is the balance of power in each subarea of the map? • How much of each type of resource do I have? • What is the breakdown of unit types: infantry, cavalry, … • What is my status in terms of the technology tree? • What is the geometry of the game world?
Structure of an AI System • Memory • Storing AI data is often complex • the concepts being stored are not straightforward • In an individual level AI (the less of a problem) • Store points, orientations • and use numeric values to depict the “state” the AI is in • A master controller • These data structures are nontrivial • Ex) how do we store the balance of power, a path? • Case-by-case solutions Can it remember prior events? For how long? How does it forget?
Structure of an AI System • Analysis/Reasoning Core (= Think) • Uses the sensory data and the memory • to analyze the current configuration • Make a decision • Can be slow or fast depending on the number of alternatives and the sensory data to evaluate • Slow process Chess playing • Fast process moving a character in Quake
Structure of an AI System • Action/Output System • Permeate actions and responses • Many games exaggerate the action system • Personality and perceive intelligence was enhanced • The character’s intensions are obvious • Personality is conveyed • Ex) Super Mario Bros (creatures similar AIs)
Game Programming(Action Oriented AI) 2011. Spring
Action Oriented AI • Action Oriented AI • Overview of AI methods used in fast-paced action games. • Action: intelligent activity that involves changes of behavior at a fast speed. • Locomotion behaviors • Ex) a character runs in Mario • Simple aggression or defense • Ex) enemies shooting or ducking in Quake
Object Tracking • Object Tracking • Eye contact (aim at a target: 조준하기) • Given an orientation, a point in space • Computing the best rotation to align the orientation with the point • Solution • 2D Hemiplane Test • 3D Version: Semispaces
Eye Contact: 2D Hemiplane Test • 2D Hemiplane Test • Top-down view, overseeing the X,Z plane point mypos; // position of the AI float myyaw; // yaw angle in radians. I assume top-down view point hispos; // position of the moving target • The line formed by mypos and myyaw X = mypos.x + cos(myyaw) * t Z = mypos.z + sin(myyaw) * t • Solving for t (X – mypos.x)/cos(myyaw) - (Z – mypos.z)/sin(myyaw) = 0 • Which side ? F(X,Z)= (X – mypos.x)/cos(myyaw) - (Z – mypos.z)/sin(myyaw) F(X,Z) > 0 (it lies to one side of the line) F(X,Z) = 0 (it lies exactly on the line) F(X,Z) < 0 (it lies to the opposite side) 3 sub, 2 div, 1 comparison
3D version: Semispaces • 3D version: Semispaces • Need to work with the pitch and yaw angles • The equation of a unit sphere x = cos(pitch) cos(yaw) y = sin(pitch) z = cos(pitch) sin(yaw) • Use two plane to detect both left-right and the above-below test • Which side? if (vertplane.eval(target)>0) yaw-=0.01; else yaw+=0.01; if (horzplane.eval(target)>0) pitch-=0.01; else pitch+=0.01;
Chasing • Chasing • Moving forward while keeping eye contact with the target • Chase 2D: Constant speed • Depends on the relationship between • our speed, the target’s speed, and our turning ability void chase(point mypos, float myyaw, point hispos) { reaim(mypos, myyaw, hispos); mypos.x = mypos.x + cos(myyaw) * speed; mypos.z = mypos.z + sin(myyaw) * speed; } aiming and advancing
Chasing • Predictive chasing • Not aim at the target directly • but try to anticipate his movement and guess his intensions • Tree step approach (instead of aiming and advancing) • Calculate a projected position • Aim at that position • Advance • void chase(point mypos, float myyaw, point hispos,point prevpos) • { • point vec=hispos-prevpos; // vec is the 1-frame position difference • vec=vec*N; // we project N frames into the future • point futurepos=hispos+vec; // and build the future projection • reaim(mypos,myyaw,futurepos); • mypos.x = mypos.x + cos(myyaw) * speed; • mypos.z = mypos.z + sin(myyaw) * speed; • }
Evasion • Evasion • The opposite of chasing • In stead of trying to decrease the distance to the target • Try to maximize it void evade(point mypos, float myyaw, point hispos) { reaim(mypos, myyaw, hispos); negated mypos.x = mypos.x + cos(myyaw) * speed; mypos.z = mypos.z + sin(myyaw) * speed; }
Patrolling • Patrolling • Store a set of waypoints that will determine the path followed by the AI • Two configurations (waypoints) • Cyclic: W1 W2 W3 W4 W5 W1 W2 W3 W4 W5 … • Ping-pong: W1 W2 W3 W4 W5 W4 W3 W2 W1 W2 … • Implementation • Two state finite machine • Advance toward the next waypoint • Update next waypoint • Adding a third state • Chase behavior • Triggered by using a view cone for the AI • Ex) Commandos
Hiding and Taking Cover • Hiding and Taking Cover • AIs to run for cover and remain unnoticed by the player • Taking cover • Find a good hiding spot • Move there quickly (= chase routine) • Three data items • Position and orientation of the player • Our position and orientation • The geometry of the level
Hiding and Taking Cover • Actual algorithm • Finding the closest object to the AI’s location • Using the scene graph • Computing a hiding position for that object • Shoot one ray from the player position to the barycenter of object • Compute a point along the ray that’s actually behind the object • Ex) Medal of Honor
Shooting • Shooting • Infinite-Speed Targeting • Very high speed compared to the speed of the target (virtually zero) • Aligned with the target at the moment of shooting • Abuse infinite-speed weapon (Ex: laser gun) • Unbalance your game • Solution • The firing rate: very low • The ammunition: limited • The weapon: hard to get
Shooting • Real-World Targeting • Shoots projectiles at a limited speed • Shooting fast moving target is harder than shooting one that stand still • Finite-speed devices (sniper-type AI) • The Still Shooter • Only shoots whenever the enemy is standing still for a certain period of time • Disadvantage : Shooter will have very few opportunities to actually shoot • The Tracker • Shoot moving target • Compute the distance from the sniper to the target • Use projectile velocity • Predict where the target will be Single-shot firing devices
Shooting • Machine Guns • Fast firing rates at the cost of inferior precision • Target not people but areas • hardly ever moved • Did not have a lot of autonomy • Short firing burst
Putting It All Together • Putting It All Together • Blend these simple behaviors into a AI system • Parallel automata • AI synchronization • Parallel automata • The locomotion AI • Control locomotion • Chasing, evading, patrolling, hiding • The gunner AI • Evaluate the firing opportunities • Targeting and shooting down enemies
Putting It All Together • AI Synchronization • Using shared memory • Ex) group of enemy (half-life) • Synchronization become more complex • more sophisticated interaction • Better use artificial life techniques
Action Based Game • Platform Games • Platform/jump’n run games • Ex) Mario or Jak and Daxter • AIs are not very complex • Easily coded using finite-state machine • Chasers • Get activated whenever the player is within a certain range • The turret • A fixed entity that rotates, and when aiming at the player, shoots at him • Examples • Gorilla (in Jak and Daxter) • Chase the player and kill on contact • Make game too boring add chest-hitting routine • Weak point can attack the gorilla whenever he is hitting his chest • Bosses • Not much different than basic chaser • Complex, long-spanning choreographies • Ex) Jak and Daxter: The boss flower • Fixed to the ground • Spawn small spider become chaser
Action Based Game • Shooters • A bit more complex than platform • because the illusion of realistic combat must be conveyed • Usually built around FSMs • Need a logical way to layout the scenario • Use a graph structure with graph nodes for every room/zone • Group behavior (Ex: Half-Life)
Action Based Game • Fighting Games • State machine • States: attack, stand, retreat, advance, block, duck, jump • Compute the distance to the player • Decide which behavior to trigger • Adding a timer dose not stay in the same state forever • Predictive AI • Enemy learn to detect action sequences as he fights us • FSM plus correlation approach • Higher-difficulty enemies • State-space search • Build a graph with all the movement possibilities • Search optimal move sequence • Tabulated representation • A table with a simple attack moves and their associated damage • Ex) Distance = 3 meters, high kick, jump, punch, Damage = 5
Action Based Game • Racing Titles • Implemented by Rule based system • If we are behind another vehicle and moving ->faster advance • If we are in front of another vehicle and moving slower -> block his way • Else -> follow the track • Advance behavior • Using prerecorded trajectory • Plug-in • Analyze the track and generate the ideal trajectory
Finite State Machines • Finite State Machines (FSMs) • Also called deterministic finite automata (DFA) or state machine or automata • Definition • A set of states • Represent the scenarios or configurations the AI can be immersed in • A set of transitions • Conditions that connect two states in a directed way • Advantages • Intuitive to understand, Easy to code • Perform well, and represent a broad range of behaviors
Give him a born HENGRY QUIET After 4 hours Finite State Machines • Example • A dog is HUNGRY • If you give him a bone, he will not be hungry anymore • He’ll be QUIET after eating the bone • And he’ll become hungry after four hours of being quiet • States (using circles) 1 and 3 • Transitions (using lines) 2 and 4
Attack E, -D E E -E E D Chase S, -E, -D Wander -E, -S, -D S -S D D -E S Code … … Action (callback) performed when a transition occurs Example FSM Events: E=Enemy Seen S=Sound Heard D=Die Problem: No transition from attack to chase Spawn D
Attack-S E, -D, S Attack E, -D, -S S -S -E E D E -E E Wander -E, -S, -D -S D -E Example FSM - Better Events: E=Enemy Seen S=Sound Heard D=Die D Chase S, -E, -D S D S Spawn D
Example FSM with Retreat Attack-ES E,-D,S,-L Retreat-S -E,-D,S,L Attack-E E,-D,-S,-L S L -S L -L E Events: E=Enemy Seen S=Sound Heard D=Die L=Low Health Each feature with N values can require N times as many states -E E -L Retreat-ES E,-D,S,L Wander-L -E,-D,-S,L E -L E L -S -L L S Retreat-E E,-D,-S,L Wander -E,-D,-S,-L -E -E E D D Chase -E,-D,S,-L D D Spawn D (-E,-S,-L) S
Pick-up Powerup Start Turn Right Go-through Door Hierarchical FSM Attack • Expand a state into its own FSM Wander E/-E Chase S/-S Die Spawn
Approach .3 Aim & Slide Right & Shoot .3 .3 .4 .3 .4 Aim & Slide Left & Shoot Aim & Jump & Shoot Non-Deterministic HierarchicalFSM (Markov Model) Wander Attack No enemy Start Die Start
FSM Evaluation • Advantages: • Very fast – one array access • Can be compiled into compact data structure • Dynamic memory: current state • Static memory: state diagram – array implementation • Can create tools so non-programmer can build behavior • Non-deterministic FSM can make behavior unpredictable • Disadvantages: • Number of states can grow very fast • Exponentially with number of events: s=2e • Number of arcs can grow even faster: a=s2 • Hard to encode complex memories
Classification Problems • Task: • Classify “objects” as one of a discrete set of “categories” • Input: set of facts about the object to be classified • Is today sunny, overcast, or rainy • Is the temperature today hot, mild, or cold • Is the humidity today high or normal • Output: the category this object fits into • Should I play tennis today or not? • Put today into the play-tennis category or the no-tennis category