tobing
19.02.2008, 08:16
Jetzt brauche ich mal eure werte Meinung. Bin gestern auf ein schwieriges Problem gestossen, und muss mich jetzt entscheiden, in welcher Richtung ich das weiter mache. Worum gehts?
Was ich gerne möchte ist, dass das Spiel im schnellen Lauf sich genauso verhält wie langsamer. Dass also die internen Abläufe unabhöngig von der eingestellten Spielgeschwindigkeit sind. Was ich nun feststelle ist, dass dies zusammen mit glatt bewegten Läufern nicht richtig funktioniert. So, was heisst das nun genau? Es bedeutet, dass sich die Läufer bei schnellem Spiel ein bisschen anders verhalten als bei langsamem Spiel. Also vielleicht früher oder auch später an einem bestimmten Zielpunkt ankommen. Die hat natürlich Folgen, weil dann ja auch Waren und Dienste früher oder auch später ankommen und abgeholt werden, und diese zunächst einmal kleinen Abweichungen schaukeln sich dann auf.
Bekannt ist dieses Phänomen aus jeder Art von Diskretisierung von kontinuierlichen Berechnungen, und vermeiden lässt es sich nicht wirklich. Also wenn, dann nur mit ziemlich hohem Berechnungsaufwand, was sich deutlich auf die maximal mögliche Anzahl von Läufern und dann auch Gebäuden auswirken würde. Finde ich ziemlich unangenehm, weil ich doch gerade da dahin will, dass man Karten mit sehr vielen Gebäuden vollbauen können soll, also mindestens einige tausend und entsprechend viele Läufer.
In den meisten aktuellen Spielen, die ja alle sehr kontinuierlich laufen, kann man die Spielgeschwindigkeit nur in einem kleinen Bereich verstellen. Ausserdem glaube ich sicher, dass dieses Problem meistens überhaupt nicht in Betrag gezogen wird, das Spiel also unterschiedlich läuft, je nach Spielgeschwindigkeit. Gutes Beispiel hier ist der 'Firebug' von Caesar IV, auch wenn das letztlich eine etwas andere Ursache hat als die hier beschriebene.
Das ist natürlich eine Möglichkeit, die Sache in den Griff zu bekommen, nämlich die maximal mögliche Geschwindigkeit soweit herunter zu setzen, dass jede langsamere Spielgeschwindigkeit genauso läuft. Der Nachteil ist, dass man selbst in dem Fall die internen Berechnungen so genau machen muss, dass es richtig funktioniert, und das drückt wieder auf die Limits.
Die andere Lösung könnte sein, von der kontinuierlichen Bewegung abzurücken. Das bedeutet, dass Läufer wie bei einem Brettspiel von Kachelmitte zu Kachelmitte 'springen', und zwar immer dann, wenn der richtige Zeitpunkt da ist. Der Vorteil ist klar: Zum einem passt dieses Konzept prima zu den Updates der Gebäude und der Attraktivität, so wie ich das bereits ausprogrammiert habe, die Sache ist sdamit komplett unabhängig von der Spielgeschwindigkeit. Zum anderen skaliert das sehr viel besser, was bedeutet, dass die Grenzen für die maximale Anzahl von Gebäuden und Läufern viel höher liegt, was ja unter anderem eines meiner wichtigen Ziele ist.
Um es gleich zu sagen: Ich tendiere im Moment zu letztgenannten Lösung, aus zwei Gründen: Es ist einfacher zu implementieren, und man braucht weniger Grafiken. Das ist insbesondere deswegen wichtig, weil es zur Zeit eher so aussieht, als wären die Grafiken auch mein Job. Wäre mir also recht, wenn ich von einem Läufer jeweils nicht so viele animierte Bilder machen müsste, sondern mit einer Art Standmodell 4 Richtungen rendere und fertig.
So, und nun würde ich gern mal eure Meinung dazu hören.
Was ich gerne möchte ist, dass das Spiel im schnellen Lauf sich genauso verhält wie langsamer. Dass also die internen Abläufe unabhöngig von der eingestellten Spielgeschwindigkeit sind. Was ich nun feststelle ist, dass dies zusammen mit glatt bewegten Läufern nicht richtig funktioniert. So, was heisst das nun genau? Es bedeutet, dass sich die Läufer bei schnellem Spiel ein bisschen anders verhalten als bei langsamem Spiel. Also vielleicht früher oder auch später an einem bestimmten Zielpunkt ankommen. Die hat natürlich Folgen, weil dann ja auch Waren und Dienste früher oder auch später ankommen und abgeholt werden, und diese zunächst einmal kleinen Abweichungen schaukeln sich dann auf.
Bekannt ist dieses Phänomen aus jeder Art von Diskretisierung von kontinuierlichen Berechnungen, und vermeiden lässt es sich nicht wirklich. Also wenn, dann nur mit ziemlich hohem Berechnungsaufwand, was sich deutlich auf die maximal mögliche Anzahl von Läufern und dann auch Gebäuden auswirken würde. Finde ich ziemlich unangenehm, weil ich doch gerade da dahin will, dass man Karten mit sehr vielen Gebäuden vollbauen können soll, also mindestens einige tausend und entsprechend viele Läufer.
In den meisten aktuellen Spielen, die ja alle sehr kontinuierlich laufen, kann man die Spielgeschwindigkeit nur in einem kleinen Bereich verstellen. Ausserdem glaube ich sicher, dass dieses Problem meistens überhaupt nicht in Betrag gezogen wird, das Spiel also unterschiedlich läuft, je nach Spielgeschwindigkeit. Gutes Beispiel hier ist der 'Firebug' von Caesar IV, auch wenn das letztlich eine etwas andere Ursache hat als die hier beschriebene.
Das ist natürlich eine Möglichkeit, die Sache in den Griff zu bekommen, nämlich die maximal mögliche Geschwindigkeit soweit herunter zu setzen, dass jede langsamere Spielgeschwindigkeit genauso läuft. Der Nachteil ist, dass man selbst in dem Fall die internen Berechnungen so genau machen muss, dass es richtig funktioniert, und das drückt wieder auf die Limits.
Die andere Lösung könnte sein, von der kontinuierlichen Bewegung abzurücken. Das bedeutet, dass Läufer wie bei einem Brettspiel von Kachelmitte zu Kachelmitte 'springen', und zwar immer dann, wenn der richtige Zeitpunkt da ist. Der Vorteil ist klar: Zum einem passt dieses Konzept prima zu den Updates der Gebäude und der Attraktivität, so wie ich das bereits ausprogrammiert habe, die Sache ist sdamit komplett unabhängig von der Spielgeschwindigkeit. Zum anderen skaliert das sehr viel besser, was bedeutet, dass die Grenzen für die maximale Anzahl von Gebäuden und Läufern viel höher liegt, was ja unter anderem eines meiner wichtigen Ziele ist.
Um es gleich zu sagen: Ich tendiere im Moment zu letztgenannten Lösung, aus zwei Gründen: Es ist einfacher zu implementieren, und man braucht weniger Grafiken. Das ist insbesondere deswegen wichtig, weil es zur Zeit eher so aussieht, als wären die Grafiken auch mein Job. Wäre mir also recht, wenn ich von einem Läufer jeweils nicht so viele animierte Bilder machen müsste, sondern mit einer Art Standmodell 4 Richtungen rendere und fertig.
So, und nun würde ich gern mal eure Meinung dazu hören.