Arkanoid

Aus toolbox_interaktion
Wechseln zu: Navigation, Suche


Spielablauf

Die Grundlage des Projekts ist das Spiel Arkanoid. Bei diesem Spiel steuert man ein Paddle am unteren Bildschirmrand in die horizontale Richtung. Ein Ball wird wie im Spiel "Pong" mit dem Paddle reflektiert. Ziel ist es, die vorhandenen Blöcke mit dem Ball zu zerstören. Wird der Ball vom Spieler 3 mal nicht zurück geschossen hat dieser verloren.

1 Spielermodi

Ein Spieler

Der 1 Spieler Modus bezieht sich auf den normalen Spielablauf wie oben beschrieben.

Zwei Spieler

Beim 2 Spieler Modus sind 2 Bälle vorhanden und jeder Spieler besitzt ein Paddle. Das Paddle des 2. Spielers befindet sich jedoch am oberen Bildschirmrand. Mit beiden Bällen kann gespielt werden. Der Gewinner des Spiels ist die Person, welche am Schluss mehr Blöcke zerstört hat.

Realisierung

Arkanoid

Das Spiel wurde mit VISUAL STUDIO mit der Programmierumgebung Microsoft XNA Game Studio 4.0 in C# programmiert.

Die Logik wird 60 mal pro Sekunde aktualisiert (“Game Loop”). Bei jedem Tick wird die Position der Paddles aus dem Eingabemodul (z. B. EyesWeb) abgefragt, zudem wird die Position des Balles durch einen Geschwindigkeits- und einen Beschleunigungswert beeinflusst und Kollisionen geprüft. Zur Darstellung erhält jedes Objekt ein 2D-Bild.

Der vollständige Quellcode des C#-Projektes ist als SVN-Repository auf dem Server der Hochschule zu finden (Repository: https://svn.efi.fh-nuernberg.de/svn/Arkanoid/trunk). Die letzte 1-Spieler-Version ist ebenfalls getagged (https://svn.efi.fh-nuernberg.de/svn/Arkanoid/tags/1playerversion), wurde aber nicht mehr als Standalone-Projekt weiterentwickelt. Der gesamte Quellcode wurde vom Arkanoid-Team geschrieben.


Ein Spieler

Die x-Koordinate des Paddels soll der Position des Spielers im Raum entsprechen. Um die Position zu bestimmen wird Eyesweb 5.21 verwendet. Hier wird zunächst eine Binarisierung und anschließend eine Hintergrundsubtraktion auf ein Videobild der Webcam angewendet. Durch eine Schwellwerteinstellung können die Ergebnisse verbessert werden. Mit einer Schwerpunktberechnung kann die x-Koordinate des Spielers berechnet werden. Der x-Wert des Schwerpunkts wird noch extrahiert und per TCP/IP Block an das Spiel gesendet.

1SpielerEyesweb 1Spieler C#-Code

Eyesweb1spieler.jpg

Zwei Spieler

2 Spielermodi

Im 2 Spielermodi werden 2 x-Koordinaten benötigt, wodurch 2 Konzepte entworfen wurden. 2Spieler C#-Code

Konzept1

Der Raum wird in 2 Hälften geteilt, der 1. Spieler hat z.B. die linke Hälfte als Spielfläche und der 2. Spiele die rechte Hälfte. Problem dabei ist, dass die Spieler nicht genau wissen wie groß ihr zur Verfügung stehender Raum ist. In Eyesweb ist diese Methode jedoch einfach zu implementieren, da nach der Binarisierung, Hintergrundsubtraktion und Schwellwerteinstellung das Bild nur geteilt werden muss. Jedoch ist dann jedes Einzelbild noch zur Hälfte schwarz, somit ist es nötig die Dimensionen des Bildes noch anzupassen, was mit einer Bild/Matrix Umrechnung erfolgt. Jetzt noch den Schwerpunkt für jedes Bild berechnen und schon stehen die 2 x-Koordinaten zur Verfügung und sind für den TCP/IP Transport bereit. 2SpielerSplittedEyesweb

2spielerhaelfte.jpg

Konzept2

Jeder Spieler hat eine sich vom anderen Spieler unterscheidende Farbe am Körper, z.B. eine farbige Cappy, wodurch die Spieler eindeutig identifiziert werden können. Implementierung Eyesweb: 2SpielerFarbeEyesweb

2spielerfarbe.jpg

Wie bekommt man die Daten von Eyesweb nach C#?

  • Lösung: Asynchroner TCP-Listener

Tcp.png

Zusammenfassung und Zukunftsvision

Ein weiteres Konzept für den 2 Spieler Modus wäre, dass jeder Spieler seine eigene Webcam besitzt also 2 Webcams zur Erkennung verwendet werden. Auch die Spielelogik wäre veränderbar, wie z.B.:

  • Blöcke die erst nach mehrmaligen Balltreffern zerstört werden
  • zufällige Farbe der Blöcke
  • bei Mehrspieler, jeder Spieler hat seine eigenen Blöcke