Compare commits

...

3 Commits
1.0 ... master

Author SHA1 Message Date
Clemens Klug 68af833961 final rc 2018-08-06 10:20:27 +02:00
Clemens Klug d150f74d79 p3: contents ready 2018-07-26 16:34:43 +02:00
Clemens Klug 7995172970 merge both previous presentations 2018-07-24 21:25:45 +02:00
7 changed files with 137 additions and 117 deletions

View File

@ -2,10 +2,10 @@
%Necessary Information %Necessary Information
\author{Clemens Klug} \author{Clemens Klug}
\title{A Framework for the Analysis of Spatial Game Data} \title{A Framework for the Analysis of Spatial Game Data}
\subtitle{Ein Analyseframework f\"ur raumbezogene Spieldaten\\2. Vortrag} \subtitle{Ein Analyseframework f\"ur raumbezogene Spieldaten\\3. Vortrag}
%The day of the presentation %The day of the presentation
%\date{\today} %\date{\today}
\date{May 24, 2018} \date{7. August 2018}
%Optional Information %Optional Information
\subject{A Framework for the Analysis of Spatial Game Data} \subject{A Framework for the Analysis of Spatial Game Data}

BIN
PresTeX/images/demo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

BIN
PresTeX/images/eval.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 133 KiB

BIN
PresTeX/images/oeb-raw.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

View File

@ -100,78 +100,98 @@ compress
%%%%%%%%%% Content starts here %%%%%%%%%% %%%%%%%%%% Content starts here %%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{Solution approach} \section{A Framework for the Analysis of Spatial Game Data}
\frame \begin{frame}{A Framework for the Analysis of Spatial Game Data}
{ \framesubtitle{Goal definition}
\tableofcontents[sectionstyle=show/hide,hideothersubsections] \begin{columns}
} \column{0.49\linewidth}
\subsection{Requirements} Geogames: Intersection of GIS and gaming technology\footnotemark
\begin{frame}{Requirements} \begin{itemize}
\framesubtitle{Wait, what did I want to do again?} \item Game actions tied to real-world spatial places ('Break the magic circle')
\item Locomotion as essential game part
\item Trade-offs between board and race style games\footnotemark
\item Foster recognition of environment
\item Focus through game related tasks
\end{itemize}
\column{.49\linewidth}
Scope of the analysis framework
\begin{itemize}
\item Framework for analysis
\item Two target groups:
\begin{itemize}
\item Expert users/researchers
\item Staging/designing staff
\end{itemize}
\item Integration of external data (questionnaire results)
\item Adaptable for multiple games
\end{itemize}
\end{columns}
\addtocounter{footnote}{-1}
\footcitetext{Ahlqvist2018}\stepcounter{footnote}
\footcitetext{1705427}
\end{frame}
\begin{frame}{Framework components}
Prerequisites: Game log
\begin{itemize}
\item Creation
\item Storage
\end{itemize}
New components
\begin{itemize} \begin{itemize}
\item Per-game importer (Web client, File loader, …) \item Per-game importer (Web client, File loader, …)
\item Analyzer modules (number crunching) \item Analyzer modules (number crunching)
\item Output \& Visualization (CSV, [Geo]JSON, KML, Graphs, …) \item Output \& Visualization (CSV, [Geo]JSON, KML, Graphs, …)
\item Interface (Configuration) \item Interface (Configuration)
\begin{itemize}
\item Expert users/researchers
\item Staging/designing staff
\end{itemize}
\item Cross-game comparisons \item Cross-game comparisons
\item Integration of external data (questionnaire results)
\end{itemize} \end{itemize}
\end{frame} \end{frame}
\subsection{Architecture} \section{Modular map-reduce architecture}
%\begin{frame}{Experiment: Kibana}
%\image{.85\textwidth}{kibana}{Game trace in Kibana}{img:kibana}
%\end{frame}
\begin{frame}{Experiment: Kibana}
\image{.85\textwidth}{kibana2}{Game trace in Kibana}{img:kibana2}
\end{frame}
\begin{frame}{Experiment: Grafana}\hspace{.3\textwidth}a\\[-24pt]
\image{.85\textwidth}{grafana}{Side project: Weather station with Grafana}{img:grafana}
\end{frame}
\begin{frame}{Architecture scheme} \begin{frame}{Architecture}
Log processing turn-key solutions
\begin{itemize}
\item Fast update cycles
\item Low spatial resolution
\item Query languages as entry barrier
\end{itemize}
Custom stack solution
\begin{itemize}
\item Based on map-reduce
\item Map: Analysis
\begin{itemize}
\item Iterate Log entries
\item Feed log entry through analyzer queue
\begin{itemize}
\item Augment entries
\item Filter entries
\item Sequential order
\end{itemize}
\end{itemize}
\item Reduce: Collect summaries from analyzers
\begin{itemize}
\item Rendering
\item Post-processing, Comparison, …
\end{itemize}
\end{itemize}
\end{frame}
\begin{frame}{Log processing scheme}
\image{\textwidth}{../../ThesTeX/images/map-reduce.pdf}{Data flows}{img:flow} \image{\textwidth}{../../ThesTeX/images/map-reduce.pdf}{Data flows}{img:flow}
\end{frame} \end{frame}
\section{Implementation} %%%%%%%%%%%%%%%%%55
% PRESENTATION 2
%%%%%%%%%%%%%%%%%%%%
\subsection{Technologies}
\begin{frame}{Implementation}
\begin{columns}
\column{0.55\linewidth}
Analysis
\begin{itemize}
\item Python (3.6)
\item Standalone library/CLI tool
\item Web based configuration/Runner/API (Flask, Celery)
\end{itemize}
Rendering
\begin{itemize}
\item Matplotlib, Numpy
\begin{itemize}
\item Graphs
\end{itemize}
\item Javascript
\begin{itemize}
\item Leaflet
\item Web visualization: Maps, Tracks, …
\end{itemize}
\end{itemize}
\pic{.5\textwidth}{matplotlib}
\column{0.4\linewidth}
\pic{.5\textwidth}{python}
\pic{.4\textwidth}{flask}
\pic{.4\textwidth}{leaflet}
\end{columns}
\end{frame}
\subsection{Microservice Composition} \section{Microservice oriented implementation}
\subsection{Service Composition}
\begin{frame}{Microservice Composition} \begin{frame}{Microservice Composition}
\framesubtitle{Docker everything!} \framesubtitle{Dockerize everything!}
\begin{columns} \begin{columns}
\column{0.45\linewidth} \column{0.45\linewidth}
\begin{itemize} \begin{itemize}
@ -187,36 +207,31 @@ compress
\end{columns} \end{columns}
\end{frame} \end{frame}
\subsection{Classes} \subsection{Results}
\begin{frame}{Analysis} \begin{frame}{ActivityMapper}
\twofigures{0.5}{code/analyzer}{Analyzer interface}{code:anif}{code/mask-spatials}{Sample analyzer}{code:mask}{Analyzer stub and implementation}{fig:pyan} \image{.7\textwidth}{track-fi}{Combined screen activity and spatial progress}{img:trackfi}
\end{frame}
\begin{frame}{Track length evaluation}
\begin{columns}
\column{0.49\linewidth}
\image{\textwidth}{oeb-raw}{Raw track lengths}{img:oeb-raw}
\column{0.49\linewidth}
\image{\textwidth}{oeb-simplified}{Simplified track lengths}{img:oeb-simpe}
\end{columns}
\end{frame} \end{frame}
\begin{frame}{Result} \section{Evaluation}
\image{\textwidth}{code/result}{Result class}{code:result} \subsection{Setup}
\end{frame}
\begin{frame}{Render}
\twofigures{0.5}{code/render}{Render interface}{code:reif}{code/render-board}{Sample render}{code:rebo}{Render stub and implementation}{fig:pyre}
\end{frame}
\subsection{Configuration}
\begin{frame}{Configuration \& result}
\twofigures{0.5}{oeb-kml}{Analyzer configuration}{img:oebkml}{oeb-ge}{Result visualized}{img:oebge}{Example: Generate KML tracks (BioDiv2Go; Oberelsbach2016)}{fig:oeb2016}
\end{frame}
\section{Outlook: Evaluation}
%TODO
\begin{frame}{Evaluation} \begin{frame}{Evaluation}
\begin{itemize} %\begin{itemize}
\item Analyse other geogames % \item Analyse other geogames
\item Describe effort % \item Describe effort
\item ? % \item ?
\item Profit % \item Profit
\end{itemize} %\end{itemize}
\image{\textwidth}{eval}{Evaluation setup}{img:evalplan}
\end{frame} \end{frame}
\begin{frame}{Evaluation} \begin{frame}{Evaluation}
@ -227,7 +242,7 @@ Geogame & Log files & Notes \\
BioDiv2Go & $\approx430$ & SQLite database with JSON log entries, references to game config; import base case\\ BioDiv2Go & $\approx430$ & SQLite database with JSON log entries, references to game config; import base case\\
GeoTicTacToe & $\approx13$ & CSV with pipes; no temporal data; events + tracks\\ GeoTicTacToe & $\approx13$ & CSV with pipes; no temporal data; events + tracks\\
\caption{Geogame client log data} \caption{Geogame client log data}
\label{tab:logs} \label{tab:logscli}
\end{longtable} \end{longtable}
Servers Servers
@ -240,10 +255,47 @@ Neocartographer & $\approx400$ & Partly broken GPX: missing description informat
MissingLink & $\approx6$ & Partly broken GPX: missing spatial information; one GPX file per player\\ MissingLink & $\approx6$ & Partly broken GPX: missing spatial information; one GPX file per player\\
Equilibrium & $\approx40$ & GPX with missing end tag\\ Equilibrium & $\approx40$ & GPX with missing end tag\\
\caption{Geogame servers log data} \caption{Geogame servers log data}
\label{tab:logs} \label{tab:logssrv}
\end{longtable} \end{longtable}
\end{frame} \end{frame}
\subsection{Results}
\begin{frame}{Integration of Neocartographer}
Challenges
\begin{itemize}
\item Corrupted XML files
\item No game server with API for log retrieval
\end{itemize}
\begin{longtable}[H]{rl}
Geogame & Log files \\
\hline
missing attribute space & <desc><event message="leaveObject"geoid="9"/></desc>\\
unclosed tag & <desc><event </desc>\\
missing attribute name & <trkpt lat="48.3689110.897709">\\
invalid attribute values & <trkpt lat="UNKNOWN" lon="UNKNOWN">\\
\caption{Neocartographer GPX log error types}
\label{tab:xml}
\end{longtable}
Solutions
\begin{itemize}
\item Recovery parser \& custom cleanup (new dependency: lxml)
\item Additional log server (Nginx with JSON autoindex)
\end{itemize}
\end{frame}
\begin{frame}{Evaluation results}
\image{\textwidth}{eval-changes}{Code changes necessary for the integration of another game}{img:eval}
\end{frame}
\section{Demotime}
\begin{frame}{It's time for...}
\huge{...a demo!}
\vspace{2cm}
\pic{.9\textwidth}{demo}
\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%% References %%%%%%%%%% %%%%%%%%%% References %%%%%%%%%%
@ -260,38 +312,6 @@ Equilibrium & $\approx40$ & GPX with missing end tag\\
\appendix \appendix
\backupbegin \backupbegin
\begin{frame}{Architecture}
\begin{itemize}
\item Based on map-reduce
\item Map: Analysis
\begin{itemize}
\item Iterate Log entries
\item Feed log entry through analyzer queue
\begin{itemize}
\item Augment entries
\item Filter entries
\item Sequential order
\end{itemize}
\end{itemize}
\item Reduce: Collect summaries from analyzers
\begin{itemize}
\item Post-processing, Comparison, …
\item Rendering
\end{itemize}
\end{itemize}
\end{frame}
\begin{frame}{Graphs}
\begin{columns}
\column{0.45\linewidth}
\image{\textwidth}{simu-retries}{Experimentational rounds}{img:retries}
\column{0.45\linewidth}
\image{\textwidth}{speed}{Speed distribution}{img:speed}
\end{columns}
\end{frame}
\begin{frame}{Graphs}
\image{.9\textwidth}{time-rel}{Time distribution}{img:time}
\end{frame}
\backupend
\end{document} \end{document}