10/24/2015rex oleson ii soar and video games by rex oleson ii
TRANSCRIPT
04/20/23 Rex Oleson II
SOAR and Video Games
By Rex Oleson II
Rex Oleson II04/20/23
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 II04/20/23
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 II04/20/23
Traditional Game Logic
Patterned Tile MovementZelda
Flocking Potential Functions Basic Probablity
Rex Oleson II04/20/23
AI techniques become involved
Fuzzy LogicThreat Assessment
Neural Networks Finite State Machines
Rex Oleson II04/20/23
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 II04/20/23
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 II04/20/23
Research Fields
Environment for testing concepts Development of new research ideas Visual environment to see the implications
of the AI ideas
Rex Oleson II04/20/23
Rex Oleson II04/20/23
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 II04/20/23
SGIO Classes
SoarObject representing the connection to SOAR
AgentRepresents an individual agent in SOAR
Working MemoryHandles the bookkeeping of the agents
memory
Rex Oleson II04/20/23
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 II04/20/23
SGIO Framework
Rex Oleson II04/20/23
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 II04/20/23
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 II04/20/23
//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 II04/20/23
//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 II04/20/23
//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 II04/20/23
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 II04/20/23
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 II04/20/23
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 II04/20/23
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 II04/20/23
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 II04/20/23
Future Work
SGIO is being abandoned for a new technique
Details where not given
Rex Oleson II04/20/23
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