B Technischer Hintergrund zur App
B.1 Quellcode
Der Quellcode zur App steht unter einer offenen Lizenz unter https://github.com/heiko-etzold/nim-app zur Verfügung.
Da die App derzeit nur für iPadOS und macOS entwickelt wurde, bietet sich über den freien Quelltext die Möglichkeit, auch Versionen für andere Plattformen zu realisieren. Sollte diesbezüglich Interesse bestehen, freuen wir uns über eine Kontaktaufnahme über die entsprechende GitHub-Seite.
B.2 Übersetzungen
Um die App in möglichst vielen Sprachen anbieten zu können (vgl. Abschnitt 3.4), freuen wir uns über Ihre Mitarbeit bei der Übersetzung. Hierzu findet sich unter https://github.com/heiko-etzold/nim-app eine Anleitung, wie die entsprechenden Texte für eine neue Sprache erzeugt werden können.
B.3 Datenschutz und Archiv-Dateien
Die App speichert alle Informationen lokal auf dem iPad/Mac und besitzt keine Verbindung zum Internet. Dieser Abschnitt beschreibt, welche Daten des Archivs in welcher Form auf dem iPad/Mac gespeichert und ggf. beim Speichern/Teilen des Archivs (siehe Abschnitt 3.3) weitergegeben werden. Werden im Einstellungsbildschirm der App keine Namen eingegeben bzw. wird in den globalen Einstellungen die Anonymisierung der Namen aktiviert, werden keinerlei personenbezogene Daten von der App gespeichert bzw. beim Speichern/Teilen des Archivs weitergegeben.
Das Nim-Archiv wird als JSON
-Datei4 mit der Endung .nim
gespeichert und kann mit einem einfachen Texteditor betrachtet (und auf Wunsch auch bearbeitet) werden.
Im Folgenden ist der exemplarische Aufbau einer solchen Datei mit zwei Spielverläufen dargestellt:
[
{
"leftPlayerName" : "Maxi",
"rightPlayerName" : "Kim",
"leftPlayerColor" : "red",
"rightPlayerColor" : "blue",
"winMode" : "lastWins",
"numberOfMaximalCircles" : 4,
"listOfColors" : [
"red",
"red",
"blue",
"blue",
"blue",
"blue",
"red"
],
"gameNumber" : 1
},
{
"leftPlayerName" : "",
"rightPlayerName" : "Flo",
"leftPlayerColor" : "orange",
"rightPlayerColor" : "green",
"winMode" : "lastLoses",
"numberOfMaximalCircles" : 2,
"listOfColors" : [
"green",
"green",
"orange",
"green",
"orange"
],
"gameNumber" : 2
}
]
Die Zeilen
1
und36
rahmen die Liste an Spielverläufen ein.Die Zeilen
2
und19
rahmen das erste Spiel ein. Nach jedem Spiel (außer dem letzten) kommt ein Komma (siehe Zeile19
).Unter
leftPlayerName
undrightPlayername
(Zeilen3
und4
) werden die Namen der Spieler/-innen abgespeichert. Wird kein Name gespeichert (dies entspricht dem Wert""
, siehe Zeile21
), so wird beim Erkunden des Spiels Links oder Rechts als Name dargestellt. In den globalen App-Einstellungen kann eingestellt werden, dass die Namen beim Export nicht gespeichert werden (siehe Abschnitt 3.4).Unter
leftPlayerColor
undrightPlayerColor
(Zeilen5
und6
) werden die Spielfarben der Spieler/-innen abgespeichert. Folgende Werte sind möglich:red
: rotblue
: blauyellow
: gelbgreen
: grünorange
: orangepurple
: violett
Wird ein anderer Wert eingetragen, erfolgt beim Öffnen der Datei mit der Nim-App eine Fehlermeldung.
Unter
winMode
(Zeile7
) wird der Gewinnmodus abgespeichert. Folgende Werte sind möglich:lastWins
: letztes Feld gewinntlastLoses
: letztes Feld verliert
Wird ein anderer Wert eingetragen, erfolgt beim Öffnen der Datei mit der Nim-App eine Fehlermeldung.
Unter
numberOfMaximalCircles
(Zeile8
) wird die maximale Anzahl an gleichfarbigen Plättchen gespeichert, die hintereinander gelegt werden dürfen. Der Wert muss1
,2
,3
oder4
betragen, ansonsten erfolgt beim Öffnen der Datei mit der Nim-App eine Fehlermeldung.Unter
listOfColors
(Zeilen9
bis17
wird die Liste der Farben abgespeichert, die die im Spiel gelegten Plättchen haben. Die Anzahl der Farben entspricht dann der Spielfeldlänge. Auch hier führen fehlerhaft angegebene Farben zu einer Fehlermeldung beim Öffnen der Datei mit der Nim-App.Unter
gameNumber
wird eine Nummer abgespeichert, um die Reihenfolge der Spiele nachvollziehen zu können. Bei jedem neuen Spiel, das in das Archiv gelegt wird, wird eine höhere Nummer als bei den vorherigen Spielen gewählt. Dies ist notwendig, um die Spiele im Archiv chronologisch ordnen zu können (siehe Abschnit 3.3).