Ergebnis 1 bis 2 von 2
Thema: 100 FPS Mythos
-
04.11.2013, 22:28 #1Teilchen
100 FPS Mythos
in der Vergangenheit gab es immer wieder Threads und offtopic-Diskussionen (nicht nur hier, auch in anderen Foren), bei dem es um die Frage ging, ob der Spieler bei einem Spiel 100 FPS überhaupt wahrnehmen kann. Gerade wenn es um Konsolentitel geht wird immer wieder in den Raum geworfen, dass konstante 30 FPS reichen würden, da der Mensch ohnehin nicht mehr Bilder pro Sekunde wahrnehmen kann. Auf der anderen Seite die Behauptung das man selbst beim zurückschalten von 100 FPS auf 60 FPS extreme Veränderrungen spüren kann. Die Maus würde "nachziehen" uvm.
Aus gegebenen Anlass (beschäftige mich gerade mit der Spieleprogrammierung) ist mir aufgefallen, welche hartnäckige Fehlinterpretation des Wortes "FPS" sich in den allgemeinen Sprachgebrauch geschlichen und über Jahrzehnte gehalten hat. FPS - "frames per second" wird immer mit "Bilder pro Sekunde" übersetzt - was falsch ist. In der Spieleprogrammierung steht in diesem Zusammenhang der "frame" als ein Eigenname und beschreibt nicht ein Bild, sondern den gesamten Programmdurchlauf - die sogenannte Gameloop. Die Gameloop (dt. Spielschleife) ist eine spezielle Methode die solange offen ist und immer wieder durchlaufen wird, bis das Spiel geschlossen wird. In dieser Schleife wird nicht nur gerendert, sondern auch der input des Spielers und die gesamte Spielelogik verarbeitet. "frames per second" steht also gar nicht für die Anzahl der Bilder pro Sekunde, sondern für die Anzahl der Gameloop-Durchläufe.
Jetzt wird man sich zurecht fragen, wozu man überhaupt diese "frames" messen muss - warum spricht man von "frames pro Sekunde" ? Das hat den folgenden Hintergrund: Angenommen ein Programmierer programmiert Tetris auf einem alten Pentium4 144 mhz Rechner. Er testet sein Spiel, die Steine fallen in einem angemessenen Tempo. Das gleiche Spiel testet er Jahre später auf einem PC mit einer CPU mit mehreren GHZ. Nun tritt folgender Effekt auf - die Steine fallen in einem rasanten Tempo. Wahrscheinlich 10000x fach so schnell wie auf seinem alten Pentium Rechner. Dieser Effekt wird dudurch verursacht, dass der Programmierer keine Rücksicht darauf genommen hat wie schnell der Rechner eigentlich das Programm durchläuft. Beispiel: ein Regentropfen soll vom Himmel auf die erde Plumpsen. Bei jedem Programmdurchlauf fällt der Tropfen um 1 Pixel. Da ist es natürlich ein Unterschied, ob meine CPU bspw. 100 Programmdurchläufe in der Sekunde schafft, oder 1000000. Der Tropfen wird im letzteren Fall schneller auf der Erde sein. Ob der Spieler das nun in Bildern wahrgenommen hat oder nicht spielt dabei keine Rolle.
Diese Phänomen lässt sich auch gut bei Playstation-Emulatoren sehen. Limitiert man dort nicht die FPS, sind die Spiele so extrem schnell, dass sie unspielbar sind. Das liegt daran das die Programmierer bei der Playstation früher natürlich alle die gleiche Hardware hatten, somit war es nicht nötig, die Gameloop Durchläufe zeitlich zu regeln - die waren ja eh immer gleich schnell bei gleicher Hardware. Benutzt der Emulator aber die Rechenleistung der PC-CPU, sind die Durchläufe umd ein tausendfaches schneller.
Die Lösung des genannten Problems ist natürlich auch recht einfach. Man limitiert als Programmierer einfach die Programmdurchläufe, indem man Systemebefehle einbaut die dafür auf die Systemzeit des Rechners zurückgreifen. So kann ein konstanter Spielfluss auf Rechnern mit unterschiedlichen CPUs gewährleistet werden. So sagt man bspw, dass ein Programmdurchlauf 16ms betragen soll. Bei Spielen wo man die FPS als Spieler selbst regeln kann, ist dies bis zu einem gewissen Grad Variabel.
Programmiertechnisch würde das so aussehen:
PHP-Code:while (true) // gameloop start
{
double start = getCurrentTime();
processInput();
update();
render();
sleep(start + MS_PER_FRAME - getCurrentTime());
} // gameloop end
Und natürlich Quellen:
- SFML Game Development, Packtpublishing (leider kein OpenBook)
- Game Programming Patterns / Sequencing Patterns / Game Loop
Lg !
-
-
05.11.2013, 21:06 #2Dreami
AW: 100 FPS Mythos
Danke für diesen guten Beitrag. Ich bin zwar auch Programmierer, allerdings nicht in diesem tiefen Bereich (eher Systemprogrammierung à la Powershell), und so war mir das gar nie bewusst, obwohl ichs eigentlich wissen müsste
Sehr gut recherchiert, weiter so!
Ähnliche Themen
-
Shisui, der Mythos: wie hat es itachi einfach mal so geschaft shisui zu besiegen ? mir fällt auch auf das madara und shisui ähnliche jutsus besitzen und warum wollte... -
Mythos free Hack n Slay: Hallo, habe ein bisschen im Internet rumgestöbert und habe das gefunden: Mythos Europe Schaut es euch an, sieht lustig aus ;) -
Der Mythos: Darsteller: Jackie Chan, Kim Hee-seon, Tony Leung Ka-fei Regisseur: Stanley Tong FSK: Freigegeben ab 16 Jahren Studio: Splendid Entertainment/WVG... -
PCMythos
Mythos: Mythos http://www.forumla.de/bilder/2007/03/511.jpg System: Computer Genre: Rollenspiel Altersfreigabe: -
Arktos Ex und Starmie Ex nervt so massiv. Selbst wenn Misty fehlschlägt kommt dieses Kack 90 Damage für zwei Energien Pokémon um die Ecke. Nochmal 10...
Pokémon Trading Card: Pocket