Entwicklertagebuch MATRIS #3 – Das Gameplay und das GUI
Ein paar Stunden in die Konzeptionierung gesteckt und schon ist ein, wie ich finde, stimmiges Gameplay für die erste Version entstanden. Besonders hilfreich war hierbei das Austreichen von Punkten die zu komplex für den ersten Wurf werden - diese hebe ich mir für eine Version zwei auf :).
Steuerung
Mit der Maus kann man um das Grid rotieren und mit dem Mausrad kann man ran- und rauszoomen. Die WASD-Tasten bewegen den aktuellen Polywürfel im Grid auf der XZ-Ebene. Den Polywürfel rotieren kann der Spieler mit der rechten und linken Maustaste. Rotiert wird die Achse auf der der Spieler gerade schaut (die rechte Maustaste dreht den Polywürfel immer nach "rechts" aus der aktuellen Perspektive). Die Tasten 1,2 und 3 werden mit Power-ups belegt.
Schwierigkeitsfaktor
Das Spiel startet mit einem Schwierigkeitsfaktor 1 der mit der Zeit ansteigt. Zunächst strebe ich eine Zeitspanne von zehn Sekunden für jede Schwierigkeitsstufe an.
Tickdauer
Beschreibt wieviel Sekunden es dauert bis ein Tick vergeht. Die Zeitspanne berechnet sich wie folgt:
Tickdauer = TickdauerStart * ( TickdauerVerringerung ^ ( Schwierigkeitsfaktor - 1) )
Beispiel: TickdauerStart=2 und TickdauerVerringerung=0,75
Schwierigkeitsfaktor => Tickdauer in Sekunden
1 => 2
2 => 1.5
3 => 1.125
4 => 0.84375
Würfel
Jeder Polywürfeln hat eine von drei Farben. Beim Auflösen einer oder mehrerer Ebenen werden die jeweiligen Farben gezählt. Die Farbe mit dem höchsten Zähler wird auf ein Farbkonto gutgeschrieben von dem aus man Power-ups bezahlen kann.
Nächste Polywürfel
Der Spieler kann stets die drei nächsten Polywürfel sehen.
Power-ups
Mit Farbpunkten kann man Power-ups kaufen die dem Spieler eine kurzweilige Erleichterung verschaffen.
Power-up: Tickdauerverlängerung
- kaufbar durch rote Farbpunkte
- erhöht für eine Zeitspanne von fünf Sekunden die momentane Tickdauer auf den Wert von TickdauerStart
- Kann erst nach 60 Sekunden wieder gekauft werden
Power-up: Polywürfelauswahl
- kaufbar durch grüne Farbpunkte
- der Spieler kann aus allen verfügbaren Polywürfel einen auswählen der als unmittelbar nächster in der "Nächste Polywürfel"-Liste erscheint
- kann erst nach 60 Sekunden wieder gekauft werden
Power-up: Ebenenvernichter
- kaufbar durch blaue Farbpunkte
- der Spieler kann nach dem Kauf eine Ebene auswählen die aufgelöst werden soll
- kann erst nach 60 Sekunden wieder gekauft werden
Die Kosten für ein Power-up kann ich absolut nicht abschätzen. Deswegen werde ich diese erstmal auf 10 festlegen. Hier spielen ja auch andere Faktoren wie Grid-Breite und -Tiefe eine Rolle. Wenn ich merke dass ein Power-Up zu mächtig wird muss ich auch deswegen den Preis hochschrauben.
Online-Highscore
Der Spieler hat nach einer verlorenen Runde (man kann nur verlieren - die Frage ist wielange das dauert ;) ) die Möglichkeit seinen Punktestand auf meinen Server zu übertragen. Dafür ist nur ein freiwählbarer Name erforderlich.
Punkte
Die Punkte innerhalb eines Ticks werden wie folgt berechnet:
Punkte = (Anzahl der aufgelösten Würfel) * (Anzahl der aufgelösten Ebenen) * (Schwierigkeitsfaktor)
Damit ist die Anzahl der aufgelösten Ebenen ein Punktemultiplikator. Die Tick-Punkte werden zur Gesamtpunktzahl addiert.
Mutation
Von unten spawnen, nach einer vom Schwierigkeitsfaktor abhängigen Zeitspanne, Ebenen mit zufällig belegten Tiles und Farben. Die Zeitspanne dazu sollte meines Erachtens von der Grid-Höhe abhängen weil der Spieler sonst unter Umständen nicht hinterkommt. Deswegen werde ich mit dem fine tuning bis nach der Implementierung warten und den Wert zunächst auf fünf Sekunden setzen.
Aus diesen Gameplay-Elementen ergeben sich folgende
Spielmodi:
Modus = SSF,SFA,Power-ups,Mutation,Online-Highscore
Klassisch = 1,true,false,false,true
Klassisch+ = 1,true,true,false,true
Mutation = 1,true,false,true,true
Mutation+ = 1,true,true,true,true
Selbsterstellt = konfigurierbar,konfigurierbar,konfigurierbar,konfigurierbar,false
SSF=Startschwierigkeitsfaktor; SFA=Schwierigkeitsfaktoranstieg
Graphical User Interface (GUI)
Während die Views Hauptmenü, Highscore, Selbst erstellen und Game over wohl selbsterklärend sind, will ich beim Spiel-View etwas ausholen.
Die Kästchen links mit dem irreführenden Inhalt "100x100" stellen die nächsten Polywürfel dar. Drunter steht der aktuelle Schwierigkeitsfaktor und die verbleibende Zeit bis zum nächsthöheren Schwierigkeitsfaktor. Oben rechts in schwarz ist die momentane Gesamtpunktzahl und drunter die jeweiligen Farbkonten. Unten rechts sieht man die Kosten für das jeweilige Power-up und den momentanen Abkühlstatus. Dieser View ist also wirklich nur eine View und bietet keine anklickbaren Knöpfe oder Ähnliches.
Fazit
Im GUI zeige ich nur die Daten an, die für das Gameplay direkt relevant sind - hier wird natürlich noch viel passieren aber zum jetzigen Zeitpunkt genügen diese spartanischen Sichten.
Die meisten fixen Werte kann ich noch gar nicht richtig einschätzen und werden wohl erst festgesetzt sobald man das Spiel spielen kann - Balancing.
Damit wäre der ersten Meilenstein erreicht: Ein implementierfähiges Konzept steht. Ich sehe momentan keine Blocker oder Probleme die ich nicht schon im Prototypen gelöst habe. Fein.
Einen großen Punkt im Meilensteinplan habe ich vergessen: Audio. Deshalb hier der aktuelle Plan:
- Gameplay weitestgehend festziehen und ausformulieren
- Gameplay implementieren
- Audiovisuelles Feedback aufhübschen (Effekte, Farben, Umgebung, GUI)
- Nachbessern (Bugs, Balancing)
Hätte ich dieses Wiki nur eher gefunden ...
[Edit: Bilder angepasst]