Analyseren van een complex strategiespel door multi-agent potentiaalvelden Ralph Temperville Promotor: prof. dr. Guy De Tré Begeleider: Joachim Nielandt Masterproef ingediend tot het behalen van de academische graad van Master of Science in de ingenieurswetenschappen: computerwetenschappen Vakgroep Telecommunicatie en Informatieverwerking Voorzitter: prof. dr. ir. Herwig Bruneel Faculteit Ingenieurswetenschappen en Architectuur Academiejaar 2013-2014 iii Voorwoord Sinds mijn jonge jaren was ik zoals velen gefascineerd door artifici¨ele intelligentie en, meer bepaald dan door het gedrag van computergestuurde tegenstanders in video spellen. Ik was dan ook getuige van de razendsnelle evolutie binnen de game-AI. Eerdere computergestuurde tegenstanders gebruikten cheats om een hogere moeilijkheidsgraad na te bootsen omdat hun beslissingspatronen nog niet op punt stonden. Dit is de dag van vandaag al sterk verbeterd maar tegen ervaren spelers kunnen computers nog steeds geen RTS spel winnen. Naast games hebben ontwikkelingen in de AI ook altijd sterk mijn aandacht getrokken. Zo geloof ik ook sterk in de toekomstige zelfrijdende auto’s waar Google bijvoorbeeld aan werkt. Alsook de pakketbezorgingsdienst van Amazon die onderzoekt hoe drones kunnen helpen bij het verdelen van pakjes. Deze radicale vernieuwingen laten blijken dat de AI nog maar in zijn kinderschoenen staat en enorm veel potentieel heeft. Mijn interesse in het onderwerp was een mooi vertrekpunt maar zorgde er uiteraard niet op zichzelf voor dat de eindmeet gehaald wordt. Ik durf dan ook toe te geven dat mijn masterproef een zware beproeving was die er niet zonder slag of stoot tot stand gekomen is. Het is met vlag en wimpel het meest lijvige werk dat ik voltooid heb en hier ben ik dan ook trots op. Eerst en vooral wil ik mijn begeleider Joachim bedanken die steeds open stond voor een gesprek over de koers en vooruitgang van de masterproef en die ook steeds bereid was om de scriptie na te lezen en te voorzien van constructieve feedback. Hiernaast wil ik ook mijn promotor prof. Guy De Tr´e, bedanken en mijn collegastudenten die tijdens de tussentijdse presentatie eveneens behulpzame feedback verschaft hebben. Ook Dimitry, die samen met mij hetzelfde onderwerp heeft gekozen, bleek een grote hulp te zijn. Onze thesis was meermaals het onderwerp van interessante en verhelderende gesprekken over bepaalde beslissingen die genomen moesten worden of over problemen die we ondervonden. Op het thuisfront wil ik ook graag mijn ouders bedanken die me altijd gesteund hebben en steeds openstonden om mijn scriptie met een kritisch oog na te kijken. Mijn vriendin gaf me niet enkel dit semester maar gedurende mijn volledige schoolcarri`ere de moed om door te bijten tijdens de moeilijke periodes, waarvoor ik haar enorm dankbaar ben. Tot slot wil ik nog al mijn vrienden bedanken om mij de nodige steun te geven in dit drukke laatste jaar. Zonder hen was mijn studietijd nooit geweest zoals ik ze heb mogen ervaren en ik ben ze dan ook stuk voor stuk dankbaar voor de toffe tijden in Gent. Bedankt! Ralph Temperville, juni 2014 v Toelating tot bruikleen “De auteur geeft de toelating deze scriptie voor consultatie beschikbaar te stellen en delen van de scriptie te kopi¨eren voor persoonlijk gebruik. Elk ander gebruik valt onder de beperkingen van het auteursrecht, in het bijzonder met betrekking tot de verplichting de bron uitdrukkelijk te vermelden bij het aanhalen van resultaten uit deze scriptie.” Ralph Temperville, juni 2014 Analysing a complex strategy game using multi-agent potential fields Ralph Temperville Supervisor(s): Guy De Tr´e, Joachim Nielandt Abstract—In this article we create a dynamic and adaptive framework to aggregate temporal multi-agent potential fields using expression trees. We test this model by applying it to several scenarios with different constraints within Starcraft Brood War. Keywords—Potential field, aggregation techniques, Starcraft Brood War I. I NTRODUCTION EVELOPMENT in artificial intelligence has been increasing at a steady pace during the last few decades. Game AIs specifically have seen great improvement over the past few decades. For example, the real time strategy game Starcraft serves as a tool in a lot of research about game AIs because of its inherent complexity and depth. In fact, there even exist competitions for these AIs to compete against each other to determine which author has created the best model. A recent breakthrough with regards to game AI is the use of artificial potential field techniques to easily make decisions in complex scenarios as proposed by [1]. These fields can help AIs to improve pathing decisions in environments with multiple active agents to which they have to react to. Other uses of these APFs include tracking the suitability for certain actions on the playfield. In this article we propose a framework to enable complex aggregations between multiple potential fields. This framework consists of a multitude of building blocks such as operators and basic potential fields. To test the framework and show its power, we apply the framework to three use-cases, set within the game where we analyse each scenario through a specific aggregation of potential fields. D II. C ONSTRUCTING THE FRAMEWORK A. Expression tree The foundation of the framework is built around the idea of the expression tree first presented in [2]. This data structure allows for a modular design where basic potential fields are leaf nodes and operators are non-leaf nodes. The number of children of a given node is equal to the arity of the operator this node represents. Some advantages of using this model are reusability, modularity and adaptability. Firstly all structures created can be reused (even multiple times) by making a node point to the root of this structure. Secondly, the model is modular because all operator logic is comprised into its own tree node. This also means it is straightforward to define additional custom operators. Lastly, the model is adaptable because the operators can be chained together in infinite ways to exhibit the behaviour required. B. Basic potential fields The leaf nodes of the expression tree consist of basic potential fields. These fields are centered around a position on the map and they can also adopt several shapes. The three types of fields we define are constant (this field has the same charge at any given point near the source), linear (the charge decays in a linear fashion the further we move away from the source) and gaussian (the field is bell curve shaped and asymptotically decays to zero the further we move away from the source). Note that the linear field has a decay rate parameter and the gaussian field has a σ parameter which can both be tweaked according to the specific needs of the scenario. All fields are also initialized with certain charge strength. C. Operators The main strength of the framework lies in the multitude of ways one can aggregate several fields to one purposeful field for analysis. Several operators on potential fields are needed, operators that can be used to perform these aggregations are listed below. The operators are split up by arity. C.1 Unary operators The unary operators are operators with only one child node. This category consists of three notable operators: • The negation operator which maps a potential field to its negative equivalent. • The cutoff operator which inserts a boundary on the diameter of a potential field. • The threshold operator which reduces all charges below a certain threshold value to zero. C.2 Binary operators The decay operator is the only binary operator we define. This operator has two child nodes and computes the piecewise multiplication of the two potential fields. This field is mainly used to weaken or strengthen a potential field with a certain factor. To do this, we pick a constant field with the desired decay rate as the second child node. C.3 n-ary operators The bulk of the operators are n-ary operators, which can have a varying number of child nodes. We define four n-ary operators: • The maximum operator creates a potential field with the charge at any given position equal to the maximum value of the charges of the children at that position. • The minimum operator is similar to the maximum operator. • The sum operator creates a field with a charge equal to the sum of the children node charges at the given position. • The average operator is similar to the sum operator, but the charges get divided by the number of child nodes after adding up their charges. C.4 The memory construction In addition to the operators as defined before, there are two extra operators which are discussed separately because of their synergy. To create a field which retains some temporal information, we need to add a way to store these intermediate results between different snapshots over time. To do this, we create the memory construction which consists of a memory leaf node and a memory operator. The memory leaf node is a node which retrieves its charge from a two-dimensional array at the position where it is evaluated. The memory operator on the other hand is a unary operator which saves all evaluations of its child node at the position it is evaluated and passes the evaluation value upwards in the expression tree. The combination of these two nodes gives us an easy way to store and use temporal information. The model in Figure 1, for example, builds a potential field where the movement of an entity is stored. charge). As an aggregation operator between all these fields, we choose the summing operator. Since the resulting potential field can have charges which exceed 1 we add a minimum operator with a constant leaf node with charge 1. This enforces a ceiling of 1 on the summation of the basic potential fields. Now we add a memory construction to store the temporal information of the field. We create a memory leaf node and precede it by a decay operator. This means that the temporal information slowly decays to zero and leaves a trail. We combine this decay operator and the minimum operator by means of the maximum operator. Finally, we precede this node by a memory operator to store the resulting field. A.2 Implementation The described model was implemented in Starcraft using a scenario which shows the advantage of this field. The scenario consists of two groups of marines that patrol a certain area to protect their base. In Figure 2, the potential field is shown that is the result of applying our model to this scenario. Result Memory operator 2D Tabel Fig. 2. The spatio-temporal potential field of enemy unit movement Maximum operator Memory leaf node Lineair potential field Fig. 1. An application of the memory construction III. U SE CASES The operation of this framework is demonstrated by three use cases. These use cases have different goals in order to show the framework’s adaptability to changing requirements. In each of which we visualise and discuss the resulting aggregated potential field. Note that the visualisation uses a colour coding from green to red where green is the highest possible potential and green is the lowest possible potential. A. Use case 1: Distribution of the enemy army in the spatiotemporal domain In this use case, we build a potential field which captures the movement and the concentration of the enemy units. A.1 Construction of the tree For this use case, we start by defining all enemy units as basic linear potential fields with a charge of 1 (the highest possible On this heat map we can clearly see the path on which the marines patrol. The intensity of the field signifies the gravity point of the army. The highest concentration of army units is located around the red spots on the map. This overlay can be used by the player to determine the patterns in the enemy’s movement and to attack from an advantageous position. B. Use case 2: Determining the optimal scouting regions B.1 Construction of the tree There are a few factors to distinguish important places to scout on. Firstly, we start by creating a constant potential field with a medium strength which covers the whole map. Next, we give our own units constant potential fields with a width equal to the viewing distance. Afterwards we add a memory mechanism which slowly decays temporal information because areas recently scouted become more interesting the longer they remain hidden. Since important scouting locations often include areas with resources because enemies can expand there, we will give the resources a small, but strong linear potential field to indicate this. Lastly, we want to give areas in close proximity of spotted enemies higher importance to scout, in the assumption that these units are frequently nearby an enemy base. To do this, we also give the enemy units linear potential fields with a memory construct to retain this temporal information. (in the bottom right-hand corner) is negated by the enemy army force, which is the green area. B.2 Implementation Figure 3 depicts a potential field created by the model we just designed. In this model, the green areas are the visible, or recently scouted areas, which have the lowest priority to scout. The red spots are areas in the close proximity to resources and as such places where the enemy could have a base. These have a high priority to be scouted. Players can use the overlay and the heat map to quickly analyse the optimal areas to scout, taking into account the temporal movement of its units. Fig. 4. The potential field for finding the optimal expansion area IV. C ONCLUSION The use cases show that the framework is strongly adaptive and that we can build a multitude of temporal multi-agentaggregated potential fields with it. These fields can subsequently help AI computer players, or human players for that matter, analyse and make otherwise complex, in-game decisions. Fig. 3. The potential field for finding high priority scouting areas C. Use case 3: Determining the optimal areas for expansion For our last use case, we want to construct a potential field to determine the feasibility for expansion. here are three main influences this field should take into consideration. The first one is that it should be close to allied forces and bases to protect it. Secondly it should be far away from enemy army movement and finally the expansion area should of course be in close proximity to resources which is a paramount factor. C.1 Construction of the tree Allied units are given a potential field with a low charge and a low decay rate. This creates a wide field around the allied forces. Additionally, a memory construction is added to facilitate temporal information of the movement of our allied forces. The enemy units will receive a field similar to that of the allied units, except that here, we will negate the field to give these fields a negative charge. For the resources field, we use a high charge and a high decay rate to create small and highly attractive areas around the resources. To finalize our field we sum the three last components together with a constant field having a medium charge. We do this so hill and depressions in the constant field are created by friendly and enemy units (and resources) respectively. C.2 Implementation In the implementation in Figure 4 we see this model applied to Starcraft. In the top left-hand corner we can distinguish the allied army represented by the orange influence areas. The red spots are formed by the resource patches. On this map, there are 4 resource patches available, three are clearly visible while one V. F UTURE WORK While the upside of this framework in the context of RTS games has been amply illustrated, further research could still be conducted into the significance of this framework for other fields that use aggregated potential fields, such as robotics. Another point of improvement is research into the parallelization and of this framework to allow it to scale to several thousand nodes in a complicated expression tree. Studies such as [3] and [4] into parallelization of expression trees together with potential field specific parallelization could then be merged. R EFERENCES [1] J. Hagelb¨ack and S. J. Johansson. A multiagent potential field-based bot for real-time strategy games. Int. J. Comput. Games Technol., 2009:4:1–4:10, January 2009. [2] R. F. Cohen and R. Tamassia. Dynamic expression trees and their applications. In Proceedings of the Second Annual ACM-SIAM Symposium on Discrete Algorithms, SODA ’91, pages 52–61, Philadelphia, PA, USA, 1991. Society for Industrial and Applied Mathematics. [3] R. Cole and U. Vishkin. Vlsi algorithms and architectures. chapter Optimal Parallel Algorithms for Expression Tree Evaluation and List Ranking, pages 91–99. Springer-Verlag, London, UK, UK, 1988. [4] R. Cole and U. Vishkin. The accelerated centroid decomposition technique for optimal parallel tree evaluation in logarithmic time. Algorithmica, 3(14):329–346, 1988. x TOELATING TOT BRUIKLEEN INHOUDSOPGAVE xi Inhoudsopgave Voorwoord iii Toelating tot bruikleen Extended abstract Inhoudsopgave Gebruikte afkortingen 1 Inleiding v vii x xv 1 1.1 Wat is een RTS spel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.2 Geschiedenis van het RTS spel . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.3 Artifici¨ele intelligentie in spellen . . . . . . . . . . . . . . . . . . . . . . . . 3 1.4 Doel van de thesis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1.5 Structuur en omvang . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 2 Literatuurstudie 2.1 2.2 9 Potentiaalvelden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 2.1.1 Oorsprong . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 2.1.2 Artifici¨ele potentiaalvelden . . . . . . . . . . . . . . . . . . . . . . . 10 2.1.3 Voordelen en nadelen . . . . . . . . . . . . . . . . . . . . . . . . . . 12 Expressiebomen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 2.2.1 13 Werking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xii INHOUDSOPGAVE 2.2.2 Voordelen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 3 Tools 17 3.1 Starcraft . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 3.1.1 Macromanagement . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 3.1.2 Micromanagement . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 3.1.3 Fog of war . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 BWAPI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 3.2 4 Framework 25 4.1 Keuze van de implementatie taal . . . . . . . . . . . . . . . . . . . . . . . 25 4.2 Expressieboom . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 4.2.1 Expressieknoop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 4.2.2 Positieknoop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 4.2.3 Operatorknopen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 4.2.4 Compositie van operatoren . . . . . . . . . . . . . . . . . . . . . . . 40 4.2.5 Caching . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 5 Use cases 5.1 5.2 5.3 43 Use case 1: Distributie van vijandig leger in spatio-temporeel domein . . . 44 5.1.1 Constructie van het model . . . . . . . . . . . . . . . . . . . . . . . 44 5.1.2 Toepassing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 Use case 2: Optimale scouting regio’s bepalen . . . . . . . . . . . . . . . . 46 5.2.1 Constructie van het model . . . . . . . . . . . . . . . . . . . . . . . 48 5.2.2 Toepassing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 Use case 3: Optimale expansieplaats bepalen . . . . . . . . . . . . . . . . . 49 5.3.1 Constructie van het model . . . . . . . . . . . . . . . . . . . . . . . 51 5.3.2 Toepassing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 6 Conclusie 55 INHOUDSOPGAVE xiii 7 Toekomstig werk 57 Appendices Bijlage A 58 Bijlage B 60 Bijlage C 62 Bibliografie 65 Lijst van figuren 67 Lijst van tabellen 69 xiv INHOUDSOPGAVE xv Gebruikte afkortingen 2D Twee-dimensionaal AI Artifici¨ele intelligentie API Application Programming Interface BWAPI Brood War Application Programming Interface DFT Depth First Traversal FOW Fog Of War FPS Frames Per Second LSP Logically Aggregated Geographic Suitability Maps OOP Objectgeori¨enteerd programmeren PF Potential Field RBG Rood-Blauw-Groen spectrum RTS Real Time Strategy xvi GEBRUIKTE AFKORTINGEN 1 Hoofdstuk 1 Inleiding Artifici¨ele intelligentie is een gegeven dat mensen al decennia intrigeert. Velen denken meteen aan computersystemen die menselijk kunnen denken en hostile takeovers beramen zoals Skynet uit de terminator franchise. Dit is echter verre van het soort onderzoek dat vandaag de dag gedaan wordt inzake AI. Veel vaker wordt het leren uit fouten en het gebruik van feedback loops van computers bedoeld. Onderzoek naar AI stijgt de laatste decennia aan een exponentieel tempo wat leidt tot vele ontwikkelingen waar mensen rechtstreeks mee in contact komen. Denk maar aan de aankondiging van Amazon die pakjes wil laten leveren door zelfstandig navigerende drones. Of Google die volop bezig is met het optimaliseren van zelfrijdende auto’s. Het is dan ook vrij waarschijnlijk dat de wereld er binnen enkele decennia volledig anders zal uit zien door de evoluties op vlak van AI. 1.1 Wat is een RTS spel Real time strategy of kortweg RTS is een genre van computerspellen. Real time wil zeggen dat er niet gewerkt wordt met een beurtensysteem zoals bijvoorbeeld schaken of verschillende typische kaartspellen, e.g., manillen, wiezen ... Elke speler kan dus constant commando’s geven en hoeft niet te wachten op de andere speler. De strategy component 2 HOOFDSTUK 1. INLEIDING betekent in deze context dat de speler eenheden en gebouwen bezit die hij elk kan beheren (micromanagement) met vaak als ultieme doel de troepen van de tegenstander uit te schakelen. Hiernaast moet een speler ook typisch grondstoffen verzamelen waarmee hij op zijn beurt meer eenheden en gebouwen kan bouwen (macromanagement). 1.2 Geschiedenis van het RTS spel De oorsprong van de RTS vinden we bij het spel Broderbund’s The Ancient Art of War dat gepubliceerd werd in 1984. De speler moest hier een keuze maken uit troepen die door middel van een blad-steen-schaar systeem tegen elkaar vochten. Hier was echter nog geen sprake van het managen van een economie, wat door velen beschouwd wordt als een essenti¨ele component van RTS spellen. De echte grondlegger van het genre zoals we het vandaag kennen is Dune II, gemaakt door Westwood Studio’s, uitgekomen in 1992. Na deze initi¨ele titel volgden de RTS spellen elkaar in hoog tempo op. Ensemble studios introduceerde Age of Empires in 1997 met computergestuurde tegenstanders met ongekende intelligentie en het isometrisch perspectief wat vandaag de dag de standaard is binnen RTS games. Warcraft: Orcs & Humans (1993) door Blizzard, dat ondertussen uitgegroeid is tot een enorme franchise met oa. Warcraft3, World of Warcraft, Hearthstone ..., lag aan de basis van het Warcraft verhaal en liet de speler toe een RTS te spelen binnen een ruime fantasiewereld. En tot slot de titaan van de RTS spellen: Starcraft, uitgebracht door Blizzard in 2000, waarvan maar liefts 11 miljoen kopies van verkocht zijn en wat hierdoor de titel van 13e meest verkochte spel mag dragen. Meer recentere RTS spellen zijn onder andere de Command & Conquer reeks van Westwood, dat zich zoals Starcraft in een futuristische setting bevindt. Age of Mythology (2002) gooit het dan weer over een andere boeg door titanen en goden te introduceren die elk bepaalde voordelen met zich meebrengen om het RTS genre een twist te geven. De laatste jaren bestaan de meest besproken RTS spellen hoofdzakelijk uit nieuwe edities van ¨ INTELLIGENTIE IN SPELLEN 1.3. ARTIFICIELE 3 de hierboven besproken gevestigde RTS reeksen. Zo is vorig jaar nog de nieuwe expansie voor Starcraft 2 uitgekomen, getiteld “Heart of the Swarm”, waar deze keer het Zerg ras in de spotlights gezet wordt. Het mag na deze uiteenzetting van het RTS genre dus duidelijk zijn dat RTS een succesvol recept is dat de tand des tijds goed doorstaan heeft. Starcraft (I en II) spelers in ZuidKorea worden vandaag de dag behandeld als popsterren en topatleten, en deze trend zet zich door in Westerse landen. Deze spelers trainen soms meer dan 8 uur per dag om hun techniek en strategie te perfectioneren. Er bestaan ook televisiezenders in Zuid-Korea die 24/7 Starcraft wedstrijden uitzenden zoals we hier sportkanalen hebben. Het hoeft dus geen verduidelijking dat Starcraft een enorm complexe en competitieve RTS is. 1.3 Artifici¨ ele intelligentie in spellen In artifici¨ele intelligentie is de doelstelling het formaliseren en mechaniseren van het gedrag en de redeneringspatronen van het menselijk brein. Aangezien het brein immens complex is en we zeker nog niet op het punt gekomen zijn waar we kunnen beweren dat we de werking ervan begrijpen moeten we dus een benadering of simplificatie doen. Verder zullen we kort de evolutie van artifici¨ele intelligentie bespreken, en daarnaast de toepassingen binnen de spelwereld. In 1951 ontwierp Dietrich Prinz een schaakprogramma voor de computer Ferranti Mark I. Het ging hier over een exhaustief brute force algoritme dat door de breedte van de spelboom slechts gebruikt kon worden om het einde van het spel te spelen (en dus niet van begin tot eind). Gelijkaardig werd in 1997 door IBM de alom bekende spelcomputer Deep Blue voorgesteld die er voor het eerst in slaagde de grootmeester en voormalig wereldkampioen schaken Garry Kasparov te verslaan. De techniek die hier gebruikt werd is vooral gebaseerd op heuristieken met een sterke objectief functie (die het voordeel of nadeel van de staat 4 HOOFDSTUK 1. INLEIDING (a) Dune II (1992) (b) Warcraft: Orcs & Humans (1993) (c) Age of Empires I (1997) (d) Starcraft I (2000) (e) Command & Conquer 4: Tiberian Twilight (f) Starcraft II: Heart of the Swarm (2013) (2010) Figuur 1.1: De evolutie van de RTS 1.4. DOEL VAN DE THESIS 5 van het bord kwantificeren). Hiernaast maakt Deep Blue ook gebruik van alfa-beta snoeien waardoor niet de volledige zoekruimte moet doorlopen worden. Terwijl het een enorme prestatie was door Deep Blue om Garry Kasparov te verslaan wordt er door puristen vaak de vraag gesteld in hoeverre dit programma intelligent is. De brute force aanpak die Deep Blue gebruikt houdt in dat het programma niet nadenkt over de staat van het bord. Het is hoe dan ook niet evident om duidelijk te defini¨eren wanneer een programma als intelligent mag beschouwd worden. We zullen in deze thesis verder geen tijd besteden aan dit eerder filosofisch getint vraagstuk. 1.4 Doel van de thesis In deze thesis onderzoeken we hoe het gebruik van temporele potentiaalvelden kan helpen bij het analyseren van speltoestanden in Starcraft. Potentiaalvelden laten toe complexe situaties eenvoudig te evalueren door hun spatiale aard. Door verschillende operatoren te defini¨eren en het temporele aspect toe te voegen kunnen we ook vaststellingen doen over een bepaalde periode en zijn we niet beperkt tot momentopnames. Hiermee willen we een dynamisch framework bouwen dat het mogelijk maakt om enkele diverse situaties duidelijk te analyseren door een gepaste aggregatie van potentiaalvelden. Door het framework op verschillende use cases toe te passen tonen we aan dat dit framework aanpasbaar is en voor zeer diverse doeleinden gebruikt kan worden. Deze use cases omvatten drie verschillende problemen binnen Starcraft Brood War die we proberen op te lossen door gebruik van potentiaalvelden (zie Hoofdstuk 5). Om het framework dynamisch te maken defini¨eren we een groot aantal operatoren tussen potentiaalvelden en bouwen we een structureel sterk model. Door deze dynamische aard kan het framework makkelijk overweg met de voortdurend veranderende spelwereld van Starcraft. Dit betekent ook dat het framework de adaptiviteit bezit nodig voor de verschillende types problemen dat het tracht op te lossen. 6 HOOFDSTUK 1. INLEIDING We houden ook rekening met uitbreidbaarheid met het oog op toepassingen met andere noden, door het mogelijk te maken gemakkelijk extra operatoren te defini¨eren, en door de performantie te verbeteren door onder andere caching toe te laten. De analyses op Starcraft door gebruik van het framework zullen we maken aan de hand van een in-game overlay die intu¨etief aangeeft waar de objectief functie van de specifieke use case het hoogst is. Dit laat ook spelers en spelcommentators toe deze verschillende overlays te gebruiken om zelf analyses te maken. Het dient ook opgemerkt te worden dat het toepassingsgebied van dit framework groter is dan louter computerspellen en dat er vele nuttige verderzettingen bestaan in andere domeinen. 1.5 Structuur en omvang De vooropgestelde omvang en structuur van de thesis verloopt als volgt. In Hoofdstuk 2 bespreken we eerst bestaande literatuur in verband met expressiebomen en potentiaalvelden om een duidelijk beeld te scheppen in de bestaande technieken en om de lezer vertrouwd te maken met een aantal benodigde theoretische concepten. Hierna worden in Hoofdstuk 3 de gebruikte tools en frameworks uit de doeken gedaan waarop het framework gebouwd is. Vervolgens bespreken we het ontwikkelde framework uit in Hoofdstuk 4 dat het mogelijk maakt om potentiaalvelden te aggregeren op een modulaire en dynamische manier. Dit framework definieert ook enkele basisoperatoren die gemakkelijk kunnen samengevoegd worden om complexe aggregaties uit te voeren. Tot slot passen we het ontwikkelde framework ook toe op drie verschillende use cases toe en analyseren we de resultaten in Hoofdstuk 5. Hiertoe passen we de parameters van het framework aan voor elke use case en gebruiken we dit op de complexe spelsituaties. Onderdelen die buiten de scope van deze thesis vallen zijn onder andere het parallelliseren 1.5. STRUCTUUR EN OMVANG 7 van het algoritme, alsook het automatisch optimaliseren van de parameters van het framework door bijvoorbeeld een heuristiek. Ook zullen we ons op vlak van de operatoren beperken tot een subset die voldoende complex is om de verschillende use cases uit te werken. 8 HOOFDSTUK 1. INLEIDING 9 Hoofdstuk 2 Literatuurstudie In dit hoofdstuk bespreken we de theoretische kernconcepten die in deze thesis gebruikt worden en kaderen we deze in de huidige literatuur. Enerzijds potentiaalvelden in Sectie 2.1 en anderzijds expressiebomen in Sectie 2.2 die we uiteindelijk samen gebruiken om het framework op te stellen. 2.1 2.1.1 Potentiaalvelden Oorsprong Een eerste luik van de literatuurstudie gaat over potententiaalvelden, een centraal concept in deze thesis. Het idee van potentiaalvelden komt voort uit de notie van electromagnetische potentiaal in de fysica. Als een object een elektrische lading bevat wordt er rond dit object een elektrisch veld opgespannen door dit object. Dit veld oefent op zijn beurt een kracht uit op alle andere geladen objecten. Deze kracht is afhankelijk van enerzijds de euclidische afstand tussen de twee objecten en anderzijds de grootte van de lading van het beschouwde object. De relatie tussen deze twee eigenschappen wordt beschreven door de wet van Coulomb, gegeven in Vergelijking 2.1. Hier zijn Q1 en Q2 de respectievelijke ladingen 10 HOOFDSTUK 2. LITERATUURSTUDIE van de twee objecten, r de afstand tussen de twee objecten in meter en de elektrische veldconstante. De eigenschappen van statische elektrische ladingen wordt bestudeerd in de elektrostatica. F = Q1 Q2 4πR2 (2.1) Het is belangrijk om te weten dat de ladingen van objecten zowel negatief als positief kunnen zijn. Ladingen met een gelijk teken stoten elkaar af terwijl ladingen met een verschillend teken elkaar aantrekken. Dit verklaart bijvoorbeeld waarom bepaalde magneten elkaar afstoten en andere elkaar aantrekken. 2.1.2 Artifici¨ ele potentiaalvelden Artifici¨ele potentiaalvelden (APF’s) zijn de abstractie van het hierboven beschreven natuurkundig fenomeen binnen de computerwetenschappen. Hier beweegt een entiteit zich door een omgeving met statische en dynamische (negatief geladen) obstakels die hij probeert te ontwijken. Tegelijkertijd probeert de entiteit zich naar een doel (positief geladen) te navigeren. Op het grid waar de entiteit zich bevindt heeft elke tegel een resulterende positieve of negatieve kracht die resulteert uit de aggregatie van alle velden van de andere objecten. De entiteit kan dus op een gretige wijze het veld met de meest attractieve waarde zoeken in de 8 tegels rondom de tegel waarop hij zich bevindt en naar die tegel bewegen. In Figuur 2.1 wordt een voorbeeld getoond van een artificieel potentiaalveld met een obstakel (bruine bol) en een doel waar de entiteit zich naartoe beweegt (groene bol). De pijlen geven de differentiaal aan van de potentiaal (van lage potentiaal naar hoge potentiaal). Dit is ook het pad dat gevolgd zal worden door eenheden om het doel te bereiken. Om de benodigde computationele rekenkracht te verminderen kunnen we uiteraard de granulariteit van de cellen verlagen. Dit betekent dat pixels gegroepeerd worden en afgebeeld worden op ´e´en cel waardoor al deze pixels dezelfde lading hebben. We cre¨eren dus in feite een injectieve afbeelding van meerdere pixels naar ´e´en waarde. 2.1. POTENTIAALVELDEN 11 Figuur 2.1: Een voorbeeld van een artificieel potentiaalveld De eerste toepassingen van APF’s bevonden zich vooral in het veld van de robotica waar deze techniek gebruikt werd voor pad planning van robots zoals besproken in artikel [2]. Het grootste deel van het academisch werk rond deze techniek situeert zich dan ook in deze tak. Hierna werd ook het nut ingezien van deze techiek in andere domeinen zoals mobiele sensor netwerken [1] waar een optimale dekking gezocht wordt door het gebruik van afstotende potentiaalvelden. Het is pas sinds 2008 dat er voor het eerst onderzoek gepubliceerd werd in verband met het gebruik van APF’s in AI van computerspellen. Het werk [7] door Johan Hagelb¨ack, een authoriteit op vlak van AI binnen computerspellen, sprak voor het eerst over de implementatie van APF’s binnen games voor navigatie van eenheden binnen een sterk dynamische wereld. Na het afstellen van de parameters van de potentiaalvelden bleek deze aanpak een groot voordeel te bieden tegenover de traditionelere pathfinding algoritmes. Enkele andere toepassingen van potentiaalvelden binnen Starcraft zijn onder andere het verbeteren van de kiting mogelijkheden van AI’s. Deze specifieke techniek wordt verder 12 HOOFDSTUK 2. LITERATUURSTUDIE besproken in de sectie 3.1.2. In [8] wordt onderzoek gedaan naar deze techniek door middel van potentiaalvelden. 2.1.3 Voordelen en nadelen APF’s laten toe om een zeer gecompliceerde situaties eenvoudig te modelleren en te evalueren. Ze kunnen gemakkelijk overweg met een grote hoeveelheid entiteiten. Potentiaalvelden kunnen ook automatisch makkelijk overweg met ingewikkelde pathfinding problemen met meerdere constraints door hun topologische aard. Hierop wordt traditioneel vaak het A* algoritme toegepast [3]. Evaluatie van de potentiaal op een specifiek punt schaalt ook lineair met het aantal te beschouwen entiteiten. Uit recente papers in verband met game AI en potentiaalvelden kunnen we afleiden dat deze techniek leidt tot superieure AI’s die beter presteren dan systemen die er geen gebruik van maken. Een welgekend probleem van APF’s is de problematiek met lokale maxima. Tijdens het bewegen naar het globaal maximum kan het voorkomen dat een entiteit vast komt te zitten in een lokale top waar alle omringende tegels een kleinere aantrekkende potentiaal bezitten. Dit probleem heeft is echter inherent aan APF’s en wordt door zijn complexiteit niet verder behandeld in deze thesis. Een ander welgekend probleem bij het gebruik van potentiaalvelden ligt in het afstellen van de parameters van de potentiaalvelden. In een poging om dit probleem aan te pakken werd er in [4] een oplossing gezocht door gebruik te maken van een genetisch algoritme. Dit is een heuristiek die probeert zo goed mogelijke parameters te bepalen, zoals het geval is bij elke heuristiek, niet gegarandeerd het globale optimum vindt. Hierna werd er ook in [5] verder gewerkt met deze techniek om micro management (besproken in Sectie 3.1.2) door AI’s te verbeteren. 2.2. EXPRESSIEBOMEN 2.2 2.2.1 13 Expressiebomen Werking Een tweede groot luik omvat het concept van expressiebomen. Expressiebomen bestaan reeds een langere tijd en worden in tal van domeinen gebruikt. Een expressieboom is een datastructuur die eerst en vooral voldoet aan de eigenschappen van een normale boom: de datastructuur is hierarchisch en bevat een wortelknoop die de ouder is van alle andere knopen in de boom. De knopen zonder kinderen worden ook bladknopen genoemd. Elke niet-bladknoop bevat een of meerdere verwijzingen naar zijn kinderen. Naast deze eigenschappen wordt er bij een expressieboom een verschil gemaakt tussen operatorknopen en waardeknopen. 2.2.1.1 Operatieknopen Operatieknopen beschrijven een bepaalde operatie op hun kinderknopen. Bij de evaluatie van deze knoop worden eerst alle kinderen ge¨evalueerd. Hierna wordt de specifieke operatie toegepast op de evaluatiewaarden en wordt het resultaat teruggegeven naar boven in de boom (richting de wortel). 2.2.1.2 Waardeknopen Waardeknopen zijn de bladknopen van de expressieboom. Ze hebben dus geen kinderen en zijn gemakkelijk op zichzelf evalueerbaar. De waarde van deze knoop kan zowel afhangen van een variabele als constant bepaald zijn tijdens de initialisatie. 14 2.2.1.3 HOOFDSTUK 2. LITERATUURSTUDIE Evaluatie De evaluatie van een expressieboom verloopt door depth first traversal (DFT), zoals te zien in Figuur 2.2. Dit wordt vaak gedaan door op een recursieve manier de evaluatiemethode van de knopen op te roepen, beginnende bij de wortel. a b d c e f g h i j Figuur 2.2: Depth first traversal 2.2.2 Voordelen Dit type voorstelling heeft enkele grote voordelen. Eerst en vooral is de structuur zeer begrijpbaar voor mensen en is constructie en uitwerking intu¨ıtief. De voorrangsregels van de operatoren zitten ook expliciet vervat in de boom en er is dus geen nood aan haakjes of mogelijkheid tot ambigu¨ıteit. Vervolgens leent de expressieboom zich ook tot het toevoegen van modulaire functionaliteit. Er kunnen eenvoudig operatoren toegevoegd worden zolang ze voldoen aan de geleverde interface. Alle functionaliteit van een operator zit vervat in een eigen klasse wat de coupling vermindert en de cohesion verhoogt alsook het DRY (don’t repeat yourself) principe oplegt. 2.2. EXPRESSIEBOMEN 15 De voordelen van deze software engineering principes werden beschreven in [11]. Een derde voordeel is de mogelijkheid om de expressieboom te evalueren op een parallele manier met meerdere threads die elk een deel van de boom verwerken. Dit zorgt voor een aanzienlijke snelheidswinst op multicore systemen. Deze techniek wordt besproken in [12] en [13]. Zo kan de expressieboom ge¨evalueerd worden in logaritmische tijd (O(log(n))) in plaats van lineaire tijd (O(n)). Als laatste kunnen we ook gemakkelijk caching toevoegen aan de boom door in bepaalde nodes reeds berekende waarden bij te houden om later te herbruiken. Dit process heet memoization en kan eveneens een grote performantiewinst betekenen. Deze techniek werd voor het eerst besproken in [14] en passen we zelf ook toe in ons framework in Sectie 4.2.5. 16 HOOFDSTUK 2. LITERATUURSTUDIE 17 Hoofdstuk 3 Tools 3.1 Starcraft Zoals reeds duidelijk gemaakt in de inleiding worden de in deze thesis ontworpen technieken toegepast op het RTS spel Starcraft “Brood War”. Een belangrijke eigenschap van dit spel is de real time component. Hierdoor is het noodzakelijk dat de ontworpen technieken performant genoeg zijn om alle informatie enkele tientallen malen per seconde te herberekenen afhankelijk van de frames per seconde (FPS). De reden waarom we het oudere Starcraft “Brood War” gebruiken en niet de recente editie Starcraft II: “Wings of Liberty” is hoofdzakelijk omdat het oudere framework een API heeft, BWAPI genaamd. De nieuwe versie van Starcraft laat dit veel moeilijker toe en aanpassingen aan het spel worden ook wettelijk verboden door Blizzard. Hierdoor werd beslist om geen interface voor het nieuwe versie te ontwikkelen door de makers van BWAPI. Deze oudere versie van Starcraft laat ons eveneens toe meerdere instanties parallel te laten lopen door de exponenti¨ele stijging van de processorkracht in de laatste 14 jaar. BWAPI wordt verder besproken in Sectie 3.2. Starcraft speelt zich af in een futuristisch tijdperk waar spelers de keuze hebben uit drie 18 HOOFDSTUK 3. TOOLS fundamenteel verschillende rassen met elk hun eigen sterktes en zwaktes. De Terran is het menselijke ras dat beschikt over futuristische menselijke eenheden zoals soldaten, tanks, buggies ... Het tweede ras is de Protoss, dit zijn hoogtechnologische aliens met duurdere maar iets sterkere eenheden die over schilden beschikken. Het laatste ras is de Zerg, bestaande uit insectoiden met dierlijke instincten. Hun eenheden zijn relatief zwak maar kosten ook het minste. De tactiek van de Zerg is vaak het overrompelen van de vijand met enorme hoeveelheden eenheden. In Tabel 3.1 ziet u een vergelijking van de drie rassen. Terran Protoss Zerg Kracht Gemiddeld Hoog Laag Kost Gemiddeld Hoog Laag Productie snelheid Laag Gemiddeld Hoog Tabel 3.1: Vergelijking van de rassen in Starcraft Een ander belangrijk punt is de opsplitsing tussen macro- en micromanagement. Beide aspecten van het spel zijn noodzakelijk om de tegenstander te verslaan. Ze zijn complementair van aard en versterken elkaar vaak. Een voorbeeld van een typische situatie binnen Starcraft “Brood War” wordt weegegeven op Figuur 3.1. 3.1. STARCRAFT 19 Figuur 3.1: Een voorbeeld van Starcraft: Brood War. 3.1.1 Macromanagement Macromanagement omvat alle activiteiten en beslissingen op langere termijn. Deze langetermijnbeslissingen omvatten enerzijds economische beslissingen zoals wanneer en waar een expansie gebouwd moet worden. Economische groei is in Starcraft namelijk de voornaamste motor om een groot leger uit te bouwen. Anderzijds is ook de compositie van het leger belangrijk, zodat dit een zo goed mogelijk antwoord op de compositie van het vijandig leger biedt. Elke eenheid heeft namelijk bepaalde zwaktes die kunnen uitgebuit worden door andere eenheden (banelings zijn bijvoorbeeld over het algemeen zeer sterk tegen soldaten maar zeer slecht tegen bepanserde eenheden). Om correcte macro beslissingen te kunnen maken gaan spelers enerzijds vaak voort op 20 HOOFDSTUK 3. TOOLS het eigen gevoel dat gevormd werd door vele ervaringen. Anderzijds bouwen ze ook vaak op conventionele tactieken die uit studie zijn voortgekomen. Er zijn geen gouden regels die zorgen voor perfecte macro beslissingen door de zee van mogelijke situaties die zich kunnen voortdoen. Dit zorgt er eveneens voor dat er vele matches nodig zijn om het nodige fingerspitzengef¨ uhl te kweken om correcte macro beslissingen te nemen. 3.1.2 Micromanagement Micromanagement gaat over alle kortetermijnbeslissingen die een voordeel kunnen betekenen tegenover de tegenstander. Meestal is deze component zeer aandachts-intensief en behoeft deze een hoge concentratie. Een voorbeeld is het individueel besturen van de eenheden om er zo mogelijk effici¨enter gebruik van te maken. Eenheden met een slechte gezondheid kunnen bijvoorbeeld teruggetrokken worden waardoor de toegebrachte schade aan deze eenheid beperkt blijft. Een ander voorbeeld van micromanagement is de kiting techniek. Deze techniek bestaat er uit eenheden met een grote aanvalsafstand individueel te controleren en afwisselend aan te vallen en weg te manoeuvreren van de vijand. Hierdoor blijven de eigen eenheden buiten schot terwijl ze tegelijkertijd toch kunnen aanvallen. Een voorbeeld hiervan is het vechten van soldaten (lange aanvalsafstand) tegen “banelings” (zeer korte aanvalsafstand) waar soldaten vaak enkel kunnen winnen door het kiten van de banelings en de soldaten ruim te verspreiden over het speelveld. Op economisch vlak kan micromanagement ook een groot voordeel betekenen door bijvoorbeeld de timing van de bouwvolgorde van de verschillende eenheden en gebouwen te perfectioneren. Professionele spelers kunnen deze volgordes tot op de seconde perfect uitvoeren wat vaak een grote invloed heeft op het later verloop van het spel. Om deze micromanagement technieken parallel en succesvol toe te passen op een omvangrijk leger zijn echter een zeer groot aantal acties per minuut nodig wat ook meteen de reden 3.2. BWAPI 21 is dat de toepassingen van deze technieken vaak de uitstekende spelers van de topspelers onderscheidt. Ze zorgen ook voor dat Starcraft geen artifici¨ele grens heeft op het gebied van moeilijkheid waardoor spelers zich eindeloos kunnen verbeteren en ontplooien wat voor een hoge competitiviteit zorgt. 3.1.3 Fog of war Een ander belangrijk concept in Starcraft is de Fog of war (FOW). De FOW is aanwezig op alle gebieden waar de speler geen eenheden of gebouwen heeft. Dit houdt in dat deze speler daar geen vijandelijke eenheden of gebouwen kan zien. Dit spelmechanisme maakt het opzettelijk moeilijk voor de spelers om een globale visie op de map, en de vooruitgang en expansie van de vijand te houden. Ook is het belangrijk op te merken dat Starcraft verhoogde gebieden bevat waar eenheden die beneden staan geen zicht op hebben tot ze zich naar hetzelfde niveau begeven. Hierdoor kan een speler een tactisch voordeel opbouwen door zijn eenheden hogerop te plaatsen aan belangrijke chokepoints (smalle doorgangen). Door de FOW is het uitermate belangrijk om te scouten. Scouting is het verzamelen van informatie over de activiteiten van de vijand door ´e´en of meerdere eenheden rond de map te sturen en de FOW weg te werken rond de vijand. Scouting is een essenti¨ele techniek in Starcraft die het toelaat vroegtijdig te anticiperen op de beslissingen van de vijand. 3.2 BWAPI Aangezien Starcraft strikt “closed source” 1 is is het onmogelijk om broncode toe te voegen of aan te passen. Om het toch mogelijk te maken te communiceren met het spel door middel van code is de “Brood War Application Programming Interface” (BWAPI) ontwikkeld. Dit framework, volledig ontwikkeld in C++, laat toe om alle informatie te bevragen die 1 Closed source of Propri¨etaire software is software waarvan de broncode niet openbaar gemaakt wordt. 22 HOOFDSTUK 3. TOOLS een gebruiker kan raadplegen binnen het spel vanuit een geschreven programma. Ook kunnen er gemakkelijk commando’s gegeven worden aan eenheden, gebouwen, menus ... Een voorbeeld van de mogelijkheden van BWAPI wordt getoond in figuur 3.2 Figuur 3.2: Een voorbeeld van BWAPI in actie. Door visuele toevoegingen zoals gekleurde vormen en tekst kan BWAPI op een intu¨ıtieve manier informatie overbrengen. Naast de activiteiten die de speler zelf ook kan uitvoeren is het mogelijk om het spelverloop te versnellen, het opstarten van spellen te automatiseren en het programma te debuggen. Al deze features samen geven een mooi framework om verschillende AI technieken op toe te passen. Het mag dan ook geen verrassing zijn dat Starcraft samen met BWAPI een van de meest gebruikte tools is bij het onderzoek naar AI binnen strategiespellen. Meer dan 60 verschillende academische papers hebben BWAPI gebruikt als implementatieplatform. Elk jaar vinden er een aantal competities plaats tussen verschillende AI’s die gebruik maken van BWAPI [6]. Enkele belangrijke competities zijn AIIDE, CIG (Universiteit van Dortmund) en SSCAI (Universiteit van Comenius) waar AI’s volledige spellen moeten 3.2. BWAPI 23 uitspelen tegen elkaar. Het is vooral een test om de verschillende cutting-edge technieken naast elkaar in actie te zien waardoor het onderzoek naar betere AI technieken constant op de spits gedreven wordt. 24 HOOFDSTUK 3. TOOLS 25 Hoofdstuk 4 Framework In deze thesis is het naast het analyseren van complexe situaties in een spelomgeving ook de bedoeling om een modulair en flexibel framework te ontwerpen dat toelaat om op eenvoudige wijze complexe geaggregeerde PF’s op te stellen. Dit framework moet het ook eenvoudig toelaten om velden op temporeel vlak te aggregeren. Dit is namelijk essentieel om complexe analyses te maken in een RTS spel. In dit hoofdstuk bespreken we de opbouw en structuur van het framework en lichten we ook toe waarom we bepaalde keuzes gemaakt hebben bij het ontwerp ervan. Hierna beschrijven we verschillende operatoren die het framework kracht geven in Sectie 4.2.3. Tot slot bespreken we ook enkele optimalisaties om de performantie te verhogen zoals caching in Sectie 4.2.5. 4.1 Keuze van de implementatie taal Het framework is ontworpen in C++ wat enkele voordelen met zich meebrengt: Snelheid Een van de grootste redenen waarom C++ een zodanig dominante programmeertaal 26 HOOFDSTUK 4. FRAMEWORK is, is de snelheid gecombineerd met een hoog abstractieniveau dat OOP mogelijk maakt. Aangezien we realtime analyses willen doen over een grote 2D spelwereld is C++ de evidente keuze om haperingen te voorkomen. Compatibiliteit met BWAPI Zoals hierboven besproken maken we voor de interactie met de spelwereld gebruik van BWAPI. Aangezien deze interface ook volledig in C++ geschreven is kunnen we zo optimaal gebruik maken van de functionaliteit binnen BWAPI. OOP Het gebruik van object-geori¨enteerd programmeren zal enorm handig blijken voor de structuur van het framework. Hoofdzakelijk door polymorfisme kan veel onnodige complexiteit vermeden worden. 4.2 Expressieboom Een eerste concept dat we gebruiken is de expressieboom. Een expressieboom is een datastructuur die een eenvoudige evaluatie van een complexe expressie mogelijk maakt. De bladeren van de expressieboom bestaan vaak uit variabelen of constanten die op zichzelf makkelijk te evalueren zijn. De knopen in de boom die geen bladknoop zijn bevatten expressies (eenvoudige code) gebaseerd op de waarden van de kinderknopen. Deze knopen kunnen we zien als aggregatoren van de kinderknopen, ze reduceren de evaluaties van elk van de kinderknopen tot ´e´en evaluatiewaarde. Zo kunnen we Vergelijking 4.1 voorstellen met een overeenkomstige expressieboom zoals te zien in Figuur 4.1. √ 2x + y 10 (4.1) In onze complexere expressieboom, waar we in plaats van met constante waarden of variabelen met potentiaalvelden werken, hebben we een klassediagram zoals te zien in Appendix A. We zullen nu elk van de knopen overlopen om een duidelijk inzicht in de werking ervan te verschaffen. 4.2. EXPRESSIEBOOM 27 Resultaat / 10 + * √ x 2 y Figuur 4.1: De expressie in boomvoorstelling. 4.2.1 Expressieknoop Deze abstracte klasse is de ouder van elke knoop. Alle kinderknopen dienen de evaluatiemethode te implementeren die de potentiaal op een co¨ordinaat teruggeeft. Door deze interface waaraan elke knoop moet voldoen kunnen we gebruik maken van polymorfe methoden. Polymorfisme kan beschreven worden als het voorzien van ´e´en interface voor verschillende types. Een polymorfisch type zoals de expressieknoop is een type wiens operaties kunnen toegepast worden op waarden van andere types (de subklasses van dit type). Naast het bieden van een vaste interface voor knopen zorgt deze klasse ook voor caching van reeds berekende potentialen met als gevolg performantiewinst. In Sectie 4.2.5 wordt hier verder over uitgewijd. De evaluatie methode vastgelegd door de expressieknoop is fundamenteel in het ontwerp van ons framework. Deze methode neemt twee argumenten, de x en de y co¨ordinaat, die 28 HOOFDSTUK 4. FRAMEWORK de positie bepalen in de 2D spelomgeving waar we het opgestelde veld willen evalueren. De evaluatiemethode geeft steeds een decimaal getal terug: de lading van het veld op de opgegeven positie. Dit is eveneens de enige informatie die andere objecten nodig hebben over de knopen. Ze worden als het ware afgesloten van de logica binnenin de knoop en hoeven zelfs niet te weten over welke type knoop het gaat (polymorfisme). Een volgende opsplitsing die we zullen maken is die tussen operatorknopen en positieknopen. 4.2.2 Positieknoop Deze klasse omvat alle knopen die eveneens ook bladeren van de boom zijn. Deze knopen hebben dus geen bladeren en zijn op zichzelf gemakkelijk evalueerbaar. Deze waarde kan ook een attribuut van een object zijn waardoor we de evaluatie van de boom kunnen aanpassen door buiten de boom het object te wijzigen. Een verdere opsplitsing bestaat tussen de constante knoop en de ladingsknoop. 4.2.2.1 Constante knoop Een eerste type bladknoop is de voorstelling van een constante waarde. Deze bevat een floating point waarde en geeft eenvoudigweg deze waarde terug bij de evaluatie. Het nut van deze knopen ligt vooral in het toepassen van binaire operaties waarbij ´e´en van de twee waarden vastligt. Denk aan het verzwakken van een veld met een bepaalde constante factor. Of het instellen van een plafond bij het toepassen van de n-aire operator minimum. 4.2.2.2 Ladingsknoop Een minder triviale knoop is de Ladingsknoop die de lading van een enkele eenheid voorstelt. Een Ladingsknoop bevat hierom een Unit instantie die in BWAPI een enkele eenheid voorstelt. Deze instantie bevat onder andere de huidige positie van de eenheid. Naast de 4.2. EXPRESSIEBOOM 29 Unit instantie kan ook het type veld gekozen worden die de eenheid opspant. We voorzien drie verschillende types velden: Constant: Dit veld heeft dezelfde waarde in alle punten. Linear: Dit veld verzwakt op een lineare manier afhankelijk van de euclidische af- stand van de eenheid tot het punt waarop gemeten wordt en de gekozen decay waarde. evaluate(x, y) = charge − charge · decay · euclidianDistance (4.2) Gaussiaans: Hier wordt een gaussiaans veld opgespannen wat ervoor zorgt dat de lading op geen enkel punt nul is maar dat de lading asymptotisch naar nul gaat als de afstand tot het centrum groter wordt. Voor de parameter µ (mean) nemen we nul aangezien de potentiaal het hoogst moet zijn als de afstand tot het centrum nul is. De parameter σ (standaardafwijking) kunnen we variabel kiezen naargelang de breedte van de basis die we wensen. 2 1 2 Gaussian(x) = √ e−(x−µ) /2σ σ 2π 4.2.3 (4.3) Operatorknopen Naast vaste waarden willen we uiteraard ook operaties toepassen op de hiernet gedefinieerde potentiaalvelden. In deze sectie bespreken we een ruim aantal ge¨ımplementeerde operatorknopen die samen gebruikt worden met de reeds besproken waardeknopen. We splitsen de operatoren op in drie fundamentele types: de unaire operatoren die ´e´en kind bezitten, de binaire operatoren die twee kinderen bezitten en ten slotte de n-aire operatoren die een variabel aantal argumenten nemen. Het aantal argumenten is hier steeds gelijk aan het aantal kinderen waar de desbetreffende knoop over beschikt. Merk op dat we bij enkele traditioneel binaire operatoren verkiezen deze te implementeren als een n-aire operatorknoop. Dit doen we enkel bij operatoren die zowel associatief als 30 HOOFDSTUK 4. FRAMEWORK commutatief zijn om het gebruiksgemak te verhogen wanneer we met een groot aantal argumenten werken (anders is een lange aaneenschakeling van de binaire variant nodig). Een voorbeeld hiervan is de som operator. 4.2.3.1 Unaire Operatoren Negatie Een eerste operator is de negatieoperator die een potentiaalveld als argument neemt en een veld terug geeft dat in elk punt een waarde bevat die gelijk is in absolute waarde, maar waarvan het teken anders is. negatex,y : R → R x 7→ −x (4.4) (4.5) Het nut van deze operator ligt bij het opstellen van repulsieve velden. Zo moeten we het type veld (positief of negatief) niet inbakken in de bladknopen die dan enkel de vorm en sterkte van het veld moeten vastleggen. Dit verhoogt de modulariteit en herbruikbaarheid van de bladknopen en de andere operatoren. In Figuur 4.2 wordt de operator toegepast op een lineair potentiaalveld. Rechts ziet u het originele veld en links de negatie van dit veld door het toevoegen van een negatie operator. 4.2. EXPRESSIEBOOM 31 Figuur 4.2: Een voorbeeld van de negatie operator met links een negatief veld en rechts een positief veld. Begrenzing (cutoff ) Soms is het nuttig een operator te bezitten die de invloed van een potentiaalveld begrenst tot een bepaalde afstand van de bron. Dit is net het doel van de begrenzingsoperator. Door bijvoorbeeld het constante veld besproken in Sectie 4.2.2.1 vooraf te laten gaan door deze operator kunnen we een cirkelvormig veld opstellen dat in alle punten binnen de cirkel dezelfde lading heeft. Zonder deze operator zou het constante veld zich over de volledige 2D-ruimte uitstrekken. cutoffx,y : R → R x : d((x, y), (x , y )) =< z 0 0 x 7→ 0 : d((x, y), (x , y )) > z 0 0 (4.6) (4.7) In de definitie van deze operator (Vergelijking 4.7) hebben we twee extra parameters, namelijk (x0 , y0 ) en z. De eerste is de co¨ordinaat van de bron van de lading die nodig is om 32 HOOFDSTUK 4. FRAMEWORK de euclidische afstand te kunnen berekenen. De tweede parameter die wordt meegegeven bij de initialisatie van de begrenzingsoperator is de afstand tot waar het veld begrensd moet worden. De lading op alle posities die verder dan z van de bron van de lading liggen zal dus 0 zijn. (a) Geen begrenzing (b) Begrenzing van 150 (c) Begrenzing van 100 Figuur 4.3: Illustratie van de begrenzingsoperator toegepast op hetzelfde veld In Figuur 4.3 wordt het gebruik van de begrenzingsoperator ge¨ıllustreerd op een constant veld met lading 1 (maximale lading). Merk ook op dat deze operator enkel een positieknoop als kindknoop kan bezitten aangezien de positie van de bron van het veld gekend moet zijn om deze nuttig te kunnen toepassen. Drempel (threshold) Naast een begrenzing op basis van de euclidische afstand zoals besproken in de vorige sectie is het soms ook nodig om een veld te beperken op basis van de grootte van de lading. De operator die dit voorziet zullen we de drempeloperator noemen. Bij het aanmaken van deze operatorknoop dienen we een drempelwaarde op te geven. Een specifieke use case van deze operator is het scenario waar we met ´e´en of meerdere geaggregeerde gaussiaanse potentiaalvelden werken. Zoals we eerder gezien hebben, naderen deze velden asymptotisch naar 0 en hebben we dus veel posities waar de lading zeer klein is en geen significante 4.2. EXPRESSIEBOOM 33 betekenis meer heeft. thresholdx,y : R → R x : x >= z x 7→ 0:x<z (4.8) (4.9) In deze stuksgewijze functie gedefinieerd in Vergelijking 4.11 worden alle ladingen kleiner dan een bepaalde z - vastgelegd bij initialisatie - gereduceerd naar 0. (a) Geen drempel (b) Drempel van 0.5 Figuur 4.4: Illustratie van de drempeloperator toegepast op hetzelfde veld Een voorbeeld van de drempeloperator ziet u in Figuur 4.4 waar we deze operator toevoegen aan een lineair potentiaalveld. In het eerste geval is er geen operator aanwezig, in het tweede geval gebruiken we een drempeloperator met een drempelwaarde 0.5. Let vooral op het abrupte einde van het veld bij het gebruik van de drempeloperator. 34 4.2.3.2 HOOFDSTUK 4. FRAMEWORK Binaire Operatoren Verzwakking (decay) De verzwakkingsoperator is de eerste binaire operator en laat het toe een veld te verzwakken door dit te vermenigvuldigen met een ander potentiaalveld (eventueel een constant veld). decayx,y : R × R → R x, y 7→ x.y (4.10) (4.11) Een belangrijke operator om temporele potentiaalvelden op te stellen is de verzwakkingsoperator. Om de temporaliteit visueel voor te stellen is het soms nodig bepaalde potentiaalvelden te doen afzwakken, afhankelijk van de verlopen tijd sinds het vastleggen van deze potentiaalvelden. Een specifieke toepassing hiervan, en alsook een use case die later besproken wordt, is het bepalen van bewegingspatronen. 4.2.3.3 n-aire operatoren Het grootste deel van de operatorknopen zijn n-aire operatoren die een variabel aantal expressieknoop-argumenten kunnen aannemen. Minimum Deze operator evalueert alle kindknopen op de opgevraagde positie en geeft het minimum van alle evaluaties terug. Deze operator is enorm handig als we bijvoorbeeld een bovengrens willen opleggen aan ons potentiaalveld. Dit bereiken we door een minimumoperator te gebruiken met twee kinderen. Enerzijds het veld waar we een bovengrens aan willen opleggen en anderzijds een constante knoop (besproken in Sectie 4.2.2.1) ge¨ınitialiseerd met de waarde die we als bovengrens willen gebruiken. 4.2. EXPRESSIEBOOM 35 minimumx,y :R∗ → R (4.12) x1 , . . . , xn 7→ min(x1 , . . . , xn ) (4.13) In Figuur 4.5 zien we de minimumoperator toegepast op een lineair potentaalveld met een maximum van 1 en een constante knoop ge¨ınitialiseerd met de waarde 0.7. Let in (b) en (d) vooral op het gecre¨eerde plateau met een waarde 0.7. Maximum Deze operator is volledig analoog aan de minimumoperator maar we nemen hier het maximum van de evaluaties van de kinderen. Deze operator is onder meer handig om benedengrenzen op te leggen aan bepaalde velden. maximumx,y :R∗ → R (4.14) x1 , . . . , xn 7→ max(x1 , . . . , xn ) (4.15) Som (sum) De som operator is een vrij voor de hand liggende operator. De evaluatie van deze operator is gelijk aan de som van de evaluaties van alle kinderen. Deze operator wordt verder vaak gebruikt om meerdere potentiaalvelden te aggregeren tot ´e´en potentiaalveld. Merk op dat we hiermee positieve en negatieve potentiaalvelden elkaar kunnen laten uitmiddelen. sumx,y :R∗ → R x1 , . . . , xn 7→ (4.16) n X i=0 xi (4.17) 36 HOOFDSTUK 4. FRAMEWORK (a) Geen bovengrens (b) Bovengrens van 0.7 (c) Geen bovengrens met waarden (d) Bovengrens van 0.7 met waarden Figuur 4.5: Illustratie van de minimumoperator als bovengrens 4.2. EXPRESSIEBOOM 37 Gemiddelde (average) De gemiddelde operator laat toe om potentiaalvelden minder grillig te maken door deze operator te te passen op de velden samen met een constant veld. Hierdoor trekken we de potentiaalwaarden van het resulterende veld dichter bij de waarde van dit constant veld. Een andere handige toepassing is het herschalen van een aggregatie van verschillende potentiaalvelden. Wanneer we n velden hebben met elk een bepaalde maximale waarde k kunnen we er zeker van zijn dat het resulterend potentiaalveld na het toepassen van de gemiddelde operator ook een waarde zal geven die hoogstens k is. Dit resultaat is dan afhankelijk van de relatieve grootte van de som van de verschillende potentiaalvelden. Dit is enorm handig indien we de waarden van een potentiaalveld willen visualiseren door een welbepaald interval te mappen op het RGB spectrum (0-255). averagex,y :R∗ → R (4.18) n 1X xi x1 , . . . , x n → 7 n i=0 4.2.3.4 (4.19) Geheugenknoop (memory) Wanneer we de zo net gedefinieerde operatoren overlopen kunnen we vaststellen dat de bouwblokken het momenteel niet toelaten om veranderingen in de tijd vast te leggen (het temporeel aspect dat we willen bekomen). We kunnen momenteel enkel bij elke evaluatie een momentopname nemen die zich aanpast aan de positie van de eenheden. Om nuttige analyses te kunnen opstellen hebben we nood aan deze temporele informatie, meer specifiek de veranderingen van het potentiaalveld in de tijd, wat mogelijk gemaakt wordt door de geheugenknoop. De geheugenknoop bestaat fundamenteel uit twee delen: de geheugenoperator en de geheugenbladknoop. 38 HOOFDSTUK 4. FRAMEWORK Deze knopen worden apart van de andere operatoren besproken om de synergie te benadrukken. Resultaat Geheugen operator 2D Tabel Maximum operator Verzwakkings operator Ladingsknoop Figuur 4.6: De structuur van een voorbeeld van de geheugenknoop Geheugenbladknoop De geheugenbladknoop bevindt zich zoals te verwachten onderaan in de expressieboom en heeft dus geen kindknopen. Deze knoop bevat een referentie naar een 2D tabel waarin waarden worden opgeslagen. Bij het evalueren van deze knoop op een bepaalde positie wordt de waarde uit de tabel op de overeenkomstige plaats eenvoudigweg teruggegeven. Geheugenoperator De geheugenoperator is een tweede essentieel deel van de geheugenknoop. Dit is een unaire operator (neemt ´e´en expressieknoop als argument) die dezelfde evaluatiewaarde terug geeft 4.2. EXPRESSIEBOOM 39 als zijn kindknoop. Deze operator verandert dus functioneel niks aan de berekening binnen de expressieboom. De operatorknoop bevat ook een referentie naar dezelfde 2D tabel waar de geheugenbladknoop naar verwijst. Wanneer de evaluatiemethode van deze knoop opgeroepen wordt, wordt de evaluatiewaarde van de kindknoop berekend en wordt de waarde in de 2D tabel op de desbetreffende positie aangepast met de nieuwe waarde. Voorbeeld Met de twee besproken onderdelen kunnen we nu een constructie bouwen die over een geheugen beschikt. We zullen nu een voorbeeld opstellen waar we het spoor van ´e´en bepaalde eenheid willen vastleggen in de tijd. Eerst en vooral zullen we van deze eenheid een lineair potentiaalveld maken door het gebruik van een ladingsknoop (zie Sectie 4.2.2.2). Een tweede bladknoop is de geheugenbladknoop die de aggregatie van de vorige toestanden zal bijhouden na elke evaluatie. Als aggregatieoperator tussen de aggregatie van het verleden en de huidige toestand kiezen we de maximumoperator. Deze heeft dus twee kindknopen, namelijk de ladingsknoop en de geheugenbladknoop. Tot slot plaatsen we een geheugenoperator voor de maximumoperator om het geheugen aan te passen na de evaluatie. De volledige constructie kan u zien in Figuur 4.6. Het voorbeeld wordt toegepast in Starcraft in de Figuur 4.7, waar het pad dat de eenheid gevolgd heeft duidelijk zichtbaar wordt door het potentiaalveld. 40 HOOFDSTUK 4. FRAMEWORK Figuur 4.7: De memoryknoop in Starcraft toegepast 4.2.4 Compositie van operatoren In de vorige sectie hebben we enkele belangrijke operatoren besproken die we kunnen zien als de bouwblokken van ons framework. Een groot voordeel van de modulariteit van deze bouwblokken is dat we nieuwe operatoren kunnen ontwerpen bestaande uit een compositie van verschillende bestaande operatoren. Net zoals in de wiskunde de compositie van twee functies f ◦ g tot een nieuwe functie leidt, leidt de compositie van meerdere operatorknopen tot een nieuwe operator die we gemakkelijk verder als een bouwblok kunnen gebruiken. Het aantal argumenten van deze nieuwe operator is gelijk aan de som van het aantal argumenten van de bladknopen (indien deze een operatorknoop zijn). 4.2. EXPRESSIEBOOM 41 Operator knoop Resultaat Positie knoop Maximum operator Constante knoop 0 Minimum operator Constante knoop 1 Argument Figuur 4.8: Een voorbeeld van een operator compositie die de potentiaal begrenst binnen het [0,1] interval. In Figuur 4.8 zien we een compositie van een maximumoperator en een minimumoperator tot een nieuwe operator die ´e´en argument neemt en vervolgens alle evaluatiewaarden transformeert naar een evaluatiewaarde binnen het interval [0, 1]. 4.2.5 Caching Aangezien de analyses in real-time gebeuren en het aantal bevragingen aan de expressieboom lineair schaalt met de grootte van de map is het belangrijk om enkele technieken toe te passen die de performantie verbeteren. Caching is een techniek die bestaat uit het tijdelijk opbergen van gegevens om een snellere access-time te faciliteren. Hierbij dient de cache ook transparant te zijn in gebruik. 42 HOOFDSTUK 4. FRAMEWORK Memoization is een speciale vorm van caching die gebruikt wordt om functies te optimaliseren. Hier worden reeds berekende outputs samen met hun argumenten opgeslagen bij het uitvoeren van de functie. Indien de functie een tweede maal opgeroepen wordt met dezelfde argumenten wordt de waarde uit de cache terug gegeven en dienen er geen extra berekeningen gemaakt te worden. De expressieknoop voorziet een overkoepelende methode die memoization toelaat voor de evaluatiemethode, en dit voor elke knoop apart. Tijdens de initialisatie van een knoop kunnen we al dan niet kiezen of deze memoization moet voorzien. Aangezien we hier wel met dynamische bladknopen zitten die constant van positie veranderen zal de evaluatiemethode met dezelfde argumenten echter niet altijd hetzelfde resultaat geven. Hierom laten we toe een deelboom al dan niet geforceerd te evalueren wat betekent dat hij de cache zal verversen. We kunnen deze memoization nu gebruiken om elke x frames een cache refresh te doen en de benodigde rekenkracht sterk te verminderen. 43 Hoofdstuk 5 Use cases Nu we de structuur en de werking van het framework uitvoerig besproken hebben in Hoofdstuk 4 en de bijhorende operatoren uit de doeken gedaan hebben stellen we dit framework op de proef door enkele uiteenlopende use cases. Door diverse use cases te kiezen willen we ook aantonen dat het framework flexibel genoeg is om toegepast worden in verschillende velden, zoals reeds vermeld in de inleiding. We zullen in totaal voor vier use cases een expressieboom opstellen die de gewenste functionaliteit implementeert aan de hand van (temporele) aggregatie van potentiaalvelden. Aangezien we een visuele analysetool bouwen voor menselijk gebruik is de kwantificatie van de correctheid van het model niet eenvoudig. De “correctheid” is hier een vrij subjectief gegeven dat vaak afhangt van persoonlijke voorkeur. Hierom zullen we na het bouwen van de expressieboom deze toepassen op gespeelde spellen en kritische spelsituaties analyseren met de gecre¨eerde overlay. Naast de expressieboom dienen ook de parameters van de aparte knopen afgesteld worden. Er zijn drie soorten parameters die een grote invloed hebben op het resulterende veld: De grootte van de lading van de basis potentiaalvelden of de sterkte van de velden. De decay rate parameter van de basis potentiaalvelden die aangeven hoe ver het veld 44 HOOFDSTUK 5. USE CASES uitspreid. De decay rate parameter bij de verzwakkingsoperator samen gebruikt met de ge- heugenoperator. Hierdoor kunnen we instellen hoe lang temporele informatie moet behouden worden. In de use cases zullen we gebruik maken van “heatmaps” om de potentiaalvelden visueel voor te stellen. Deze heatmaps hebben een kleurcode waarbij groen een lage potentiaal en rood een hoge potentiaal aanduidt. 5.1 Use case 1: Distributie van vijandig leger in spatiotemporeel domein De eerste use case bestaat uit het analyseren van de distributie van de vijandige troepen over de tijd. Deze analyse helpt spelers om bepaalde bewegingspatronen van het vijandige leger te herkennen en het gravitatiepunt van het leger te kunnen bepalen. 5.1.1 Constructie van het model We zullen beginnen bij de basis van de expressieboom, namelijk de bladeren. De individuele vijandelijke eenheden zullen we voorstellen als lineaire potentiaalvelden waarbij sterkere eenheden een sterker potentiaalveld opspannen. Bij de aggregatie tussen de velden van de verschillende eenheden willen we dat meerdere eenheden in elkaars nabijheid samen in een sterker veld resulteren. Hiervoor gebruiken we de somoperator tussen de verschillende vijandige eenheden. De som van vele eenheden kan echter wel leiden tot zeer hoge potentialen. We kiezen er dan ook voor de potentiaal te begrenzen op 1 door gebruik te maken van de minimumoperator waardoor we de waarde van de potentiaal gemakkelijk kunnen afbeelden op een RGB-waarde.. 5.1. USE CASE 1: DISTRIBUTIE VAN VIJANDIG LEGER IN SPATIO-TEMPOREEL DOMEIN 45 Nu we de spatiale informatie van de vijandelijke eenheden kunnen vastleggen rest ons enkel nog het toevoegen van de temporele component. Hiervoor gebruiken we de geheugenoperator en bladknoop samen zoals besproken in Sectie 4.2.3.4 om een geheugen op te bouwen. Het geheugen zullen we eerst verzwakken met een factor 0.99 m.b.v. de verzwakkingsoperator. De aggregatie van het resultaat hiervan en de huidige spatiale staat zullen we doen door de maximum operator. Tot slot plaatsen we een geheugenoperator voor deze maximumoperator zodat we het nieuwe berekende veld steeds kunnen opslaan in het geheugen. In Figuur 5.1 wordt het opgebouwde model in boomstructuur getoond. Geheugen operator Maximum operator Verzwakkings operator Geheugen bladknoop Minimum operator Contante knoop 1 Ladings knoop Eenheid 1 Sommatie operator ... Ladings knoop Eenheid n Figuur 5.1: Het model voor use case 1 5.1.2 Toepassing Eerst en vooral dient opgemerkt te worden dat de visualisaties in deze use case met een schaal van groen naar rood werken. Hierbij is groen de laagst mogelijke potentiaal en rood de hoogst mogelijke potentiaal. 46 HOOFDSTUK 5. USE CASES Het voornamelijkste doel dat we wensen te bereiken met het model opgesteld in de vorige sectie is het herkennen van bepaalde patronen in de bewegingen van de vijandelijke troepen. Dit model genereert als het ware een heatmap van de militaire eenheden waarbij oudere posities vervagen met de tijd. In het eerste opgestelde scenario zijn er twee aparte groepjes vijandige soldaten die elk patrouilleren langs een pad voor de ingang van hun basis. In Figuur 5.2 worden er drie voorstellingen gegeven van hetzelfde ogenblik. Op de figuren van de toepassing van het model op dit scenario kunnen we duidelijk de pattrouille route onderscheiden die de vijandelijke troepen volgen. Hierdoor kunnen we bijvoorbeeld beslissen om langs de zijingang aan te vallen waar er zich geen verdediging bevindt. Een ander voordeel van dit veld is dat we in een oogopslag kunnen zien waar het zwaartepunt van het leger zich bevindt. Hierdoor kunnen we vanuit een optimale hoek aanvallen en dus een tactisch voordeel opbouwen. 5.2 Use case 2: Optimale scouting regio’s bepalen Zoals besproken in Sectie 3.1.3 is scouting een noodzaak om correcte beslissingen te kunnen maken. Om hierbij te helpen zullen we een potentiaalveld opstellen dat aangeeft welke gebieden dienen gescout te worden. Enkele belangrijke eigenschappen van gebieden waar gescout moet worden zijn eerst en vooral plaatsen die recent niet gescout is en waar er zich dus reeds gedurende een ruime tijd een FOW bevindt. Hiernaast zijn plaatsen in de nabijheid van vijandelijke eenheden interessant om te scouten aangezien dit een aanwijzing kan zijn dat er zich een basis bevindt in de buurt. Tot slot zijn het handvol mogelijke startposities (in de buurt van mineralen) 5.2. USE CASE 2: OPTIMALE SCOUTING REGIO’S BEPALEN (a) De potentiaalveld overlay bij een groepje soldaten (b) Het speelveld (c) Het opgestelde potentiaalveld Figuur 5.2: Use case 1 met het opgestelde model 47 48 HOOFDSTUK 5. USE CASES ook zeer nuttig om te scouten aangezien de vijand zich hier kan bevinden. 5.2.1 Constructie van het model Eerst bepalen we de bladknopen van de expressieboom. Zoals hiervoor besproken dienen we met verschillende factoren rekening te houden die we elk als bladknoop aan de expressieboom zullen moeten toevoegen. Eerst en vooral maken we een positief constant veld over het gehele speelveld om alle posities initieel interessant te maken om te scouten. De eigen eenheden en gebouwen geven we elk een constant potentiaalveld met een diameter gelijk aan de afstand tot waar de eenheid kan zien. Hierna aggregeren we de eigen eenheden met de maximumoperator en vervolgens voegen we de geheugen constructie toe, samen met een verzwakkingsoperator zoals in use case 1. Voor de geheugenoperator plaatsen we een negatieoperator aangezien reeds gescoute gebieden minder interessant zijn om opnieuw te scouten. De vijandige eenheden geven we lineaire potentiaalvelden aangezien we in de buurt van deze eenheden willen scouten. Ook voor deze eenheden stellen we een geheugenconstructie op zoals in use case 1 zodat we het temporele aspect kunnen vastleggen. De plaatsen waar spelers kunnen uitbreiden zijn eveneens ook de plaatsen waar er zich grondstoffen zoals mineralen bevinden. Om deze in kaart te brengen aan de hand van potentiaalvelden zullen we de mineralen lineaire potentiaalvelden geven en als aggregatieoperator de sommatie gebruiken waardoor het punt met de grootste potentiaal eveneens de plaats is die zich het dichtst bij de mineralen bevindt. Om al deze componenten samen te voegen zullen we de sommatieoperator toepassen wat zal leiden tot een globaal beeld van de meest voordelige plaatsen om te scouten. In Appendix B wordt het model visueel voorgesteld. Hier is (a) het constante veld, (b) de 5.3. USE CASE 3: OPTIMALE EXPANSIEPLAATS BEPALEN 49 eigen eenheden, (c) de vijandelijke eenheden en (d) de mineralen. 5.2.2 Toepassing Om het voordeel van deze use case in de verf te zetten voegen we enkele mineraal velden toe aan het scenario uit use case 1. Een groepje mineralen aan de linkerkant en een groepje onderaan het speelveld. In het resultaat in Figuur 5.3 zien we het potentiaalveld nadat een eenheid een groepje mineralen gescout heeft. De groene vlek op de heatmap geven gebieden aan waar er eenheden aanwezig zijn of recent gescout is (zie het overeenkomstig patroon op de kaart). De twee rode vlekken geven gebieden aan die nuttig zijn om te scouten aangezien deze mineralen bevatten en waar een vijand dus een basis kan hebben. Wanneer een eenheid een mineraalveld scout zoals in (a) te zien is, wordt deze rode vlek weggewerkt. In subfiguur (c) wordt het potentiaalveld getoond nadat de eenheid enkele minuten stilstaat. Dit geeft aan dat dit gebied recent niet gescout is geweest en een kandidaat is om opnieuw bezocht te worden. De strategie die spelers met deze overlay moeten volgen voor een maximum aan informatie te verkrijgen is proberen zoveel mogelijk gebied groen te maken. En meer bepaald om de rode vlekken weg te werken. Dit veld biedt kortom een intu¨ıtieve manier om om te gaan met de problemen die de fog of war met zich meebrengt. 5.3 Use case 3: Optimale expansieplaats bepalen Een derde en laatste use case voor het framework is het bepalen wat de meest opportune plaats is om een nieuwe expansie te bouwen. Aangezien macroeconomie een belangrijke motor voor de opbouw van het leger, is het nodig tijdig een expansie te bouwen om meer grondstoffen te verzamelen en de tegenstander op lange termijn te verslaan door economische dominantie. 50 HOOFDSTUK 5. USE CASES (a) De potentiaalveld overlay bij een groepje soldaten (b) Het opgestelde potentiaalveld (c) Het opgestelde potentiaalveld na afkoeling (d) Het speelveld Figuur 5.3: Use case 2 met het opgestelde model 5.3. USE CASE 3: OPTIMALE EXPANSIEPLAATS BEPALEN 51 Belangrijke eigenschappen voor een goede expansieplek is vooreerst de aanwezigheid van grondstoffen zoals mineralen en gas. Zonder deze aanwezigheid heeft expansie geen nut, deze eigenschap is dus een nodig criterium voor expansie. Hiernaast willen we nog twee extra wenselijke eigenschappen toevoegen. Eerst en vooral hebben we het liefst dat de expansie dicht bij de huidige basis en bij het leger ligt zodat deze beschermd kan worden. Ten tweede bouwen we ook het liefst een expansie die zo ver mogelijk verwijderd ligt van de eenheden van de tegenstander zodat deze expansie zo lang mogelijk onopgemerkt blijft. 5.3.1 Constructie van het model Zoals altijd hanteren we ook bij deze use case een bottom-up strategie om de expressieboom op te bouwen en beginnen we dus bij de bladknopen. Hier hebben we drie grote componenten: eerst en vooral de grondstoffen die we een sterk afnemende lineair potentiaalveld geven aangezien dit een belangijke constraint is. Hiernaast zijn er de eigen eenheden die we een zwak afnemende potentiaal geven zodat we het voordeel van nabije eenheden kunnen kwantificeren. En ten slotte zijn er de vijandelijke eenheden, die net zoals de eigen eenheden, een zwakke lineaire potentiaal hebben, maar waarvoor we een negatieoperator plaatsten zodat deze een omgekeerd effect heeft. Bij de eigen en vijandelijke eenheden gebruiken we een geheugenconstructie om temporele informatie te behouden. Dit betekent dat we ook plaatsen waar vijandelijke troepen recent geweest zijn als minder aantrekkelijk zien. Uiteindelijk aggregeren we de drie componenten door de sommatieoperator wat resultulteert in een potentiaalveld dat de optimale plek om een expansie te bouwen de grootste potentiaal geeft. In Appendix C wordt het opgestelde model voor deze use case getoond met (a) het constante veld, (b) de eigen eenheden, (c) de vijandelijke eenheden en (d) de mineralen. 52 5.3.2 HOOFDSTUK 5. USE CASES Toepassing Aangezien we met een constant basisveld werken zal in dit scenario de kleurcode iets anders liggen. Hier is rood een optimale plaats om uit te breiden terwijl groen een zeer slechte positie is om een expansie te vestigen. De gele kleur wijst op een gemiddelde suitability (die dus weinig be¨ınvloed is). In Figuur 5.4 wordt het resultaat getoond van de toepassing van het opgestelde model op dit scenario. Enkele dingen die meteen duidelijk worden uit de heatmap is dat van de vier groepjes mineraalvelden de twee bovenste het meest geschikt zijn voor expansie. De grote gele vlek bovenaan wordt opgespannen door de eigen soldaten en geven dus een positieve impuls voor expansie. Elk van de groepjes mineraalvelden spant ook een kleiner maar sterker veld op, wat tot 4 lokale maxima leidt. Tot slot kunnen we ook onderaan de heatmap zien dat het negatief geladen veld van de vijandelijke eenheden deels opgehoffen wordt door de mineralen. Door in dit model het globale maximum te zoeken waar er zich nog geen eigen basis bevindt, vinden we meteen de meest optimale plaats om een expansie te vestigen. Het visuele karakter van de overlay maakt het ook intuitief om snel conclusies te trekken. 5.3. USE CASE 3: OPTIMALE EXPANSIEPLAATS BEPALEN (a) De potentiaalveld overlay bij een groepje soldaten (b) Het speelveld (c) Het opgestelde potentiaalveld Figuur 5.4: Use case 3 met het opgestelde model 53 54 HOOFDSTUK 5. USE CASES 55 Hoofdstuk 6 Conclusie In deze thesis heb ik aangetoond dat het door gebruik van expressiebomen samen met potentiaalvelden mogelijk is om een adaptief en modulair framework te bouwen dat complexe aggregaties van potentiaalvelden mogelijk maakt. Deze aanpak laat het makkelijk toe om extra operatoren te defini¨eren naast de set van operatoren die ik reeds besproken heb. Hiernaast kunnen de parameters van de potentiaalvelden ook gewijzigd worden met als doel het opstellen van verschillende types potentiaalvelden. Een belangrijke component van het framework is de geheugenknoop die het temporele aspect incorporeert, wat een must was om complexe analyses te maken in Starcraft. Ten slotte heb ik het ontworpen framework ook toegepast op drie fundamenteel verschillende use cases in Starcraft waaruit blijkt dat het framework inderdaad adaptief en in veel verschillende contexten toegepast kan worden. Deze implementatie in BWAPI liet ook toe om visualisaties toe te voegen die spelers kunnen helpen om intu¨ıtief en real-time beslissingen te maken op basis van de gegenereerde potentiaalvelden. Een grote moeilijkheid ligt echter nog in het vastleggen van de parameters van de potentiaalvelden en aggregatoren. Dit moet momenteel nog empirisch gebeuren en het neemt daardoor veel tijd in beslag om een correct veld op te bouwen. In de use cases hadden meerbepaald drie parameters vaak een doorslaggevende impact tot een correct veld. Eerst 56 HOOFDSTUK 6. CONCLUSIE en vooral de grootte van de ladingen van de aparte eenheden en meerbepaald het relatief schalen van deze groottes. Vervolgens heeft ook de afzwakkingsratio van de potentiaalvelden veel invloed, deze bepaalt hoe ver het potentiaalveld invloed uitoefent. Tot slot is bij het gebruik van de geheugenknoop de afzwakkingsparameter van zeer groot belang. Deze parameter bepaalt hoe lang vooraf vastgelegde potentiaalvelden in het geheugen blijven en dus hoe snel het model vervaagt. 57 Hoofdstuk 7 Toekomstig werk Deze thesis opent vele nieuwe onderzoekspaden waarbij verder gewerkt wordt met het ontworpen framework. De mogelijke toepassingen zijn ook niet beperkt tot louter RTS spellen en kunnen in vele scenario’s toegepast worden waar potentiaalvelden nuttig zijn. Denk bijvoorbeeld aan robotica of het opstellen van geografische modellen. Een eerste mogelijke uitbreiding is het toevoegen van een nieuwe set operatoren. Een specifiek voorbeeld zijn logische operatoren of een mapping op verschillende functies. Deze techniek zou het toelaten om net zoals bij de LSP methode bepaalde vormen van gewenstheid van bepaalde potentiaalvelden aan te geven na mapping op elementaire criteriumfuncties. Een tweede mogelijke uitbreiding op dit framework is het toepassen van een genetische heuristiek om een structuur op te bouwen aan de hand van het framework, gegeven enkele basis potentiaalvelden en het gewilde resulterende potentiaalveld. Hierdoor kan het vaak omslachtige proces van het opstellen van een expressieboom zoals we gedaan hebben in de drie use cases geautomatiseerd worden. Tot slot kan er ook onderzocht worden hoe we een slimmere cache kunnen bouwen voor dit framework die rekening houdt met de spatiale verplaatsingen zodat er herberekeningen uitgespaard worden wat uiteindelijk tot een betere performantie leidt. 58 BIJLAGE A. 59 Bijlage A 60 BIJLAGE B. Geheugenbladknoop Constante cknoop ccccc1 Maximumcoperator Minimumcoperator ... Constantecknoop cccccn (b) Maxcoperator Negatiecoperator Geheugencoperator Verzwakkingscoperator Constantecknoop 1 Constantecknoop (a) Ladingscknoop ccccc1 Geheugenbladknoop Ladingscknoop ccccc1 Maximumcoperator Geheugencoperator Verzwakkingscoperator Constantecknoop 1 Sommatiecoperator ... ... Ladingscknoop cccccn (c) Ladingscknoop cccccn (d) 61 Bijlage B 62 BIJLAGE C. Geheugenbladknoop ... (b) Ladingscknoop cccccn Sommatiecoperator Ladingscknoop ccccc1 Maximumcoperator Geheugencoperator Verzwakkingscoperator Constantecknoop (a) Sommatiecoperator Geheugenbladknoop Verzwakkingscoperator Ladingscknoop ccccc1 Maximumcoperator Geheugencoperator Negatiecoperator Ladingscknoop ccccc1 ... ... Ladingscknoop cccccn (c) Ladingscknoop cccccn Sommatiecoperator (d) 63 Bijlage C BIBLIOGRAFIE 65 Bibliografie [1] A. Howard, M. J. Mataric, and G. S. Sukhatme. Mobile sensor network deployment using potential fields: A distributed, scalable solution to the Area Coverage Problem. In Distributed Autonomous Robotic Systems, 2002, 2002. [2] C.W. Warren. Global path planning using artificial potential fields. In Robotics and Automation, 1989. Proceedings., 1989 IEEE International Conference on, pages 316– 321 vol.1, May 1989. [3] P.E. Hart, N.J. Nilsson, and B. Raphael. A formal basis for the heuristic determination of minimum cost paths. Systems Science and Cybernetics, IEEE Transactions on, 4(2):100–107, July 1968. [4] TW Sanberg. Evolutionary multi-agent potential field based ai approach for ssc scenarios in rts games. Master’s thesis, University of Copenhagen. [5] E. A. Rathe and J. B. Svendsen. Micromanagement in starcraft using potential fields tuned with a multi- objective genetic algorithm, 2012. [6] S. Ontanon, G. Synnaeve, A. Uriarte, F. Richoux, D. Churchill, and M. Preuss. A survey of real-time strategy game ai research and competition in starcraft. Computational Intelligence and AI in Games, IEEE Transactions on, 5(4):293–311, Dec 2013. [7] J. Hagelb¨ack and S. J. Johansson. A multiagent potential field-based bot for real-time strategy games. Int. J. Comput. Games Technol., 2009:4:1–4:10, January 2009. 66 BIBLIOGRAFIE [8] A. Uriarte and S. Onta˜ no´n. Kiting in rts games using influence maps, 2012. [9] R. F. Cohen and R. Tamassia. Dynamic expression trees and their applications. In Proceedings of the Second Annual ACM-SIAM Symposium on Discrete Algorithms, SODA ’91, pages 52–61, Philadelphia, PA, USA, 1991. Society for Industrial and Applied Mathematics. [10] B. Stroustrup. The C++ Programming Language. Addison-Wesley Longman Publishing Co., Inc., Boston, MA, USA, 3rd edition, 2000. [11] Johann Eder, Gerti Kappel, and Michael Schrefl. Coupling and cohesion in objectoriented systems, 1992. [12] R. Cole and U. Vishkin. Vlsi algorithms and architectures. chapter Optimal Parallel Algorithms for Expression Tree Evaluation and List Ranking, pages 91–99. SpringerVerlag, London, UK, UK, 1988. [13] R. Cole and U. Vishkin. The accelerated centroid decomposition technique for optimal parallel tree evaluation in logarithmic time. Algorithmica, 3(1-4):329–346, 1988. [14] D. Michie. ”Memo”Functions and Machine Learning. Nature, 218(5136):19–22, April 1968. [15] D. Versteele. Multi-agent potential field aggregation by behavior trees. Master’s thesis, University of Ghent. LIJST VAN FIGUREN 67 Lijst van figuren 1.1 De evolutie van de RTS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 2.1 Een voorbeeld van een artificieel potentiaalveld . . . . . . . . . . . . . . . 11 2.2 Depth first traversal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 3.1 Een voorbeeld van Starcraft: Brood War. . . . . . . . . . . . . . . . . . . . 19 3.2 Een voorbeeld van BWAPI in actie. Door visuele toevoegingen zoals gekleurde vormen en tekst kan BWAPI op een intu¨ıtieve manier informatie overbrengen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 4.1 De expressie in boomvoorstelling. . . . . . . . . . . . . . . . . . . . . . . . 27 4.2 Een voorbeeld van de negatie operator met links een negatief veld en rechts een positief veld. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 4.3 Illustratie van de begrenzingsoperator toegepast op hetzelfde veld . . . . . 32 4.4 Illustratie van de drempeloperator toegepast op hetzelfde veld . . . . . . . 33 4.5 Illustratie van de minimumoperator als bovengrens . . . . . . . . . . . . . 36 4.6 De structuur van een voorbeeld van de geheugenknoop . . . . . . . . . . . 38 4.7 De memoryknoop in Starcraft toegepast . . . . . . . . . . . . . . . . . . . 40 68 LIJST VAN FIGUREN 4.8 Een voorbeeld van een operator compositie die de potentiaal begrenst binnen het [0,1] interval. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 5.1 Het model voor use case 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 5.2 Use case 1 met het opgestelde model . . . . . . . . . . . . . . . . . . . . . 47 5.3 Use case 2 met het opgestelde model . . . . . . . . . . . . . . . . . . . . . 50 5.4 Use case 3 met het opgestelde model . . . . . . . . . . . . . . . . . . . . . 53 LIJST VAN TABELLEN 69 Lijst van tabellen 3.1 Vergelijking van de rassen in Starcraft . . . . . . . . . . . . . . . . . . . . 18
© Copyright 2024 ExpyDoc