Stavros Vassos, University of Athens, Greece   stavrosv@di.uoa.gr   May 2012INTRODUCTION TO AISTRIPS PLANNING.. and Applic...
Course overview2       Lecture 1: Game-inspired competitions for AI research,        AI decision making for non-player ch...
STRIPS in a real game engine3       Amazing tools available for (indie) game developers!
Game development with Unity3D4       Integrated Game Development Environment       C#, Javascript, Boo programming langu...
Game development with Unity3D5
Game development with Unity3D6       Terminology         Project         Scene         GameObject   and Component     ...
Game development with Unity3D7       3D platform game tutorial        available online by Unity3D         http://unity3d...
Game development with Unity3D8       Sections 1,2 of the tutorial         Start   with an empty platform          level ...
Game development with Unity3D9       Quick demo using         Lerpz         SpringFollowCamera         ThirdPersonCont...
Game development with Unity3D10
Game development with Unity3D   Unity3D     Provides   a basic simulated environment to build AI     agents     Can be ...
iThink: STRIPS planning in Unity3D12        B.Sc. project at the University of Athens          Vassileios-Marios        ...
iThink: STRIPS planning in Unity3D   iThink-Unity3D     Provides a basic framework for specifying and solving      STRIP...
iThink: STRIPS planning in Unity3D14        SimpleGame domain                                turn(?fromd ?tod)          ...
iThink: STRIPS planning in Unity3D// Defining a STRIPS action schemaclass ActionSGMove : iThinkAction{    GameObject From,...
iThink: STRIPS planning in Unity3D     public override void initPreconditions()     {         base.initPreconditions();   ...
iThink: STRIPS planning in Unity3D// Defining the initial statefactList = new List<iThinkFact>();factList.Add( new iThinkF...
iThink: STRIPS planning in Unity3D// Defining the goal stategoalfactList = new List<iThinkFact>();goalfactList.Add( new iT...
iThink: STRIPS planning in Unity3D// Start planning!// Specify search methodbrain.planner.forwardSearch (brain.startState ...
iThink: STRIPS planning in Unity3D   iThink-Unity3D   iThinkBrain uses several classes and components     Fact, State, ...
iThink: STRIPS planning in Unity3D   iThink-Unity3D   GUI under development!
iThink: STRIPS planning in Unity3D
iThink: STRIPS planning in Unity3D   Preconditions
iThink: STRIPS planning in Unity3D   Effects
iThink: STRIPS planning in Unity3D   Filtering mechanism that uses Unity3D tags
iThink: STRIPS planning in Unity3Dpublic class SimpleGameAgent : MonoBehaviour{    iThinkBrain brain ;    public string [ ...
iThink: STRIPS planning in Unity3D   Let’s see a demo of the blocks world implemented in    Unity3D with iThink!
SmartWorkersRTS in Unity3D28        B.Sc. project at the University of Athens          Ioannis   Vlachopoulos        Us...
SmartWorkersRTS in Unity3D29        Real time strategy games (RTS) feature worker units         that follow direct comman...
Experimenting with a commercial game30        Our game-world currently looks like this
Experimenting with a commercial game31        Our game-world currently looks like this
SmartWorkersRTS: Buildings   Forest – Harvest or Hunt   Gold Mine – Extract gold   Armory – Get weapons and tools   Fa...
SmartWorkersRTS: Objects   Deer, Boar – Hunting   Pick – Harvest tool   Bow, Spear, Spell Scrolls – Hunting Weapons   ...
SmartWorkersRTS: Actions   Buy an item from a shop   Harvest an ingredient from forest   Get a tool/weapon from armory...
SmartWorkersRTS: PDDL   Shop ?x               Sells ?x ?y   Laboratory ?x         Is-converted-to ?x ?y   Natural-pla...
SmartWorkersRTS: PDDL(:action get :parameters (?o ?from) :precondition (and (available ?from)                     (buildin...
SmartWorkersRTS in Unity3D   As different buildings are available at steps of the    game, the worker can find different ...
SmartWorkersRTS in Unity3D   Scenario 1     Allbuildings enabled     Default Cost Function – All actions cost 1     Go...
SmartWorkersRTS in Unity3D   Scenario 2     Allbuildings enabled     “money-saving” Cost Function – Buy action costs 7 ...
SmartWorkersRTS in Unity3D   Scenario 3     Shop and Farm disabled     Default Cost Function     Goal : holding(food-r...
SmartWorkersRTS in Unity3D   Scenario 4     Shop and Laboratory disabled     Default Cost Function     Goal : holding(...
Experimenting with a commercial game42        Let’s try a preliminary demo!
Experimenting with a commercial game43
Experimenting with a commercial game44        Amazing tools available for (indie) game developers!
Experimenting with a commercial game45        Let’s see some code from a commercial game                             HL2...
Experimenting with a commercial game46        Let’s see some code from a commercial game                             Dev...
Artificial Intelligence and Video Games47        Source available!
Artificial Intelligence and Video Games48        Valve Developer Community, tools for Alien Swarm          https://devel...
Next lecture49        Lecture 1: Game-inspired competitions for AI research,         AI decision making for non-player ch...
Bibliography50      References        iThink:A Library for Classical Planning in Video-games.         Vassileios-Marios ...
Upcoming SlideShare
Loading in …5
×

Intro to AI STRIPS Planning & Applications in Video-games Lecture5-Part2

1,190 views
1,108 views

Published on

This is a short course that aims to provide an introduction to the techniques currently used for the decision making of non-player characters (NPCs) in commercial video games, and show how a simple deliberation technique from academic artificial intelligence research can be employed to advance the state-of-the art.

For more information and downloading the supplementary material please use the following links:
http://stavros.lostre.org/2012/05/19/video-games-sapienza-roma-2012/
http://tinyurl.com/AI-NPC-LaSapienza

0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,190
On SlideShare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
21
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Intro to AI STRIPS Planning & Applications in Video-games Lecture5-Part2

  1. 1. Stavros Vassos, University of Athens, Greece stavrosv@di.uoa.gr May 2012INTRODUCTION TO AISTRIPS PLANNING.. and Applications to Video-games!
  2. 2. Course overview2  Lecture 1: Game-inspired competitions for AI research, AI decision making for non-player characters in games  Lecture 2: STRIPS planning, state-space search  Lecture 3: Planning Domain Definition Language (PDDL), using an award winning planner to solve Sokoban  Lecture 4: Planning graphs, domain independent heuristics for STRIPS planning  Lecture 5: Employing STRIPS planning in games: SimpleFPS, iThinkUnity3D, SmartWorkersRTS  Lecture 6: Planning beyond STRIPS
  3. 3. STRIPS in a real game engine3  Amazing tools available for (indie) game developers!
  4. 4. Game development with Unity3D4  Integrated Game Development Environment  C#, Javascript, Boo programming languages  Asset-centric instead of code-centric, adopting a look and feel like 3D CAD software
  5. 5. Game development with Unity3D5
  6. 6. Game development with Unity3D6  Terminology  Project  Scene  GameObject and Component  Asset and Prefab  Script
  7. 7. Game development with Unity3D7  3D platform game tutorial available online by Unity3D  http://unity3d.com/support/res ources/tutorials/3d-platform- game
  8. 8. Game development with Unity3D8  Sections 1,2 of the tutorial  Start with an empty platform level  Add our player: Lerpz  Add a camera that follows him  Add a 3rd person controller to control Lerpz  Tweak his movement  Section 5  Add NPCs!
  9. 9. Game development with Unity3D9  Quick demo using  Lerpz  SpringFollowCamera  ThirdPersonController  CharacterController  ThirdPersonPlayerAnimation
  10. 10. Game development with Unity3D10
  11. 11. Game development with Unity3D Unity3D  Provides a basic simulated environment to build AI agents  Can be used as an educational platform to experiment with AI techniques about knowledge representation, reasoning, agent languages and systems, robotics, …  Can be used as a realistic test-bed to try AI techniques for NPCs in commercial video-games
  12. 12. iThink: STRIPS planning in Unity3D12  B.Sc. project at the University of Athens  Vassileios-Marios Anastassiou  Panagiotis Diamantopoulos  SETN-2012 conference paper  iThink: A Library for Classical Planning in Video-games  Code available online  https://code.google.com/p/ithink-unity3d/
  13. 13. iThink: STRIPS planning in Unity3D iThink-Unity3D  Provides a basic framework for specifying and solving STRIPS planning problems inside Unity3D  Can be used as an educational platform to experiment with STRIPS planning and extensions  Can be used as a realistic test-bed to try STRIPS planning in commercial games
  14. 14. iThink: STRIPS planning in Unity3D14  SimpleGame domain  turn(?fromd ?tod)  move(?froml ?tol ?dir)  pickup(?o ?l)  stab(?l ?knife)  shoot(?locn ?locp ?dir ?gun )
  15. 15. iThink: STRIPS planning in Unity3D// Defining a STRIPS action schemaclass ActionSGMove : iThinkAction{ GameObject From, To, Dir; public ActionSGMove( string name, GameObject from, GameObject to, GameObject dir ) : base( name ) { From = from; To = to; Dir = dir; initPreconditions(); initEffects(); }
  16. 16. iThink: STRIPS planning in Unity3D public override void initPreconditions() { base.initPreconditions(); preconditions.Add( new iThinkFact( "npcAt", From ) ); preconditions.Add( new iThinkFact( "npcFacing", Dir ) ); preconditions.Add( new iThinkFact( "adjacent", From, To, Dir ) ); } public override void initEffects() { base.initEffects(); effects.Add( new iThinkFact( "npcAt", To ) ); effects.Add( new iThinkFact( "npcAt", false, From ) ); }}
  17. 17. iThink: STRIPS planning in Unity3D// Defining the initial statefactList = new List<iThinkFact>();factList.Add( new iThinkFact( "npcAt", GameObject.Find( "LOC1" ) ) );factList.Add( new iThinkFact( "npcFacing", GameObject.Find( "UP" ) ) );factList.Add( new iThinkFact( "npcEmptyHands" ) );factList.Add( new iThinkFact( "playerAt", GameObject.Find( "LOC8" ) ) );...brain.startState = new iThinkState( "Initial", new List<iThinkFact>( factList ) );
  18. 18. iThink: STRIPS planning in Unity3D// Defining the goal stategoalfactList = new List<iThinkFact>();goalfactList.Add( new iThinkFact( "playerDown" ) );brain.goalState = new iThinkState( "Goal", new List<iThinkFact>( goalfactList ) );
  19. 19. iThink: STRIPS planning in Unity3D// Start planning!// Specify search methodbrain.planner.forwardSearch (brain.startState , brain.goalState , brain.ActionManager , 1);// Get the plan as a sequence of actionsbrain.planner.getPlan().debugPrintPlan();
  20. 20. iThink: STRIPS planning in Unity3D iThink-Unity3D iThinkBrain uses several classes and components  Fact, State, Action, Plan, Planner  SensorySystem  ActionManager, ActionSchemas Basic search methods implemented  Depth-First, Breadth-First, Best-First, A*  A modular design allows to easily integrate different methods
  21. 21. iThink: STRIPS planning in Unity3D iThink-Unity3D GUI under development!
  22. 22. iThink: STRIPS planning in Unity3D
  23. 23. iThink: STRIPS planning in Unity3D Preconditions
  24. 24. iThink: STRIPS planning in Unity3D Effects
  25. 25. iThink: STRIPS planning in Unity3D Filtering mechanism that uses Unity3D tags
  26. 26. iThink: STRIPS planning in Unity3Dpublic class SimpleGameAgent : MonoBehaviour{ iThinkBrain brain ; public string [ ] schemaList = { "ActionSGMove-3-Fact::adjacent", "ActionSGTurn-2-Fact::canTurn", "ActionSGShoot-4-Fact::adjacent-Tag::gun", "ActionSGStab-2-Tag::location-Tag::knife", "ActionSGPickUp-2-Tag::knife-Tag::location", "ActionSGPickUp-2-Tag::gun-Tag::location“ }; public void Awake() { //executed when NPC is constructed (GameObject is initialized) brain = new iThinkBrain() ; brain.ActionManager = new iThinkActionManager() ; ...
  27. 27. iThink: STRIPS planning in Unity3D Let’s see a demo of the blocks world implemented in Unity3D with iThink!
  28. 28. SmartWorkersRTS in Unity3D28  B.Sc. project at the University of Athens  Ioannis Vlachopoulos  Use iThink for STRIPS planning in a real-time strategy game to guide the actions of a worker unit  In progress!
  29. 29. SmartWorkersRTS in Unity3D29  Real time strategy games (RTS) feature worker units that follow direct commands  Pointand click  Get this resource, build this structure, etc  The idea of this project is to allow some upgraded workers also take more long-term responsibilities  Requires a “rich” game-world where interesting interactions can take place between available resources, structures, objects
  30. 30. Experimenting with a commercial game30  Our game-world currently looks like this
  31. 31. Experimenting with a commercial game31  Our game-world currently looks like this
  32. 32. SmartWorkersRTS: Buildings Forest – Harvest or Hunt Gold Mine – Extract gold Armory – Get weapons and tools Farm – Get rice (ingredient for food-ration) Shop – Buy useful items Laboratory – Convert ingredients to other items (herbs  potions, gold  coins, rice  food-ration) Magic Tower – Provides spell scrolls (weapons)
  33. 33. SmartWorkersRTS: Objects Deer, Boar – Hunting Pick – Harvest tool Bow, Spear, Spell Scrolls – Hunting Weapons Food ration Potions Coins Gold – to produce coins Rice, raw meat – ingredients for food ration Herbs – Ingredients for potions
  34. 34. SmartWorkersRTS: Actions Buy an item from a shop Harvest an ingredient from forest Get a tool/weapon from armory Produce a new item in laboratory using some ingredients Hunt an animal with a weapon
  35. 35. SmartWorkersRTS: PDDL Shop ?x  Sells ?x ?y Laboratory ?x  Is-converted-to ?x ?y Natural-place ?x  Holding ?x Building ?x  Tool ?p Lives-in ?x ?y  Weapon ?x Money ?m (coins)  Provides ?x ?y
  36. 36. SmartWorkersRTS: PDDL(:action get :parameters (?o ?from) :precondition (and (available ?from) (building ?from) (provides ?from ?o)) :effect (holding ?o))
  37. 37. SmartWorkersRTS in Unity3D As different buildings are available at steps of the game, the worker can find different ways to achieve the same goals, e.g., bring food Interesting results arise when we consider different evaluation functions and search for the optimal solution  Use no coins  Prefer faster outcomes …
  38. 38. SmartWorkersRTS in Unity3D Scenario 1  Allbuildings enabled  Default Cost Function – All actions cost 1  Goal : Holding(food-ration)We expect that the agent will use only the shop to get a food-ration object, given that he is holding “coins”.
  39. 39. SmartWorkersRTS in Unity3D Scenario 2  Allbuildings enabled  “money-saving” Cost Function – Buy action costs 7  Goal : holding(food-ration)We expect that the agent will avoid using the shop, and either hunt or get resources from farm to produce a food-ration
  40. 40. SmartWorkersRTS in Unity3D Scenario 3  Shop and Farm disabled  Default Cost Function  Goal : holding(food-ration)The agent has only hunting as the only means to produce a food-ration
  41. 41. SmartWorkersRTS in Unity3D Scenario 4  Shop and Laboratory disabled  Default Cost Function  Goal : holding(food-ration)The agent will not find any plan
  42. 42. Experimenting with a commercial game42  Let’s try a preliminary demo!
  43. 43. Experimenting with a commercial game43
  44. 44. Experimenting with a commercial game44  Amazing tools available for (indie) game developers!
  45. 45. Experimenting with a commercial game45  Let’s see some code from a commercial game  HL2-SDK, npc_BaseZombie.cpp  lines 1828-1870 switch ( m_NPCState ) { case NPC_STATE_COMBAT: … case NPC_STATE_ALERT: … }
  46. 46. Experimenting with a commercial game46  Let’s see some code from a commercial game  Developers console  map  npc_create  npc_task_text  npc_route  npc_select  npc_tasks  npc_conditions  …
  47. 47. Artificial Intelligence and Video Games47  Source available!
  48. 48. Artificial Intelligence and Video Games48  Valve Developer Community, tools for Alien Swarm  https://developer.valvesoftware.com/wiki/Authoring_T ools/SDK_(Alien_Swarm)  Programming overview  https://developer.valvesoftware.com/wiki/Category:Pr ogramming  AI programming  https://developer.valvesoftware.com/wiki/AI_Program ming
  49. 49. Next lecture49  Lecture 1: Game-inspired competitions for AI research, AI decision making for non-player characters in games  Lecture 2: STRIPS planning, state-space search  Lecture 3: Planning Domain Definition Language (PDDL), using an award winning planner to solve Sokoban  Lecture 4: Planning graphs, domain independent heuristics for STRIPS planning  Lecture 5: Employing STRIPS planning in games: SimpleFPS, iThinkUnity3D, SmartWorkersRTS  Lecture 6: Planning beyond STRIPS
  50. 50. Bibliography50  References  iThink:A Library for Classical Planning in Video-games. Vassileios-Marios Anastassiou, Panagiotis Diamantopoulos, Vassos Stavros, Manolis Koubarakis. In Proceedings of the 7th Hellenic Conference on Artificial Intelligence (SETN), 2012.  Real-time Action Planing with Preconditions and Effects. Stavros Vassos. Game Coder Magazine, March 2012.

×