vk computer games
play

VK Computer Games Mathias Lux & Horst Pichler Universitt - PowerPoint PPT Presentation

VK Computer Games Mathias Lux & Horst Pichler Universitt Klagenfurt This work is licensed under a Creative Commons Attribution-NonCommercial- ShareAlike 2.0 License. See http://creativecommons.org/licenses/by-nc-sa/2.0/at/ Agenda http://


  1. VK Computer Games Mathias Lux & Horst Pichler Universität Klagenfurt This work is licensed under a Creative Commons Attribution-NonCommercial- ShareAlike 2.0 License. See http://creativecommons.org/licenses/by-nc-sa/2.0/at/

  2. Agenda http:// www.uni-klu.ac.at ● Collision Detection ● Game Framework � Sprites � Sprite-behavior � Bricks ● Short Introduction into AI ● Your Game … some advices 2

  3. The Game Loop Revisited http:// www.uni-klu.ac.at � Double Buffering with repaint-method 3

  4. Collision Detection http:// www.uni-klu.ac.at ● Detect if two objects try to occupy the same space at the same time (overlap) ● Needed in � physical simulations � computational geometry • CAD • GIS � robotics � computer games 4 [ www.vis.uni-stuttgart.de/~frisch/h/diss.htm ]

  5. Game Loop + Collision http:// www.uni-klu.ac.at Remark: example assumes, that there is no z-axis 5

  6. Detection Types http:// www.uni-klu.ac.at ● a priori � predict upcoming collision � objects never really penetrate � respond to collision before it occurred ● a posteriori � advance movement by small time step � check if collision occurs � respond to collision after it occurred � much easier; used in games 6

  7. 2D Games with Static Arrays http:// www.uni-klu.ac.at Object moves 1 field per round Collision: (x1‘ == x1) and (y1‘ == y2) 7

  8. Circles http:// www.uni-klu.ac.at objects move n pixels per loop collision detection with Pythagoras: V = sqrt( (x2-x1) 2 + (y2-y1) 2 ) if V < r1 + r2 � collision 8

  9. Problems with Circles http:// www.uni-klu.ac.at ● Easy to calculate, but … ● Bounding box Bounding Volume 9

  10. Rectangles http:// www.uni-klu.ac.at Object moves n pixels per loop Collision detection: „inelegant“ approach check possible combinations of lines [ A1B1xA2D2, A1B1xB2C2, … ] if lines cut � collission 10

  11. Example http:// www.uni-klu.ac.at Collision detected Collision detected Collision detected B1C1xA2D2 C1D1xA2B2 C1D1xA2B2 � bounce left (if jumps) � new ground-level � bounce down � stop x-movement � stop y-movement � reverse y-movement 11 [ The Great Giana Sisters, Rainbow Arts: http://www.youtube.com/watch?v=zrRHAisdIRg ]

  12. Example http:// www.uni-klu.ac.at ● Optimization issues � check only objects in rows and/or columns of relevant x/y-coords � check moving objects only (?) 12 [ The Great Giana Sisters, Rainbow Arts ]]

  13. Convex Polygons http:// www.uni-klu.ac.at ● Collision detection: � bounding box • imprecise � checking every possible pair? • what exactly means “possible”? • complex polygons meshes! � prerequisites: 13

  14. Useful Java Methods http:// www.uni-klu.ac.at ● Interface Shape (objects with geometric shape) � boolean: contains(Point2D p) � boolean: contains(Rectangle2D r) add � Rectangle2D: getBounds2d() subtract � PathIterator: getPathIterator(AffineTransformation t) ● Implementing classes � Area � Polygon � Rectangle intersect exclusiveOr � Line2D � CubicCurve2D, QuadCurve2D � … ● Polygon � addPoint(int x, int y) ● Area � collision detection with intersect � constructor: Area(Shape s) � Rectangle2D: getBounds(Area a) � but: no projection vector! � boolean: isPolgonyal() � void: add(Area a) � void: subtract(Area a) � void: intersect(Area a) � void: exclusiveOr(Area a) 14

  15. Example http:// www.uni-klu.ac.at call: detect(polygon1, polygon2) 15 [ See Code Example: PolygonCollision ]

  16. Separating Axis Theorem http:// www.uni-klu.ac.at ● Intersect-method provides no projection vector � separating axis theorem ● Convex shape: an object is convex if for every pair of points within one object, every point on the connecting straight line is within the object 16

  17. Separating Axis Theorem http:// www.uni-klu.ac.at ● Given two convex shapes, if we can find an axis along which the projection of the two shapes does not overlap, the shapes don’t overlap. [Herman Minkowski, 1864-1909] Collision detection: no separating axis � collision or: 1 separating axis � no collision problem: infinite number of axis to test? 17

  18. Separating Axis Theorem http:// www.uni-klu.ac.at ● For convex polygon meshes: each faces normal is used as an axis to test for separating axis [ projection ] 18

  19. Collision Detection with SAT http:// www.uni-klu.ac.at no collision! collision! [ collision ] 19

  20. Fast Moving Objects http:// www.uni-klu.ac.at position at t2 sweep test position at t1 collision collision??? ● Sweep test ● Multi-sampling � create a new polygon � create additional along the trajectory polygons in between � test collision with the new � test for each of them polygon 20 Tutorials and further examples [http://www.harveycartel.org/metanet/tutorials/tutorialA.html#jakobsen ]

  21. Is this sufficient? http:// www.uni-klu.ac.at 21 R-Type, Irem[ http://www.youtube.com/watch?v=xPv5lqpA4c4&feature=related ]

  22. Multiple Bounding „Boxes“ http:// www.uni-klu.ac.at Big sprite is non-convex, therefor compose it from several convex polygons … Bounding Volumes 22

  23. Collisions on the Pixel-level http:// www.uni-klu.ac.at ● to avoid collision „over- detection“ we need an even more accurate method � first test on polygon-level � then test on pixel-level 23

  24. Collission Response http:// www.uni-klu.ac.at ● Change the object‘s status (e.g. to „exploding) ● Remove one or both objects ● Projection methods � find the smallest possible displacement � direct modification of object positions ● Penalty force methods [ collision.html ] � use spring forces to pull object out of collision � modify the objects acceleration / direction ● Impulse based methods � use changes in velocity to prevent interpenetration (e.g. stop object) 24

  25. Games Framework http:// www.uni-klu.ac.at ● Bug Runner � see also: Java-code 25 Killer Game Programming in Java, Andrew Davison ]

  26. xxx http:// www.uni-klu.ac.at Bug Runner Class Diagram 26

  27. State Chart � State Transition Table http:// www.uni-klu.ac.at Current State Event Action New State Locked Coin Unlock Unlocked Locked Pass Alarm Locked Unlocked Coin Thanks Unlocked Unlocked Pass Lock Locked 27

  28. Transition Table � Java Code http:// www.uni-klu.ac.at 28

  29. http:// www.uni-klu.ac.at Ball Sprite State Diagram 29

  30. http:// www.uni-klu.ac.at Bug (Player) Sprite State Diagram 30

  31. JumpingJack - Bricks http:// www.uni-klu.ac.at ● Brick-images are stored in an image-strip 0 1 2 3 4 � /images/ ● Brick-patterns are stored in text-files � /images/bricksinfo.txt 44444 222222222 111 2222 11111 444 444 22222 444 111 1111112222222 23333 2 33 44444444 00 000111333333000000222222233333 333 2222222223333301 00000000011100000000002220000000003300000111111222222234 31

  32. JumpingJack - Drawing http:// www.uni-klu.ac.at ● Drawing sequence � background • wrap-around ribbons • parallax scrolling) � bricks � sprites 32

  33. JumpingJack – Offset for Bricks http:// www.uni-klu.ac.at 33

  34. „Intelligence“ in Games http:// www.uni-klu.ac.at ● originally „enemy-intelligence“ was stored in fixed patterns, e.g. Pacman: � Blinky – chases the player � Pinky – ambushes (roundabout) � Inky – random movement, starts chasing when close � Clyde – stupid, moves completely randomly [ remark: combination Blinky-Pinky is deadly ] ● usually bosses in „boss-fights“ have fixed movement patterns 34 Pacman [http://www.youtube.com/watch?v=OsLGvm5-29w ]

  35. AI in (non-board) Games http:// www.uni-klu.ac.at ● In the 1990s � pathfinding problems � incomplete information algorithms („fog of war“) ● In the 2000s � machine learning algorithms (e.g. neural networks) � emergent behavior • study and design of complex/multi-agent systems • swarm-intelligence (flocking of birds) � enemies without „cheating“ AI 35 Fog of War – Warcraft II [http://www.youtube.com/watch?v=OsLGvm5-29w ]

  36. Pathfinding with A* http:// www.uni-klu.ac.at ● Given � terrain � starting position � goal position ● Find shortest path � span tree • calculate new position according to possible movement • calculate f = g + h – g … cost from starting position (covered distance) – h … heuristic: estimated distance to goal • span tree from new position • stop – if shortest path found – depth or time limit reached � Move to first position on calculated shortest path ● Admissibility Theorem � h must be less or equal to the real rest-distance! � for our example: h calculated by the manhattan distance 36 Images taken from Pathfinding for Beginners [ http://www.policyalmanac.org/games/aStarTutorial.htm ]

  37. Pathfinding with A* http:// www.uni-klu.ac.at 37

  38. AI-Thread http:// www.uni-klu.ac.at ● Own thread for AI-calculations � PathFinder( GameState state) implements Runnable • run [ implements loop ] – calculate path(s) – store path(s) information in game state – sleep(n), value of n depends on » wanted behavior » CPU utilization ● Attention: � synchronization! 38

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend