diff --git a/PresTeX/images/eval-changes.png b/PresTeX/images/eval-changes.png new file mode 100644 index 0000000..065072d Binary files /dev/null and b/PresTeX/images/eval-changes.png differ diff --git a/PresTeX/images/eval.jpg b/PresTeX/images/eval.jpg new file mode 100644 index 0000000..71e208f Binary files /dev/null and b/PresTeX/images/eval.jpg differ diff --git a/PresTeX/presentation.tex b/PresTeX/presentation.tex index 0bdfc9a..e4e895c 100644 --- a/PresTeX/presentation.tex +++ b/PresTeX/presentation.tex @@ -100,64 +100,38 @@ compress %%%%%%%%%% Content starts here %%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\section{Location based Games} -\begin{frame}{Location based Games} -\framesubtitle{Put the 'fun' in education} +\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.55\linewidth} -Intersection of GIS and gaming technology\footnotemark + \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')%TODO citation + \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{.45\linewidth} - \image{.5\textwidth}{gg2}{Geogame map view}{img:gg2} + \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}{Research with location based games} - \begin{columns} - \column{0.35\linewidth} - \begin{itemize} - \item Define mission statement - \item Build statistical framework - \item Questionnaires - \begin{itemize} - \item Pre - \item Post - \end{itemize} - \item {[Data entry]} - \item Statistical processing - \end{itemize} - \column{.6\linewidth} - \image{\textwidth}{biodiv-schaal}{Statistical framework for BioDiv2Go\footnotemark}{img:biodiv-schaal} - \end{columns} - %\addtocounter{footnote}{-1} - \footcitetext{Schaal2017}%\stepcounter{footnote} -\end{frame} - -\section{Goal definition} -\begin{frame}{Goal definition} -\framesubtitle{A Framework for the Analysis of Spatial Game Data} -\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{frame} - -\begin{frame}{Components} +\begin{frame}{Framework components} Prerequisites: Game log \begin{itemize} \item Creation @@ -173,123 +147,18 @@ New components \end{itemize} \end{frame} -\section{State of research} - \frame - { - \tableofcontents[sectionstyle=show/hide,hideothersubsections] - } - -\subsection{Log processing} -\begin{frame}{Modern log processing stacks} -Technologies: Collection, Time-series databases, Frontend -\begin{itemize} - \item ELK (Elastic search, Logstash, Kibana)\autocite{andreassen2015monitoring} \autocite{yang2016aggregated} \autocite{steinegger2016analyse} \autocite{sanjappa2017analysis} - \item Collectd, Influx DB, Grafana \autocite{komarek2017metric} - \item … -\end{itemize} -\begin{itemize} - \item[+] widely deployed - \item[+] powerful query languages %TODO example - \item mainly web/container/hardware monitoring - \item[-] spatial analysis: heavily anonymized - \item[-] fast-paced environment -\end{itemize} -\end{frame} - -\subsection{Pedestrian traces} -\begin{frame}{Analyzing pedestrian movement} -\framesubtitle{… based on GPS logs} -\begin{itemize} - \item GPS overestimates systematically \autocite{Ranacher_2015} - \item GPS is a suitable instrument for spatio-temporal data\autocite{van_der_Spek_2009} - \item Activity mining \autocite{Gong_2014} - \begin{itemize} - \item Speed-based Clustering \autocite{ren2015mining} - %\item \autocite{Ferrante_2016} % closed access - \item Machine Learning \autocite{pattern_recog} %TODO - \end{itemize} - \item E.g.: Improve tourist management \autocite{tourist_analysis2012} -\end{itemize} -\end{frame} - - -\begin{frame}{Heatmap} -\image{.81\textwidth}{strava}{Heatmap: Fitnesstracker\autocite{strava}}{img:strava} -\end{frame} - -\begin{frame}{Space-time cube} -\image{.72\textwidth}{space-time}{Space-time cube examples\autocite{bach2014review}}{img:spacetime} -\end{frame} - -\begin{frame}{Trajectory patterns} -\image{\textwidth}{traj-pattern}{Flock and meet trajectory pattern\autocite{jeung2011trajectory}}{img:traj-pattern} -\end{frame} - -\begin{frame}{Generalization} -\image{\textwidth}{generalization}{Trajectories and generalizations with varying radius parameter \autocite{adrienko2011spatial}}{img:generalization} -\end{frame} - -\subsection{Analyzing games} -\begin{frame}{Analyzing games} -\begin{itemize} - \item there's more than heatmaps - \item combine position with game actions - \item identify patterns, balancing issues - \item manual processes %\citetitle{Drachen2013}\citetitle{AHLQVIST20181} -\end{itemize} -\vspace{-42pt} -%\image{.5\textwidth}{game-an}{chat logs with players location \autocite{Drachen2013}}{img:chatlogs} -%\image{.5\textwidth}{ac3-death}{identify critical sections \autocite{Drachen2013}}{img:ac3death} -\twofigures{0.5}{game-an}{Chat logs with players location}{img:chatlogs}{ac3-death}{Identify critical sections}{img:ac3death}{Game analytics \cite{Drachen2013}}{fig:gameanal} -\end{frame} - -%\subsection{Location based games} - -\subsection{Summary} -\begin{frame}{Summary} -\begin{itemize} - \item Log processing: Powerful stacks - \item Movement analysis: Large field already explored (GPS influence, Patterns, Behavior recognition, …) - \item Track rendering: Track (with attributes), Space-time cube, Heatmap, … - \item Spatial analysis of digital games with GIS - \item Analysis of location based games: Laborious manual process -\end{itemize} -\end{frame} - -\section{Solution approach} - \frame - { - \tableofcontents[sectionstyle=show/hide,hideothersubsections] - } -\subsection{Requirements} -\begin{frame}{Requirements} -\framesubtitle{Wait, what did I want to do again?} -\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} + +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 @@ -309,7 +178,7 @@ Technologies: Collection, Time-series databases, Frontend \end{itemize} \end{itemize} \end{frame} -\begin{frame}{Architecture scheme} +\begin{frame}{Log processing scheme} \image{\textwidth}{../../ThesTeX/images/map-reduce.pdf}{Data flows}{img:flow} \end{frame} @@ -318,39 +187,9 @@ Technologies: Collection, Time-series databases, Frontend %%%%%%%%%%%%%%%%%%%% -\section{Implementation} +\section{Microservice oriented implementation} -\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} +\subsection{Service Composition} \begin{frame}{Microservice Composition} \framesubtitle{Dockerize everything!} \begin{columns} @@ -368,51 +207,23 @@ Technologies: Collection, Time-series databases, Frontend \end{columns} \end{frame} -\subsection{Classes} - -\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} -\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} +\subsection{Results} \begin{frame}{ActivityMapper} \image{.7\textwidth}{track-fi}{Combined screen activity and spatial progress}{img:trackfi} \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} - \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:eval} \end{frame} \begin{frame}{Evaluation} @@ -441,8 +252,35 @@ Equilibrium & $\approx40$ & GPX with missing end tag\\ \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 & \\ + unclosed tag & \\ + missing attribute name & \\ + invalid attribute values & \\ + \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}