Tutorial: Wie entsteht ein Strategiespiel
Verfasst: Samstag 6. August 2011, 18:38
Ich wollte schon immer mal ein Tutorial zum Thema Spiele-Entwicklung schreiben. Wäre das interessant für euch?
Allerdings geht es mir dabei nicht um die Art von Spiel, an die die meisten sofort denken würden, sondern ich habe mir den fast 40 Jahre alten Klassiker WARPWAR von Howard Thompson herausgesucht und würde davon einzig die Regeln umsetzen, sodass man daraus z.B. ein P(E)BM/Browser-Spiel machen könnte. Grafik wird es keine haben.
Mir geht es um den Prozess, wie ich aus einer Beschreibung zum einem Python-Programm komme. Mir geht es nicht darum, wie pygame, openGL oder sonst eine Bibliothek funktioniert.
Bei WARPWAR versuchen zwei Spieler (oder Spielerinnen) mit ihren Raumschiffen auf einer Sternenkarte jeweils die Heimatwelt des anderen zu erobern. Raumschiffe können individuell konstruiert werden und das Spiel kommt nach dem Stein-Schere-Papier-Prinzip ohne Würfel aus.
Das Spiel findet in Runden statt. Jede Runde hat eine Bauphase, eine Bewegungsphase und bis zu drei Kampfphasen. Eigentlich findet die Bewegung nacheinander statt, doch ich straffe das mal zugunsten einer einfacheren Ausdehnung der Regeln auf mehr als zwei Spieler. In der Bauphase kann man neue Raumschiffe erschaffen und muss ein Maß zwischen Bewegung, Bewaffnung, Verteidigung und Kosten finden. In der Bewegungsphase werden alle Schiffe bewegt. Es gibt zwei Arten: Warp-Schiffe, die zwischen Welten verkehren und Systemschiffe, die von Warp-Schiffen transportiert werden müssen, wenn man sie bewegen will. Treffen Schiffe zweier Spieler aufeinander, kommt es zu einem Kampf. Hier gilt es die richtige Taktik zu finden und die Schiffsenergie zwischen den verschiedenen System so zu verteilen, dass man einen Vorteil gegenüber dem Gegner hat, der das selbe versucht.
Basierend auf dem aktuellen Spielstand gibt jeder Spieler für jede Phase seine Befehle unabhängig von allen anderen Spielern ab. Diese werden dann von dem Programm eingelesen, verarbeitet und ein neuer Spielstand wird erstellt und an alle Spieler verteilt. Das Programm prüft dabei, ob die Befehle regelkonform sind und erstellt Reports, die dem Spieler helfen, zu verstehen, was passiert ist.
Das Spiel sieht daher ungefähr so aus:
An den Rest würde ich mich machen, wenn es ein paar Stimmen gibt, die das ganze interessant finden 
Stefan
Allerdings geht es mir dabei nicht um die Art von Spiel, an die die meisten sofort denken würden, sondern ich habe mir den fast 40 Jahre alten Klassiker WARPWAR von Howard Thompson herausgesucht und würde davon einzig die Regeln umsetzen, sodass man daraus z.B. ein P(E)BM/Browser-Spiel machen könnte. Grafik wird es keine haben.
Mir geht es um den Prozess, wie ich aus einer Beschreibung zum einem Python-Programm komme. Mir geht es nicht darum, wie pygame, openGL oder sonst eine Bibliothek funktioniert.
Bei WARPWAR versuchen zwei Spieler (oder Spielerinnen) mit ihren Raumschiffen auf einer Sternenkarte jeweils die Heimatwelt des anderen zu erobern. Raumschiffe können individuell konstruiert werden und das Spiel kommt nach dem Stein-Schere-Papier-Prinzip ohne Würfel aus.
Das Spiel findet in Runden statt. Jede Runde hat eine Bauphase, eine Bewegungsphase und bis zu drei Kampfphasen. Eigentlich findet die Bewegung nacheinander statt, doch ich straffe das mal zugunsten einer einfacheren Ausdehnung der Regeln auf mehr als zwei Spieler. In der Bauphase kann man neue Raumschiffe erschaffen und muss ein Maß zwischen Bewegung, Bewaffnung, Verteidigung und Kosten finden. In der Bewegungsphase werden alle Schiffe bewegt. Es gibt zwei Arten: Warp-Schiffe, die zwischen Welten verkehren und Systemschiffe, die von Warp-Schiffen transportiert werden müssen, wenn man sie bewegen will. Treffen Schiffe zweier Spieler aufeinander, kommt es zu einem Kampf. Hier gilt es die richtige Taktik zu finden und die Schiffsenergie zwischen den verschiedenen System so zu verteilen, dass man einen Vorteil gegenüber dem Gegner hat, der das selbe versucht.
Basierend auf dem aktuellen Spielstand gibt jeder Spieler für jede Phase seine Befehle unabhängig von allen anderen Spielern ab. Diese werden dann von dem Programm eingelesen, verarbeitet und ein neuer Spielstand wird erstellt und an alle Spieler verteilt. Das Programm prüft dabei, ob die Befehle regelkonform sind und erstellt Reports, die dem Spieler helfen, zu verstehen, was passiert ist.
Das Spiel sieht daher ungefähr so aus:
Code: Alles auswählen
def process_turn():
game = Game.load()
game.prepare_phase()
for player in game.players:
player.orders = Order.load(player.name)
game.process_orders()
for player in game.players:
player.generate_report()
game.save()

Stefan