\documentclass[11pt,a4paper]{report}
\usepackage[master]{itecthesis}
\usepackage[english]{babel}
%\usepackage{keyval}
\usepackage{verbatim}
\usepackage[hidelinks]{hyperref}
\usepackage{lmodern}
%\usepackage[utf8]{inputenc}
%\RequirePackage{fancyvrb}

%\usepackage{glossar}
%\makeindex %-s "%dm\itecthesis.ist" "%bm" %for the index

%add for javacoding
\usepackage{listings}
\usepackage{color}
\usepackage{xcolor}
\definecolor{dkgreen}{rgb}{0,0.6,0}
\definecolor{gray}{rgb}{0.5,0.5,0.5}
\definecolor{mauve}{rgb}{0.58,0,0.82}

\lstset{frame=tb,
	language=Java,
	aboveskip=3mm,
	belowskip=3mm,
	showstringspaces=false,
	columns=flexible,
	basicstyle={\small\ttfamily},
	numbers=none,
	numberstyle=\tiny\color{gray},
	keywordstyle=\color{blue},
	commentstyle=\color{dkgreen},
	stringstyle=\color{mauve},
	breaklines=true,
	breakatwhitespace=true,
	tabsize=3
}


%graphics
\usepackage{graphicx}

%for € sign
\usepackage{textcomp}

\begin{document}

\title{Gamification - Softwaresysteme spielerisch erlernen}
\author{Christopher Robin Hribar \\ 
\textit{Angewandte Informatik} \\
\textit{Alpen-Adria-Universität Klagenfurt}\\
Eberndorf, Österreich \\
chhribar@edu.aau.at}

%\begin{comment} 
\maketitle


\begin{preface}{Ehrenwörtliche Erklärung}
	Ich erkläre ehrenwörtlich, dass ich die vorliegende Schrift verfasst und die mit ihr unmittelbar verbundenen Arbeiten selbst durchgeführt habe. Die in der Schrift verwendete Literatur sowie das Ausmaß der mir im gesamten Arbeitsvorgang gewährten Unterstützung sind ausnahmslos angegeben. Die Schrift ist noch keiner anderen Prüfungsbehörde vorgelegt worden.\\\\\\\\Klagenfurt, im \finaldate
\end{preface}

\begin{preface}{Danksagung}
	An dieser Stelle möchte ich mich als Erstes bei meinem Bachelorbetreuer Mathias Lux für die stets gute Zusammenarbeit bedanken. Die Alpen-Adria-Universiät ermöglichte es mir, mich weiterzubilden und stellte den Zugang zu Wissen bereit. Danke an diejenigen die mich bei diesem Thema unterstützt haben und vor allem ein großes Dankeschön an die Probanden meiner Studie, die sich freiwillig entschlossen haben bei dieser teil\-zu\-nehmen.
\end{preface}

\begin{preface}{Zusammenfassung}
	Gamification ist der Gebrauch von Spielelementen in einem spiel-fremden Kontext \cite{defgami}. Diese Methode gewinnt immer mehr an Interesse, nicht nur akademisch sondern auch industriell wird Gamification erforscht und eingesetzt. Es gibt einige Ergebnisse, wie spielerisches Lernen den Lernprozess beeinflussen \cite{learn}, jedoch meist im pädagogischen Umfeld. Der Ansatz kann aber helfen neue Softwaresysteme spielerisch und selbstständig zu erlernen. Diese Arbeit beschäftigt sich mit Gamification, deren Fokus auf dem eigenständigen Erlernen von neuen Softwaresystemen gelegt ist. Dazu wird eine eigene, plattformunabhängige Game-Engine entwickelt und als Prototyp in ein Projekt-Management-Tool integriert. Es wird Allgemein darauf eingegangen was "Gamification" bedeutet und wie es derzeit eingesetzt wird. Um zu zeigen, dass durch hinzufügen von Spielelementen der Lernprozess beeinflusst wird, wurde eine Mixed-Method-Studie durchgeführt. In der Studie wurden 10 Probanden in 2 Gruppen aufgeteilt, eine Gruppe mit gamifizierter Software und eine Gruppe mit dem unveränderten Projekt-Managment-Tool. Die Ergebnisse deuten auf einen leichten Effekt, dass mit Gamification schneller ein Programm erlernt werden kann.
\end{preface}

{
	\setlength{\baselineskip}%
	{1.5\baselineskip}
	\afterpreface
}


{
	\setlength{\baselineskip}%
	{1.5\baselineskip}
	\listoffigures
	\clearemptydoublepage
	\listoftables
	\clearemptydoublepage
}

\chapter{Einführung}
Der Ansatz von Gamification ist es, Computerspielelemente in einen spiel-fremden Kontext einzuführen. Mittels Fortschritt ebenso wie mit Erfahrungspunkten soll eine Motivationssteigerung und dadurch eine Verbesserung des Lernerfolges erzielt werden. Damit ist es nicht mehr notwendig, große Einschulungen zu halten, weil die Benutzer selbst das System spielerisch erlernen können. Es werden künstliche Aufgaben und Belohnungen konstruiert, die ähnliche Effekte zu dem realen Pendant erzeugen. \\
Doch was macht die Faszination von Computerspielen aus? Wie Tynan Sylvester in seinem Buch "Designing Games" in dem Untertitel beschreibt "A guide to Engineering Experiences"\cite{tynan}, geht es für einen Spieleentwickler darum Erfahrungen zu generieren und Emotionen in dem Spieler/der Spielerin auszulösen. Kurz gesagt sind Computerspiele ein Medium der Unterhaltung. Vor allem bei Multiplayer-Spielen, also in Spielen in der mehr als eine Person zusammen oder gegeneinander spielen, ist auch der kompetitive Wettstreit von großer Bedeutung. Das wird besonders in der E-Sport-Szene bemerkbar, da mittlerweile Turniere mit Preisgeldern von bis zu \$34,292,599.00 \cite{esport} ausgetragen werden, indem Teams gegeneinander antreten. \\
Gamification gewann in den letzten Jahren immer mehr an Interesse, sowohl im industriellen wie auch im akademischen Bereich \cite{servicemarketing}. Ein Beispiel für den Anstieg im akademischen Bereich zeigt Figure \ref{fig:searchhits} aus der Arbeit "Does Gamification Work?" \cite{doesitwork}. Zu sehen sind Suchergebnisse aus gängigen Suchmaschinen für wissenschaftliche Arbeiten. 2008 wurde das erste Mal "Gamification" in einem Blog-Eintrag erwähnt und 2010 wurde der Term auch industriell weit verbreitet \cite{servicemarketing}. Seit jeher ist eine Steigerung von Interesse zu beobachten.
\begin{figure}[h!]
	\includegraphics[width=\linewidth]{images/searchhits.png}
	\caption{Abbildung aus Hamari, Does Gamification Work? \cite{doesitwork}}
	\label{fig:searchhits}
\end{figure}
\\
Auch in der Industrie gibt es Beispiele für Gamification. Es existieren etablierte Unternehmen, die sich auf Gamification spezialisieren \cite{gamifirmen}. Aber schon kleine Elemente, wie öffentliche Auszeichnungen und Bestenlisten, die in Plattformen wie zum Beispiel bei StackOverflow \cite{stackbadges} integriert werden, zählen als Gamification. Hier wird ein Augenmerk auf öffentliche (auch von anderen Benutzer/innen einsehbar) Errungenschaften gelegt. Andererseits gibt es "private" Errungenschaften, die nur dem Avatar (Spielfigur oder Spieler/in selbst) gutgeschrieben werden. So wird ein sogenannter "Skill-Tree" aufgebaut, der die Fähigkeit des Avatars abbildet und somit den Lernfortschritt widerspiegelt. Dies wird auch in dem Prototyp der Arbeit implementiert. \\
Ziel des Prototypen ist es, eine Game-Engine zu entwerfen die in möglichst beliebigen Softwareapplikationen integrierbar ist. Die erste Implementierung und Tests werden auf Basis einer Applikation angesetzt. Die Game-Engine beinhaltet ein Quest-System, dass die Aufgaben modelliert und ein Levelsystem, dass das Belohnungssystem widerspiegelt. Für die Studie wird der Prototyp in ein bestehendes Projekt-Management-Tool "GanttProject"\cite{gantt} integriert.\\
Zum Abschluss wird mittels der Studie beobachtet, ob eine Tendenz zur Steigerung des Lernerfolges mit Gamification zu erkennen ist.

\section{Motivation}
Täglich werden über 1000 neue Apps in bekannten App-Stores veröffentlicht. Im Juni 2019 stehen alleine im Google Play Store 2,7 Millionen Apps zur Verfügung \cite{store}. Dies alleine zeigt schon, dass es schwer ist, den Überblick zu behalten. Jedes Stück Software hat seine eigene Bedienung, doch ist es meist schwer den Funktionsumfang überschaubar zu halten. Nun geschieht es, zum Beispiel, dass neue firmeninterne Tools ausgerollt werden und mittels Einschulungen der Mitarbeiter das neue System integriert wird. Dies bedeutet aber hohe Einschulungs- und Supportkosten, Zeitaufwand und damit noch weitere Ausgaben für ein Unternehmen. Nicht nur im Unternehmerkontext kann ein neues System zu erlernen frustrierend und langwierig sein. Spielerisches Lernen zeigt besonders im Kindesalter Wirksamkeit und kann auch im Erwachsenenalter helfen, neue Systeme leichter zu lernen. Dies sind gute Voraussetzungen dafür, dass Spielelemente leichteres Lernen hervorrufen. Computerspiele sind, vereinfacht gesagt, Software mit einer zeitlichen Komponente und zusätzliche Aufgaben. Das bedeutet, dass jedes Stück Software mit Computerspielelementen ausgestattet und mit nur kleinen Änderungen Spielelemente eingeführt werden können, um dadurch einzigartige Spiele zu entwickeln. Gamification kann auch für eine Marketing-Strategie herangezogen werden, ein Beispiel dafür ist ein Spiel welches für eine Fastfood-Kette von "gamewheel" entwickelt wurde. \textit{"For the latest product promotion „The Angriest Whopper“ Burger King and their advertising agency setup München were looking for a new way to engage with their audience and get some additional traffic to their restaurants. The solution was a fast and casual game built on our innovative Game Ad Platform and integrated into Burger King’s existing mobile app. The principle of the game is simple yet addictive: the player is challenged to collect 20 Jalapeños in under 20 seconds in order to unlock an exclusive discount coupon redeemable at the Burger King restaurants."
}\cite{bk} Das Spiel wurde nach 14 Tagen 336,700 mal gespielt, es wurden dabei 7,866,146 Jalapeños gesammelt und 135,883 Gutscheine gewonnen. \\
Es existieren auch Studien, die zeigen, dass Gamification einen positiven Effekt auf die Motivation ausübt \cite{doesitwork}. Die Probanden aller Studien gaben an, dass Gamification positive Erfahrungen bringen, doch ist "Freude" subjektiv und stark von dem Benutzer/der Benutzerin abhängig. Dieser Ansatz wird auch in dieser Arbeit weitergeführt und die Studie soll weitergehende Ergebnisse aufdecken.

\section{Related Work}
"Raising engagement in e-learning through gamification" \cite{learn} bietet eine Grundlage wie Gamification in der Bildung eingesetzt werden kann. Außerdem wird ein theoretisches Beispiel, wie eine "E-Learning"-Applikation gamifizert werden kann, ausgearbeitet. Die Arbeit "Does Gamification Work? - A Literature Review of Empirical Studies on Gamification." \cite{doesitwork} untersucht empirische Studien im Bereich von Gamification. Des Weiteren wird auf den derzeitigen Stand der Forschung eingegangen und zeigt Lücken in bereits existierender Literatur. Die Arbeit diente aufzuzeigen, dass ein akademisches Interesse an Gamification besteht und lieferte Beispiele von Studien. "Defining gamification: a service marketing perspective." \cite{servicemarketing} deckte zusätzlich auf, dass ein industrielles Interesse besteht und definiert Gamification für sich. Das Buch "Designing Games - A Guide to Engineering Experiences" stellt den Entwickler in Vordergrund und beschreibt Prinzipien und Designstrukturen die für die Spieleentwicklung förderlich sind. "Human-Computer Interaction" \cite{keith} beschreibt, unter anderem, Testmethoden im Bereich von Benutzerschnittstellen. Dies unterstütze den Aufbau der Studie, da Mensch-Computer Interaktion stark mit Computerspiele verknüpft ist.

\chapter{Implementierung}
Die Implementierung erfolgt in Java um eine größtmögliche Plattformunabhängigkeit zu erzielen. Für etablierte Computerspieler/innen ist die Terminologie in der Domain intuitiv. Spieleentwickler versuchen auch auf gewohnte und etablierte Terme und Methoden zurückzugreifen. Bedeutungen von einzelnen Termen variieren aber oft, deshalb werden nun die relevanten Spielelemente definiert und deren Implementation beschrieben. Einer der Hauptkomponente eines Spieles ist die "Game-Loop" (\ref{gameloop}). Wie der Name schon sagt, handelt es sich um eine endlose Schleife die durch Eingaben die "Game-Engine" (\ref{gameengine}) beeinflussen und den aktuellen Zustand ausgibt. Zusätzlich ist die vorhin genannte "Game-Engine" notwendig, da sie die allgemeine Spielmechanik abbildet. Die Spielmechanik setzt die Regeln, wie der Spielzustand manipuliert werden kann. Die Game-Engine beinhaltet in diesem Fall ein Questsystem (Aufgabenmodellierung) und ein Levelsystem (Erfolgsmodellierung). Des Weiteren wurde die gesamte Game-Engine mittels JUnit-Tests getestet und eine Code-Coverage von $\geq$90\% erreicht.\\

\section{Avatar}
Ein Avatar ist eine künstliche Person oder ein grafischer Stellvertreter einer echten Person. Er kann also eine Spielfigur wie in "Mensch ärgere Dich nicht" sein, als auch ein Profil von unterschiedlichen Personen auf Internetplattformen. Im Fall des Prototypen ist der Avatar die Person, die die Applikation benützt.

\section{Quest}
\label{quest}
Ein Quest ist eine Suche oder Betätigung, um etwas zu finden oder zu erhalten, kann aber auch in kleineren Aufgaben (Tasks) unterteilt werden. Ein Beispiel aus dem Alltag für ein Quest wäre "Einkauf" mit dem Unteraufgaben "kaufe Milch" und "kaufe Eier". Wenn als Erstes Milch gekauft wird, wurde eine Aufgabe zwar erledigt, jedoch der Quest "Einkauf" noch nicht abgeschlossen. Erst beim erledigen der zweiten Aufgabe "kaufe Eier" sind nun alle Aufgaben der Quest erledigt und diese kann somit abgeschlossen werden. Bei den Abschlüssen von Quests werden Erfahrungspunkte gesammelt, die in das Levelsystem übergehen. Folgende Quests wurden für die Studie konstruiert:
\begin{description}
	\item [Quest 0:] "Willkommen bei Letzplay! - Viel Spaß beim spielen!" \\
	Erforderliche Stufe: 0, Erfahrungspunkte: 10
		\begin{description}
			\item [Task:] "Füge dich als Ressource hinzu! - Du bist der Projektplaner, also füge dich als Erstes hinzu!"
		\end{description}
	\item [Quest 1:] "Rollenerstellung - Füge nun alle Rollen hinzu" \\
	Erforderliche Stufe: 1, Erfahrungspunkte: 5
		\begin{description}
			\item [Task:] "Programmierung - Füge Programmierung den Rollen hinzu"
			\item [Task:] "Geschäftsführung - Füge Geschäftsführung den Rollen hinzu"
			\item [Task:] "Marketing - Füge Marketing den Rollen hinzu"
			\item [Task:] "Finanzen - Füge Finanzen den Rollen hinzu"
		\end{description}
	\item [Quest 2:] "Erstelle geeignete Ressourcen - Du hast 3 Personen zur Verfügung: Chris ist der technisch Affine, Franz ist geschickt mit dem Umgang von Menschen und Julia behält den Blick für das große Ganze! Nun füge sie als Ressourcen hinzu"\\
	Erforderliche Stufe: 1, Erfahrungspunkte: 5
		\begin{description}
			\item [Task:] "Füge Chris hinzu - Füge Chris unter Ressourcen als Full-Stack-Developer hinzu"
			\item [Task:] "Füge Franz hinzu - Füge Franz unter Ressourcen als Marketing hinzu"
			\item [Task:] "Füge Julia hinzu - Füge Julia unter Ressourcen als Geschäftsführung hinzu"
		\end{description}
	\item [Quest 3:] "Milestones - Füge sie als Task hinzu und setzte sie als Milestone" \\
	Erforderliche Stufe: 2, Erfahrungspunkte: 5
		\begin{description}
			\item [Task:] "Appentwicklung - Füge Appentwicklung als Task hinzu und markiere es als Milestone"
			\item [Task:] "Marketingplanung - Füge Marketingplanung als Task hinzu und markiere es als Milestone"
			\item [Task:] "Businessplan - Füge Businessplan als Task hinzu und markiere es als Milestone"
		\end{description}
	\item [Quest 4:] "Tasks - Füge nun die Aufgaben als Task hinzu"\\
	Erforderliche Stufe: 2, Erfahrungspunkte: 50:
		\begin{description}
			\item [Task:] "Backend - Füge die Aufgabe Backend hinzu"
			\item [Task:] "Frontend - Füge die Aufgabe Frontend hinzu"
			\item [Task:] "Infrastruktur - Füge die Aufgabe Infrastruktur hinzu"
			\item [Task:] "Demo-Vorstellung - Füge die Aufgabe Demo-Vorstellung hinzu"
			\item [Task:] "Werbekampagne - Füge die Aufgabe Werbekampagne hinzu"
			\item [Task:] "Revenue-Model - Füge die Aufgabe Revenue-Model hinzu"
			\item [Task:] "Umsatzplanung - Füge die Aufgabe Umsatzplanung hinzu"
		\end{description}
	\item [Quest 5:] "Dependencies - Füge nun alle Abhängigkeiten hinzu"\\
	Erforderliche Stufe: 2, Erfahrungspunkte: 7
		\begin{description}
			\item [Task:] "Infrastruktur->Backend - Backend ist von Infrastruktur abhängig"
			\item [Task:] "Backend->Frontend - Frontend ist von Backend abhängig"
			\item [Task:] "Frontend->Demo - Demo-Vorstellung ist von Frontend abhängig",
			\item [Task:] "Appentwicklung->Werbekampagne - Die Appentwicklung muss vollständig sein, bevor die Werbekampagne starten kann"
			\item [Task:] "Demo-Vorstellung->Werbekampagne - Das Produkt muss vorher vor\-ge\-stellt werden, bevor die Werbekampagne starten kann"
			\item [Task:] "Revenue-Model->Umsatzplan - Es muss erst klar sein wie Geld eingenommen werden kann, bevor der Jahresumsatz geplant werden kann"
		\end{description}
	\item [Quest 6:] "Ressourcenzuteilung - Du hast Ressourcen zur Verfügung und Aufgaben die erledigt werden müssen, teile nun die Ressourcen ein"\\
	Erforderliche Stufe: 3, Erfahrungspunkte: 5
		\begin{description}
			\item [Task:] "Backend:Programmierung - Teile die Aufgabe Backend der Pro\-gram\-mie\-rung zu"
			\item [Task:] "Frontend:Programmierung - Teile die Aufgabe Frontend der Pro\-gram\-mie\-rung zu"
			\item [Task:] "Infrastruktur:Programmierung - Teile die Aufgabe Infrastruktur der Pro\-gram\-mie\-rung zu"
			\item [Task:] "Demo-Vorstellung:Marketing - Teile die Aufgabe Demo-Vorstellung den Marketing zu"
			\item [Task:] "Werbekampagne:Marketing - Teile die Aufgabe Werbekampagne den Marketing zu"
			\item [Task:] "Revenue-Model:Geschäftsführung - Teile die Aufgabe Revenue-Model den Geschäftsführer zu"
			\item [Task:] "Umsatzplanung:Finanzen - Teile die Aufgabe Umsatzplanung den Finanzen zu"
		\end{description}
	\item [Quest 7:] "Zeiteinteilung - Teile nun allen Tasks die Zeit zu"\\
	Erforderliche Stufe: 4, Erfahrungspunkte: 8
		\begin{description}
			\item [Task:] "Backend: 75 Tage - Backend braucht 75 Tage"
			\item [Task:] "Frontend: 84 Tage - Frontend braucht 84"
			\item [Task:] "Infrastruktur: 60 Tage - Infrastruktur braucht 60 Tage"
			\item [Task:] "Demo-Vorstellung: 5 Tage - Demo-Vorstellung braucht 5 Tage"
			\item [Task:] "Werbekampagne: 38 - Werbekampagne braucht 38 Tage"
			\item [Task:] "Revenue-Model: 131 - Revenue-Model braucht 131 Tage"
			\item [Task:] "Umsatzplanung: 131 - Umsatzplanung braucht 131 Tage"
		\end{description}
	\item [Quest 5:] "Dependencies - Füge nun alle Abhängigkeiten hinzu"\\
	Erforderliche Stufe: 2, Erfahrungspunkte: 7
		\begin{description}
			\item [Task:] "Infrastruktur->Backend - Backend ist von Infrastruktur abhängig"
			\item [Task:] "Backend->Frontend - Frontend ist von Backend abhängig"
			\item [Task:] "Frontend->Demo - Demo-Vorstellung ist von Frontend abhängig",
			\item [Task:] "Appentwicklung->Werbekampagne - Die Appentwicklung muss voll\-stän\-dig sein, bevor die Werbekampagne starten kann"
			\item [Task:] "Demo-Vorstellung->Werbekampagne - Das Produkt muss vorher vor\-ge\-stellt werden, bevor die Werbekampagne starten kann"
			\item [Task:] "Revenue-Model->Umsatzplan - Es muss erst klar sein wie Geld eingenommen werden kann, bevor der Jahresumsatz geplant werden kann"
		\end{description}
	\item [Quest 6:] "Ressourcenzuteilung - Du hast Ressourcen zur Verfügung und Aufgaben die erledigt werden müssen, teile nun die Ressourcen ein"\\
	Erforderliche Stufe: 3, Erfahrungspunkte: 5
		\begin{description}
			\item [Task:] "Backend: Programmierung - Teile die Aufgabe Backend der Pro\-gram\-mie\-rung zu"
			\item [Task:] "Frontend: Programmierung - Teile die Aufgabe Frontend der Pro\-gram\-mie\-rung zu"
			\item [Task:] "Infrastruktur: Programmierung - Teile die Aufgabe Infrastruktur der Pro\-gram\-mie\-rung zu"
			\item [Task:] "Demo-Vorstellung: Marketing - Teile die Aufgabe Demo-Vorstellung den Marketing zu"
			\item [Task:] "Werbekampagne: Marketing - Teile die Aufgabe Werbekampagne den Marketing zu"
			\item [Task:] "Revenue-Model: Geschäftsführung - Teile die Aufgabe Revenue-Model den Geschäftsführer zu"
			\item [Task:] "Umsatzplanung: Finanzen - Teile die Aufgabe Umsatzplanung den Finanzen zu"
		\end{description}
	\item [Quest 7:] "Zeiteinteilung - Teile nun allen Tasks die Zeit zu"\\
	Erforderliche Stufe: 4, Erfahrungspunkte: 8
		\begin{description}
			\item [Task:] "Backend: 75 Tage - Backend braucht 75 Tage"
			\item [Task:] "Frontend: 84 Tage - Frontend braucht 84"
			\item [Task:] "Infrastruktur: 60 Tage - Infrastruktur braucht 60 Tage"
			\item [Task:] "Demo-Vorstellung: 5 Tage - Demo-Vorstellung braucht 5 Tage"
			\item [Task:] "Werbekampagne: 38 - Werbekampagne braucht 38 Tage"
			\item [Task:] "Revenue-Model: 131 - Revenue-Model braucht 131 Tage"
			\item [Task:] "Umsatzplanung: 131 - Umsatzplanung braucht 131 Tage"
		\end{description}
\end{description}


\section{Levelsystem}
Erfahrungspunkte sind ein Maß für die Entwicklung des Avatars. Wenn also ein Quest abgeschlossen wurde, wird der Avatar mit Erfahrungspunkte (kurz: EP, EXP, XP) belohnt. Durch erledigen von Aufgaben sammelt der Avatar Erfahrungen. Meist erfolgt bei erreichen einer bestimmten Menge von Erfahrungspunkte ein "Stufenaufstieg". Ein Stufe (auch Level) ist meinst eine Zahl die mit 1 beginnt und bei einem Stufenaufstieg inkrementiert wird. Somit ist klar, dass ein Avatar mit Stufe 5 eine höhere Erfahrungsstufe hat als ein Avatar mit Stufe 1. Das implementierte Levelsystem startet bei Stufe 0 und einer kleinen Quest, nämlich sich selbst im Projekt hinzuzufügen. Dies dient als Einstieg, so gesehen ein kleines Tutorial, und nach der kleinen Aufgabe startet man mit Stufe 1 mit den davor beschriebenen Quests. Ziel ist es die Maximalstufe 5 zu erreichen, dies geschieht nach erledigen aller Quests und somit ist "das Spiel" beendet.

\section{Game-Loop}
\label{gameloop}
Die Spielschleife ist eine endlose Schleife die solange besteht wie das Spiel läuft. Die Funktionen der Game-Loop sind die Verarbeitung des Inputs, die Aktualisierung des Spielzustandes und die Anzeige (Output), die regelmäßig wiederholt ausgeführt werden. Als Input dienen in der Implementierung Text-Trigger. Wird eine Funktion im Programm ausgeführt, übergibt diese einen Trigger als Input an den Prototypen. Beim Aktualisieren werden die Aufgaben erledigt, wenn sie durch einen richtigen Trigger im Input ausgelöst wurden. Die Ausgabe ist der Ist-Zustand des Spieles, also das derzeitige Level und verfügbare Aufgaben. Ein Auszug der GanttProject-GameLoop:

\begin{lstlisting}
public class GanttGameLoop implements GameLoop {
	@Override
	public void init() {
		game.initQuests(GanttProject.init());
	}

	@Override
	public void input(String trigger) {
		game.trigger(trigger);
	}

	@Override
	public void update() {
		game.update();
	}

	@Override
	public Output output() {
		return new Output(game.availableQuests(), game.currentLvl(),
		game.currentExp());
	}
}
\end{lstlisting}

\section{Game-Engine}
\label{gameengine}
So wie die Gesetze der Physik bestimmen, wie wir als Mensch mit unserer Umwelt physisch interagieren, beschreibt die Game-Engine, wie der Spieler/die Spielerin mit der Spielumgebung interagieren kann. In der Implementierung beinhaltet die Spielmechanik ein Questsystem und ein Levelsystem.\\
Das Questsystem beinhaltet Aufgaben, die erledigt werden müssen, um die Quest ab\-zu\-schließen. Bei Abschluss einer Quest werden Erfahrungspunkte gesammelt, welche in das Levelsystem übergehen. Aufgaben werden durch Trigger gelöst. So modelliert man zum Beispiel für die Aufgabe "Füge Chris als Ressource hinzu" den Trigger "res:add:chris". "res" steht für den Typ von einem Trigger, "add" die Funktion und "chris" ist der Wert. Kommt nun als Input der Trigger "res:add:chris" wird die vorher genannte Aufgabe gelöst und gegebenenfalls abgeschlossen. Ein Auszug aus der Questklasse:
\begin{lstlisting}
public class Quest implements Trigger {
	private String title;
	private String description;
	private List<Task> taskList;
	private int minLvl;
	private float gainExp;
	private boolean finished;
	private List<String> triggers;
	
	public Progression progression() {
		int done = 0;
		for (Task task : taskList) {
			if (task.isDone()) {
				done++;
			}
		}
		return new Progression(done, taskList.size());
	}
	
	@Override
	public void trigger(String msg) {
		if (triggers.contains(msg)) {
			for (Task t : taskList) {
				t.trigger(msg);
			}
		}
	}
}
\end{lstlisting}
Das Levelsystem soll den Fortschritt des Lernerfolgs widerspiegeln. So sollen zum Beispiel nur "leichte" Quests bei niedrigem Level angezeigt werden und bei Erreichen einer höheren Stufe bekommt der Spieler dementsprechend "schwerere" Quests. Das Levelsystem beinhaltet die aktuelle Stufe und die gesammelten Erfahrungspunkte. Durch erledigen einer Quest werden Erfahrungspunkte in Form von 1-100\% gutgeschrieben. Sobald $\geq$100\% erreicht wird, steigt der Benutzer eine Stufe auf. Die überschüssigen Punkte werden für den nächsten Stufenaufstieg gutgeschrieben.\\
Es ist auch möglich, den Spielstand zu speichern und auch zu laden, dies wurde für die Studie nicht benötigt.

\chapter{Integration in GanttProject}
Das Ziel ist es zu zeigen, dass Spielelemente in einer Software den Lernerfolg steigert. Der Prototyp wird in GanttProject integriert und die umgeänderte Software wird zur Studie herangezogen.

\section{Warum GanttProject}
GanttProject ist ein ausgereiftes Projekt-Management-Tool, welches 2003 gegründet wurde und ist als "Free and Open Source" sowie auch für kommerzielle Zwecke frei verwendbar. Es ist in Java geschrieben und dadurch läuft es auf jeder Plattform, auf der die Java Runtime verfügbar ist. \cite{gantt} \\
Des Weiteren ist es ein unbekanntes Tool, das für die Studie hilfreich ist, da kein Vorwissen vorhanden sein darf. Aufgrund des wirtschaftlichen Nutzen ist ein Projekt-Plan-Tool zielführend, da es zeigt, dass für jede Software eine Gamification möglich ist. Das einzige Problem ist, dass Projekt-Management-Tools im Allgemeinen nicht unbekannt sind und dieses Vorwissen in der Studie auch erhoben und berücksichtigt wird.

\section{Integration}
Da der Sourcecode von GanttProject auf GitHub\cite{git} online ist, wurde das Projekt auf ein privates Repository\cite{fork} verzweigt. Der Prototyp wird in einem eigenen Projekt entwickelt und als Package (.jar) exportiert, welches dann im GanttProject-Fork im Branch "letzplay" importiert wird. Es ist nun nur noch nötig die Trigger im Sourcecode auszulösen und die Ausgabe darzustellen. Beispielweise wird unter hinzufügen einer Person im "HumanResourceManager", was die Personen-Ressourcen modelliert, der Trigger "res:add:\ NAME" hinzugefügt. Um den Rest kümmert sich der Prototyp. Wenn also ein Trigger den Zustand verändert wird dieser auch im GanttProject angezeigt. Die Anzeige, bzw. Ausgabe der Game-Engine wird direkt in die Benutzeroberfläche integriert. Dazu wurde ein eigenes Paneel im Programm hinzugefügt, dass das aktuelle Level und die verfügbaren Quests anzeigt. Die Questansicht erfolgt über eine Baum-Darstellung und mittels anklicken wird die Beschreibung der ausgewählten Aufgabe darunter angezeigt, Abbildung: \ref{fig:quest}.

\begin{figure}[h!]
	\includegraphics[width=\linewidth]{images/questdiagram.jpg}
	\caption{Erklärung des Questsystems.}
	\label{fig:quest}
\end{figure}

Da das GanttProject aus vielen Modulen besteht, wird nun kurz darauf eingegangen wo welche Änderungen durchgeführt wurden. Nachfolgende Pfade werden relativ vom Root-Verzeichniss ".../ganttproject/" angegeben. Der Kern des Projektes ist unter dem Modul "ganttproject". Darin befinden sich die Library-Dateien, in der auch der Prototyp eingebunden wurde, sowie das "Source-Verzeichniss" (src). Unter /src/net/sourceforge/ganttproject befinden sich alle Modellierungen bezüglich "Tasks", "Resources" und "Roles". Diese drei genannten Objekte bilden die Grundlage für das Projekt-Management-Tool und sind für die Studie notwendig. Die Trigger für "Roles" wurde in der Klasse "RoleSetImpl" integriert und sieht folgend aus:\\
\begin{lstlisting}
//creating role trigger
GanttGameLoop.getGameLoop().input(
	rol+add+name.toLowerCase().trim());
GameOutput.refresh();
\end{lstlisting}
Die Ressourcen-Trigger für Hinzufügen wurde in "HumanResourceManager" und für Ressourcenzuteilung in "ResourceAssignmentCollectionImpl" implementiert. Trigger für Tasks wurden in "TaskManagerImpl" hinzugefügt und die Abhängigkeiten in "TaskDependencyImpl".\\
Die Ausgabe (Abbildung: \ref{fig:quest}) wurde in einer eigenen Klasse entwickelt. Die Klasse "GameOutput" beinhaltet die "Swing"-Komponenten (Grafische Darstellung) und auch die Ausgabe von der Game-Engine, die in der Benutzeroberfläche von GanttProject angezeigt wird. Bei einem Levelaufstieg wird ein Pop-Up eingeblendet, Abbildung: \ref{fig:popup}.

\begin{figure}[h!]
	\includegraphics[width=\linewidth]{images/lvl5.png}
	\caption{Pop-Up für Erreichen des maximalen Levels.}
	\label{fig:popup}
\end{figure}

Um GanttProject zu kompilieren wird im Hauptverzeichnis der Befehl "./gradlew distbin" ausgeführt. Zum Starten begibt man sich unter "/ganttproject-builder/dist-bin" im Hauptverzeichnis und führt "./ganttproject" aus.

\chapter{Studie}
Die Studie soll eine mögliche Korrelation zwischen der benötigten Zeit zum Erledigen einer Aufgabe, in einer den Versuchspersonen unbekannten Software, mit und ohne Gamification aufdecken. Die Hypothese ist, dass die Gruppe mit Gamification signifikant schneller ist als die Kontrollgruppe. Die Studie ist zu den Probanden komplett offen und transparent.

\section{Studienaufbau}
Es werden 10 Testpersonen ohne Vorwissen in GanttProject herangezogen. Die Probanden werden alternierend in zwei Gruppen aufgeteilt, das bedeutet, dass die erste Testperson der Gruppe A, die Zweite Gruppe B, die Dritte Gruppe A,... zugeteilt wurde. Die Kontrollgruppe (Gruppe A) bekommt die gleiche Aufgabe die sie nur mittels offizieller Dokumentation erledigen müssen, jedoch ohne die Integration der Game-Engine. Die Versuchsgruppe (Gruppe B) bekommt zusätzlich die gamifizierte Version der Software. Die Aufgaben sind identisch in beiden Gruppen und die Kontrollgruppe bekommt auch die Aufgaben portioniert wie im Questsystem. Der einzige Unterschied ist, dass die Versuchsgruppe B eine zusätzliche einführende Aufgabe, nämlich "Füge dich selbst als Ressource ein!" um das spielerische "Du bist Teil des Spieles" zu unterstützen. Die Messung erfolgt in Zeit, von dem Beginn bis zum erledigen der Aufgaben.

\section{Studienablauf}
Nachdem die Testperson der Gruppe zugewiesen wurden, wird zuerst der Studienaufbau beschrieben. Als nächstes wurde ein Fragebogen von dem Beobachter ausgefüllt. Der Fragebogen beschäftigt sich mit der Erhebung ob GanttProject bekannt bzw. verwendet worden ist. Letzteres führt zum Ausschluss der Studie, da der Lernerfolg nicht mehr beurteilt werden kann. Des Weiteren wird der bisherige Kontakt zu Computerspielen erhoben. Als Letztes wird die Muttersprache abgefragt und wie gut der Umgang mit englischsprachiger Software ist. Da GanttProject und offizielle Dokumentation nur in englischer Sprache zur Verfügung steht, führen unzureichende Englischkenntnisse zum Ausschluss der Studie.\\
Als nächstes wird die offizielle Dokumentation, in diesem Fall ein Tutorial-Video, den Probanden bereitgestellt und sie werden aufgefordert, dieses anzusehen. Das offizielle Video \cite{video} hat eine Länge von 15 Minuten und 4 Sekunden und zeigt umfassend den Funktionsumfang. Da viele Punkte besprochen werden, die nicht relevant für die Studie sind, wurde das Video auf 8 Minuten und 58 Sekunden zugeschnitten um die Testpersonen zu beschränken und nicht zu überfordern. Dieses Video kann jederzeit während der Studie abgerufen werden, jedoch nach Beginn der Zeitmessung fließt die Zeit für das Anschauen des Videos mit ein.\\
Nach dem Video bekommen die Versuchspersonen der Gruppe B (mit Gamification) die Beschreibung des Questsystems, Abbildung: \ref{fig:quest}.\\
Als letzter Schritt, bevor die Messung erfolgt, bekommen die Probanden das "Szenario" - sprich eine modellierte Aufgabenbeschreibung für eine Projektplanung die anschließend mit GanttProject umzusetzen ist. Das Szenario ist folgend Beschrieben:\\
\textit{Du hast eine Appidee für ein innovatives soziales Netzwerks. Du willst einen Förderantrag über €42.000 für die Umsetzung deines Projektes. Die Förderzeit beträgt 1 Jahr und dazu wird ein Projektplan für diesen Zeitraum benötigt. Des Weiteren stehen dir 3 Personen zur Verfügung. Erstelle nun ein Projektplan mit "GanttProject" mit folgenden Kriterien:[...]} \\
Weiters sind alle Aufgaben beschrieben, wie zum Beispiel, welche Ressourcen, Aufgaben und Rollen angelegt werden müssen. Insgesamt handelt es sich um 7 Aufgaben. Eine Liste der gesamten Aufgaben befindet sich im Kapitel "Implementation" unter "Quest" (\ref{quest}). \\
Gruppe B bekommt diese Aufgaben portioniert über das integrierte Questsystem und deswegen bekommt die Gruppe A die Aufgaben einzeln, um den gleichen Ablauf zu fixieren.\\
Nachdem alle Aufgaben erledigt wurden, wird die Zeitmessung beendet und als Letztes wird noch ein Fragebogen von dem Beobachter ausgefüllt. Die Erste Frage ist offen gestellt ("Wie war es?"\cite{keith}) damit die Versuchspersonen ohne eine Richtung vorzugeben antworten können. Danach wird noch eingeschätzt wie gut nun der Umgang mit Gantt\-Project ist. Für die Gruppe B werden noch 4 Fragen nach der Likert-Skala bereitgestellt um abzufragen, ob die Gamifizierung geholfen hat. Siehe Abbildung: \ref{fig:letzplayquestions}
\begin{figure}[h!]
	\includegraphics[width=\linewidth]{images/letzplayquestions.png}
	\caption{Fragen zur Gamification.}
	\label{fig:letzplayquestions}
\end{figure}

\section{Studienergebnisse}
Die Tabelle \ref{table:time} zeigt die Rohdaten der Testpersonen in der jeweiligen Gruppe und deren Zeit zum Erledigen der Aufgabe.
\begin{table}[h!]
	\centering
	\caption{Zeit in Sekunden der Testpersonen}
	\label{table:time}
	\begin{tabular}{|l|l|r|}
		\hline
		Testperson & Gruppe & Zeit \\ \hline
		1 & A & 1369 \\
		2 & B & 980 \\
		3 & A & 1050 \\
		4 & B & 459 \\
		5 & A & 809 \\
		6 & B & 1140 \\
		7 & A & 951 \\
		8 & B & 655 \\
		9 & A & 504 \\
		10 & B & 866 \\ \hline
		
	\end{tabular}
\end{table}

Werden die zwei Gruppen verglichen und statistisch ausgewertet ist ein leichter Effekt zu beobachten. Die Gruppe B mit der Gamification ist im Schnitt schneller als die Kontrollgruppe A. Der Korrelationskoeffizient $r$ beträgt $-0,1023$ was den leichten Effekt erklärt. Ob dieses Ergebnis aussagekräftig ist sei zu überprüfen, da nur 10 Testpersonen zur Studie herangezogen wurden. Ein Zusammenhang zwischen den Fragebogen und der Zeit ist nicht zu erkennen, sprich es war irrelevant ob die Probanden vorher schon in Kontakt mit Computerspielen getreten sind oder bereits Erfahrungen im Bereich der Projektplanung hatten. Während der Studie wurde beobachtet, dass Testpersonen die im Allgemeinen einen vertieften Umgang mit Computersystemen und Applikationen im Schnitt schneller waren, dies wurde jedoch nicht erhoben und ausgewertet. Das zu erheben ist ein Vorschlag im Fall einer Wiederholung der Studie.\\
Alle Testpersonen von der Gruppe B gaben an, dass die Spielelemente lustig, hilfreich und motivierend seien. Nur zwei der fünf Testperson der Gruppe A gaben an, dass das Erledigen der Aufgabe "spaß" gemacht hat. Zwei Testpersonen gaben an, dass die Mischung aus Deutsch und Englisch verwirrend sei, das ist weiters ein Verbesserungspunkt der Studie. Zwei Probanden der Gruppe B haben bei der Frage ob Gamification hilfreich sei mit "trifft eher zu" geantwortet, die restlichen 3 mit "trifft zu". Die Kontrollfrage, ob die Spielelemente gestört haben, gaben alle Personen "trifft nicht zu" an und nur eine Testperson von fünf haben bei der Frage "Ich finde dass Gamification das Erlernen von Softwareapplikationen erleichtert." mit "trifft eher zu" geantwortet, die anderen vier Personen gaben "trifft zu" an.\\
Bei zwei Aufgaben mussten die Probanden am häufigsten im Tutorialvideo nachsehen. Die Aufgaben sind zu einem, das Hinzufügen von Rollen. Diese Funktion ist nicht direkt in der Benutzeroberfläche in GanttProject integriert sondern muss über den Menüpunkt "Projekteigenschafften" hinzugefügt werden. Die zweite Aufgabe, die Abhängigkeiten der Tasks zu modellieren, hat die Mehrheit die Abhängigkeiten in falscher Reihenfolge aufgefasst. Ein Beispiel dafür ist \textit{"Zuerst muss die „Infrastruktur“ bestehen um mit dem „Backend“ beginnen zu können"}. In GanttProject muss diese Abhängigkeit im Task "Backend" unter den "Predecessor", also den Vorgänger, der Task "Infrastruktur" angegeben werden. Dies jedoch wurde oft falsch verstanden. Der Beobachter gab bei falscher Zuweisung nur an, dass die Abhängigkeiten falsch zugewiesen wurde. Des Weiteren wurde beobachtet, dass die schnellste Testperson als einziges das Programm fast ausschließlich mit Tastatur und Tastaturkurzbefehle bediente, was die geringe Zeit erklärt.


\chapter{Schlussfolgerung}
Die Arbeit liefert Indizien, dass Gamification das selbständige Lernen unterstützten kann. Jedoch gibt es keine Garantie dafür, dass gamifizieren von Software immer den Lernprozess positiv beeinflusst. Kleine Computerspielelemente in beliebige Software zu integrieren ist dennoch möglich. Auch ein akademisches und industrielles Interesse an Gamification wurde aufgeklärt. Allgemein bleibt zu sagen, dass Computerspiele und gamifizierte Software noch am Anfang deren Entstehungsgeschichte befinden und immer weiter erforscht und eingesetzt werden. Um aussagekräftigere Ergebnisse zu erhalten, sollte die Studie mit besprochenen Verbesserungen aktualisiert und mit mehr Probanden wiederholt werden. Die Ergebnisse der Studie weisen darauf hin, dass Gamification die Motivation und vor allem "den Spaß" steigert, jedoch ist zu untersuchen ob Gamification immer helfen kann neue Softwaresysteme leichter zu erlernen.

%	\bibliographystyle{plain} %nummerierung in der reihenfolge wie bib-file
%	\bibliographystyle{abbrv} %wie plain, namen werden abgekuerzt
\bibliographystyle{unsrt} %keine sortierung - durch \cite vorgegeben
%	\bibliographystyle{alpha} %nummer aus autorenkuerzel und jahr wird erzeugt
\bibliography{references}
\clearemptydoublepage
	
%	\printindex
%	\printglossary


\end{document}

