1 / 30

Simple Soccer

Simple Soccer. GAM 376 Robin Burke Fall 2006. Outline. Game Implementation Project #1. Admin. Homework #3 due today Grading 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.

tjacobson
Download Presentation

Simple Soccer

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Simple Soccer GAM 376 Robin Burke Fall 2006

  2. Outline • Game Implementation • Project #1

  3. Admin • Homework #3 • due today • Grading • 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

  4. Simple Soccer • A 2D sports game • 5 agents per team • 4 field players • 1 goal keeper • 1 ball • 1 field • 2 goals

  5. Architecture • Main loop • Update SoccerPitch • Redraw • SoccerPitch • responsible for updating what is on the field

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

  7. MovingEntity • Abstract class for all moving objects • has steering behaviors • Subclasses • SoccerBall • FieldPlayer

  8. 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' • issues • what if inner part is negative? • then the ball won't get that far • what is the initial velocity, v?

  9. 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 • much easier to model • Initial velocity • equals impulse acceleration • equals F / m • So we can calculate TimeToCoverDistance • given two points and a force

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

  11. Team state • kickoff • everybody go to default position • not true soccer kickoff • offense • look for opportunities to get a pass upfield from the player with the ball • defense • go to defensive position • closest player chases ball

  12. Offense other team possession goal scored our team possession Kickoff Defense goal scored play starts

  13. Team Behaviors • Tracks passes • receiving player of a pass • set when a pass is made • Tracks ball • closest player to the ball • constantly updated • Controlling player • the player with the ball • Supporting player • a player that will get into position for a pass

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

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

  16. Steering behaviors • tracking the ball "visually" • chasing the ball • steering to support position • goalie has special behavior to get in blocking position

  17. State Machine • Global state • routes messages • Wait • ReceiveBall • accept a pass • KickBall • make a pass • Dribble • try to move the ball downfield • ChaseBall • try to take possession of the ball • ReturnToHomeRegion • go home for kickoff • SupportAttacker • go to supporting position

  18. MSG: Support MSG: Receive_Ball SupportAttacker ReceiveBall MSG: Go_Home not closest in receiving range ChaseBall Dribble kicked ReturnToHR in range can't shoot or pass can't kick KickBall closest at home Wait goal or pass attempt

  19. Goal Keeper • Different states • TendGoal • interpose self between ball and goal midpoint • InterceptBall • if within tending range • PutBallBackIntoPlay • passes to nearest player

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

  21. Demo

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

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

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

  25. AbstractFactory

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

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

  28. Project #1 • Two parts • Design (10/6) • tell me what you want to do to create a better team • Implementation (5 pm, 10/17) • deliver implementation • I will compile and check compatibility • Tournament (10/18) • In class • Last minute changes OK

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

  30. Monday • Lab using SimpleSoccer

More Related