Zufall und Saves
Verfasst: 18. Mai 2021, 09:14
Bin immer noch beim Durchsttöbern des Archivs und dabei ist mir ein Thema wiederholt (sprich zweimal?) aufgefallen:
Es wurde angemerkt/kritisiert, dass man bei Rundenbasierten Spielen (Civ/X-Com) oft zwar nach einem negativen Ergebnis bei einem Zufallsergebnis (Schuss mit 75% Trefferchance) einen alten Spielestand laden kann, aber man dann wieder das gleiche Ergebnis bekommt. In dem Zusammenhang wurde IIRC von einer Art "Hidden Savegame" geredet, dass den ausgang diese Wurfes abspeichern würde.
Dazu eine Frage/Erklärungsversuch:
Seid ihr euch sicher, dass es das ist, was da technisch passiert, oder war das eher metaphorisch gemeint? Meiner Meinung nach gibt es dafür nämliche eine viel einfachere erklärung: Zufallszahlen in Computerprogrammen werden ja üblicherweise mit pseudo-zufallszahlengeneratoren sertellt. Also einem kleinen Algorithmus, der eine Sequenz von Zahlen erzeugt, die zwar zufällig aussehen, aber 100% deterministisch sind. Sprich, wenn man ihn mit den gleichen Zahlen initialisiert bekommt man auch wieder die gleiche Sequenz an "Zufallszahlen". Wenn ihr jetzt einen alten Speicherstand ladet, ladet ihr auch wieder den alten Stand dieses Generators und erhaltet daher auch wieder die gleiche "Zufallsergebnisse" (im Detail gibts da noch andere Möglichkeiten, aber im Prinzip kommts aufs gleiche raus).
Umgehen kann man das Problem übrigens manchmal damit, dass man nach dem Laden des alten Spielstands erstmal einen anderen Zug macht, der ein Zufallsergebnis involviert (z.B. erstmal mit einer anderen Einheit einen anderen Gegner angreifen). Dadurch geht man eine Zahl in der Sequenz weiter und bekommt jetzt ein neues Ergebnis für das ereignis, dass einem wichtig ist.
Was mir natürlich klar ist, ist, dass die Entwickler das ganze trotzdem anderes lösen könnten. Es ist also immer noch eine bewusste Designentscheidung, aber es wird nicht unbedingt extra Aufwand betrieben (hidden save) um einem das aufzuzwingen. Aus Entwicklungssicht hat das vermutlich schlicht den Vorteil, dass es Ereignisse (insbesondere Bugs) dadurch leichter reproduzierbar macht.
Es wurde angemerkt/kritisiert, dass man bei Rundenbasierten Spielen (Civ/X-Com) oft zwar nach einem negativen Ergebnis bei einem Zufallsergebnis (Schuss mit 75% Trefferchance) einen alten Spielestand laden kann, aber man dann wieder das gleiche Ergebnis bekommt. In dem Zusammenhang wurde IIRC von einer Art "Hidden Savegame" geredet, dass den ausgang diese Wurfes abspeichern würde.
Dazu eine Frage/Erklärungsversuch:
Seid ihr euch sicher, dass es das ist, was da technisch passiert, oder war das eher metaphorisch gemeint? Meiner Meinung nach gibt es dafür nämliche eine viel einfachere erklärung: Zufallszahlen in Computerprogrammen werden ja üblicherweise mit pseudo-zufallszahlengeneratoren sertellt. Also einem kleinen Algorithmus, der eine Sequenz von Zahlen erzeugt, die zwar zufällig aussehen, aber 100% deterministisch sind. Sprich, wenn man ihn mit den gleichen Zahlen initialisiert bekommt man auch wieder die gleiche Sequenz an "Zufallszahlen". Wenn ihr jetzt einen alten Speicherstand ladet, ladet ihr auch wieder den alten Stand dieses Generators und erhaltet daher auch wieder die gleiche "Zufallsergebnisse" (im Detail gibts da noch andere Möglichkeiten, aber im Prinzip kommts aufs gleiche raus).
Umgehen kann man das Problem übrigens manchmal damit, dass man nach dem Laden des alten Spielstands erstmal einen anderen Zug macht, der ein Zufallsergebnis involviert (z.B. erstmal mit einer anderen Einheit einen anderen Gegner angreifen). Dadurch geht man eine Zahl in der Sequenz weiter und bekommt jetzt ein neues Ergebnis für das ereignis, dass einem wichtig ist.
Was mir natürlich klar ist, ist, dass die Entwickler das ganze trotzdem anderes lösen könnten. Es ist also immer noch eine bewusste Designentscheidung, aber es wird nicht unbedingt extra Aufwand betrieben (hidden save) um einem das aufzuzwingen. Aus Entwicklungssicht hat das vermutlich schlicht den Vorteil, dass es Ereignisse (insbesondere Bugs) dadurch leichter reproduzierbar macht.