Wie man verschiedene Geschwindigkeiten in RogueLike-Spielen handhabt?
Was ich damit meine, ist, dass bei rundenbasierten Spielen die Akteure je nach Aktion und einigen anderen Merkmalen unterschiedlich schnell agieren können. Die Schauspieler machen dann effektiv mehr Aktionen / Runden als andere, wenn sie schneller sind oder nicht.
Wie kann man bestimmen, wann ein Schauspieler handeln kann (Turn Scheduling?)?
Es sieht so aus, als gäbe es verschiedene Möglichkeiten, dies zu tun? Können Sie einige mit Algorithmen erklären?
roguelikes
Klaim
quelle
quelle
Antworten:
In meinem schurkenhaften Spiel Tyrant habe ich ein System von Aktionspunkten und Geschwindigkeitswerten verwendet.
Grundsätzlich:
Dann würde die Spielschleife wie folgt ablaufen.
hero action AP cost * 100 / hero speed
creature speed * elapsed time / 100
Dieses System hat insgesamt sehr gut funktioniert, Beispiel nette Features:
quelle
Aktionspunkte. Geben Sie jeder Einheit eine "Geschwindigkeit", damit schnellere Akteure in jeder Runde mehr Punkte erhalten. Lassen Sie jede Aktion eine bestimmte Anzahl von Punkten ausführen, und subtrahieren Sie diese Anzahl von den Punkten des Spielers für diesen Zug, wenn er eine Aktion ausführt. Wenn eine Aktion mehr Punkte benötigt, als der Spieler übrig hat, markieren Sie sie als "teilweise abgeschlossen" und lassen Sie ihn die nächste Runde beenden.
quelle
Meinen Sie damit, dass Aktionen mehrere Runden dauern (dh 50 Runden durchgehend schlafen)?
Ich würde ein Objekt behalten, player.currentAction. currentAction kann enthalten, wie viele Runden die Aktion erfordern würde, wie hoch die Auflösung der Aktion ist und welche Zustände die Aktion abbrechen (in Gefahr, angegriffen, zu heiß usw.). Bevor wir nach Spielereingaben suchten, überprüften wir in jeder Runde, ob sich der Spieler gerade in einer Aktion befand, und machten dann so etwas wie ...
quelle
Sie können mit Aktionspunkten gehen, aber keine Runden an sich, sondern Ticks, die viel kleiner sind. Angenommen, jeder Akteur hat eine Aktionspunkt-Akkumulationsgeschwindigkeit (z. B. 2 AP pro Tick). Es startet eine Aktion mit einem Wert von beispielsweise 10 AP. Das Spiel rückt 5 Ticks vor (weil der Schauspieler so viel braucht, um den AP-Preis der Aktion zu bezahlen).
Wenn es mehrere Schauspieler gibt. Das Spiel rückt Tick für Tick vor, bis jemand den AP-Preis bezahlt hat, zu welchem Zeitpunkt diese Aktion ausgeführt wird.
Der Ansatz ist ähnlich wie bei @mikera's, nur dass es keine negativen APs gibt.
quelle
Hohe Auflösungszeit
Wenn ein Schlag 400 Runden dauert und ein Tritt 1000 Runden dauert, kann ich Sie mindestens zweimal schlagen, bevor Sie mich treten, und ich kann Sie fünfmal schlagen, bis Sie mich zweimal treten.
Indem Sie dafür sorgen, dass die Dinge viele Runden dauern, können Sie genau steuern, wie lange die Dinge dauern.
quelle