Zeit vs Frame vs Pixel
Ein Entwurf des Beitrags liegt auch schon seit einiger Zeit auf meiner Festplatte und hat es nun doch endlich auch noch in die Freiheit des Internets geschafft!
Wenn man Spiele programmiert sind die Begriffe wie Zeit, Frame und Pixel sehr wichtig, denn möchte man eine Bewegung eines Objektes darstellen, sollte man diese Begriffe in der richtigen Reihenfolge zusammen bringen können, um z.B. die Geschwindigkeit fest zulegen.
Hier ein bisschen Theorie über einzelne Begriffe.
Ein Frame entspricht einem vollen Bild, das an einem Bildschirm dargestellt wird. Dies geschieht aber nicht einmal in der Sekunde sondern normalerweise etwa sechzig Mal. Also hat man sechzig Frames pro Sekunde und ‘Frame pro Sekunde’ wird meist zu FPS zusammengefasst.
Mit der 3D Technologie, oder umgekehrt, kommen nun wieder mehr Bildschirme mit einer Aktualisierungsrate von 120FPS auf den Markt. Ein durchschnittlicher Bildschirm zeigt jedoch ‘nur’ 60FPS an, doch die FPS welche nun oft bei Spielen angegeben werden, hat nicht immer direkt etwas mit der Darstellung am Bildschirm zu tun, sondern sagt meist lediglich aus wie viele Bilder berechnet werden können pro Sekunde. So kann ein Spiel (wohl nicht ein 3D intensives Spiel) mit 2000FPS laufen, der Bildschirm stellt jedoch immer noch nur sechzig Bilder pro Sekunde dar. Mit 2000FPS sollte man unbedingt eine Frameratelimit setzten, da man die CPU bzw. GPU nur unnötig belastet, denn obwohl eine hohe Framerate einen präzisere Berechnung von Objekte zu lässt, so ist alles über 120FPS wohl schlicht Wegs übertrieben und unnötig!Vielleicht gibt es Personen, welche einmal etwas von VSync gehört haben oder es in irgend einem Spielen aktivieren musste. VSync steht für ‘Vertical Synchronisation’ und bedeutet dass die Ausgabe von Frames immer schön wartet bis der Bildschirm wieder ein neues Bild zu zeichnen beginnt. Somit kann diese Option zu einem Bremsklotz führen, je nach dem wie Spiellogik aufgebaut wurde, doch gewisse Bildschirme und Grafikkarte vertragen sich nicht so gut und würde dies nicht aktiviert werden, käme es zu sogenanntem ‘Tearing’ (Horizontale Streifen). Einen interessanten Englischen Beitrag zu VSync und DirectX findet ihr auch auf Erik McClure’s Blog.
Obwohl FPS eine zentrale Rolle spielt, so würde sich doch keine Spielfigur so bewegen wie wir es gerne hätten, würde man nicht bestimmte Geschwindigkeiten einhalten. Wie der Programmierer den Animationsapparat nun baut ist ihm überlassen und trotzdem wird er sich einmal damit beschäftigen müssen mit welche Geschwindigkeit seine Objekte sich bewegen und dafür gibt es dann die Möglichkeit das Ganze zu abstrahieren und ‘natürliche’ Einheiten wie m/s zu verwenden, oder man kann eine direkte Einheit wie Pixel pro Sekunde.
Nebst der Pixel pro Sekunde gibt es die ‘Einheit’ Pixel pro Frame, welche doch eigentlich auch ganz praktisch ist, doch obwohl man bei der Entwicklung mit einer einigermassen stabilen Framerate arbeitet, so ist Leistung einer anderen Grafikkarte um vieles höher und anstatt die langsamen 100FPS produziert die andere Hardware 1000 Bilder pro Sekunde und lässt das Objekt somit 10 Mal schneller bewegen.
Pixel pro Sekunde bleibt somit dann konstant, egal was für Hardware das Spiel vorfindet.
Hier nun noch einmal die Definition der einzelnen Variablen:
- FPS – F/s – frames per second – Bild pro Sekunde – Bildwiederholung pro Sekunde
- PPF – p/F – pixel per frame – Pixel pro Bild – relative Geschwindigkeit zum Bild
- PPS – p/s – pixel per second – Pixel pro Sekunde – absolute Geschwindigkeit
Berechnung der einzelnen Variablen (links P für pro/per – rechts / für pro/per)
FPS = PPF / PPS – F/s = p/F / p/s
PPF = PPS / FPS – p/F = p/s / F/s
PPS = PPF / FPS – p/s = p/F / F/s
Fazit
- Behaltet eure FPS im Sichtfeld.
- Bietet die VSync Option an, doch lasst sie standardmässig deaktiviert.
- Verwendet PPS oder eine Abstrahierung und nie PPF!
Geschrieben am 06.09.2011 von admin in Computer, Games, Linux, Windows
Tags: FPS, Frame, Framrate, Games, Pixel, Programming, Zeit