SOAR and Video Games
By Rex Oleson II
2/6/2009
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
2/6/2009
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
2/6/2009
Rex Oleson II
Traditional Game Logic
Patterned Tile Movement
Zelda
Flocking Potential Functions Basic Probablity
2/6/2009
Rex Oleson II
AI techniques become involved
Fuzzy Logic
Threat
Assessment
Neural Networks Finite State Machines
2/6/2009
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
2/6/2009
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
2/6/2009
Rex Oleson II
Research Fields
Environment for testing concepts Development of new research ideas Visual environment to see the implications of the AI ideas
2/6/2009
Rex Oleson II
2/6/2009
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
2/6/2009
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
2/6/2009
SGIO connection types
There are 2 connection types to use
API
SOAR SOAR
Compiled directly into the application
Communicates remotely via sockets
SIO
2/6/2009
Rex Oleson II
SGIO Framework
2/6/2009
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
2/6/2009
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
2/6/2009 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("myagent"); //agent name agent->LoadProductions("my-agent.soar"); //file name sgio::WorkingMemory* mem = new sgio::WorkingMemory(agent);
Rex Oleson II
2/6/2009
//Args for ID’s: parent, ID name sgio::SoarId* radarId = mem>CreateIdWME(mem>GetILink(),"radar"); //parent,name sgio::SoarId* tankId = mem>CreateIdWME(radarId,"ta nk"); //parent,name
2/6/2009
Rex Oleson II
//Args for Elements: parent, attribute name, attribute value sgio::IntElement* distance = mem>CreateIntWME(tankId,"di stance",5); sgio::StringElement* position = mem>CreateStringWME(tankId ,"position","left");
2/6/2009
Rex Oleson II
Modifying Existing WME’s on InputLink
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();
2/6/2009
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();
2/6/2009
Rex Oleson II
Reading Commands from the Output-Link
std::auto_ptrcmd = agent>GetCommand(); std::string name = cmd>GetCommandName(); //name = "move" std::string value = cmd>GetParameterValue("directio n"); //value = "right"
2/6/2009
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
2/6/2009
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
2/6/2009
Rex Oleson II
Future Work
SGIO is being abandoned for a new technique Details where not given
2/6/2009
Rex Oleson II
References
U.S. video game industry sales dip in 2004, http://yahoo.reuters.com/financeQuoteCompanyNewsArticle.jhtml?duid=mtf h70002_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
2/6/2009
Rex Oleson II