• Mitspieler gesucht? Du willst dich locker mit der Community austauschen? Schau gerne auf unserem ComputerBase Discord vorbei!

Andere Sind Rennspiele schlecht programmiert?

NoBody43

Lt. Junior Grade
Registriert
Juni 2018
Beiträge
290
Mir ist aufgefallen, dass wenn ich meine Perspektive von 3rd Person (auf das Auto schauend) zu 1st Person (im Auto) wechsle, ändert sich die FPS Zahl kaum. D.h. obwohl bei 1st Person etwa die Hälfte des Sichtfeldes (in The Crew etwa 55%) vom Autoinnenraum verdeckt ist, scheint das die Leistung nicht zu beeinflussen.
Doch müsste es nicht deutlich weniger Leistung brauchen, den Innenraum darzustellen, anstelle der Außenwelt?
Müsste dann nicht die FPS Zahl bei der 1st Person Perspektive deutlich steigen, oder verstehe ich da etwas falsch?
(Das genaue Spiel, bei dem es mir vor einiger Zeit aufgefallen ist, ist The Crew.)

Ich glaube eigentlich nicht, dass es sein kann, das die das nicht bedacht haben, aber ich verstehe nicht, warum die FPS Zahl nicht steigt.
 
Ich habe jetzt The Crew nicht gespielt, aber prinzipiell gibt es keinen Grund zu der Annahme dass eine Cockpit-Perspektive weniger aufwendig modelliert sein sollte als die Außenperspektive. Wenn der Entwickler sich schon die Mühe macht und das einbaut, kommen in den meisten Fällen dafür auch hochauflösende Texturen und viele Details zum Tragen (Forza Horizon 4 wäre hierfür ein gutes Beispiel). Warum du dich über "schlechte Programmierung" aufregst, wenn die Performance unverändert bleibt, das soll auch mal einer verstehen.

(Davon abgesehen kann es natürlich einfach sein, dass dein System im CPU-Limit hängt und die Anforderungen an die Grafikkarte somit schlicht irrelevant sind.)
 
Es wirkt aber durchaus unwahrscheinlich, dass die Leistung in so einem Fall fast exakt gleich bleibt (wie es der Fall ist).
Ich rege mich nicht über "schlechte Programmierung" auf, mir ist nur kein anderer Titel eingefallen und ich habe mich einfach gefragt, ob man das nicht besser machen kann.
Nein, kein CPU Limit auf QHD@60fps.
 
NoBody43 schrieb:
und ich habe mich einfach gefragt, ob man das nicht besser machen kann.

1. ja sicher gehts besser ..

Nur die Frage ist wie arbeitet der Renderer ... der Rendert das ganze Bild und fügt dann das Cocpit ein ... kostet zwar mehr Leistung aber dafür gibts keine Kanten die mal nicht berechnet wurden.

Ist aber auch bei anderen verdeckten Sachen so das die alle immer Berechnet werden ... und erst später rausfallen wenn der Z-Buffer gecheckt wird.
 
  • Gefällt mir
Reaktionen: ReignInBlo0d und Tino77
Und warum wird das so gemacht und nicht einfach gesagt: In der 1st Person ist dieser Bereich nie zu sehen, dann überspringe immer diesen Bereich bei der Berechnung.
Oder weiß der Renderer nicht vorher, welche Teile wo im Bild platziert sein werden?
 
Kostet Geld.
Und warum sollten die das machen?
Das Spiel muss ja auch außerhalb vom cockpit flüssig laufen -> einfach das selbe rendern - warum auch nicht
 
  • Gefällt mir
Reaktionen: Tino77
Und das Cockpit ist ja auch keine schlichte Maske, die immer den gleichen Bildbereich verdeckt (Kamerawackeln/-bewegung). Es müsste also in jedem Frame neu berechnet werden, welcher Teil der Außenwelt nicht gerendert werden bräuchte. Und das eingesparte Rendern der Außenwelt gleicht wahrscheinlich nicht ausreichend die zusätzliche Rechenzeit für die Sichtbarkeitsprüfung aus, so dass sich der zusätzliche Programmieraufwand selten lohnt.
 
  • Gefällt mir
Reaktionen: ReignInBlo0d und Tino77
mibbio schrieb:
Es müsste also in jedem Frame neu berechnet werden, welcher Teil der Außenwelt nicht gerendert werden bräuchte.
Man könnte auch die Vereinigung aller Bewegungen, Approximationen Oder Puffer benutzen.

Selbst per Frame wäre der Rechenaufwand lächerlich ggü. Dem Rest.
 
new Account() schrieb:
Und warum sollten die das machen?
Das Spiel muss ja auch außerhalb vom cockpit flüssig laufen -> einfach das selbe rendern - warum auch nicht
Weil man so noch mehr FPS in 1st Person hätte -> höhere Einstellungen, höhere Auflösung usw.
mibbio schrieb:
Es müsste also in jedem Frame neu berechnet werden, welcher Teil der Außenwelt nicht gerendert werden bräuchte.
Der Großteil des durch das Cockpit verdeckten Bereichs bleibt verdeckt, egal wie sich das Cockpit bewegt. Den Teil kann man immer weglassen. Außerdem wird die Berechnung des verdeckten Bereichs nicht allzu aufwendig sein.
EDIT: Hat man das nicht sowieso berechnet? Es ist nämlich einfach die Position des Cockpits plus die Form. Wenn man die Form als ein Array vorher ein Mal berechnet hat, oder einfach als Bild im Speicher hat, dann muss man nur ein Bild verschieben. Es gibt ja nicht gerade viele Möglichkeiten, wo das Cockpit sein kann.
So oder so, der Bereich, der immer verdeckt ist, muss nicht berechnet werden.
mibbio schrieb:
Und das eingesparte Rendern der Außenwelt gleicht wahrscheinlich nicht ausreichend die zusätzliche Rechenzeit für die Sichtbarkeitsprüfung aus, so dass sich der zusätzliche Programmieraufwand selten lohnt.
Dazu:

Ich glaube, wenn man diese Frage beantwortet, dann klärt sich auch das mit dem Cockpit:
Wird beim Rendern auch die Seite eines Modells (z.B. eines Charakters oder eines Autos) gerendert, die man nicht sieht?
Wenn ja, dann lohnt sich die Überprüfung des sichtbaren Teils nicht.
Wenn nein, dann lohnt sich die Überprüfung des sichtbaren Teils und die Weglassung des nicht sichtbaren Teils.
Weiß das einer von euch zufällig?

Ich kann mir einfach nicht vorstellen, dass das Weglassen von Berechnungen in einem vorher festgelegten Bereich nicht Leistung sparen soll.
 
Für so einen Fall eines Cockpits gibt's in der Computergrafik sogenannte Schablonen (der englische Fachbegriff fällt mir jetzt nicht ein). Damit wird dann nur der Sichtbare Teil der Szene wirklich gerendert. Daher wäre durchaus ein Performanceunterschied zu erwarten. Jetzt ist aber noch die Frage, wie dann der Innenraum gerendert wird. Der ist ja nicht statisch, sondern verändert sich auch, v.a. wenn man Kopfbewegungen durchführen kann. Ist dann das Cockpit tatsächlich Gegenstand der Außenszene, ist vielleicht kein Unterschied zu bemerken, oder es wird noch schlechter.
Auf die Frage deines Titels hin aber noch: Ja, Rennspiele sind schlecht programmiert. Mir ist leider noch kein Spiel untergekommen, bei dem die Sounds, besonders der Motorsound richtig realistisch klingen. Ich finde es eine Schande und zT eine Unverschämtheit, was einem da Präsentiert wird. In einem Dirt 4 bspw. klingen viele Autos eher wie eine Motorsäge. Die Leistung des Motors, die man gerade per Gaspedal abruft z.B. (unabhängig von der Drehzahl) wird in den meisten Spielen gar nicht akustisch dargestellt, dabei ist das ein elementarer Bestandteil des Motorsounds. Aber Sound ist nicht unbedingt nur bei Rennspielen ein Manko, hier fällt es nur besonders auf, wenn Autos nach einiger Zeit nervig klingen oder der Untergrund und Traktion (gerade bei Rally) nicht richtig akustisch dargestellt wird.
 
Das Stichwort wäre Occlusion Culling, aber ich denke das wird mit Absicht nicht gemacht da man vielleicht Schwankungen in den FPS vermeiden möchte wenn man die Kameras durchwechselt.

Grundsätzlich ist es aber in jedem Spiel so, je weniger aufwendig die Szene zu rendern ist, desto schneller geht das i.d.R.
Wenn man in einem 3D Shooter ist und auf den Boden schaut, hat man mehr FPS als wenn man in die Ferne blickt und hunderte von Gebäuden, Bäumen etc. sieht. Je nachdem wie das Cockpit implementiert ist, kann es entweder eine Textur sein die einfach über die andere Szene eingeblendet wird, oder, im Fall von Forza Horizon 4 z.B. wird die Kamera einfach in das Fahrzeug versetzt. Aber wie gesagt, da kommt dann das Occlusion Culling zum tragen. Würde hier auch erwarten, dass im Cockpit dann mehr FPS zur Verfügung stehen. Habe es jetzt nicht aktiv getestet. Mal schauen.

Also wie zu erwarten:
Kamera über dem Auto = 80 FPS
Cockpit = 90 FPS
1st Person ohne Cockpit (geringer Sichtfeld) = 95 FPS

Dein Spiel ist vielleicht anders programmiert.
 
NoBody43 schrieb:
Mir ist aufgefallen, dass wenn ich meine Perspektive von 3rd Person (auf das Auto schauend) zu 1st Person (im Auto) wechsle, ändert sich die FPS Zahl kaum. D.h. obwohl bei 1st Person etwa die Hälfte des Sichtfeldes (in The Crew etwa 55%) vom Autoinnenraum verdeckt ist, scheint das die Leistung nicht zu beeinflussen.
Doch müsste es nicht deutlich weniger Leistung brauchen, den Innenraum darzustellen, anstelle der Außenwelt?
Müsste dann nicht die FPS Zahl bei der 1st Person Perspektive deutlich steigen, oder verstehe ich da etwas falsch?

Ich glaube eigentlich nicht, dass es sein kann, das die das nicht bedacht haben, aber ich verstehe nicht, warum die FPS Zahl nicht steigt.
NoBody43 schrieb:
Nein, kein CPU Limit auf QHD@60fps.

Aha, du hast also offenbar ein 60 FPS-Limit eingestellt und wunderst dich das die FPS nicht steigen!?

Davon ab, warum sollte die Cockpit-Perspektive mehr FPS liefern? Statt der (verdeckten) Umwelt muß dann halt der Fahrer bzw. zumindest die Arme zum Lenken und Schalten, das Cockpit mit seinen ganzen Anzeigen und der Innenraum mit Spiegelungen/Schatten berechnet werden.
 
Zuletzt bearbeitet von einem Moderator:
  • Gefällt mir
Reaktionen: ReignInBlo0d und Dandelion
NoBody43 schrieb:
Außerdem wird die Berechnung des verdeckten Bereichs nicht allzu aufwendig sein.
EDIT: Hat man das nicht sowieso berechnet? Es ist nämlich einfach die Position des Cockpits plus die Form.

Ich kann mir einfach nicht vorstellen, dass das Weglassen von Berechnungen in einem vorher festgelegten Bereich nicht Leistung sparen soll.

kleiner Denkfehler den du dabei hast ... das meiste was ein Cockpit verdeckt ist Strasse und Autos ... ergo ein sehr geringer Anteil an Dreiecken die man weglassen könnte durch das Cockpit.
Und auch so einfach ist das nicht wenn man denkt der müsste dann einfach statt 16:9 in 21:9 rendern ... alles Easy.


Falc410 schrieb:
Das Stichwort wäre Occlusion Culling, aber ich denke das wird mit Absicht nicht gemacht da man vielleicht Schwankungen in den FPS vermeiden möchte wenn man die Kameras durchwechselt.

Problem dabei ist ... es muss auf allen Grafikkarten die gleiche Qualität am Ende rauskommen ... da gab es früher oft Probleme bei den Karten die erst den Abgleich gemacht hatten wegen den verdeckten Dreiecken.

Dann hatte man oft unsauber Kanten oder flackernde Texturen... also Texturen die je nach Frame da waren oder wieder weg... das stört die Sicht erheblich. Weiterhin kostet so eine Sichtprüfung auch Rechenzeit. Also auch Zeit die man bräuchte um die Szene einfach zu Berechnen und das was zu viel ist am Ende wegzulassen. Dabei sollte man immer bedenken das man die Szene immer in einer gewissen Reihenfolge abarbeiten muss wegen den Tiefenvergleich sonst Berechnet man doch erst das was hinten ist und dann alles was vorne ist. Was bei einem einfachen Berechnen und späteren Abgleich egal ist.

Mal so einfach sagen wenn man das einfach weg lässt wirds schneller ... nein.

Auch dein Test der FPS bringt da wenig ein ... denn auch eine spätere Überpfüng des Sichtbereichs per Z-Buffer lässt Berechnungen auf der GPU wegfallen ... und bringt ein Leistungsplus...
 
Wären kurzzeitig mehr FPS überhaupt ein Vorteil? War bis jetzt eigentlich immer der Meinung, dass man eigentlich nur die Schwankungen und nicht den absoluten Wert wahrnimmt - sprich konstante 60 FPS fühlen sich flüssiger an als 120 FPS die ständig bis auf die Hälfte einbrechen.
 
  • Gefällt mir
Reaktionen: ReignInBlo0d und R00tMaster
R00tMaster schrieb:
Aha, du hast also offenbar ein 60 FPS-Limit eingestellt und wunderst dich das die FPS nicht steigen!?
Nein, wovon redest du? Wie kommst du darauf? Es sind halt ungefähr 60fps
Wobei, ich meine, dass The Crew immer ein 60fps Limit hat und ich es ausprobiert habe, indem ich es auf 4k oder so gestellt habe, um es auf unter 60fps zu bringen. Aber nein, ich war natürlich nicht im Limit.
 
The Crew ist eh nen schlechtes Beispiel mit dem Festen 30 oder 60 FPS cap.
 
  • Gefällt mir
Reaktionen: jlnprssnr
NoBody43 schrieb:
Doch müsste es nicht deutlich weniger Leistung brauchen, den Innenraum darzustellen, anstelle der Außenwelt?


Ist bei dir im Kalender zufällig noch 1998 und Cockpits reine jpeg`s ? :D
 
Zurück
Oben