Compare commits
3 Commits
| Author | SHA1 | Date |
|---|---|---|
|
|
68af833961 | |
|
|
d150f74d79 | |
|
|
7995172970 |
|
|
@ -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}
|
||||
|
|
|
|||
Binary file not shown.
|
After Width: | Height: | Size: 44 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 36 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 133 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 18 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 15 KiB |
|
|
@ -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}
|
||||
|
|
|
|||
Loading…
Reference in New Issue