Compare commits
11 Commits
1.0-alpha1
...
master
| Author | SHA1 | Date |
|---|---|---|
|
|
68af833961 | |
|
|
d150f74d79 | |
|
|
7995172970 | |
|
|
f674b9549e | |
|
|
23c9ddfa3e | |
|
|
1ba55ed7e8 | |
|
|
923d692ee8 | |
|
|
edc7cba50c | |
|
|
846f467cd1 | |
|
|
f48b0bf426 | |
|
|
5d4ed02c20 |
|
|
@ -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}
|
||||
|
|
|
|||
|
|
@ -4,10 +4,10 @@
|
|||
\subtitle{A Framework for the Analysis of Spatial Game Data}
|
||||
\newcommand\degree{Master}
|
||||
\newcommand\studycourse{Angewandte Informatik}
|
||||
\newcommand\advisor{Christoph Schlieder}
|
||||
\newcommand\advisor{Prof. Dr. Christoph Schlieder}
|
||||
\newcommand\location{Bamberg}
|
||||
\subject{\degree arbeit im Studiengang \studycourse\ der Fakultät Wirtschaftsinformatik und Angewandte Informatik der Otto-Friedrich-Universität Bamberg}
|
||||
\date{19.06.2018?} %TODO
|
||||
\date{14.06.2018}
|
||||
|
||||
\gittrue
|
||||
\gitfalse
|
||||
\thesistrue
|
||||
|
|
|
|||
|
|
@ -1,35 +1,22 @@
|
|||
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}
|
||||
Location based Games are at the intersection of GIS and gaming technology \cite{Ahlqvist2018}.
|
||||
\section{Location based Games: Put the `fun' in education}
|
||||
|
||||
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}.
|
||||
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.
|
||||
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.
|
||||
|
||||
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}.
|
||||
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}\!.
|
||||
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.
|
||||
To proceed in the games narrative story, the caches are to be completed.
|
||||
The players have to complete a task with context of the caches' location.
|
||||
The players have to complete a task within the context of the caches' location.
|
||||
\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,10 +7,13 @@ 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.
|
||||
|
||||
\subsection{Target groups}
|
||||
With researches extracting influences of games into the players' behaviour, the first target group of the analysis framework is clear.
|
||||
There are two target groups for this project: Researchers and staging staff.
|
||||
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.
|
||||
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.
|
||||
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.
|
||||
Additionally, a user interface for the creation of predefined analysis settings with custom logs provides the stagers and designers a reasonable information basis.
|
||||
|
|
|
|||
|
|
@ -1,8 +1,25 @@
|
|||
With an administrative background, the first approach to log processing which comes to mind are the various log processing frameworks.
|
||||
\autoref{sec:logproctheo} shows the current state of tools and processes for managing large volumes of log and time series data.
|
||||
In \autoref{sec:gg-res} example the involvement of location based games in the research field is reviewed.
|
||||
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.
|
||||
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.
|
||||
|
||||
\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}
|
||||
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.
|
||||
|
|
|
|||
|
|
@ -1,5 +1,4 @@
|
|||
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.
|
||||
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.
|
||||
Based on the findings, an alternative approach is then outlined in \autoref{sec:alternative-design}.
|
||||
|
||||
|
||||
|
|
@ -46,8 +45,7 @@ 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.
|
||||
Such a plugin would still be a possibly fragile component given the fast pace of web development shown by these kind of projects.
|
||||
|
||||
\section{Architectural Design}\label{sec:alternative-design}
|
||||
\subsection{Overview}
|
||||
\section{Developing a modular architectural design}\label{sec:alternative-design}
|
||||
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}
|
||||
\item Developing from bottom-up takes less time than diving into complex turn-key monitoring solutions.
|
||||
|
|
@ -57,11 +55,16 @@ 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 Reducing the complexity to an overseeable level, the processes and results can be verified for accuracy and reliability.
|
||||
\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}
|
||||
|
||||
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}.
|
||||
\subsection{Overview}
|
||||
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.
|
||||
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{\textwidth}{solution.pdf}{Architecture approach}{img:solution}
|
||||
\image{.75\textwidth}{solution.pdf}{Architecture approach}{img:solution}
|
||||
|
||||
The following sections describe each of those components.
|
||||
\subsection{Analysis Framework}
|
||||
|
|
|
|||
|
|
@ -84,6 +84,11 @@ 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.
|
||||
|
||||
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\_\_}).
|
||||
This class keeps track of the origin of the resulting data to allow filtering for results by arbitrary analyzing classes.
|
||||
|
||||
|
|
@ -120,7 +125,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").
|
||||
|
||||
\subsection{Web Interface}\label{sec:web}
|
||||
\subsection{Web Interface for prepared results}\label{sec:web}
|
||||
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:
|
||||
\begin{itemize}
|
||||
|
|
@ -150,6 +155,13 @@ 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.
|
||||
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.
|
||||
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.
|
||||
|
|
@ -245,4 +257,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.
|
||||
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{\textwidth}{architecture.pdf}{Service composition overview}{img:arch}
|
||||
\image{.75\textwidth}{architecture.pdf}{Service composition overview}{img:arch}
|
||||
|
|
|
|||
|
|
@ -94,3 +94,7 @@ While the BioDiv2Go parser requires less than 20 lines of code, the newly writte
|
|||
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.
|
||||
|
||||
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,9 +1,18 @@
|
|||
\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.
|
||||
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.
|
||||
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}
|
||||
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.
|
||||
|
|
@ -18,3 +27,5 @@ 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.
|
||||
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.
|
||||
|
||||
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,7 +5,6 @@
|
|||
\image{\textwidth}{../../PresTeX/images/oeb-ge}{Result visualized}{img:oebge}
|
||||
\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/time-rel}{Time distribution of game sessions overview of four game fields}{img:time}
|
||||
|
||||
|
|
|
|||
|
|
@ -573,3 +573,9 @@ isbn="978-3-642-23199-5"
|
|||
year={2013},
|
||||
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}
|
||||
\input{content/2-state-of-the-art}
|
||||
|
||||
\chapter{Design of the analysis framework}\label{sec:solution}
|
||||
\chapter{Design of the modular analysis framework}\label{sec:solution}
|
||||
\input{content/3-solution}
|
||||
|
||||
\chapter{Implementation of the analysis framework}\label{sec:implementation}
|
||||
|
|
@ -16,5 +16,5 @@
|
|||
\chapter{Portability evaluation of the analysis framework}\label{sec:eval}
|
||||
\input{content/5-evaluation}
|
||||
|
||||
\chapter{Discussion and outlook}
|
||||
\chapter{A modular framework: Discussion and outlook}
|
||||
\input{content/6-discussion}
|
||||
|
|
|
|||
Binary file not shown.
|
After Width: | Height: | Size: 15 KiB |
|
|
@ -104,9 +104,9 @@
|
|||
% Stichwortverzeichnis soll im Inhaltsverzeichnis auftauchen
|
||||
% Sprungmarke mit Phantomsection korrigiert
|
||||
\phantomsection%
|
||||
\addcontentsline{toc}{chapter}{Index}%
|
||||
%\addcontentsline{toc}{chapter}{Index}%
|
||||
% Stichwortverzeichnis endgueltig anzeigen
|
||||
\printindex%
|
||||
%\printindex%
|
||||
|
||||
|
||||
\appendix
|
||||
|
|
|
|||
|
|
@ -44,7 +44,7 @@
|
|||
\makeatletter
|
||||
\ifposter
|
||||
\else
|
||||
\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}
|
||||
\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}
|
||||
\fi
|
||||
%% Define a new 'leo' style for the package that will use a smaller font.
|
||||
\def\url@leostyle{%
|
||||
|
|
@ -451,6 +451,4 @@ major line width/.initial=1pt,
|
|||
\changemenucolor{gray}{txt}{named}{unibablueI}
|
||||
\fi
|
||||
|
||||
\newcommand{\furl}[1]{
|
||||
\footnote{\url{#1}}
|
||||
}
|
||||
\newcommand{\furl}[1]{\footnote{\url{#1}}}
|
||||
|
|
@ -1,9 +1,9 @@
|
|||
\usepackage[utf8]{inputenc}
|
||||
\usepackage{lmodern}
|
||||
\usepackage[T1]{fontenc}
|
||||
\usepackage{gitinfo2}
|
||||
\ifgit
|
||||
\ifpresentation
|
||||
\usepackage{gitinfo2}
|
||||
\else
|
||||
\ifthesis
|
||||
\usepackage{gitinfo2}
|
||||
|
|
|
|||
Loading…
Reference in New Issue