\relax \select@language{english} \@writefile{toc}{\select@language{english}} \@writefile{lof}{\select@language{english}} \@writefile{lot}{\select@language{english}} \@writefile{toc}{\contentsline {chapter}{\numberline {1}PySoldier - A Realtime 2D Shooter}{4}} \@writefile{lof}{\addvspace {10\p@ }} \@writefile{lot}{\addvspace {10\p@ }} \@writefile{toc}{\contentsline {section}{\numberline {1.1}What is PySoldier?}{4}} \@writefile{toc}{\contentsline {section}{\numberline {1.2}Rules}{4}} \@writefile{lof}{\contentsline {figure}{\numberline {1.1}{\ignorespaces Screen shot of PySoldier. One player is firing into the air while a grenade explodes. Note that the background colour has been changed to white from black to ease printing.}}{5}} \newlabel{fig:screen}{{1.1}{5}} \@writefile{toc}{\contentsline {section}{\numberline {1.3}Primary evaluation}{6}} \@writefile{toc}{\contentsline {section}{\numberline {1.4}Overview of PySoldier}{6}} \newlabel{sec:overview}{{1.4}{6}} \@writefile{toc}{\contentsline {chapter}{\numberline {2}Architecture and Design}{8}} \@writefile{lof}{\addvspace {10\p@ }} \@writefile{lot}{\addvspace {10\p@ }} \newlabel{cha:arch}{{2}{8}} \@writefile{toc}{\contentsline {section}{\numberline {2.1}Overall architecture}{8}} \@writefile{toc}{\contentsline {subsection}{\numberline {2.1.1}Initialization}{8}} \@writefile{toc}{\contentsline {subsection}{\numberline {2.1.2}Player management}{8}} \@writefile{lof}{\contentsline {figure}{\numberline {2.1}{\ignorespaces This schematic shows the overall structure of PySoldier. All modules are listed except certain trivial classes e.g. containing sprite data. The PySoldier structure attempts to delegate as much functionality as possible to different modules in order to keep different parts of the game mechanics separate.}}{9}} \newlabel{fig:uml}{{2.1}{9}} \@writefile{toc}{\contentsline {subsection}{\numberline {2.1.3}Main loop}{9}} \@writefile{toc}{\contentsline {section}{\numberline {2.2}Physical simulation}{9}} \newlabel{sec:sim}{{2.2}{9}} \citation{gamedev} \@writefile{toc}{\contentsline {subsection}{\numberline {2.2.1}Collision detection}{10}} \@writefile{toc}{\contentsline {subsection}{\numberline {2.2.2}Collision handling}{10}} \@writefile{toc}{\contentsline {subsection}{\numberline {2.2.3}Newtonian movement - sprite dynamics}{10}} \@writefile{toc}{\contentsline {subsection}{\numberline {2.2.4}More on sprites}{11}} \@writefile{toc}{\contentsline {subsection}{\numberline {2.2.5}Firing}{12}} \@writefile{toc}{\contentsline {section}{\numberline {2.3}Map and level building}{12}} \newlabel{sec:map}{{2.3}{12}} \@writefile{toc}{\contentsline {subsection}{\numberline {2.3.1}Introduction}{12}} \@writefile{toc}{\contentsline {subsection}{\numberline {2.3.2}Level problems}{13}} \@writefile{toc}{\contentsline {section}{\numberline {2.4}Interface}{13}} \@writefile{toc}{\contentsline {subsection}{\numberline {2.4.1}In-game graphics}{13}} \newlabel{sec:graphics}{{2.4.1}{13}} \@writefile{toc}{\contentsline {subsection}{\numberline {2.4.2}Peripherals - mouse and key input}{13}} \newlabel{sec:peripherals}{{2.4.2}{13}} \@writefile{toc}{\contentsline {section}{\numberline {2.5}Network architecture}{14}} \newlabel{sec:network}{{2.5}{14}} \@writefile{toc}{\contentsline {subsection}{\numberline {2.5.1}Client/Server model}{14}} \@writefile{toc}{\contentsline {subsection}{\numberline {2.5.2}Approaches to client-side interpolation}{14}} \@writefile{toc}{\contentsline {subsection}{\numberline {2.5.3}Client limitation}{15}} \@writefile{toc}{\contentsline {subsection}{\numberline {2.5.4}Game protocol}{15}} \newlabel{sec:protocol}{{2.5.4}{15}} \@writefile{toc}{\contentsline {subsection}{\numberline {2.5.5}Consistency}{16}} \@writefile{toc}{\contentsline {subsection}{\numberline {2.5.6}Conclusion}{16}} \@writefile{toc}{\contentsline {chapter}{\numberline {3}Implementation}{17}} \@writefile{lof}{\addvspace {10\p@ }} \@writefile{lot}{\addvspace {10\p@ }} \newlabel{cha:impl}{{3}{17}} \@writefile{toc}{\contentsline {section}{\numberline {3.1}Implementation of physical simulation}{17}} \newlabel{sec:simImpl}{{3.1}{17}} \@writefile{toc}{\contentsline {subsection}{\numberline {3.1.1}Movement}{17}} \@writefile{toc}{\contentsline {subsection}{\numberline {3.1.2}Collision handling}{18}} \@writefile{toc}{\contentsline {subsection}{\numberline {3.1.3}Implementation problems of sloped curves}{18}} \@writefile{toc}{\contentsline {section}{\numberline {3.2}Level implementation}{18}} \@writefile{toc}{\contentsline {section}{\numberline {3.3}Network implementation}{20}} \@writefile{toc}{\contentsline {subsection}{\numberline {3.3.1}The \texttt {\unhbox \voidb@x \hbox {Client}} class}{20}} \@writefile{toc}{\contentsline {subsection}{\numberline {3.3.2}The \texttt {\unhbox \voidb@x \hbox {Server}} class}{20}} \@writefile{lof}{\contentsline {figure}{\numberline {3.1}{\ignorespaces The PySoldier menu. The option selected by the user in this menu determines the mode in which the game will run.}}{21}} \newlabel{fig:menu}{{3.1}{21}} \@writefile{toc}{\contentsline {section}{\numberline {3.4}User interface}{21}} \newlabel{sec:interface}{{3.4}{21}} \@writefile{toc}{\contentsline {section}{\numberline {3.5}Additional game content: sound}{22}} \@writefile{toc}{\contentsline {chapter}{\numberline {4}Testing and gameplay experience}{23}} \@writefile{lof}{\addvspace {10\p@ }} \@writefile{lot}{\addvspace {10\p@ }} \newlabel{cha:test}{{4}{23}} \@writefile{toc}{\contentsline {section}{\numberline {4.1}Testing}{23}} \@writefile{toc}{\contentsline {section}{\numberline {4.2}Gameplay experience}{24}} \@writefile{toc}{\contentsline {section}{\numberline {4.3}Further development}{24}} \@writefile{toc}{\contentsline {chapter}{\numberline {5}Conclusion}{25}} \@writefile{lof}{\addvspace {10\p@ }} \@writefile{lot}{\addvspace {10\p@ }} \newlabel{cha:conclusion}{{5}{25}} \@writefile{toc}{\contentsline {section}{References}{25}} \bibcite{gamedev}{1}