in receiving range

advertisement
Simple Soccer
GAM 376
Robin Burke
Fall 2006
Outline
Game Implementation
 Project #1

Admin

Homework #3


Grading



due today
I am behind
but no other homework due for awhile
Upcoming



10/9: Design phase of Soccer project
10/11: Midterm
10/17: Soccer project
Simple Soccer
A 2D sports game
 5 agents per team

4 field players
 1 goal keeper

1 ball
 1 field
 2 goals

Architecture

Main loop
Update SoccerPitch
 Redraw


SoccerPitch

responsible for updating what is on
the field
SoccerPitch

Walls on all four sides


no throw-ins or goal kicks
Regions
18 rectangular regions
 for positioning players


Goals

each tracks number of goals scored
MovingEntity

Abstract class for all moving objects


has steering behaviors
Subclasses
SoccerBall
 FieldPlayer

SoccerBall


embeds some of the physics of its motion
FuturePosition



Δx = v Δt + ½ af Δt2
where af is the deceleration due to friction
TimeToCoverDistance


Δt = (v' – v) / af
but what is v'
v  v 2  2a f x

issues
• what if inner part is negative?
• then the ball won't get that far
• what is the initial velocity, v?
Velocity Reset

What really happens?


a player swings a foot
moment of interaction with ball
• impulse



new velocity results
really it is a foot/ball collision
But not necessary to model it this way

assume that the ball is stopped before a kick
• players can't add to existing velocity
• OK, because it looks OK


Initial velocity



much easier to model
equals impulse acceleration
equals F / m
So we can calculate TimeToCoverDistance

given two points and a force
Simple Soccer


Implementation of a 5-player soccer team
Two state machines



"Team state"
"Player state"
Tiered state machines


common in tactical FPS games
teams have a tactical state
• "flanking"

and each member has its own role
• "covering fire"
Team state

kickoff



offense


everybody go to default position
not true soccer kickoff
look for opportunities to get a pass upfield
from the player with the ball
defense


go to defensive position
closest player chases ball
other team
possession
Offense
our team
possession
goal scored
Defense
play starts
goal scored
Kickoff
Team Behaviors

Tracks passes



Tracks ball



closest player to the ball
constantly updated
Controlling player


receiving player of a pass
set when a pass is made
the player with the ball
Supporting player

a player that will get into position for a pass
Support Spot
Considers 30 positions on the
opponent's half of the field
 Calculates which position can

receive a pass and
 can shoot a goal and
 are close enough to ball


Supporting player will try to go to the
best support spot
Player state

defense


chase ball if you're the closest
offense

move toward goal with ball
• pass if possible

without ball (if supporting player)
• move to support spot
• ask for pass

otherwise
• do nothing
Steering behaviors
tracking the ball "visually"
 chasing the ball
 steering to support position
 goalie has special behavior to get in
blocking position

State Machine

Global state



Wait
ReceiveBall


try to take possession of the ball
ReturnToHomeRegion


try to move the ball downfield
ChaseBall


make a pass
Dribble


accept a pass
KickBall


routes messages
go home for kickoff
SupportAttacker

go to supporting position
MSG: Support
MSG: Receive_Ball
SupportAttacker
ReceiveBall
not closest
MSG: Go_Home
in receiving range
kicked
ChaseBall
Dribble
ReturnToHR
can't shoot
or pass
in range
can't kick
closest
KickBall
goal or pass
attempt
Wait
at home
Goal Keeper
Different states
 TendGoal



InterceptBall


interpose self between ball and goal
midpoint
if within tending range
PutBallBackIntoPlay

passes to nearest player
Key Calculations




Is a pass safe?
 predict trajectory of ball
 predict closest intercept of each opponent
Is it possible to shoot?
 test positions along the goal mouth
 does this randomly
Who to pass to?
 tests all of the teammates for validity and nearness to
goal
Where to place the pass?
 out of opponents range
 within receivers range
Demo
SteeringSoccerLab
Not the same as Buckland's
 Allows multiple team implementations
 Records the CPU time used by each
AI implementation
 Don't use Buckland's code

Abstract class

AbstSoccerTeam


all soccer teams must subclass
Abstract functions

CreatePlayers
• teams can have different player setups

InitStateMachine
• for team state machine
• teams can have different team FSMs


InitPlayers
Name
How to allow different
opponents?

Need students to make their own soccer
teams




need to run tournament in which teams
compete
don't want to recompile when adding a team
How to make extensible code that doesn't
need recompilation?
In particular

how can I create an instance if I don't know
the name of the class
AbstractFactory
Registration




How to know which factory object to use?
Static instance that registers a name on
instantiation
Table associating factories with names
Result


dynamic object creation
(A bit easier in Java using reflection)
Implementation

TeamMaker class
 includes a static "registry" member
• table of name, class pairs

has a newTeam method
• looks up the factory class in the table
• calls its makeTeam method

The class stored here is a subclass of TeamMaker
 must implement makeTeam
• makes an instance of the right team object

must include a static member with an instance of itself
• when that instance is created
• it calls the TeamMaker constructor with a name
• the factory class is then registered under that name
Project #1


Two parts
Design (10/6)


Implementation (5 pm, 10/17)



tell me what you want to do to create a better
team
deliver implementation
I will compile and check compatibility
Tournament (10/18)


In class
Last minute changes OK
Tournament rules

Round-robin



1 game matches
5 minutes / match
Scoring

Lower scoring team
• get a bonus if they used less CPU time
• 20% less CPU = 1 point



Ties go to the most efficient team
Degenerate strategies disqualified
Randomized elements must stay
Monday

Lab using SimpleSoccer
Download