HellToKitty hat geschrieben: ↑21.09.2018 07:42
Ist das nicht bei manchen Genres sogar Notwendig. Soweit ich weiß will man bei Beat'em Ups bzw. Tournnament Fightern die Frames auf 60 gelockt haben, damit das Timing immer gleich ist. Ich könnte mir jetzt vorstellen, dass das bei SHMUPS auch so laufen soll. Im Umkerhrschluss heißt das dann, dass bei einer Aufhebung des Framelocks das komplette Timing des Spiel aus dem Ruder laufen würde.
Jein.
Natürlich will man bei Beat'em Ups ein möglichst konstantes und exaktes Timing. Man kann ja auch den Input takten, deswegen muss er nicht zwangsläufig mit der Framerate synchronisiert sein. Bei BeU will man halt absolute Chancengleichheit auf die letzte Millisekunde für alle Spieler gleich, also nicht nur gleich getaktet, sonder auch synchronisiert, und dann macht es doch irgendwie wieder Sinn, doch alles zusammenzukoppeln.
Ich habe da mal einen Bericht von John Carmack (Chefentwickler von ID-Software) gelesen, wo er diverse Techniken der damals neuen ID-Tech-Engine erklärt hat, das war iirc die Version der Engine, die für Quake 3 verwendet wurde. Eines der Kernelemente der neuen Engine war eben, dass etliches von der Framerate entkoppelt wurde. Wohlgemerkt, dass war 1999/2000!!!
So läuft z.B. wohl der Netcode mit 120Hz, unabhängig zur Framerate, bei Quake soll eben genau das für Chancengleichheit sorgen. Ob der eine 2 Frames mehr sieht als der andere, spielt dabei kaum eine Rolle, aber wenn die Netzwerkkommunikation durcheinander kommt, bricht das Spiel quasi zusammen. Und vorallem willst du nicht, das ein Mitspieler mit schlechtem PC der dann mit 23fps spielt, das ganze Onlinematch mit runterzieht. Deswegen soll eben der Netcode mit konstanten 120Hz laufen, auch wenn die GPU im PC kaum 30fps hinkriegt.
Auch umgekehrt kann man solche entkoppelte Mechanismen hervorragend einsetzen, z.B. sozusagen als physikalisches Level-of-Detail.
Wenn die Physikberechnungen and die Framerate gekoppelt sind, bedeutet das auch, das plötzlich vermehrt anfallende Physikberechnungen deine Framerate mit runterziehen. Wenn es entkoppelt ist, muss das nicht sein, dann bleibst du bei deinen 60fps, aber die Trümer der Explosion fliegen keine absolut saubere parabel, sondern ein bisschen einen eckigen Bogen, weil die Physik dann halt nicht mehr so genau berechnet werden kann und mglw. sogar nur jeden 5ten Frame die Flugrichtung eines Teils updated, statt eben gleich jeden Frame um die Laufzeit von 5 Frames zu verlängern, weil der Frame nicht gerendert wird, bevor die Physik berechnet wurde.
Also ja, in manchen Grenzfällen kann es schon Sinn machen, das wieder zu koppeln. Wobei es ja jetzt nicht so das Problem ist, separat laufende Aspekte zu synchronisieren. Bei 99, 98% aller Spiele wird es aber sinnvoller sein, möglichst alles von der Framerate zu entkoppeln. Und das ist jetzt seit beinahe fast 20 Jahren bekannt und offensichtlich bei vielen Entwicklern immer noch nicht angekommen.