250 likes | 1.02k Views
SOAR and Video Games. By Rex Oleson II. Video Game Industry. Video games industry reached $9.9 billion in sales for 2004 Grand Theft Auto: San Andreas sold more then 5.1 Million units Halo 2 sold more then 4.2 Million units. Games to Application Crossover. Video Game to Simulation
E N D
SOAR and Video Games By Rex Oleson II Rex Oleson II
Video Game Industry • Video games industry reached $9.9 billion in sales for 2004 • Grand Theft Auto: San Andreas sold more then 5.1 Million units • Halo 2 sold more then 4.2 Million units Rex Oleson II
Games to Application Crossover • Video Game to Simulation • SOCOM Navy Seals • Developed along side of a military training app • Call Of Duty • Considered to be a realistic simulation of military conflict Rex Oleson II
Traditional Game Logic • Patterned Tile Movement • Zelda • Flocking • Potential Functions • Basic Probablity Rex Oleson II
AI techniques become involved • Fuzzy Logic • Threat Assessment • Neural Networks • Finite State Machines Rex Oleson II
Intro to SOAR and Gaming • John Laird and Mike van Lent develop and interface between QuakeII/Decent3 and SOAR • Both of Which are First Person Shooter Style Games(FPS) • John Laird has been presenting papers, and hosting open talks almost every year at the GDC since then Rex Oleson II
Industry • Create system for developing intelligence for game character • Make the games more fun • Refine a reusable knowledge base • Develop a common interface for games to access the knowledge base Rex Oleson II
Research Fields • Environment for testing concepts • Development of new research ideas • Visual environment to see the implications of the AI ideas Rex Oleson II
SOAR SGIO • Came out of interfacing SOAR with video games • SGIO – SOAR General Input Output • SOAR does not make calls to the environment, only to the output Rex Oleson II
SGIO Classes • Soar • Object representing the connection to SOAR • Agent • Represents an individual agent in SOAR • Working Memory • Handles the bookkeeping of the agents memory Rex Oleson II
SGIO connection types • There are 2 connection types to use • API SOAR • Compiled directly into the application • SIO SOAR • Communicates remotely via sockets Rex Oleson II
SGIO Framework Rex Oleson II
SOAR Game Cycle Interaction • Unreal Bot notices entities that have changed • Native DLL sends updated info to SGIO • When Observing is done, commit all changed WME’s to SOAR • SOAR decides the command/s to issue Rex Oleson II
SOAR Game Cycle Interaction • After Decision, the command/s are retrieved by the SGIO • Top Command on the queue is passed to the native code • Native DLL reports the current command to UNREAL • Bot performs action based on command Rex Oleson II
//For API Soar (i.e. integrated kernel) • sgio::Soar* soar = new sgio::APISoar(); • //For SIO Soar (i.e. TSI debug windows) • sgio::Soar* soar = new sgio::SIOSoar("127.0.0.1",6969,true); //IP,port,lockstep • sgio::Agent* agent = soar->CreateAgent("my-agent"); //agent name • agent->LoadProductions("my-agent.soar"); //file name • sgio::WorkingMemory* mem = new sgio::WorkingMemory(agent); Rex Oleson II
//Args for ID’s: parent, ID name • sgio::SoarId* radarId = mem->CreateIdWME(mem->GetILink(),"radar"); //parent,name • sgio::SoarId* tankId = mem->CreateIdWME(radarId,"tank"); //parent,name Rex Oleson II
//Args for Elements: parent, attribute name, attribute value • sgio::IntElement* distance = mem->CreateIntWME(tankId,"distance",5); • sgio::StringElement* position = mem->CreateStringWME(tankId,"position","left"); Rex Oleson II
Modifying Existing WME’s on Input-Link • mem->Update(distance,4); //element, new attribute value • Removing WME’s on Input-Link • mem->DestroyWME(tank); //element to remove; children automatically removed • Sending Changes to Soar • mem->Commit(); Rex Oleson II
Running Agents • //To run all the agents on a particular connection for 15 decision cycles • soar->RunTilOutput(); • //To run a single agent for 15 decision cycles • agent->RunTilOutput(); • Checking Output-Link for Commands • bool waiting = agent->Commands(); Rex Oleson II
Reading Commands from the Output-Link • std::auto_ptr<sgio::Command>cmd = agent->GetCommand(); • std::string name = cmd->GetCommandName(); //name = "move" • std::string value = cmd->GetParameterValue("direction"); //value = "right" Rex Oleson II
Marking Command as Processed • //If everything goes well • cmd->AddStatusComplete(); • //If there is an error (i.e. missing attributes) • cmd->AddStatusError(); • cmd->AddErrorCode(5); //integer Rex Oleson II
Divergence of Research and Game Development • Most game developers are interested in cheats, not true intelligence • Researchers have migrated to problems where empirical comparisons are possible • Game developers need real time algorithms • Game-Playing Public is pushing for much more realistic and advanced AI’s Rex Oleson II
Future Work • SGIO is being abandoned for a new technique • Details where not given Rex Oleson II
References • U.S. video game industry sales dip in 2004, http://yahoo.reuters.com/financeQuoteCompanyNewsArticle.jhtml?duid=mtfh70002_2005-01-18_20-45-13_n18697880_newsml, Tue Jan 18, 2005 03:45 PM ET • AI for Game Developers, David M. Bourg & Glenn Seemann, O’Reilly, July 2004 • Intelligent Agents in Computer Games, Joe Hartford, John Laird, et al., http://ai.eecs.umich.edu/people/laird/papers/AAAIDemo.pdf, Aug. 1999 • It Knows What You’re Going To Do : Adding Anticipation to a Quakebot, John E. Laird, Agents, 2001, pps 385-392 • GAME AI: THE STATE OF THE INDUSTRY, PART TWO, David C. Pottinger and John E. Laird, http://www.gamasutra.com/features/20001108/laird_01.htm • Stokes-SoarToUnreal-S22 • SGIO tutorial • SGIO quick reference Rex Oleson II