Compare commits
No commits in common. "master" and "1.0-alpha1" have entirely different histories.
master
...
1.0-alpha1
|
|
@ -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\\3. Vortrag}
|
\subtitle{Ein Analyseframework f\"ur raumbezogene Spieldaten\\2. Vortrag}
|
||||||
%The day of the presentation
|
%The day of the presentation
|
||||||
%\date{\today}
|
%\date{\today}
|
||||||
\date{7. August 2018}
|
\date{May 24, 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}
|
||||||
|
|
|
||||||
Binary file not shown.
|
Before Width: | Height: | Size: 44 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 36 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 133 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 18 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 15 KiB |
|
|
@ -100,98 +100,78 @@ compress
|
||||||
%%%%%%%%%% Content starts here %%%%%%%%%%
|
%%%%%%%%%% Content starts here %%%%%%%%%%
|
||||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
|
||||||
\section{A Framework for the Analysis of Spatial Game Data}
|
\section{Solution approach}
|
||||||
\begin{frame}{A Framework for the Analysis of Spatial Game Data}
|
\frame
|
||||||
\framesubtitle{Goal definition}
|
{
|
||||||
\begin{columns}
|
\tableofcontents[sectionstyle=show/hide,hideothersubsections]
|
||||||
\column{0.49\linewidth}
|
}
|
||||||
Geogames: Intersection of GIS and gaming technology\footnotemark
|
\subsection{Requirements}
|
||||||
\begin{itemize}
|
\begin{frame}{Requirements}
|
||||||
\item Game actions tied to real-world spatial places ('Break the magic circle')
|
\framesubtitle{Wait, what did I want to do again?}
|
||||||
\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)
|
||||||
\item Cross-game comparisons
|
|
||||||
\end{itemize}
|
|
||||||
\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
|
|
||||||
\begin{itemize}
|
|
||||||
\item Iterate Log entries
|
|
||||||
\item Feed log entry through analyzer queue
|
|
||||||
\begin{itemize}
|
\begin{itemize}
|
||||||
\item Augment entries
|
\item Expert users/researchers
|
||||||
\item Filter entries
|
\item Staging/designing staff
|
||||||
\item Sequential order
|
|
||||||
\end{itemize}
|
\end{itemize}
|
||||||
\end{itemize}
|
\item Cross-game comparisons
|
||||||
\item Reduce: Collect summaries from analyzers
|
\item Integration of external data (questionnaire results)
|
||||||
\begin{itemize}
|
|
||||||
\item Rendering
|
|
||||||
\item Post-processing, Comparison, …
|
|
||||||
\end{itemize}
|
|
||||||
\end{itemize}
|
\end{itemize}
|
||||||
\end{frame}
|
\end{frame}
|
||||||
\begin{frame}{Log processing scheme}
|
|
||||||
|
\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}
|
||||||
|
|
||||||
|
\begin{frame}{Architecture 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}
|
||||||
|
|
||||||
%%%%%%%%%%%%%%%%%55
|
\section{Implementation}
|
||||||
% 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}
|
||||||
|
|
||||||
\section{Microservice oriented implementation}
|
\subsection{Microservice Composition}
|
||||||
|
|
||||||
\subsection{Service Composition}
|
|
||||||
\begin{frame}{Microservice Composition}
|
\begin{frame}{Microservice Composition}
|
||||||
\framesubtitle{Dockerize everything!}
|
\framesubtitle{Docker everything!}
|
||||||
\begin{columns}
|
\begin{columns}
|
||||||
\column{0.45\linewidth}
|
\column{0.45\linewidth}
|
||||||
\begin{itemize}
|
\begin{itemize}
|
||||||
|
|
@ -207,31 +187,36 @@ Custom stack solution
|
||||||
\end{columns}
|
\end{columns}
|
||||||
\end{frame}
|
\end{frame}
|
||||||
|
|
||||||
\subsection{Results}
|
\subsection{Classes}
|
||||||
|
|
||||||
\begin{frame}{ActivityMapper}
|
\begin{frame}{Analysis}
|
||||||
\image{.7\textwidth}{track-fi}{Combined screen activity and spatial progress}{img:trackfi}
|
\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}{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}
|
||||||
|
|
||||||
\section{Evaluation}
|
\begin{frame}{Result}
|
||||||
\subsection{Setup}
|
\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
|
||||||
|
|
||||||
|
|
||||||
\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}
|
||||||
|
|
@ -242,7 +227,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:logscli}
|
\label{tab:logs}
|
||||||
\end{longtable}
|
\end{longtable}
|
||||||
|
|
||||||
Servers
|
Servers
|
||||||
|
|
@ -255,47 +240,10 @@ 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:logssrv}
|
\label{tab:logs}
|
||||||
\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 %%%%%%%%%%
|
||||||
|
|
@ -312,6 +260,38 @@ Solutions
|
||||||
\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}
|
||||||
|
|
|
||||||
|
|
@ -4,10 +4,10 @@
|
||||||
\subtitle{A Framework for the Analysis of Spatial Game Data}
|
\subtitle{A Framework for the Analysis of Spatial Game Data}
|
||||||
\newcommand\degree{Master}
|
\newcommand\degree{Master}
|
||||||
\newcommand\studycourse{Angewandte Informatik}
|
\newcommand\studycourse{Angewandte Informatik}
|
||||||
\newcommand\advisor{Prof. Dr. Christoph Schlieder}
|
\newcommand\advisor{Christoph Schlieder}
|
||||||
\newcommand\location{Bamberg}
|
\newcommand\location{Bamberg}
|
||||||
\subject{\degree arbeit im Studiengang \studycourse\ der Fakultät Wirtschaftsinformatik und Angewandte Informatik der Otto-Friedrich-Universität Bamberg}
|
\subject{\degree arbeit im Studiengang \studycourse\ der Fakultät Wirtschaftsinformatik und Angewandte Informatik der Otto-Friedrich-Universität Bamberg}
|
||||||
\date{14.06.2018}
|
\date{19.06.2018?} %TODO
|
||||||
|
|
||||||
\gitfalse
|
\gittrue
|
||||||
\thesistrue
|
\thesistrue
|
||||||
|
|
|
||||||
|
|
@ -1,22 +1,35 @@
|
||||||
In this thesis, a framework for the analysis of spatial game data is developed.
|
|
||||||
This game data is collected during the game sessions and stored in log files.
|
|
||||||
The following chapters describe the basics of the development process.
|
|
||||||
|
|
||||||
\section{Location based Games: Put the `fun' in education}
|
\section{Location based Games: Put the 'fun' in education}
|
||||||
|
Location based Games are at the intersection of GIS and gaming technology \cite{Ahlqvist2018}.
|
||||||
Spatial games, also known as location based games, are at the intersection of GIS and gaming technology \cite{Ahlqvist2018}.
|
|
||||||
With game actions tied to real-world spatial places, this genre breaks the magic circle of games: they are embedded into the environment and the boundary between game and non-game are vanishing \cite{montola2009games}.
|
With game actions tied to real-world spatial places, this genre breaks the magic circle of games: they are embedded into the environment and the boundary between game and non-game are vanishing \cite{montola2009games}.
|
||||||
As they feature locomotion as an essential game part, a focus on certain aspects of the environment can be achieved by game related tasks.
|
As they feature locomotion as an essential game part, a focus on certain aspects of the environment can be achieved by game related tasks.
|
||||||
These tasks can include educational aspects or reward special behaviour through ingame benefits as mean of gamification.
|
These tasks can include educational aspects or reward special behaviour through ingame benefits as mean of gamification.
|
||||||
A playable game with good balance and a lasting impact needs to consider the trade-off between board and race style games \cite{1705427,kremer2013spatial}.
|
A playable game with good balance and a lasting impact needs to consider the trade-off between board and race style games \cite{1705427,kremer2013spatial}.
|
||||||
Board style games are dominated by strategic planning with less temporal restrictions, while race styled games favour the physical capabilities of the fastest players.
|
Board style games are dominated by strategic planning with less temporal restrictions, while race styled games favour the physical capabilities of the fastest players.
|
||||||
|
|
||||||
Popular examples of mobile geogames are Ingress\furl{https://www.ingress.com/} and the more recent Pokemon Go\furl{https://www.pokemongo.com/}\!.
|
Popular examples of mobile geogames are Ingress\furl{https://www.ingress.com/} and the more recent Pokemon Go\furl{https://www.pokemongo.com/}.
|
||||||
These worldwide playable games barely embed the surroundings into the game except for the base map and some landmark-derived attributes\footnote{Pokemon Go aligns the land types with the possible types of Pokemon's available}\!.
|
These worldwide playable games barely embed the surroundings into the game except for the base map and some landmark-derived attributes \footnote{Pokemon Go aligns the land types with the possible types of Pokemon's available}.
|
||||||
With a fine tuned setup of educational content, game elements and integration of locomotion on the other hand, location based games (also known as geogames) foster recognition of the environment.
|
With a fine tuned setup of educational content, game elements and integration of locomotion on the other hand, location based games (also known as geogames) foster recognition of the environment.
|
||||||
|
|
||||||
\autoref{img:gg2} shows the map overview of such a game: FindeVielfalt Simulation\furl{https://biodivlb.jimdo.com/english-1/project-finde-vielfalt/finde-vielfalt-simulation/}\!.
|
\autoref{img:gg2} shows the map overview of such a game: FindeVielfalt Simulation\furl{https://biodivlb.jimdo.com/english-1/project-finde-vielfalt/finde-vielfalt-simulation/}.
|
||||||
Located in an orchard, the blue dots are caches tied to game actions.
|
Located in an orchard, the blue dots are caches tied to game actions.
|
||||||
To proceed in the games narrative story, the caches are to be completed.
|
To proceed in the games narrative story, the caches are to be completed.
|
||||||
The players have to complete a task within the context of the caches' location.
|
The players have to complete a task with context of the caches' location.
|
||||||
\image{.5\textwidth}{../../PresTeX/images/gg2}{Geogame map view}{img:gg2}
|
\image{.5\textwidth}{../../PresTeX/images/gg2}{Geogame map view}{img:gg2}
|
||||||
|
|
||||||
|
\section{Research with location based games}\label{sec:gg-res}
|
||||||
|
Usually, when the effectiveness of location based educational games is to be measured, the following pattern is applied:
|
||||||
|
|
||||||
|
After a mission statement has been defined and approved, a fitting statistical framework has to be developed.
|
||||||
|
Based on such a framework, questionnaires have to be derived.
|
||||||
|
As some metrics cannot be retrieved directly from the questionnaires answers, the statistical framework needs to considers these and consider measurable information to derive the original metric from.
|
||||||
|
The finished and for alignment with the mission statement approved questionnaires are then applied at field test with users from the target groups.
|
||||||
|
Each field test consists of an upstream questionnaire, a pass of the location based game and a final round of questionnaires.
|
||||||
|
After an data entry step for paper-based questionnaires, the raw results are fed into the statistical framework implemented in a statistical processing software to retrieve the final results.
|
||||||
|
|
||||||
|
\cite{Schaal2017} describes this development in the context of the BioDiv2Go project.
|
||||||
|
\autoref{img:biodiv-schaal} shows the resulting statistical framework for the valuing of biodiversity as target variable of the location based geogame developed in the BioDiv2Go project.
|
||||||
|
|
||||||
|
|
||||||
|
\image{\textwidth}{../../PresTeX/images/biodiv-schaal}{Statistical framework for BioDiv2Go\cite{Schaal2017}}{img:biodiv-schaal}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -7,13 +7,10 @@ To be a true framework, a tight coupling to any specific game is out of bounds.
|
||||||
For an holistic solution, the integration of external data (e.g. questionnaire results) allows the framework to compute an overall result.
|
For an holistic solution, the integration of external data (e.g. questionnaire results) allows the framework to compute an overall result.
|
||||||
|
|
||||||
\subsection{Target groups}
|
\subsection{Target groups}
|
||||||
There are two target groups for this project: Researchers and staging staff.
|
With researches extracting influences of games into the players' behaviour, the first target group of the analysis framework is clear.
|
||||||
With researchers extracting influences of games into the players' behaviour, the first target group of the analysis framework is clear.
|
|
||||||
They need a sufficient data basis for evaluations of broader scope.
|
|
||||||
A second user group are the game staging and game designing staff.
|
A second user group are the game staging and game designing staff.
|
||||||
They require feedback about difficult sections in the game, hard to reach locations, or overcrowded situations to improve the game enjoyment of the players.
|
They require feedback about difficult sections in the game, hard to reach locations, or overcrowded situations to improve the game enjoyment of the players.
|
||||||
Additionally they need statistics to conclude the game session with a review of the game round.
|
Additionally they need statistics to conclude the game session with a review of the game round.
|
||||||
With an result for each player, these statistics allow individual feedback.
|
|
||||||
|
|
||||||
With spatial trajectories of possibly individual players, some basic privacy protection needs to restrict the access to the log files to a minimal amount of people.
|
With spatial trajectories of possibly individual players, some basic privacy protection needs to restrict the access to the log files to a minimal amount of people.
|
||||||
Additionally, a user interface for the creation of predefined analysis settings with custom logs provides the stagers and designers a reasonable information basis.
|
Additionally, a user interface for the creation of predefined analysis settings with custom logs provides the stagers and designers a reasonable information basis.
|
||||||
|
|
|
||||||
|
|
@ -1,25 +1,8 @@
|
||||||
In \autoref{sec:gg-res} example the involvement of location based games in the research field is reviewed.
|
With an administrative background, the first approach to log processing which comes to mind are the various log processing frameworks.
|
||||||
Covering the basic data aggregation, \autoref{sec:logproctheo} shows the current state of tools and processes for managing large volumes of log and time series data.
|
\autoref{sec:logproctheo} shows the current state of tools and processes for managing large volumes of log and time series data.
|
||||||
An overview of the field of pedestrian track analysis is located in \autoref{sec:pedest}.
|
An overview of the field of pedestrian track analysis is located in \autoref{sec:pedest}.
|
||||||
Finally, in \autoref{sec:gametheo} the connection of spatial analysis and digital game optimizations is showcased.
|
Finally, in \autoref{sec:gametheo} the connection of spatial analysis and digital game optimizations is showcased.
|
||||||
|
|
||||||
\section{Research with location based games}\label{sec:gg-res}
|
|
||||||
\cite{Schaal2017} describes the evaluation of a location based game.
|
|
||||||
To measure the effectiveness of the game, the following pattern is applied:
|
|
||||||
|
|
||||||
After a mission statement has been defined and approved, a fitting statistical framework has to be developed.
|
|
||||||
Based on such a framework, questionnaires have to be derived.
|
|
||||||
As some metrics cannot be retrieved directly from the questionnaires answers, the statistical framework needs to considers these and consider measurable information to derive the original metric from.
|
|
||||||
The finished and for alignment with the mission statement approved questionnaires are then applied at field test with users from the target groups.
|
|
||||||
Each field test consists of an upstream questionnaire, a pass of the location based game and a final round of questionnaires.
|
|
||||||
After an data entry step for paper-based questionnaires, the raw results are fed into the statistical framework implemented in a statistical processing software to retrieve the final results.
|
|
||||||
|
|
||||||
\autoref{img:biodiv-schaal} shows the resulting statistical framework for the valuing of biodiversity as target variable of the location based geogame developed in the BioDiv2Go project.
|
|
||||||
|
|
||||||
|
|
||||||
\image{\textwidth}{../../PresTeX/images/biodiv-schaal}{Statistical framework for BioDiv2Go\cite{Schaal2017}}{img:biodiv-schaal}
|
|
||||||
|
|
||||||
|
|
||||||
\section{Log processing}\label{sec:logproctheo}
|
\section{Log processing}\label{sec:logproctheo}
|
||||||
System administrators and developers face a daily surge of log files from applications, systems, and servers.
|
System administrators and developers face a daily surge of log files from applications, systems, and servers.
|
||||||
For knowledge extraction, a wide range of tools is in constant development for such environments.
|
For knowledge extraction, a wide range of tools is in constant development for such environments.
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
The following chapter \autoref{sec:logproc} takes a dive into the world of log processing frameworks and evaluates the feasibility of two such system for the scope of this thesis.
|
With an administrative background, the first approach to log processing which comes to mind is the various log processing frameworks.
|
||||||
|
The following chapter \autoref{sec:logproc} takes a dive into this world and evaluates the feasibility of two such system for the scope of this thesis.
|
||||||
Based on the findings, an alternative approach is then outlined in \autoref{sec:alternative-design}.
|
Based on the findings, an alternative approach is then outlined in \autoref{sec:alternative-design}.
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -45,7 +46,8 @@ Grafana does have support for shared dashboards with a fixed set of data, howeve
|
||||||
A third party plugin recently does provide such support\furl{https://github.com/CitiLogics/citilogics-geoloop-panel}, unfortunately it missed the timeframe during the evaluation of grafana for this thesis.
|
A third party plugin recently does provide such support\furl{https://github.com/CitiLogics/citilogics-geoloop-panel}, unfortunately it missed the timeframe during the evaluation of grafana for this thesis.
|
||||||
Such a plugin would still be a possibly fragile component given the fast pace of web development shown by these kind of projects.
|
Such a plugin would still be a possibly fragile component given the fast pace of web development shown by these kind of projects.
|
||||||
|
|
||||||
\section{Developing a modular architectural design}\label{sec:alternative-design}
|
\section{Architectural Design}\label{sec:alternative-design}
|
||||||
|
\subsection{Overview}
|
||||||
While the development of a custom stack requires a lot of infrastructural work to get the project running, the learnings above give points to build a custom solution as a feasible alternative:
|
While the development of a custom stack requires a lot of infrastructural work to get the project running, the learnings above give points to build a custom solution as a feasible alternative:
|
||||||
\begin{itemize}
|
\begin{itemize}
|
||||||
\item Developing from bottom-up takes less time than diving into complex turn-key monitoring solutions.
|
\item Developing from bottom-up takes less time than diving into complex turn-key monitoring solutions.
|
||||||
|
|
@ -55,16 +57,11 @@ While the development of a custom stack requires a lot of infrastructural work t
|
||||||
\item A focus on key points allows simple, easily extendable interfaces and implementations.
|
\item A focus on key points allows simple, easily extendable interfaces and implementations.
|
||||||
\item Reducing the complexity to an overseeable level, the processes and results can be verified for accuracy and reliability.
|
\item Reducing the complexity to an overseeable level, the processes and results can be verified for accuracy and reliability.
|
||||||
\end{itemize}
|
\end{itemize}
|
||||||
With the requirements from \autoref{sec:require} and the learnings from log processing evaluations in mind, a modular processing pipeline depicted in \autoref{img:flowchart} allows for a configurable solution.
|
|
||||||
It comprises the stages of input, analysis and rendering.
|
|
||||||
With interfaces defined between the stages, this approach allows the exchange of single modules without affecting the remaining pipeline.
|
|
||||||
\image{.75\textwidth}{flowchart.pdf}{Modular processing pipeline}{img:flowchart}
|
|
||||||
|
|
||||||
\subsection{Overview}
|
With the requirements from \autoref{sec:require} and the learnings from log processing evaluations in mind, a first architectural approach is visualized in \autoref{img:solution}.
|
||||||
An architectural approach surrounding the processing pipeline is visualized in \autoref{img:solution}.
|
|
||||||
It outlines three main components of the project: Two user facing services (Web \& CLI / API), and an analysis framework.
|
It outlines three main components of the project: Two user facing services (Web \& CLI / API), and an analysis framework.
|
||||||
The interfaces (Web and CLI/API) for both target groups (see \autoref{sec:require}) are completely dependent on the analysis framework at the core.
|
The interfaces (Web and CLI/API) for both target groups (see \autoref{sec:require}) are completely dependent on the analysis framework at the core.
|
||||||
\image{.75\textwidth}{solution.pdf}{Architecture approach}{img:solution}
|
\image{\textwidth}{solution.pdf}{Architecture approach}{img:solution}
|
||||||
|
|
||||||
The following sections describe each of those components.
|
The following sections describe each of those components.
|
||||||
\subsection{Analysis Framework}
|
\subsection{Analysis Framework}
|
||||||
|
|
|
||||||
|
|
@ -84,11 +84,6 @@ When all log entries of a log file are processed, the \texttt{result} method ret
|
||||||
|
|
||||||
There are 23 classes implementing analysis functionality, partitioned into modules for generic use, Biodiv2go analysis, and filtering purposes.
|
There are 23 classes implementing analysis functionality, partitioned into modules for generic use, Biodiv2go analysis, and filtering purposes.
|
||||||
|
|
||||||
The settings provided by the base class include access to the client connecting to the game's server.
|
|
||||||
This allows the Analyzers to fetch additional data like game configurations or media files.
|
|
||||||
The ActivityMapper analyzer already makes use of that.
|
|
||||||
In a similar fashion it is possible to load other external data like questionnaire spreadsheets.
|
|
||||||
|
|
||||||
\paragraph{Results}\label{par:result} are stored in a \texttt{Result} object (\texttt{analysis.analyzers.analyzer.\_\_init\_\_}).
|
\paragraph{Results}\label{par:result} are stored in a \texttt{Result} object (\texttt{analysis.analyzers.analyzer.\_\_init\_\_}).
|
||||||
This class keeps track of the origin of the resulting data to allow filtering for results by arbitrary analyzing classes.
|
This class keeps track of the origin of the resulting data to allow filtering for results by arbitrary analyzing classes.
|
||||||
|
|
||||||
|
|
@ -125,7 +120,7 @@ Therefore, an additional log providing server was created to allow access to the
|
||||||
|
|
||||||
Clients can have arbitrary amounts of options, as all fields in the JSON settings file are passed through (see \autoref{img:oebkml}, section "source").
|
Clients can have arbitrary amounts of options, as all fields in the JSON settings file are passed through (see \autoref{img:oebkml}, section "source").
|
||||||
|
|
||||||
\subsection{Web Interface for prepared results}\label{sec:web}
|
\subsection{Web Interface}\label{sec:web}
|
||||||
The selector package holds a Flask\furl{http://flask.pocoo.org/} app for an web interface for non-expert users.
|
The selector package holds a Flask\furl{http://flask.pocoo.org/} app for an web interface for non-expert users.
|
||||||
It utilizes the provided clients (see \autoref{sec:source}) for authentication, and gives users the following options:
|
It utilizes the provided clients (see \autoref{sec:source}) for authentication, and gives users the following options:
|
||||||
\begin{itemize}
|
\begin{itemize}
|
||||||
|
|
@ -155,13 +150,6 @@ The link \emph{create new analysis} leads to the configuration menu for new anal
|
||||||
It lists the game logs available for the logged in user, and offers a selection of the predefined analysis configurations.
|
It lists the game logs available for the logged in user, and offers a selection of the predefined analysis configurations.
|
||||||
With a given name, it is easy to identify the results for each analysis run in the result overview page.
|
With a given name, it is easy to identify the results for each analysis run in the result overview page.
|
||||||
|
|
||||||
\subsection{Result interface}
|
|
||||||
Accompanying the Web interface above is the result interface.
|
|
||||||
Here, results of the analysis runs issued in the Web interface are displayed to the users.
|
|
||||||
\autoref{img:trackfi} shows a result by example: The combination of spatial positions of players and the screen activity.
|
|
||||||
|
|
||||||
\image{\textwidth}{../../PresTeX/images/track-fi}{ActivityMapper: Combined screen activity and spatial progress}{img:trackfi}
|
|
||||||
|
|
||||||
\subsection{Task definition}\label{sec:tasks} in the \texttt{package} provides tasks available for execution.
|
\subsection{Task definition}\label{sec:tasks} in the \texttt{package} provides tasks available for execution.
|
||||||
This package is the interface for celery\furl{http://www.celeryproject.org/} workers and issuers.
|
This package is the interface for celery\furl{http://www.celeryproject.org/} workers and issuers.
|
||||||
The key point is the task \texttt{analyze} to start new analysis runs.
|
The key point is the task \texttt{analyze} to start new analysis runs.
|
||||||
|
|
@ -257,4 +245,4 @@ The advantage of docker-compose is the definition of all images, volumes and net
|
||||||
When a scenario with high load occurs, this definition allows for simple scaling.
|
When a scenario with high load occurs, this definition allows for simple scaling.
|
||||||
To create more celery worker nodes, issuing the command \textit{docker-compose scale worker=8} suffices to create 8 worker containers running in parallel.
|
To create more celery worker nodes, issuing the command \textit{docker-compose scale worker=8} suffices to create 8 worker containers running in parallel.
|
||||||
|
|
||||||
\image{.75\textwidth}{architecture.pdf}{Service composition overview}{img:arch}
|
\image{\textwidth}{architecture.pdf}{Service composition overview}{img:arch}
|
||||||
|
|
|
||||||
|
|
@ -94,7 +94,3 @@ While the BioDiv2Go parser requires less than 20 lines of code, the newly writte
|
||||||
Once this obstacle is passed, the integration is nearly seamless.
|
Once this obstacle is passed, the integration is nearly seamless.
|
||||||
|
|
||||||
As further challenge proved - like with BioDiv2Go - the understanding of the structure of the log, i.e. deriving the games' internal state machine.
|
As further challenge proved - like with BioDiv2Go - the understanding of the structure of the log, i.e. deriving the games' internal state machine.
|
||||||
|
|
||||||
On the down side, the addition of lxml has increased the size of the complete image by nearly 40 MB, breaking the 300 MB mark (see \autoref{img:image-size}).
|
|
||||||
Naturally this is a rather superficial price to pay for improved functionality.
|
|
||||||
\image{\textwidth}{image-size}{Increased image size with Lxml}{img:image-size}
|
|
||||||
|
|
@ -1,18 +1,9 @@
|
||||||
\section{Review}
|
\section{Review}
|
||||||
As shown in \autoref{sec:eval}, the proposed framework (see \autoref{sec:solution}) and its implementation (see \autoref{sec:implementation}) deliver what \autoref{sec:scope} asked for regarding the portability aspect.
|
As shown in \autoref{sec:eval}, the proposed framework (see \autoref{sec:solution}) and its implementation (see \autoref{sec:implementation}) deliver what \autoref{sec:scope} asked for regarding the portability aspect.
|
||||||
|
With the web interface depicted in \autoref{app:webif}, it is possible for non-expert users to generate pre-defined reports, while researchers can dive into the API of the framework either as preprocessing step or integrated into a larger project.
|
||||||
\subsection{Modular framework}
|
|
||||||
Given the lean framework core, the development of new analyzers and rendering target is encouraged.
|
Given the lean framework core, the development of new analyzers and rendering target is encouraged.
|
||||||
This is backed by the focus on a standalone application instead of extensions to log processing systems struggling with spatial data in the required resolution.
|
This is backed by the focus on a standalone application instead of extensions to log processing systems struggling with spatial data in the required resolution.
|
||||||
|
|
||||||
As experienced in \autoref{sec:eval}, a change in the import stage of the processing pipeline is completely unnoticed in the other parts.
|
|
||||||
The same is true for the addition or modification of analyzering or rendering functionality.
|
|
||||||
|
|
||||||
\subsection{Web UI}
|
|
||||||
With the web interface depicted in \autoref{app:webif}, it is possible for non-expert users to generate pre-defined reports, while researchers can dive into the API of the framework either as preprocessing step or integrated into a larger project.
|
|
||||||
|
|
||||||
The web ui also gives direct access to the results for the non-expert users.
|
|
||||||
|
|
||||||
\subsection{Results}
|
\subsection{Results}
|
||||||
Th selection of rendered results in \autoref{img:oebkml}, \ref{img:oebge}, \ref{img:retries}, \ref{img:trackfi}, \ref{img:time} showcases the already possible descriptive analysis capabilities.
|
Th selection of rendered results in \autoref{img:oebkml}, \ref{img:oebge}, \ref{img:retries}, \ref{img:trackfi}, \ref{img:time} showcases the already possible descriptive analysis capabilities.
|
||||||
\autoref{img:trackfi} features a map view accessible through a browser, which aligns the active screen content of the mobile device with the spatial track.
|
\autoref{img:trackfi} features a map view accessible through a browser, which aligns the active screen content of the mobile device with the spatial track.
|
||||||
|
|
@ -27,5 +18,3 @@ Considering the future, there are many analysis and rendering targets to come.
|
||||||
As with any kind of software, sooner or later the point may be reached where the proposed architecture fails.
|
As with any kind of software, sooner or later the point may be reached where the proposed architecture fails.
|
||||||
Given the positive result of the integration evaluation, this sure seems pessimistic.
|
Given the positive result of the integration evaluation, this sure seems pessimistic.
|
||||||
The framework shows some self-debugging feature: Once a log parser is working, analyzers can help to find patterns of log messages to outline the logs structure.
|
The framework shows some self-debugging feature: Once a log parser is working, analyzers can help to find patterns of log messages to outline the logs structure.
|
||||||
|
|
||||||
Especially the spatial generalizations presented in \cite{adrienko2011spatial} or the overestimating error accumulation effect of GPS described in \cite{Ranacher_2015} compared to simplified tracks (e.g. following the methodology of \cite{Chen2009TrajectorySM}) are analyses the author looks forward to give a try.
|
|
||||||
|
|
@ -5,6 +5,7 @@
|
||||||
\image{\textwidth}{../../PresTeX/images/oeb-ge}{Result visualized}{img:oebge}
|
\image{\textwidth}{../../PresTeX/images/oeb-ge}{Result visualized}{img:oebge}
|
||||||
\image{\textwidth}{../../PresTeX/images/simu-retries}{Experimentational rounds}{img:retries}
|
\image{\textwidth}{../../PresTeX/images/simu-retries}{Experimentational rounds}{img:retries}
|
||||||
|
|
||||||
|
\image{\textwidth}{../../PresTeX/images/track-fi}{ActivityMapper: Combined screen activity and spatial progress}{img:trackfi}
|
||||||
\image{\textwidth}{../../PresTeX/images/speed}{Aggregated speed distribution of four game fields}{img:speed}
|
\image{\textwidth}{../../PresTeX/images/speed}{Aggregated speed distribution of four game fields}{img:speed}
|
||||||
\image{\textwidth}{../../PresTeX/images/time-rel}{Time distribution of game sessions overview of four game fields}{img:time}
|
\image{\textwidth}{../../PresTeX/images/time-rel}{Time distribution of game sessions overview of four game fields}{img:time}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -573,9 +573,3 @@ isbn="978-3-642-23199-5"
|
||||||
year={2013},
|
year={2013},
|
||||||
organization={IEEE}
|
organization={IEEE}
|
||||||
}
|
}
|
||||||
@inproceedings{Chen2009TrajectorySM,
|
|
||||||
title={Trajectory simplification method for location-based social networking services},
|
|
||||||
author={Yukun Chen and Kai Jiang and Yu Zheng and Chunping Li and Nenghai Yu},
|
|
||||||
booktitle={GIS-LBSN},
|
|
||||||
year={2009}
|
|
||||||
}
|
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@
|
||||||
\chapter{Log processing, trajectories \& game analysis}
|
\chapter{Log processing, trajectories \& game analysis}
|
||||||
\input{content/2-state-of-the-art}
|
\input{content/2-state-of-the-art}
|
||||||
|
|
||||||
\chapter{Design of the modular analysis framework}\label{sec:solution}
|
\chapter{Design of the analysis framework}\label{sec:solution}
|
||||||
\input{content/3-solution}
|
\input{content/3-solution}
|
||||||
|
|
||||||
\chapter{Implementation of the analysis framework}\label{sec:implementation}
|
\chapter{Implementation of the analysis framework}\label{sec:implementation}
|
||||||
|
|
@ -16,5 +16,5 @@
|
||||||
\chapter{Portability evaluation of the analysis framework}\label{sec:eval}
|
\chapter{Portability evaluation of the analysis framework}\label{sec:eval}
|
||||||
\input{content/5-evaluation}
|
\input{content/5-evaluation}
|
||||||
|
|
||||||
\chapter{A modular framework: Discussion and outlook}
|
\chapter{Discussion and outlook}
|
||||||
\input{content/6-discussion}
|
\input{content/6-discussion}
|
||||||
|
|
|
||||||
Binary file not shown.
|
Before Width: | Height: | Size: 15 KiB |
|
|
@ -104,9 +104,9 @@
|
||||||
% Stichwortverzeichnis soll im Inhaltsverzeichnis auftauchen
|
% Stichwortverzeichnis soll im Inhaltsverzeichnis auftauchen
|
||||||
% Sprungmarke mit Phantomsection korrigiert
|
% Sprungmarke mit Phantomsection korrigiert
|
||||||
\phantomsection%
|
\phantomsection%
|
||||||
%\addcontentsline{toc}{chapter}{Index}%
|
\addcontentsline{toc}{chapter}{Index}%
|
||||||
% Stichwortverzeichnis endgueltig anzeigen
|
% Stichwortverzeichnis endgueltig anzeigen
|
||||||
%\printindex%
|
\printindex%
|
||||||
|
|
||||||
|
|
||||||
\appendix
|
\appendix
|
||||||
|
|
|
||||||
|
|
@ -44,7 +44,7 @@
|
||||||
\makeatletter
|
\makeatletter
|
||||||
\ifposter
|
\ifposter
|
||||||
\else
|
\else
|
||||||
\hypersetup{pdftitle={\@title}, pdfauthor={\@author}, pdfsubject={\@subtitle}, pdfkeywords={\gitAbbrevHash}, linktoc=page, pdfborder={0 0 0 [3 3]}, breaklinks=true, linkbordercolor=unibablueI, menubordercolor=unibablueI, urlbordercolor=unibablueI, citebordercolor=unibablueI, filebordercolor=unibablueI}
|
\hypersetup{pdftitle={\@title}, pdfauthor={\@author}, linktoc=page, pdfborder={0 0 0 [3 3]}, breaklinks=true, linkbordercolor=unibablueI, menubordercolor=unibablueI, urlbordercolor=unibablueI, citebordercolor=unibablueI, filebordercolor=unibablueI}
|
||||||
\fi
|
\fi
|
||||||
%% Define a new 'leo' style for the package that will use a smaller font.
|
%% Define a new 'leo' style for the package that will use a smaller font.
|
||||||
\def\url@leostyle{%
|
\def\url@leostyle{%
|
||||||
|
|
@ -451,4 +451,6 @@ major line width/.initial=1pt,
|
||||||
\changemenucolor{gray}{txt}{named}{unibablueI}
|
\changemenucolor{gray}{txt}{named}{unibablueI}
|
||||||
\fi
|
\fi
|
||||||
|
|
||||||
\newcommand{\furl}[1]{\footnote{\url{#1}}}
|
\newcommand{\furl}[1]{
|
||||||
|
\footnote{\url{#1}}
|
||||||
|
}
|
||||||
|
|
@ -1,9 +1,9 @@
|
||||||
\usepackage[utf8]{inputenc}
|
\usepackage[utf8]{inputenc}
|
||||||
\usepackage{lmodern}
|
\usepackage{lmodern}
|
||||||
\usepackage[T1]{fontenc}
|
\usepackage[T1]{fontenc}
|
||||||
\usepackage{gitinfo2}
|
|
||||||
\ifgit
|
\ifgit
|
||||||
\ifpresentation
|
\ifpresentation
|
||||||
|
\usepackage{gitinfo2}
|
||||||
\else
|
\else
|
||||||
\ifthesis
|
\ifthesis
|
||||||
\usepackage{gitinfo2}
|
\usepackage{gitinfo2}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue