<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>Prolog-Based Reasoning Layer for Counter-Strike Agents</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Grzegorz Jaskiewicz</string-name>
          <email>grzegorz@jaskiewi.cz</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Warsaw University of Technology The Faculty of Electronics and Information Technology</institution>
          ,
          <addr-line>ul. Nowowiejska 15/19 00-665 Warsaw</addr-line>
          <country country="PL">Poland</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>In this paper it is shown an application of an agent-oriented programming paradigm with a reasoning layer based on a logic programming. The presented solution was used to build bots in Counter-Strike video game. The software architecture for new bots has been presented and bene ts were discussed. This article does not discusses all the work in detail, but provides more general idea about research, which was done.</p>
      </abstract>
      <kwd-group>
        <kwd>Agent systems</kwd>
        <kwd>Prolog</kwd>
        <kwd>Reasoning</kwd>
        <kwd>Arti cial Intelligence</kwd>
        <kwd>Bots</kwd>
        <kwd>Video Games</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>Introduction</title>
      <p>Counter-Strike (CS) is First Person Shooter game (FPS). Characteristic of this
game genere is observation of a game world from rst person perspective (see.
1) [?].</p>
      <p>Counter-Strike is a very popular video game, which is meant to be played
exclusively in a multiplayer mode. In each game, players are divided into 2 teams
- terrorists (TT) and counter-terrorist (CT). Both teams ght against each other
using modern rearms. Each game lasts 30 minutes by default and consists of
several 5 minute rounds. There are several map types which a ect goals for both
teams.</p>
      <p>AS assasination. One of CT's becomes VIP, which must reach the safe zone.</p>
      <p>TT's try to eliminate the VIP.</p>
      <p>CS hostage rescue. CT's try to move hostages to rescue zone.</p>
      <p>DE bomb defusion. TT's try to plant a bomb, CT's may try to defuse it
afterwards.</p>
      <p>ES escape. TT's try to ee to the escape zone, CT's hunt them.</p>
      <p>If team is successful in achieving its goal, then the team wins the round.
Elimination of the entire opposing team usually also means a victory.</p>
      <p>The gameplay of Coutner-Strike is very realistic, eliminated players do not
respawn immediately as in most FPS multiplayer games and each player can
be eliminated with only few well-aimed bullets. Therefore, Counter-Strike is a
very team-oriented game, where cooperation is more important than skills of
individuals players. Players do often form groups called clans, who play together
against other clans. There are even organized tournaments in Counter-Strike.
The game has rank of o cial sport in some countries [?].</p>
      <p>Unfortunately, the game in its early versions was completely unplayable
for a single player, because it was meant to be played entirely in multiplayer
mode. Community of the game fans developed game extensions, which contained
computer-controlled players - bots [?]. CS Bots creators had di cult problem to
solve, because developed bots had to act as team and co-operate.</p>
      <p>In this article it has been show extension of existing bot, using foundations of
multiagent systems. Note that, concept of application agent-oriented
programming in FPS video games is not a new one e.g [?], [?], [?]. However, there are
di erent implementations of this concept leading to di erent bot architectures.
One of the approaches to bot programming based on this concept is
providing scripting language e.g [?], [?], so that it is easy to experiment with various
behaviors, bot interactions and tactics. This approach relies on expert
knowledge, which is merged into script or program source code. Completely di erent
approach is to involve machine learning and let bots gain knowledge through
interaction with other players. There is already some research in this area [?], [?],
[?]. Due to complex nature of the problem ML techniques do not solve it entirely,
but serve as support for techniques involving domain knowledge about game. In
this work expert knowledge based approach is applied. One of the knowledge
representations could be rst order logic. This representation is declarative, thus
readable to human. This was main motivation for choosing Prolog as scripting
language. Presented AI bots component is divided into main 2 layers:
{ reasoning layer - high-level decision making, corresponds to human
declarative knowledge,
{ execution layer - low-level decision making, corresponds to human procedural
knowledge.
A similar approach could be found in autonomous robot programming, e.g in
Robocup competition [?] [?].
2
2.1</p>
    </sec>
    <sec id="sec-2">
      <title>Material and Methods</title>
      <sec id="sec-2-1">
        <title>Formal description</title>
        <p>Let consider game environment state g at some moment xed in time t as set
facts. Let F denote whole universe of possible facts. So that g(t) 2 P (F). Each
agent bi 2 B has knowledge at any point of time about some subset of those
facts. De ne</p>
        <p>K : B</p>
        <p>P (F) ! P (F)
as knowledge operator. In this model internal states of bot agents could be fact
pi which satisfy following necessary condition
fact pi known to all bots satisfy following condition
9!bi 2 B</p>
        <p>pi 2 K(bi; st)
8bi 2 B</p>
        <p>pi 2 K(bi; st)
Time passed from beginning of the round could be example of such fact. At each
timepoint any of n bots bi can make decision di 2 D and next game state is
dependent of all decisions made by bots. This transition is handeled by game
enviornment, which could be described as a function Ge.</p>
        <p>Ge : P (F)</p>
        <p>D
|</p>
        <p>D</p>
        <p>: : :
{z
n</p>
        <p>D ! P (F)
}
Al : B</p>
        <p>P (F) ! D
fsuccess; fail; continueg
| }
action{zstatus
Therefore low-level action is function
and high-level reasoning is a function</p>
        <p>Ah : B</p>
        <p>P (F) ! f</p>
        <p>Al
|{z}
current
low level action</p>
        <p>F
|{z}
motivation
for action
(Al
| action }</p>
        <p>{z
continuation</p>
        <p>F)? g [ f?g
Let cont denote function returning continuation for given low level action and
motiv function returning motivation for given low level action. Utilization of
motivations is inspired by the BDI [?] architecture. Agent has exactly one high level
reasoning function rh 2 Ah agent is also equipped in re ex reasoning function
rr 2 Ah. Purpose of re ex reasoning function is to provide means of reacting
quickly to environment changes. Agent can execute one action at the time t, but
executed action could change. This changes satisfy following conditions:
at+1
&gt;&gt;&gt;&gt;at
&lt;</p>
        <p>c1
8
&gt;&gt;rr(K(bi; g(t))) if rr(K(bi; g(t))) 6= ?</p>
        <p>if at(K(bi; g(t))) = (d; continue)
&gt;&gt;&gt;rh(K(bi; g(t))) if at(K(bi; g(t))) = (d; fail)
&gt;
&gt;
&gt;:rh(K(bi; g(t))) if :motiv(at) 2 g(t)
cont(at)=
if at(K(bi; g(t))) = (d; success) ^ (c1;:::;cn)
These conditions aren't mutually exclusive, if con ict occurs rst satis ed
condition is chosen.
2.2</p>
      </sec>
      <sec id="sec-2-2">
        <title>Prolog</title>
        <p>Prolog is a general-purpose declarative programming language, which bases
strongly on a rst order logic. Prolog uses notions of facts and rules, whereas
execution of Prolog program is de facto a formal reasoning process. Therefore,
it is very convenient to use in arti cial intelligence programming [?].</p>
        <p>Often many types of logic could be used as underlying Prolog logic, e.g. fuzzy
logic [?], modal logic [?], multivalued logic [?]. Those di erent types of logic are
used to express reasoning process in way understandable to human and all of
those languages are Turing complete.</p>
        <p>Prolog displays following properties, which make it useful in multiagent
programming.</p>
        <p>{ declarative reasoning rules,
{ bots knowledgebase in a symbolic form - easy to understand and analyze,
{ no separation between code and data - rules could be used as data, e.g. bot
leader communicating orders to another bot.
2.3</p>
      </sec>
      <sec id="sec-2-3">
        <title>Counter-Strike Bots</title>
        <p>Counter-Strike gameplay is a simulated environment and bots can be seen as
agents within this environment. They show typical traits of agents:
{ autonomy,
{ making intelligent decisions,
{ being mobile,
{ communication and collaboration.</p>
        <p>CS emphasises the teamwork strongly, whereas collaborative problem solving
is a main domain of multiagent systems. So using this paradigm is natural in
this task. It's interesting that this methodology was even earlier used in
noncollaborative games like Quake with good results [?].</p>
        <p>Actions Al are implemented as hardcoded, but yet parametrizable, behaviors
which can be acted by bots. Such behaviors may include going to a navigational
point, climbing a ladder, aiming a sniper ri e, etc. Action is description which
decision at each time point does bot make.</p>
        <p>The decision layer rh is responsible for selecting proper actions in order to
achieve bots goals. The decision layer could have di erent implementations e.g.
behavioral networks [?], decision trees, neural networks [?], nite state machines
[?] etc. In some cases decision layer could alone be decomposed into several
components e.g. predictive planning, team communication, tactical navigation.</p>
        <p>If decision layer forces bot to execute an action while it is already executing
one. The old action is paused and may be resumed if new action completes.
2.4</p>
      </sec>
      <sec id="sec-2-4">
        <title>System architecture</title>
        <p>Counter-Strike is a mod of Half-Life, while CS bots are modi cation of the mod.
Counter-Strike itself is not an open-source software, however it has documented
ABI1, so modi cations can be created as dynamically linked libraries. Those
libraries are injected into running a game and the API hooking technique is
used. In this work, existing open-source bots, called E[POD] 2 were modi ed as
proof-of-concept of bots programmable in Prolog. SWI-Prolog [?] was chosen as
the Prolog interpreter, because it was e cient and easy to integrate into the bots
code. Whole solution was programmed in Visual C++ with help of the Boost
library3. E[POD] bots was programmed in object-oriented way and it already
provided some objects which acted as low-level actions, however reasoning layer
was programmed as FSM. In this research low-level actions were reused and
reasoning layer was replaced.</p>
        <p>SWI-Prolog o ers two options of C++ and Prolog integration:
1. C++ to Prolog - code in C++ runs an instance of a Prolog interpreter
and may run queries against it.
2. Prolog to C++ - there could be created library of Prolog predicates which
execute natively and return its results into Prolog interpreter.</p>
        <p>Second approach is typical for development of performance-demanding
libraries, which are used by Prolog later. First approach is typical for solutions,
where Prolog is treated as logic engine in an application. In the bots both of
these integration types where used.</p>
        <p>The Counter-Strike engine provides routines for checking bot sensors like eld
of view, hearing, navigational map etc. Some of those routines were exposed into
Prolog by means of native predicates. In rst versions of this work bots queried
Prolog engine to get the answer which actions should be executed. The code for
creating an action to be executed was moved into Prolog. Rationale behind such
decision was to increase a programming exibility and code reuse. A decision to
change current action can be made as result of not only logical reasoning, but
also e.g. re ex or communication which are also handled by Prolog. Following</p>
        <sec id="sec-2-4-1">
          <title>1 Application Binary Interface</title>
          <p>2 http://epodbot.bots-united.com/
3 http://www.boost.org/
enhancements were introduced to E[POD] bots. It will be described how formal
model, presented in section 2.1, was implemented.</p>
          <p>Motivations Motivation can be associated with each action. A motivation is a
logical expression. The action is executed as long as motivation is evaluated to
truth value. The motivation can be constructed by SLD-resolution mechanism.
Such solution improved bot control by Prolog scripts, because script could also
interrupt native action execution. Introduction of this technique improved the
separation between C++ code and Prolog scripts, because script creator does
not have to know detailed speci cation of any particular action.</p>
          <p>Example of a motivation:
a c t i o n k i l l (</p>
          <p>BotID ,
EnemyID ,
and ( b o t a l i v e ( Enemy ) , d a n g e r l o w ( Bot ) )
) .</p>
          <p>This action will make bot with identi er BotID try killing the bot with
identi er EnemyID as long as enemy is alive and bot is not in danger.
Continuations Continuations are form of simple planning and de ning
complex behaviors consisting of sequence of several low-level actions. There could be
assigned a continuation to any action. A continuation is a logical term which is
executed after action is successfully completed. The result of executing
continuation could be new action to be executed by a bot. The new action could have
its own motivation and continuation.</p>
          <p>For example:
a c t i o n g o t o ( BotID , Wp, a l l c o s t , andThen (
a c t i o n h o s t a g e s (B , andThen (</p>
          <p>X
) )
) ) , a f t e r f r e e h o s t a g e s (X ) .</p>
          <p>This action will make a bot with identi er BotID go to a waypoint with
identi er Wp. The motivation for this action is the term allcost, which is always
evaluated to truth. After reaching the waypoint bot will try to free the hostages.
The action for freeing the hostages has also continuation, which is obtained by
SLD-resolution and uni cation of variable X.</p>
          <p>Re ex reasoning The reasoning mechanism is a deliberative process and it is
computationally expensive. It runs occasionally. Bot agents also express reactive
behaviors rr to respond for rapid changes in game environment, like bot being
attacked by opposing team.</p>
          <p>Prolog script has several predicates for handling signals send directly by the
game environment. Those predicates have short SLD-resolution tree in order
not to impede bot performance. The predicates may cause same e ect as regular
reasoning process.</p>
          <p>Communication Communication mechanism of E[POD] bots relayed on radio
messages which was feature of CS itself. Such messages are simple imperative
statements, e.g: Taking re, need assistance!, Follow me, Team fall back!.</p>
          <p>Receiving such message is handled by the re ex reasoning.</p>
          <p>Improved teamwork One additional task was added to set of existing bot
tasks written in C++. The purpose of this modi cation was to enhance team
tactics. All bots in one team were divided into smaller groups. Each group has
its own leader, who can make tactical decisions. Other bots executing additional
action was blindly obeying his decisions, with some exceptions for re ex
reasoning.</p>
          <p>This behavior was introduced, because teamwork of original E[POD] bots
was more random chance than reasonable decision - bots were acting on their
own grouping only occasionally.
2.5</p>
        </sec>
      </sec>
      <sec id="sec-2-5">
        <title>Examples</title>
        <p>Example reasoning process has been shown in gure 3.</p>
        <p>In presented example decision is made, if agent should buy new weapon. Bot
should buy it, if new round has started and it is respawning, because he has
only a basic pistol. In presented example those conditions aren't meet and bot
checks, if he is close to the buy zone and can a ord to have better weapon than
he is carrying at the moment. In this case logical formula is satis ed and bot
decides to buy new weapon. If buy zone is far away it may have been wiser to
play with actual weapon.</p>
        <p>In the example in gure 4 there has been presented goal selection.
Navigational points can represent goals for bot. Each navigational point has
associated metadata e.g. if it is t for camping 4. This reasoning is carried out
by team leaders. The leader choses the waypoint not chosen by any other leader.
Depending on waypoint type valid tactic is chosen for execution. In presented
example, there was chosen waypoint with hostages. The leader decides to move
4 tactic involving holding static strategic position of advantage
to the hostage waypoint. This action can have it's continuation. There is an
option that bot will wait near this waypoint for terrorists to come and ambush
them. This action would have it's motivation - it would be executed as long
as bot senses any danger e.g. hearing gun re or enemy footsteps. In presented
example bot doesn't decide to execute this action, because it is chosen with some
probability. He decides to head back to base with the liberated hostages, instead.
3</p>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>Results and Conclusion</title>
      <p>The goal of this research was to validate if it is feasible to run bots using described
architecture and provide some basic formal description, which could be improved
upon in course of further research. Some parts of original FSM decision layer
was converted to Prolog reasoning script. Then the game was run with 32 bots
- 16 for each team. Game was working with same framerate as original one, as
most of the time game engine spends in idle state in order to synchronize inputs,
networking, display and events in the game environment. Experiment lead to
following conclusions:
1. C++ bot code can be rewritten to Prolog,
2. Prolog bots can be used e ciently.</p>
      <p>More detailed performance information could be found on bar chart 5. The
gure depicts percentage of total game CPU execution time taken by 3 di erent
system components: Counter-Strike engine, bot library and Prolog reasoning
layer (compare with gure 2).</p>
      <p>Most of a bot logic was direct translation of hardcoded C++ decision-making
code into Prolog script, so it was initially expected that bots wouldn`t play any
di erent than the original ones. However, new action was introduced to enhance
cooperative team tactics. For that reason, additional experiments were run to
verify if new bots play di erent than the old ones. Experiments was carried out by
setting several games with di erent parameters setup on de dust defusion map
with additional action enabled for one of the teams. One parameter included
sizes of groups within team which has team action enabled. Those experiments
lead to conclusion that new action boosts performance of team. The optimum
group consists of 3 bots including the leader. Larger group makes maneuvering
task more di cult and bots tends to stuck in narrow spaces. It makes them also
prone to HE grenades. Group of 2 bots does not improve gameplay that much,
as it can be overpowered easier, than group of 3 bots.</p>
      <p>Unintended, but very positive outcome was ability to test reasoning layer
independently of the game engine which was very complex system. During
development of Prolog scripts standard Prolog test suites were created in order to
carry out regression tests. Test were easy to create because it was easy to create
a mock of game engine, which wasn't started during tests at all. The game engine
injected to Prolog native predicates in order Prolog script was able to interact
with it. In test scenarios instead predicates created by the game engine regular
Prolog predicates were declared and linked with script execution environment.
Usage of this test suite allowed to reduce amount of errors leading to
divergencies in expected script behavior and declared one. Improving such testing suite
framework may allow to incorporate test driven development methodology (see
generally [?]) into bots AI development.
4</p>
    </sec>
    <sec id="sec-4">
      <title>Future Works</title>
      <p>In future system will be expanded to more complete solution in order to cover
more complex interactions between bots and provide rules for handling all CS
map types. Also it is planned to change reasoning mechanism to one that
supports basic properties of a default logic [?]. The 4QL language [?] is considered
as a reasonable option. The default logic would allow to de ne hierarchical
reasoning system in consistent way. E.g
1. general describing CS game rules and general facts, e.g</p>
      <p>{ if you are attacked shoot back
2. more speci c rules describing rules speci c to game type, e.g
{ on AS maps T's aren't allowed to buy AWP5 ri e
3. exceptions to the rules and special rules for concrete map</p>
      <p>{ on cs assault prefer SG552 than AWP
4. rules speci c to bot</p>
      <p>{ if you courage is low always buy bulletproof vest before buying weapon</p>
      <sec id="sec-4-1">
        <title>5 for rearms reference see http://world.guns.ru/</title>
        <p>Such solution would allow construct modular reasoning architecture. The
most speci c rules and facts associated with map would be replaceable. Even if
there were no rules associated with map, bots would still be able to play using
general rules, but they would omit some knowledge speci c to concrete map. So
such map-speci c rules exist to optimize bot performance on given map.</p>
        <p>Another part of research where more improvements are going to be done is
formal description of bot decision making and collaboration - at the current stage
there are few discrepancies between formal description and actually implemented
solution.</p>
        <p>At some point bots were enhanced to communicate using Prolog, e.g bots
could exchange messages in form of logical formulas and then deliberate. This
idea was implemented, but not used. However it was not abandoned completely,
because it could be developed later.
5</p>
      </sec>
    </sec>
    <sec id="sec-5">
      <title>Acknowledgements</title>
      <p>We would like to thank my mentor prof. Jaroslaw Arabas for advices provided
while writing this article.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <surname>Astels</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          <article-title>Test Driven development: A Practical Guide</article-title>
          .
          <source>Prentice Hall Professional Technical Reference</source>
          ,
          <year>2003</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <surname>Brownlee</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          <article-title>Finite state machines as a control technique in arti cial intelligence</article-title>
          .
          <source>Tech. rep.</source>
          , University of Texas at Austin,
          <year>2002</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <surname>Clocksin</surname>
            ,
            <given-names>W. F.</given-names>
          </string-name>
          , and
          <string-name>
            <surname>Mellish</surname>
            ,
            <given-names>C. S.</given-names>
          </string-name>
          <article-title>Programming in Prolog: Using the ISO Standard</article-title>
          , 5th ed. Springer, Sept.
          <year>2003</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4. da Silva Corre^a Pinto, H., and
          <string-name>
            <surname>Alvares</surname>
            ,
            <given-names>L. O.</given-names>
          </string-name>
          <article-title>An extended behavior network for a game agent: an investigation of action selection quality and agent performance in unreal tournament</article-title>
          .
          <source>In Proceedings of the 4th Mexican international conference on Advances in Arti cial Intelligence</source>
          (Berlin, Heidelberg,
          <year>2005</year>
          ),
          <source>MICAI'05</source>
          , Springer-Verlag, pp.
          <volume>287</volume>
          {
          <fpage>296</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <surname>El-Nasr</surname>
            ,
            <given-names>M. S.</given-names>
          </string-name>
          , and
          <string-name>
            <surname>Smith</surname>
            ,
            <given-names>B. K.</given-names>
          </string-name>
          <article-title>Learning through game modding</article-title>
          .
          <source>Comput. Entertain. 4</source>
          ,
          <issue>1</issue>
          (Jan.
          <year>2006</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <surname>Gemrot</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kadlec</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          , B da, M.,
          <string-name>
            <surname>Burkert</surname>
            ,
            <given-names>O.</given-names>
          </string-name>
          ,
          <string-name>
            <given-names>P bil</given-names>
            , R., Havl cek, J.,
            <surname>Zemcak</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            ,
            <surname>Simlovic</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            ,
            <surname>Vansa</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            ,
            <surname>Stolba</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            ,
            <surname>Plch</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            , and
            <surname>Brom</surname>
          </string-name>
          ,
          <string-name>
            <surname>C.</surname>
          </string-name>
          <article-title>Pogamut 3 Can Assist Developers in Building AI (Not Only) for Their Videogame Agents Agents for Games and Simulations</article-title>
          . vol.
          <volume>5920</volume>
          of Lecture Notes in Computer Science. Springer Berlin / Heidelberg, Berlin, Heidelberg,
          <year>2009</year>
          , ch. 1, pp.
          <volume>1</volume>
          {
          <fpage>15</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7. Hagelback, J., and
          <string-name>
            <surname>Johansson</surname>
            ,
            <given-names>S. J.</given-names>
          </string-name>
          <article-title>Using multi-agent potential elds in real-time strategy games</article-title>
          .
          <source>In Proceedings of the 7th international joint conference on Autonomous agents and multiagent systems - Volume</source>
          <volume>2</volume>
          (
          <issue>Richland</issue>
          ,
          <string-name>
            <surname>SC</surname>
          </string-name>
          ,
          <year>2008</year>
          ), AAMAS '08,
          <string-name>
            <surname>International</surname>
            <given-names>Foundation</given-names>
          </string-name>
          <source>for Autonomous Agents and Multiagent Systems</source>
          , pp.
          <volume>631</volume>
          {
          <fpage>638</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <surname>Ierusalimschy</surname>
            , R., de Figueiredo,
            <given-names>L. H.</given-names>
          </string-name>
          , and
          <string-name>
            <surname>Filho</surname>
          </string-name>
          , W. C.
          <article-title>Lua - an extensible extension language</article-title>
          .
          <source>Softw. Pract. Exper</source>
          .
          <volume>26</volume>
          ,
          <issue>6</issue>
          (
          <year>June 1996</year>
          ),
          <volume>635</volume>
          {
          <fpage>652</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <surname>Jacobs</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ferrein</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          , and
          <string-name>
            <surname>Lakemeyer</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          <article-title>Unreal golog bots</article-title>
          .
          <source>In IJCAI05 WS on Reasoning</source>
          , Representation, and Learning in Computer Games (
          <year>2005</year>
          ), D. W. Aha,
          <string-name>
            <given-names>H.</given-names>
            <surname>Munoz</surname>
          </string-name>
          , and M. van Lent, Eds., Navy Center for Applied Research in Arti cal Intelligence, Washington, DC, Navy Center for Applied Research in Arti cal Intelligence, Washington, DC, p.
          <volume>31</volume>
          {
          <fpage>36</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <surname>Jennings</surname>
            ,
            <given-names>N. R.</given-names>
          </string-name>
          , and
          <string-name>
            <surname>Wooldridge</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          <article-title>Applications of intelligent agents</article-title>
          ,
          <year>1998</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <surname>Kitano</surname>
            ,
            <given-names>H.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Asada</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kuniyoshi</surname>
            ,
            <given-names>Y.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Noda</surname>
            ,
            <given-names>I.</given-names>
          </string-name>
          , and
          <string-name>
            <surname>Osawa</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          <article-title>RoboCup: The Robot World Cup Initiative</article-title>
          . In AGENTS '
          <volume>97</volume>
          : Proceedings of the rst international conference on Autonomous agents (New York, NY, USA,
          <year>1997</year>
          ), ACM Press, pp.
          <volume>340</volume>
          {
          <fpage>347</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <string-name>
            <surname>Malinowski</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          <string-name>
            <surname>Many-Valued Logics</surname>
          </string-name>
          .
          <source>Oxford Logic Guides</source>
          . Oxford University Press, USA,
          <year>1994</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13.
          <string-name>
            <surname>Maluszynski</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          , and
          <string-name>
            <surname>Szalas</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          <article-title>Logical foundations and complexity of 4ql, a query language with unrestricted negation</article-title>
          .
          <source>CoRR abs/1011</source>
          .5105 (
          <year>2010</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          14.
          <string-name>
            <surname>McPartland</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          , and
          <string-name>
            <surname>Gallagher</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          <article-title>Learning to be a bot: Reinforcement learning in shooter games</article-title>
          .
          <source>In Proceedings of the Seventh AAAI Conference on Arti cial Intelligence and Interactive</source>
          Digital Entertainment,
          <string-name>
            <surname>AIIDE</surname>
          </string-name>
          <year>2008</year>
          (
          <year>2008</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          15.
          <string-name>
            <surname>McPartland</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          , and
          <string-name>
            <surname>Gallagher</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          <article-title>Reinforcement Learning in First Person Shooter Games</article-title>
          .
          <source>IEEE Transactions on Computational Intelligence and AI in Games 3</source>
          ,
          <issue>1</issue>
          (mar
          <year>2011</year>
          ),
          <volume>43</volume>
          {
          <fpage>56</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          16.
          <string-name>
            <surname>Miikkulainen</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          <article-title>Creating intelligent agents in games</article-title>
          .
          <source>In Proceedings of the National Academy of Engineering</source>
          (
          <year>2006</year>
          ), The University of Texas at Austin.
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          17.
          <string-name>
            <surname>Morris</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          <article-title>Wads, bots and mods: Multiplayer fps games as co-creative media</article-title>
          .
          <source>In Level Up Conference Proceedings: Proceedings of the 2003 Digital Games Research Association Conference (Utrecht, November</source>
          <year>2003</year>
          ),
          <string-name>
            <given-names>C.</given-names>
            <surname>Marinka</surname>
          </string-name>
          and
          <string-name>
            <given-names>R.</given-names>
            <surname>Joost</surname>
          </string-name>
          , Eds., University of Utrecht, p.
          <source>CD Rom.</source>
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          18. Mun~oz Hernandez,
          <string-name>
            <surname>S.</surname>
          </string-name>
          , and
          <string-name>
            <given-names>Sari</given-names>
            <surname>Wiguna</surname>
          </string-name>
          ,
          <string-name>
            <surname>W.</surname>
          </string-name>
          <article-title>Fuzzy cognitive layer in robocupsoccer</article-title>
          .
          <source>In Proceedings of the 12th international Fuzzy Systems Association world congress on Foundations of Fuzzy Logic and Soft Computing</source>
          (Berlin, Heidelberg,
          <year>2007</year>
          ),
          <source>IFSA '07</source>
          , Springer-Verlag, pp.
          <volume>635</volume>
          {
          <fpage>645</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          19.
          <string-name>
            <surname>Nguyen</surname>
            ,
            <given-names>L. A.</given-names>
          </string-name>
          <article-title>The modal logic programming system mprolog</article-title>
          .
          <source>In Proceedings of JELIA</source>
          <year>2004</year>
          , LNCS
          <volume>3229</volume>
          (
          <year>2004</year>
          ), Springer, pp.
          <volume>266</volume>
          {
          <fpage>278</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          20.
          <string-name>
            <surname>Patel</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          , and
          <string-name>
            <surname>Hexmoor</surname>
            ,
            <given-names>H.</given-names>
          </string-name>
          <article-title>Designing bots with bdi agents</article-title>
          .
          <source>In Proceedings of the 2009 International Symposium on Collaborative Technologies and Systems</source>
          (Washington, DC, USA,
          <year>2009</year>
          ), CTS '09, IEEE Computer Society, pp.
          <volume>180</volume>
          {
          <fpage>186</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          21.
          <string-name>
            <surname>Reiter</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          <article-title>Readings in nonmonotonic reasoning</article-title>
          . Morgan Kaufmann Publishers Inc., San Francisco, CA, USA,
          <year>1987</year>
          ,
          <string-name>
            <surname>ch.</surname>
          </string-name>
          <article-title>A logic for default reasoning</article-title>
          , pp.
          <volume>68</volume>
          {
          <fpage>93</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          22.
          <string-name>
            <surname>Shoham</surname>
            ,
            <given-names>Y.</given-names>
          </string-name>
          <article-title>Agent-oriented programming</article-title>
          .
          <source>Artif. Intell</source>
          .
          <volume>60</volume>
          ,
          <issue>1</issue>
          (Mar.
          <year>1993</year>
          ),
          <volume>51</volume>
          {
          <fpage>92</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          23.
          <string-name>
            <surname>Stepnik</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          <article-title>E-sport z perspektywy teorii sportu</article-title>
          .
          <source>Homo Ludens</source>
          <volume>1</volume>
          ,
          <issue>1</issue>
          (
          <year>2009</year>
          ),
          <volume>213</volume>
          {
          <fpage>222</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref24">
        <mixed-citation>
          24.
          <string-name>
            <surname>Tastan</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          , and
          <string-name>
            <surname>Sukthankar</surname>
            ,
            <given-names>G. R.</given-names>
          </string-name>
          <article-title>Learning policies for rst person shooter games using inverse reinforcement learning</article-title>
          .
          <source>In Proceedings of the Seventh AAAI Conference on Arti cial Intelligence and Interactive</source>
          Digital Entertainment,
          <string-name>
            <surname>AIIDE</surname>
          </string-name>
          <year>2011</year>
          (
          <year>2011</year>
          ), pp.
          <volume>085</volume>
          {
          <fpage>090</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref25">
        <mixed-citation>
          25.
          <string-name>
            <surname>Vaucheret</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Guadarrama</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          , and Mun~oz Hernandez,
          <string-name>
            <surname>S.</surname>
          </string-name>
          <article-title>Fuzzy prolog: A simple general implementation using clp(r)</article-title>
          .
          <source>In Proceedings of the 9th International Conference on Logic for Programming</source>
          ,
          <source>Arti cial Intelligence, and Reasoning</source>
          (London, UK, UK,
          <year>2002</year>
          ),
          <source>LPAR '02</source>
          , Springer-Verlag, pp.
          <volume>450</volume>
          {
          <fpage>464</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref26">
        <mixed-citation>
          26.
          <string-name>
            <surname>Wielemaker</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          <article-title>An overview of the swi-prolog programming environment</article-title>
          ,
          <year>2003</year>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>