wörk
|
|
@ -2,7 +2,7 @@
|
|||
%Necessary Information
|
||||
\author{Clemens Klug}
|
||||
\title{A Framework for the Analysis of Spatial Game Data}
|
||||
\subtitle{Ein Analyseframework f\"ur raumbezogene Spieldaten}
|
||||
\subtitle{Ein Analyseframework f\"ur raumbezogene Spieldaten\\2. Vortrag}
|
||||
%The day of the presentation
|
||||
%\date{\today}
|
||||
\date{February 28, 2018}
|
||||
|
|
@ -22,5 +22,5 @@
|
|||
|
||||
\titlegraphic{\includegraphics[width=13mm,height=13mm]{image/logo}}
|
||||
|
||||
%\gittrue
|
||||
\gittrue
|
||||
\presentationtrue
|
||||
|
|
|
|||
|
After Width: | Height: | Size: 28 KiB |
|
After Width: | Height: | Size: 25 KiB |
|
After Width: | Height: | Size: 34 KiB |
|
After Width: | Height: | Size: 27 KiB |
|
After Width: | Height: | Size: 19 KiB |
|
After Width: | Height: | Size: 142 KiB |
|
|
@ -16,7 +16,13 @@ compress
|
|||
|
||||
\newcommand\meta{../meta}
|
||||
\input{\meta/config/commands}
|
||||
|
||||
\newcommand{\backupbegin}{
|
||||
\newcounter{finalframe}
|
||||
\setcounter{finalframe}{\value{framenumber}}
|
||||
}
|
||||
\newcommand{\backupend}{
|
||||
\setcounter{framenumber}{\value{finalframe}}
|
||||
}
|
||||
|
||||
\def\signed #1{{\leavevmode\unskip\nobreak\hfil\penalty50\hskip2em
|
||||
\hbox{}\nobreak\hfil(#1)%
|
||||
|
|
@ -94,162 +100,6 @@ compress
|
|||
%%%%%%%%%% Content starts here %%%%%%%%%%
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
|
||||
\section{Location based Games}
|
||||
\begin{frame}{Location based Games}
|
||||
\framesubtitle{Put the 'fun' in education}
|
||||
\begin{columns}
|
||||
\column{0.55\linewidth}
|
||||
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 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}
|
||||
\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}
|
||||
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)
|
||||
\item Cross-game comparisons
|
||||
\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
|
||||
{
|
||||
|
|
@ -273,12 +123,15 @@ Technologies: Collection, Time-series databases, Frontend
|
|||
\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}{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}
|
||||
\begin{itemize}
|
||||
|
|
@ -295,8 +148,8 @@ Technologies: Collection, Time-series databases, Frontend
|
|||
\end{itemize}
|
||||
\item Reduce: Collect summaries from analyzers
|
||||
\begin{itemize}
|
||||
\item Rendering
|
||||
\item Post-processing, Comparison, …
|
||||
\item Rendering
|
||||
\end{itemize}
|
||||
\end{itemize}
|
||||
\end{frame}
|
||||
|
|
@ -304,8 +157,9 @@ Technologies: Collection, Time-series databases, Frontend
|
|||
\image{\textwidth}{../../ThesTeX/images/map-reduce.pdf}{Data flows}{img:flow}
|
||||
\end{frame}
|
||||
|
||||
\section{Outlook: Implementation}
|
||||
\section{Implementation}
|
||||
|
||||
\subsection{Technologies}
|
||||
\begin{frame}{Implementation}
|
||||
\begin{columns}
|
||||
\column{0.55\linewidth}
|
||||
|
|
@ -313,7 +167,7 @@ Technologies: Collection, Time-series databases, Frontend
|
|||
\begin{itemize}
|
||||
\item Python (3.6)
|
||||
\item Standalone library/CLI tool
|
||||
\item Web based configuration/Runner/API (Flask)
|
||||
\item Web based configuration/Runner/API (Flask, Celery)
|
||||
\end{itemize}
|
||||
Rendering
|
||||
\begin{itemize}
|
||||
|
|
@ -335,24 +189,53 @@ Technologies: Collection, Time-series databases, Frontend
|
|||
\end{columns}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}{Configuration \& results}
|
||||
\subsection{Microservice Composition}
|
||||
\begin{frame}{Microservice Composition}
|
||||
\framesubtitle{Docker everything!}
|
||||
\begin{columns}
|
||||
\column{0.45\linewidth}
|
||||
\begin{itemize}
|
||||
\item Analysis framework: Celery
|
||||
\item User interface: Flask
|
||||
\item Result server: Nginx
|
||||
\item Connection Flask - Celery: Redis
|
||||
\item Public frontend: Traefik (external)
|
||||
\end{itemize}
|
||||
\column{0.525\linewidth}
|
||||
\image{\textwidth}{../../ThesTeX/images/architecture}{Service structure}{img:microservices}
|
||||
\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}
|
||||
|
||||
\begin{frame}{ActivityMapper}
|
||||
\image{.7\textwidth}{track-fi}{Combined screen activity and spatial progress}{img:trackfi}
|
||||
\end{frame}
|
||||
\section{Outlook: Evaluation}
|
||||
%TODO
|
||||
|
||||
\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}
|
||||
|
||||
\begin{frame}{Evaluation}
|
||||
\begin{itemize}
|
||||
\item Analyse other geogames
|
||||
\item Describe effort
|
||||
\item ?
|
||||
\item Profit
|
||||
\end{itemize}
|
||||
\end{frame}
|
||||
|
||||
|
||||
|
|
@ -368,6 +251,19 @@ Technologies: Collection, Time-series databases, Frontend
|
|||
\normalsize
|
||||
\end{frame}
|
||||
|
||||
|
||||
\appendix
|
||||
\backupbegin
|
||||
\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}
|
||||
|
|
|
|||
|
|
@ -30,7 +30,8 @@ Additionally, this requires the users to master the query language before any re
|
|||
|
||||
By building a custom plugin, extension, or modified version, it is possible to circumvent this obstacle.
|
||||
However, the fast-paced environment of the industry either requires a constant effort of keeping pace, or results in an outdated system rather quickly.\footnote{E.g. the next major release Kibana v6.0.0\footnote{\url{https://github.com/elastic/kibana/releases/tag/v6.0.0}} was released about a year after Kibana v5.0.0\footnote{\url{https://github.com/elastic/kibana/releases/tag/v5.0.0}}. However, the previous major version seems to receive updates for about an year, too.}
|
||||
|
||||
\subsection{Evaluation Grafana}
|
||||
\image{\textwidth}{grafana-metrics}{Configuring a graph in Grafana}{img:graphana}
|
||||
\subsection{Conclusion}
|
||||
After all, the monitoring solutions are no perfect match for this special use case.
|
||||
The privacy concerns vital in web monitoring prohibit detailed spatial analyzes, the query languages can restrict some questions, and custom extensions require constant integration effort.
|
||||
|
|
@ -43,7 +44,7 @@ The default Kibana worchbench does not qualify for this, a custom interface coul
|
|||
|
||||
|
||||
\section{Architectural Design}
|
||||
|
||||
%TODO: map-reduce
|
||||
\subsection{Overview}
|
||||
Based on the learnings above, a custom stack seems like a feasible alternative:
|
||||
\begin{itemize}
|
||||
|
|
|
|||
|
After Width: | Height: | Size: 131 KiB |