\relax \select@language{english} \@writefile{toc}{\select@language{english}} \@writefile{lof}{\select@language{english}} \@writefile{lot}{\select@language{english}} \@writefile{toc}{\contentsline {chapter}{Abstract}{i}} \@writefile{toc}{\contentsline {chapter}{Preface}{1}} \@writefile{toc}{\contentsline {chapter}{\numberline {1}Introduction}{2}} \@writefile{lof}{\addvspace {10\p@ }} \@writefile{lot}{\addvspace {10\p@ }} \@writefile{toc}{\contentsline {section}{\numberline {1.1}Introduction to the genre}{2}} \@writefile{toc}{\contentsline {subsection}{\numberline {1.1.1}Background}{2}} \@writefile{toc}{\contentsline {subsection}{\numberline {1.1.2}RTS combat and control}{4}} \@writefile{lof}{\contentsline {figure}{\numberline {1.1}{\ignorespaces Screenshot from Starcraft. The voracious Zerg swarm is overrunning a Terran settlement.}}{5}} \newlabel{starcraft}{{1.1}{5}} \@writefile{toc}{\contentsline {section}{\numberline {1.2}Why \textsc {JWars}\texttrademark {}?}{6}} \@writefile{toc}{\contentsline {subsection}{\numberline {1.2.1}Flaws in contemporary real-time games}{6}} \@writefile{toc}{\contentsline {subsection}{\numberline {1.2.2}Military hierarchy}{6}} \@writefile{toc}{\contentsline {section}{\numberline {1.3}Report overview}{7}} \@writefile{toc}{\contentsline {chapter}{\numberline {2}Features of \textsc {JWars}\texttrademark {}}{8}} \@writefile{lof}{\addvspace {10\p@ }} \@writefile{lot}{\addvspace {10\p@ }} \@writefile{toc}{\contentsline {section}{\numberline {2.1}Game dynamics}{8}} \@writefile{toc}{\contentsline {section}{\numberline {2.2}Technical features}{8}} \@writefile{toc}{\contentsline {chapter}{\numberline {3}Overview}{10}} \@writefile{lof}{\addvspace {10\p@ }} \@writefile{lot}{\addvspace {10\p@ }} \@writefile{toc}{\contentsline {section}{\numberline {3.1}Development plan}{10}} \@writefile{toc}{\contentsline {section}{\numberline {3.2}Modular overview}{10}} \@writefile{toc}{\contentsline {chapter}{\numberline {4}Architecture}{11}} \@writefile{lof}{\addvspace {10\p@ }} \@writefile{lot}{\addvspace {10\p@ }} \@writefile{toc}{\contentsline {section}{\numberline {4.1}Connection and initialization}{11}} \@writefile{toc}{\contentsline {section}{\numberline {4.2}Flow of control}{12}} \@writefile{toc}{\contentsline {section}{\numberline {4.3}Various deterministic activities}{13}} \@writefile{toc}{\contentsline {section}{\numberline {4.4}Player input and network instructions}{14}} \@writefile{toc}{\contentsline {chapter}{\numberline {5}Networking}{15}} \@writefile{lof}{\addvspace {10\p@ }} \@writefile{lot}{\addvspace {10\p@ }} \@writefile{toc}{\contentsline {section}{\numberline {5.1}Choosing a network model}{15}} \@writefile{toc}{\contentsline {section}{\numberline {5.2}Synchronization}{16}} \@writefile{toc}{\contentsline {subsection}{\numberline {5.2.1}Interactivity: network instructions}{16}} \newlabel{networkinstructions}{{5.2.1}{16}} \@writefile{toc}{\contentsline {subsection}{\numberline {5.2.2}Synchronization instructions}{17}} \@writefile{toc}{\contentsline {subsection}{\numberline {5.2.3}Conclusion}{17}} \@writefile{toc}{\contentsline {section}{\numberline {5.3}The networking API}{18}} \@writefile{toc}{\contentsline {subsection}{\numberline {5.3.1}Implementation notes}{19}} \@writefile{toc}{\contentsline {chapter}{\numberline {6}World of JWars}{20}} \@writefile{lof}{\addvspace {10\p@ }} \@writefile{lot}{\addvspace {10\p@ }} \@writefile{toc}{\contentsline {section}{\numberline {6.1}Coordinate spaces}{20}} \@writefile{toc}{\contentsline {subsection}{\numberline {6.1.1}Coordinate data representation}{20}} \citation{pybook} \@writefile{toc}{\contentsline {subsection}{\numberline {6.1.2}List of coordinate systems}{21}} \citation{dota} \@writefile{toc}{\contentsline {subsection}{\numberline {6.1.3}Using coordinate systems}{22}} \@writefile{toc}{\contentsline {section}{\numberline {6.2}Game data management}{22}} \@writefile{toc}{\contentsline {subsection}{\numberline {6.2.1}Inheritance versus data-based game object classification}{22}} \citation{pybook} \@writefile{toc}{\contentsline {subsection}{\numberline {6.2.2}Category model}{23}} \@writefile{toc}{\contentsline {subsection}{\numberline {6.2.3}Content loading by categories}{23}} \@writefile{lot}{\contentsline {table}{\numberline {6.1}{\ignorespaces The datafile entry defining the weapon category corresponding to a German 75mm Kampfwagenkanone (tank gun). The right column contains the actual lines in the datafile, while the left column is only for description. The firepower data comprises ammo type (armour piercing), armour penetration (in millimetres) and ``kill index'' (effectiveness against infantry).}}{24}} \newlabel{weaponformattabular}{{6.1}{24}} \@writefile{toc}{\contentsline {subsection}{\numberline {6.2.4}Current game content}{24}} \@writefile{toc}{\contentsline {section}{\numberline {6.3}Terrain}{24}} \@writefile{lot}{\contentsline {table}{\numberline {6.2}{\ignorespaces Datafile entry defining the German Panzer IV tank. The entries in the weapon list are identifiers of weapons. Notice the identifier of the tank gun from Table \ref {weaponformattabular}. The other guns and the hull and turret types are also identifiers of categories.}}{25}} \newlabel{tankformattabular}{{6.2}{25}} \@writefile{toc}{\contentsline {subsection}{\numberline {6.3.1}Representation and capabilities}{25}} \@writefile{toc}{\contentsline {subsection}{\numberline {6.3.2}Terrain generator}{25}} \@writefile{toc}{\contentsline {subsection}{\numberline {6.3.3}Appearance}{25}} \@writefile{toc}{\contentsline {section}{\numberline {6.4}Event handling}{25}} \@writefile{toc}{\contentsline {subsection}{\numberline {6.4.1}Types of events}{26}} \@writefile{toc}{\contentsline {subsection}{\numberline {6.4.2}Performance considerations}{26}} \@writefile{toc}{\contentsline {subsection}{\numberline {6.4.3}Queueing system}{26}} \@writefile{toc}{\contentsline {section}{\numberline {6.5}Vision}{27}} \@writefile{toc}{\contentsline {subsection}{\numberline {6.5.1}Vision in games}{27}} \@writefile{toc}{\contentsline {subsection}{\numberline {6.5.2}Performance discussion}{28}} \@writefile{toc}{\contentsline {subsection}{\numberline {6.5.3}Final design}{28}} \@writefile{toc}{\contentsline {chapter}{\numberline {7}Collision detection}{29}} \@writefile{lof}{\addvspace {10\p@ }} \@writefile{lot}{\addvspace {10\p@ }} \@writefile{toc}{\contentsline {section}{\numberline {7.1}Basics of collision detection}{29}} \@writefile{toc}{\contentsline {subsection}{\numberline {7.1.1}Divide and conquer approach}{29}} \citation{algo} \@writefile{toc}{\contentsline {subsection}{\numberline {7.1.2}Tile registration strategy}{30}} \@writefile{toc}{\contentsline {subsection}{\numberline {7.1.3}Shapes and sizes of colliding entities}{31}} \@writefile{toc}{\contentsline {section}{\numberline {7.2}Design of the collision detector}{31}} \@writefile{toc}{\contentsline {subsection}{\numberline {7.2.1}The checking routine}{31}} \@writefile{toc}{\contentsline {subsection}{\numberline {7.2.2}The collision grid}{32}} \@writefile{toc}{\contentsline {subsection}{\numberline {7.2.3}Further features}{32}} \@writefile{toc}{\contentsline {subsection}{\numberline {7.2.4}Efficiency and optimization}{33}} \@writefile{toc}{\contentsline {subsection}{\numberline {7.2.5}Using the collision detector}{34}} \@writefile{toc}{\contentsline {section}{\numberline {7.3}Conclusion}{34}} \@writefile{toc}{\contentsline {section}{\numberline {7.4}Pathfinding}{35}} \@writefile{toc}{\contentsline {subsection}{\numberline {7.4.1}Implementation}{36}} \@writefile{lof}{\contentsline {figure}{\numberline {7.1}{\ignorespaces test}}{40}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(a)}{\ignorespaces {test1}}}{40}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(b)}{\ignorespaces {test2}}}{40}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(c)}{\ignorespaces {test3}}}{40}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(d)}{\ignorespaces {test4}}}{40}} \@writefile{lof}{\contentsline {figure}{\numberline {7.2}{\ignorespaces blahblah}}{41}} \newlabel{pathfinderfejl}{{7.2}{41}} \citation{wiki_military_organization} \@writefile{toc}{\contentsline {chapter}{\numberline {8}Unit organization}{43}} \@writefile{lof}{\addvspace {10\p@ }} \@writefile{lot}{\addvspace {10\p@ }} \@writefile{toc}{\contentsline {section}{\numberline {8.1}Real-world military organization}{43}} \@writefile{toc}{\contentsline {section}{\numberline {8.2}Military command in computer games}{44}} \@writefile{lof}{\contentsline {figure}{\numberline {8.1}{\ignorespaces Example of a unit tree. Only the nodes with downward pointing arrowheads are expanded. This is part of a screenshot from \textsc {JWars}\texttrademark {}.}}{45}} \newlabel{exampleunittree}{{8.1}{45}} \@writefile{toc}{\contentsline {section}{\numberline {8.3}Tree-based unit representation}{45}} \@writefile{lof}{\contentsline {figure}{\numberline {8.2}{\ignorespaces Types of units. The boxes with rounded corners indicate concrete examples of the particular unit type.}}{46}} \@writefile{toc}{\contentsline {chapter}{\numberline {9}Unit AI}{47}} \@writefile{lof}{\addvspace {10\p@ }} \@writefile{lot}{\addvspace {10\p@ }} \@writefile{toc}{\contentsline {section}{\numberline {9.1}Hierarchical structure}{47}} \@writefile{toc}{\contentsline {section}{\numberline {9.2}Design considerations}{49}} \@writefile{toc}{\contentsline {section}{\numberline {9.3}AI layering structure}{49}} \@writefile{toc}{\contentsline {section}{\numberline {9.4}Future AI work}{50}} \citation{stalingrad} \@writefile{toc}{\contentsline {chapter}{\numberline {10}Combat}{51}} \@writefile{lof}{\addvspace {10\p@ }} \@writefile{lot}{\addvspace {10\p@ }} \@writefile{toc}{\contentsline {section}{\numberline {10.1}Analysis of combat dynamics}{51}} \citation{taschenbuch} \citation{spwaw} \citation{spwaw} \@writefile{toc}{\contentsline {subsection}{\numberline {10.1.1}Combat rule set}{52}} \citation{shapedcharge} \citation{ERAsource} \@writefile{toc}{\contentsline {subsection}{\numberline {10.1.2}``Weapon vs. armour'', or ``armour vs. weapon''?}{53}} \citation{wikiT34} \citation{wikiT34} \@writefile{lof}{\contentsline {figure}{\numberline {10.1}{\ignorespaces Soviet T-34 tank with wire mesh for protection against the Panzerfaust anti-tank weapon.\cite {wikiT34}}}{54}} \newlabel{wiremesh}{{10.1}{54}} \@writefile{toc}{\contentsline {subsection}{\numberline {10.1.3}Structure of the weapons API}{54}} \@writefile{toc}{\contentsline {subsection}{\numberline {10.1.4}Firing routine}{55}} \@writefile{toc}{\contentsline {subsection}{\numberline {10.1.5}Impact handling by armour}{55}} \@writefile{toc}{\contentsline {section}{\numberline {10.2}Spotting and targetting}{55}} \@writefile{toc}{\contentsline {chapter}{\numberline {11}Control}{56}} \@writefile{lof}{\addvspace {10\p@ }} \@writefile{lot}{\addvspace {10\p@ }} \citation{jogl} \citation{java3d} \citation{java3d} \citation{lwjgl} \@writefile{toc}{\contentsline {chapter}{\numberline {12}Graphics}{57}} \@writefile{lof}{\addvspace {10\p@ }} \@writefile{lot}{\addvspace {10\p@ }} \@writefile{toc}{\contentsline {section}{\numberline {12.1}Active versus passive rendering}{57}} \@writefile{toc}{\contentsline {section}{\numberline {12.2}Double buffering}{58}} \newlabel{doublebuffer}{{12.2}{58}} \@writefile{toc}{\contentsline {section}{\numberline {12.3}Battlefield rendering and layers}{59}} \@writefile{toc}{\contentsline {section}{\numberline {12.4}Optimization of the rendering routine}{60}} \newlabel{terraindirtificationsection}{{12.4}{60}} \@writefile{toc}{\contentsline {section}{\numberline {12.5}Conclusion}{61}} \@writefile{toc}{\contentsline {chapter}{\numberline {13}Conclusion}{62}} \@writefile{lof}{\addvspace {10\p@ }} \@writefile{lot}{\addvspace {10\p@ }} \bibcite{pygame}{1} \bibcite{algo}{2} \@writefile{toc}{\contentsline {section}{References}{63}}