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
\author{Clemens Klug}
\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
%\date{\today}
\date{May 24, 2018}
\date{7. August 2018}
%Optional Information
\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 %%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{Solution approach}
\frame
{
\tableofcontents[sectionstyle=show/hide,hideothersubsections]
}
\subsection{Requirements}
\begin{frame}{Requirements}
\framesubtitle{Wait, what did I want to do again?}
\section{A Framework for the Analysis of Spatial Game Data}
\begin{frame}{A Framework for the Analysis of Spatial Game Data}
\framesubtitle{Goal definition}
\begin{columns}
\column{0.49\linewidth}
Geogames: Intersection of GIS and gaming technology\footnotemark
\begin{itemize}
\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}
\item Per-game importer (Web client, File loader, …)
\item Analyzer modules (number crunching)
\item Output \& Visualization (CSV, [Geo]JSON, KML, Graphs, …)
\item Interface (Configuration)
\begin{itemize}
\item Expert users/researchers
\item Staging/designing staff
\end{itemize}
\item Cross-game comparisons
\item Integration of external data (questionnaire results)
\end{itemize}
\end{frame}
\subsection{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}
\section{Modular map-reduce architecture}
\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}
\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}
\framesubtitle{Docker everything!}
\framesubtitle{Dockerize everything!}
\begin{columns}
\column{0.45\linewidth}
\begin{itemize}
@ -187,36 +207,31 @@ compress
\end{columns}
\end{frame}
\subsection{Classes}
\subsection{Results}
\begin{frame}{Analysis}
\twofigures{0.5}{code/analyzer}{Analyzer interface}{code:anif}{code/mask-spatials}{Sample analyzer}{code:mask}{Analyzer stub and implementation}{fig:pyan}
\begin{frame}{ActivityMapper}
\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}
\begin{frame}{Result}
\image{\textwidth}{code/result}{Result class}{code:result}
\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
\section{Evaluation}
\subsection{Setup}
\begin{frame}{Evaluation}
\begin{itemize}
\item Analyse other geogames
\item Describe effort
\item ?
\item Profit
\end{itemize}
%\begin{itemize}
% \item Analyse other geogames
% \item Describe effort
% \item ?
% \item Profit
%\end{itemize}
\image{\textwidth}{eval}{Evaluation setup}{img:evalplan}
\end{frame}
\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\\
GeoTicTacToe & $\approx13$ & CSV with pipes; no temporal data; events + tracks\\
\caption{Geogame client log data}
\label{tab:logs}
\label{tab:logscli}
\end{longtable}
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\\
Equilibrium & $\approx40$ & GPX with missing end tag\\
\caption{Geogame servers log data}
\label{tab:logs}
\label{tab:logssrv}
\end{longtable}
\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 %%%%%%%%%%
@ -260,38 +312,6 @@ Equilibrium & $\approx40$ & GPX with missing end tag\\
\appendix
\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}