Ich entwickele seit einiger Zeit an einem Open Source Spiel. Zunächst war die Engine auf 10 Frames pro Sekunde festgelegt. Dann haben sich einige User über die nidrige FPS Rate beschwert, und wir haben den Tipp bekommen, dass die Grafik-Engine einfach so viele Frames, wie CPU-Kapazität übrig ist, zeichnen soll. Haben wir dann im nächsten Release gemacht. Dann kamen die Beschwerden, dass das Spiel die CPU komplett auslastet und auch nicht mehr so flüssig reagiert. Was ist die allgemein übliche Vorgehensweise für Spiele?
Für n ruckelfreies Game brauchste mindestens 20-25 Fps. Ich würd das Game auf ca. 30 Fps festnageln, dann merkt man vom Ruckeln nichts.
Die einzelnen Threads vernünftig gegeneinander priorisieren.
Vernünftig ist, die Framerate auf die Wiederholrate des Bildschirms anzupassen. Flachbildschirme machen meist 60Hz, mehr Frames zu berechnen ist sinnlos. Bei guten Spielen gibts meist einen Schalter für "enable VSync" oder so. Ansonsten kann man auch ein Option einbauen, mit der der Spieler seine gewünschte Framerate eingibt. Wenn ein altes Spiel auf meiner Höllenmaschine 300 Frames/sec berechnet, steigt nur der Stromverbrauch und die Lüfter werden laut. Leider sieht man selten ein Spiel, bei dem die CPU schläft - fast alle brauchen 100% CPU.
Ohforf Sake schrieb: > Leider sieht man selten ein Spiel, bei dem die CPU schläft - fast alle > brauchen 100% CPU. Naja bei einem Grafikbomber wird man da auch nicht drumrum kommen. Wenn du nen Querschnitt machen willst, klingt 30fps ganz gut.
Flo schrieb: > Für n ruckelfreies Game brauchste mindestens 20-25 Fps. > > Ich würd das Game auf ca. 30 Fps festnageln, dann merkt man vom Ruckeln > nichts. Oh doch, das merkt man, da bei Spielen im Allgemeinen die Bewegunsunschärfe fehlt, die ein Video hat. Ich sehe jedenfalls einen sehr deutlichen Unterschied zwischen 30 fps und 60 fps. Anton schrieb: > Was ist die allgemein übliche Vorgehensweise für Spiele? Die üblichen Varianten, die ich kenne, sind entweder unbegrenzte Framerate oder VSync, in der Regel umschaltbar im Programm. Wobei man bei eingeschaltetem VSync das Problem hat, daß die Frameraten sich sehr plötzlich in großen Schritten ändern, wenn der Rechner nicht schnell genug ist, um die vollen 60 Hz zu schaffen. Wenn er z.B. gerade 59 Hz schaffen würde, wird schon gleich mal auf die Hälfte, also 30 Hz, runtergeschaltet. Das nächste ist dann ein Drittel, also 20 Hz. Da die Komplexität des Bildes sich ja dauernd ändert, wechselt das dann öfters mal, und diese plötzlichen Wechsel fallen recht unangenehm auf. Deshalb tendiere ich dazu, VSync auszuschalten, wenn mein Rechner nicht in wirklich jeder Situation die 60 Hz voll schafft. Ich würde es konfigurierbar machen, dann kann sich's jeder aussuchen, wie er es haben will.
Wenn du die Framerate limitierst und das Spiel immer gleich schnell läuft, würde das auch anderen Teilen des Spiels zu Gute kommen: http://gafferongames.com/game-physics/fix-your-timestep/
Kleine Anmerkung: Es ist blödsinn 60 FPS, selbst Kinofilme haben nur 24 und man merk es nicht.
da hat wohl noch einer keine action games gezoggt, oder schnelle renngames. kla braucht man bei einem aufbau spiel wie siedler und anno keine high fps, aber spiele wir dirt2 und undreal tournament macht es durchaus sinn die 60fps zu halten.
Du merkst es nicht, wolltest du sagen. Kinofilm flimmert gnadenlos, für Leute mit schnelleren Augen. Normalerweise ist die Framerate fest (und möglichst synchron mit der weiteren Verarbeitungskette sonst gibt es vor allem bei geringen UNterschieden Aliasingeffekte, Ruckeln) und die Spielesoftware berechnet das Bild für genau den Zeitpunkt an dem der nächste Frame angezeigt werden soll. Ist sie damit früher fertig, beginnt sie schon das nächste Bild (double buffering). Erst wenn auch das schon fertig gerechnet ist, und das erste Bild noch immer nicht weggeschickt wurde, dann hält sie an und übergibt die Rechentzeit dem Betriebssystem, schliesslich nützt es nichts, sekundenlang vorauszurechnen, und auf keine Benutzerreaktion mehr einzugehen. Schaffte sie das nicht, das Bild zu berechnen, wird das Detail zum nächsten Bild hin verringert oder sonstwie darauf reagiert "Hilfe, mehr GPUs nachrüsten".
wie nennt sich eigentlich das spiel welches hier entwickelt wird? ;)
MaWin schrieb: > Du merkst es nicht, wolltest du sagen. Kinofilm flimmert gnadenlos, für > > Leute mit schnelleren Augen. Hehe, das musst du mir jetzt nochmal genauer erklären ;) http://webvision.med.utah.edu/GCPHYS1.HTM Ich befürchte nur, das ist nicht so einfach erklärt :D Also ich Spiele schon seit einiger Zeit Quake und dort habe die Frames auf 125 FPS beschränkt. Desweiteren ist es immer schön wenn man so viel wie mögliche Frames berechnet, damit man das Spiel auch zu Benchmarks heranziehen kann. Wie wärs ihr macht da eine Variable die man einstellen kann in eure Engine. Dann kann das jeder für sich entscheiden. Im übrigen passt auf dass eure Physik komplett unabhängig von der Framerate ist, das führt zu verrückten Bugs. http://www.funender.com/quake/articles/strafing_theory.html Kannst du eigentlich mal ein Link zu eurem Spiel posten? Würde mich schon interessieren was das ist.
Anton schrieb: > Zunächst > war die Engine auf 10 Frames pro Sekunde festgelegt. Wer hatte denn die Schapsidee? Anton schrieb: > wir haben den Tipp > bekommen, dass die Grafik-Engine einfach so viele Frames, wie > CPU-Kapazität übrig ist, zeichnen soll. Das ist die übliche vorgehensweise, wobei es natürlich sinnvoll sein kann, die Framerate auf die Frequenz des Monitors zu begrenzen, d.h. in der Regel auf 60 FPS. Anton schrieb: > Dann kamen die Beschwerden, dass das Spiel die CPU > komplett auslastet Das ist doch normal. Wer will den parallel zum Spiel noch ein anderes Programm am laufen haben? Wenn ich ein Spiel starte, dann hat es den PC für sich alleine und kann natürlich 100% CPU-Zeit belegen. Anton schrieb: > und auch nicht mehr so flüssig reagiert. Das ist dann aber eher auf schlechte Programmierung zurückzuführen.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.