diff --git a/flake.lock b/flake.lock index d1101e2..3fc3b55 100644 --- a/flake.lock +++ b/flake.lock @@ -1,5 +1,25 @@ { "nodes": { + "cartograph-cf": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1769302787, + "narHash": "sha256-4Ty9XPOnucZcpHtqhILgxpL8CNwbiYOySidsrNarVDc=", + "owner": "0qln", + "repo": "CartographCF-Nerdfont", + "rev": "c5c4a65f7a4c57a3e73219437aff8dde79b9cfa3", + "type": "github" + }, + "original": { + "owner": "0qln", + "repo": "CartographCF-Nerdfont", + "type": "github" + } + }, "flake-parts": { "inputs": { "nixpkgs-lib": "nixpkgs-lib" @@ -51,6 +71,7 @@ }, "root": { "inputs": { + "cartograph-cf": "cartograph-cf", "flake-parts": "flake-parts", "nixpkgs": "nixpkgs" } diff --git a/flake.nix b/flake.nix index e82fd90..a1ac7a3 100644 --- a/flake.nix +++ b/flake.nix @@ -4,6 +4,10 @@ inputs = { flake-parts.url = "github:hercules-ci/flake-parts"; nixpkgs.url = "github:NixOS/nixpkgs/9da7f1cf7f8a6e2a7cb3001b048546c92a8258b4"; + cartograph-cf = { + url = "github:0qln/CartographCF-Nerdfont"; + inputs.nixpkgs.follows = "nixpkgs"; + }; }; outputs = inputs @ { @@ -23,6 +27,10 @@ ... }: with pkgs.lib; let + fonts = with pkgs; [ + ibm-plex + cartographcf-nerdfont + ]; latexPackages = with pkgs; [ latexrun (texlive.withPackages @@ -31,6 +39,7 @@ amsmath biber biblatex + biblatex-ieee changepage csquotes enumitem @@ -51,9 +60,19 @@ makecell appendix apa + csquotes + csquotes-de ])) ]; in { + _module.args.pkgs = import inputs.nixpkgs { + inherit system; + overlays = [ + inputs.cartograph-cf.overlays.default + ]; + config = {}; + }; + # Per-system attributes can be defined here. The self' and inputs' # module parameters provide easy access to attributes of the same # system. @@ -68,15 +87,24 @@ '' cd . + mkdir -p out + + # https://github.com/NixOS/nixpkgs/issues/180639#issuecomment-1178984307 + export HOME=$(mktemp -d) + + # https://wiki.contextgarden.net/Characters_words_and_fonts/Fonts_in_LuaTeX + mkdir -p .fonts + (cd .fonts && ${concatMapStrings (x: "ln -s ${x} '${x.meta.name}'; ") fonts}) + export OSFONTDIR=".fonts" + ls .fonts + build() { latexmk \ - -pdf \ -l -dir-report -file-line-error -verbose \ -interaction=nonstopmode \ "main.tex" } - build || true build ''; installPhase = @@ -92,7 +120,7 @@ devShells.default = with pkgs; mkShell { - nativeBuildInputs = []; + nativeBuildInputs = fonts; packages = [mermaid-cli] ++ latexPackages; shellHook = diff --git a/literature.bib b/literature.bib new file mode 100644 index 0000000..1d8949b --- /dev/null +++ b/literature.bib @@ -0,0 +1,34 @@ +@online{serious-game-analytics-collection, + title = {Ansammlung: Serious Games Analytics}, + url = {https://www.academia.edu/Documents/in/Serious_Games_Analytics}, + urldate = {2026-01-24}, + year = {2000}, +} + +@online{xapi-profile, + title = {xAPI Application Profile for Serious Games}, + url = {https://zenodo.org/records/2598445}, + urldate = {2026-01-24}, + year = {2019}, +} + +@online{dashboard-for-edu-games, + title = {Learning Analytics Dashboards in Educational Games}, + url = {https://myweb.fsu.edu/vshute/pdf/dashboard.pdf}, + urldate = {2026-01-24}, + year = {2021}, +} + +@online{gdpr-and-telemetry, + title = {How Does GDPR Affect xAPI and Learning Tools \& Technology?}, + url = {https://www.watershedlrs.com/blog/product/news/what-is-gdpr}, + urldate = {2026-01-24}, + year = {2018}, +} + +@online{serious-game-analytics-case-study, + title = {Learning Analytics to Guide Serious Game Development: A Case Study Using Articoding }, + url = {https://www.mdpi.com/2073-431X/14/4/122}, + urldate = {2026-01-24}, + year = {2025}, +} diff --git a/main.tex b/main.tex index 1ae0b19..646ee98 100644 --- a/main.tex +++ b/main.tex @@ -1,7 +1,10 @@ \documentclass{seriousgames-seminar} % Literaturverzeichnis-Datei -\addbibresource{references.bib} +\addbibresource{literature.bib} + +% Don't remove unused citations +\nocite{*} \begin{document} @@ -64,7 +67,7 @@ Die Arbeit verortet sich an der Schnittstelle von Serious Games, Learning Analyt \subsection{Serious Games, Learning Analytics und Game Learning Analytics} \label{subsec:serious_games} -\textbf{Serious Games} sind Spiele, deren primäres Ziel ein extrinsischer Nutzen (z. B. Lernen, Training, Verhaltenstraining) ist \cite{Abt1970}. \textbf{Learning Analytics} bezeichnet die Erhebung, Messung, Analyse und Darstellung von Daten über Lernende und Lernkontexte, um Lernen zu verstehen und zu optimieren \cite{Siemens2011}. \textbf{Game Learning Analytics} erweitert dies um spielspezifische Prozess- und Interaktionsdaten \cite{SerranoLaguna2016}. +\textbf{Serious Games} sind Spiele, deren primäres Ziel ein extrinsischer Nutzen (z. B. Lernen, Training, Verhaltenstraining) ist. \textbf{Learning Analytics} bezeichnet die Erhebung, Messung, Analyse und Darstellung von Daten über Lernende und Lernkontexte, um Lernen zu verstehen und zu optimieren. \textbf{Game Learning Analytics} erweitert dies um spielspezifische Prozess- und Interaktionsdaten. \subsection{Telemetrie: Definition und Abgrenzung} \label{subsec:telemetrie} @@ -78,7 +81,7 @@ Telemetrie bezeichnet die instrumentierte Erfassung von Ereignissen und Zuständ \subsection{xAPI und Learning Record Store (LRS)} \label{subsec:xapi_lrs} -Die \textbf{Experience API (xAPI)} ist ein Standard zur Erfassung von Lernerfahrungen in Form von Statements (Actor–Verb–Object) mit optionalen Feldern für Kontext und Resultate \cite{ADL2016}. Ein \textbf{Learning Record Store} speichert diese Statements und stellt sie über APIs für Auswertung bereit. +Die \textbf{Experience API (xAPI)} ist ein Standard zur Erfassung von Lernerfahrungen in Form von Statements (Actor–Verb–Object) mit optionalen Feldern für Kontext und Resultate. Ein \textbf{Learning Record Store} speichert diese Statements und stellt sie über APIs für Auswertung bereit. \begin{figure}[htbp] \centering @@ -96,7 +99,7 @@ Die \textbf{Experience API (xAPI)} ist ein Standard zur Erfassung von Lernerfahr \subsection{Datenschutzgrundlagen (DSGVO) und Governance} \label{subsec:datenschutz} -Telemetrie in Serious Games erfordert Privacy-by-Design: Zweckbindung, Datenminimierung, Transparenz, Zugriffsbeschränkung, sichere Verarbeitung, Aufbewahrung/Löschung sowie klare Rollen (Verantwortliche/Verarbeiter) \cite{EU2016}. Je nach Kontext sind Einwilligung oder andere Rechtsgrundlagen sowie ggf. eine Datenschutz-Folgenabschätzung zu prüfen. +Telemetrie in Serious Games erfordert Privacy-by-Design: Zweckbindung, Datenminimierung, Transparenz, Zugriffsbeschränkung, sichere Verarbeitung, Aufbewahrung/Löschung sowie klare Rollen (Verantwortliche/Verarbeiter) \. Je nach Kontext sind Einwilligung oder andere Rechtsgrundlagen sowie ggf. eine Datenschutz-Folgenabschätzung zu prüfen. \subsection{Abgrenzung zu verwandten Ansätzen} \label{subsec:abgrenzung} @@ -112,7 +115,7 @@ Die in dieser Arbeit verwendeten zentralen Begriffe sind im Anhang~\ref{sec:glos \subsection{Auswertemöglichkeiten in Serious Games} \label{subsec:auswertemöglichkeiten} -Der Stand der Technik umfasst u. a. Dashboards für Stakeholder, Lernstands- und Kompetenzdiagnose aus Interaktionsdaten, Unterstützung personalisierter Förderung, (optional) prädiktive Verfahren zur Früherkennung von Risiken sowie Feedbackmechanismen für Lernende und Lehrende \cite{SerranoLaguna2012}. +Der Stand der Technik umfasst u. a. Dashboards für Stakeholder, Lernstands- und Kompetenzdiagnose aus Interaktionsdaten, Unterstützung personalisierter Förderung, (optional) prädiktive Verfahren zur Früherkennung von Risiken sowie Feedbackmechanismen für Lernende und Lehrende. \subsection{Telemetrie als Engineering-Praxis} \label{subsec:engineering} @@ -408,7 +411,7 @@ error\_occurred & System & experienced & Auftreten eines technischen Fehlers \\ \section{Mock-ups} \label{sec:diagramme} -\begin{figure}[htbp] +\begin{figure}[H] \centering \includegraphics[width=0.9\textwidth]{figures/example-dashboard.png} \caption{Dashboard-Mock-up für Lehrkräfte} @@ -418,7 +421,7 @@ error\_occurred & System & experienced & Auftreten eines technischen Fehlers \\ \section{Glossar} \label{sec:glossar} -\begin{table}[htbp] +\begin{table}[H] \centering \caption{Glossar zentraler Begriffe} \label{tab:glossar} diff --git a/references.bib b/references.bib deleted file mode 100644 index e69de29..0000000 diff --git a/seriousgames-seminar.cls b/seriousgames-seminar.cls index 450f136..9542ac4 100644 --- a/seriousgames-seminar.cls +++ b/seriousgames-seminar.cls @@ -21,7 +21,8 @@ \RequirePackage{enumitem} \RequirePackage{makecell} \RequirePackage{appendix} -\RequirePackage[backend=biber]{biblatex} +\RequirePackage[backend=biber,style=ieee]{biblatex} +\RequirePackage{csquotes} % Schriftarten einstellen (nur mit LuaLaTeX oder XeLaTeX kompilieren!) \setmainfont{IBM Plex Serif}