Ergebnis 1 bis 2 von 2
  1. #1
    Teilchen Teilchen ist offline

    100 FPS Mythos

    Hallo Leute,

    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 
    Fazit: Selbst wenn der Mensch nicht mehr als 30 Bilder pro Sekunde wahrnehmen kann, so kann er doch wahrnehmen, ob der Input und die Spielelogik schneller oder langsamer verarbeitet wird. Die Effekte, dass man z. B. das Gefühl hat das beim zurückschalten von 100 FPS auf 60 FPS die Maus nachzieht, sind also in der Tat richtig - denn der Input wird langsamer verarbeitet. Es ist ein Unterschied, ob man mit 30, 60 oder 100 FPS ein Spiel spielen kann.

    Und natürlich Quellen:

    - SFML Game Development, Packtpublishing (leider kein OpenBook)
    - Game Programming Patterns / Sequencing Patterns / Game Loop

    Lg !

  2. Anzeige

    100 FPS Mythos

    Schau dir mal diesen Bereich an. Dort ist für jeden was dabei!
  3. #2
    Dreami Dreami ist offline
    Avatar von Dreami

    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


  1. 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...

  2. 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 ;)

  3. Der Mythos: Darsteller: Jackie Chan, Kim Hee-seon, Tony Leung Ka-fei Regisseur: Stanley Tong FSK: Freigegeben ab 16 Jahren Studio: Splendid Entertainment/WVG...
  4. PC
    Mythos

    Mythos: Mythos http://www.forumla.de/bilder/2007/03/511.jpg System: Computer Genre: Rollenspiel Altersfreigabe: -