Technische Dokumentation

Installation

1. Python installieren

  1. Für MazeRun wird Python 2.7 32bit benötigt, man kann es hier herunterladen.
    Wichtig: Python 3 und/oder die 64bit Version werden nicht unterstützt.
  2. Python der Path-Variable hinzufügen
    • Dazu unter Windows 10: Rechtsklick auf Start-Symbol -> System -> Erweiterte Systemeinstellungen -> Umgebungsvariablen…, unter “Systemvariablen” “Path” auswählen, Bearbeiten -> Neu, den Pfad des Python Verzeichnisses eintragen (idR. C:\Python27) und mit “OK” bestätigen.

2. libavg installieren

3. Spiel starten

  1. Ausgangspunkt: Konsole im Hauptverzeichnis des Spiels gestartet
    1. Hauptverzeichnis des Spiels im Explorer öffnen (KPMI_16_C)
    2. “Shift” + Rechtsklick
    3. “Eingabeaufforderung hier öffnen”
  2. In das Verzeichnis “code” navigieren: cd code
  3. Mittlels Python Interpreter die Hauptklasse ausführen: python Game.py

Entwicklung

MazeRun wurde in Python programmiert und nutzt das auf C++/OpenGL basierende Framework libavg für die grafische Darstellung und Eingabe auf dem Samsung Tabletop “SUR40”.

Projekt-Struktur

Die Struktur des Projekt-Codes ist im folgenden UML- Klassendiagramm verdeutlicht.


Top-Level Architektur

Editor

Zur einfachen Erstellung von Kampagnenleveln und zur Diagnose von Problemen in zufällig erstellten Leveln, wurde speziell für dieses Spiel ein Tile-Editor entwickelt.

Tutorial

Funktionen

Kamerasteuerung und Zoom

Platzieren von Schienen

In manchen Fällen ist der Brush nicht präzise genug. Dafür gibt es das Path-Tool, das einzelne Pfad-Tiles setzen kann:

Platzieren von Objekten auf der Welt

Größe der Welt ändern

Größe der Hintergrund-Textur ändern

Tileset ändern

Um das Tileset zu ändern drückt man “y” und gibt den Namen des gewünschten Tileset ein. Aus den folgenden Möglichkeiten kann man wählen: Dabei ist es wichtig, Groß- und Kleinschreibung zu beachten.

Speichern/Laden von Welten

Öffnen von Welten

  1. Game.py mit Parameter --level “Pfad zur Level-Datei” aufrufen:
    python Game.py --level ../maps/test.json
  2. Im Menü “schnelles Spiel” auswählen

Das Dateiformat

In den world.json Dateien, die vom Editor ausgegeben werden, wird das unten definierte Level Objekt gespeichert:
TileVec2 := { “x”: (int), “y”: (int) }

LeverRiddleInfo := (TileVec2) ∪ { “levers”: [ (TileVec2) ] }

PortalInfo := (TileVec1) ∪ { “other”: (TileVec2) }
	→ only one of each pair of portals is serialized!

Level := {
	“spawn”: (TileVec2),
	“objective”: (TileVec2),
	“tileset”: (string),
	“world”: {
		“size”: (TileVec2),
		“backgroundTextureSize”: (TileVec2, background texture tile size in pixels),
		“path”: [
			(TileVec2),
			(TileVec2),
			...
		],
		“events”: [
			(string, event or feature name): (TileVec2|LeverRiddleInfo|PortalInfo),
			...
		]
	}
}