10/24/2015rex oleson ii soar and video games by rex oleson ii

Post on 03-Jan-2016

227 Views

Category:

Documents

4 Downloads

Preview:

Click to see full reader

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

top related