68 lines
2.4 KiB
TeX
68 lines
2.4 KiB
TeX
|
|
\section{Requirements}
|
|
Wait, what did I want to do again?
|
|
\begin{itemize}
|
|
\item Per-game importer (Web client, File loader, …)
|
|
\item Analyzer modules (number crunching)
|
|
\item Output \& Visualization (CSV, [Geo]JSON, KML, Graphs, …)
|
|
\item Interface (Configuration)
|
|
\begin{itemize}
|
|
\item Expert users/researchers
|
|
\item Staging/designing staff
|
|
\end{itemize}
|
|
\item Cross-game comparisons
|
|
\item Integration of external data (questionnaire results)
|
|
\end{itemize}
|
|
|
|
|
|
\section{Evaluating Kibana}
|
|
|
|
To evaluate whether Kibana is a viable approach for the given requirements, I have created a test environment.
|
|
This setup is documented in \autoref{app:kibana}.
|
|
Two sample datasets were loaded into the Elasticsearch container through HTTP POST requests: \texttt{curl -H 'Content-Type: application/x-ndjson' -XPOST 'elastic:9200/\_bulk?pretty' --data-binary @gamelog.json}.
|
|
Once Kibana was told which fields hold the spatial information, it is possible to have a first visualization.
|
|
However, this view is optimized for the context of web log processing, so it has a rather low spatial resolution as shown in \autoref{img:kibana} and \autoref{img:kibana2}.
|
|
|
|
|
|
… taugt nich
|
|
\begin{itemize}
|
|
\item powerful timeseries database
|
|
\item complex setup
|
|
\item fast paced environment
|
|
\item low spatial resolution => privacy optimized
|
|
\end{itemize}
|
|
\image{\textwidth}{../../PresTeX/images/kibana}{Game trace in Kibana}{img:kibana}
|
|
\image{\textwidth}{../../PresTeX/images/kibana2}{Game trace in Kibana}{img:kibana2}
|
|
|
|
|
|
\section{Architecture}
|
|
Game independance:
|
|
\begin{itemize}
|
|
\item log importer/transformer necessary
|
|
\end{itemize}
|
|
\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}
|
|
|
|
\item standalone (indep. of any game)
|
|
\item own client for game server (due to CORS/XSS prevention prohibiting shared use of game server assets in other host)
|
|
\item API for integration
|
|
\item allow load distribution
|
|
\end{itemize}
|
|
\image{\textwidth}{map-reduce.pdf}{Data flows}{img:flow}
|
|
\image{\textwidth}{architecture.pdf}{archoitecure overview}{img:arch}
|