Schlechte Multi-Core unterstützung?

Willkommen in der Transport Fever Community

Wir begrüßen euch in der Fan-Community zu den Spielen Transport Fever und Train Fever, den Wirtschaftssimulatoren von Urban Games. Die Community steht euch kostenlos zur Verfügung damit ihr euch über das Spiel austauschen und informieren könnt. Wir pflegen hier einen freundlichen und sachlichen Umgang untereinander und unser Team steht euch in allen Fragen gerne beiseite.

 

Die Registrierung und Nutzung ist selbstverständlich kostenlos.

 

Wir wünschen euch viel Spaß und hoffen auf rege Beteiligung.

Das Team der Transport-Fever Community


  • Muss man da quasi alle Stadtgebäude zu einem Mesh zusammenfügen, ums mal in TpF-Sprech zu sagen

    Ich habe den Punkt so verstanden, dass das Spiel die Gebäude einer Stadt in Distanz selbst zu einem einfacheren Objekt zusammenfasst und dabei die kleinen Details wegoptimiert. Diese Stadt würde dann als ein einziges Objekt gezeichnet.


    Aber wie gesagt, spannend war er auf jeden Fall. Auch die Aussage, dass TpF eigentlich sehr gut parallelisierbar sein sollte *hmm*

    Nur die aktuelle Implementierung gibt die Parallelisierung nicht her.

  • In dem Zitat geht es um GTA.... So kann man Sachen auch aus dem Zusammenhang ziehen ;)


    In CSL gibt es eine maximale Zahl von gleichzeitig Simulierten Agenten und die Simulation wird ausgebremst, wenn die Rechenpower nicht mehr ausreicht. Und wenn auch das Ausbremsen der Simulation nicht mehr reicht, wird die Grafik auch noch gebremst.


    In TPF kann man weder eine max Zahl von Agenten umsetzen, noch die Simulation bremsen. Warum nicht?
    Maximale Zahl von Agenten heißt: Mit wachsender Einwohenerzahl würde irgendwann das Limit von "gleichzeitig simulierten Personen" getroffen werden, und es würden auf das Gesamtnetz Verteilt weniger Leute die Linien benutzen. In CSL macht sich das durch Vergleichsweise gesehen leere Straßen bemerkbar, in TPF würden die Einnahmen einbrechen. Kontern kann man das nur, indem man die "nicht mehr simulierten" Agenten nur noch statistisch in die Linienbenutzung und damit die Gewinn-Kalkulation einbezieht.
    Die Simulationsgeschwindigkeit zu verringern heißt zum Beispiel, die aktuelle Geschwindigkeit der Züge, neue Wegfindungen oder auch Kollisionsberechnungen müssten weniger oft ausgeführt werden. Dementsprechend würden Fahrzeuge kollidieren, Signale überfahren oder Ruckartig stehen bleiben. All das ist in CSL vollkommen egal, in TPF aber tödlich für die realistische Simulation.


    Abhilfe wäre nur eine extreme Parallelisierung, um aktuelle CPUs auszunutzen - das ist aber entgegen der Angabe im Beitrag auf Steam nicht ganz so einfach. Machbar ja - aber wahrscheinlich muss man da fast bei Null anfangen. Alternativ muss die Zahl der Agenten extrem reduziert werden. Man kann die echte Simulation mit statistischen Werten ergänzen, um Leistung zu sparen (auf kosten der realistischen Simulation). Auch interessant finde ich den Ansatz von Planet Coaster, nicht nur einzelne Personen sondern Gruppen von Personen zu simulieren. Jede Gruppe wird einzeln simuliert, aber durch die Anzahl von Personen in einer Gruppe gibt es einen größeren "Wimmel-Faktor" - es sieht einfach nach mehr aus, als es ist.

  • Nach der Analyse auf Steam "kostet" die Simulation im Vergleich zur Darstellung der Grafik deutlich weniger FPS. Daher ist das Fazit ja auch, dass das Spiel von einem effizienteren "graphics subsystem" am stärksten profitieren würde.


    Daher ist die Simulation nicht das primäre Problem für die schlechte Performance in TpF und es macht aktuell wenig Sinn, die Simulation zu ändern.

  • Ich habe den Punkt so verstanden, dass das Spiel die Gebäude einer Stadt in Distanz selbst zu einem einfacheren Objekt zusammenfasst und dabei die kleinen Details wegoptimiert.

    For example - far away cities should be drawn as a piece of static geometry with a simple greyish/bluish color.


    Zum Beispiel: weit entfernte Städte sollten als eine einzige Geometrie (ein Mesh) mit einer grauen/blauen Farbe dargestellt werden.


    Darum geht's doch in dem Zitat?


    Ich verstehe ihn so, dass es aktuell wohl so ist, dass auch bei weit entfernten Städten jedes einzelne Gebäude mit seiner Textur als drawCall durch die CPU zur GPU gejagt wird, dieser Ansatz hätte zur Folge das bei jedem neuen Gebäude in einer Stadt eine neue "Geometrie" erstellt werden müsste, alles in allem dürfte das aber immer noch schneller gehen als jedes mal alle Gebäude zu rendern

    Gruß Dschimmi
    _____________


    Wenn Dummheit als Erklärung ausreicht, sollte niemals Böswilligkeit unterstellt werden.

  • Ich verstehe ihn so, dass es aktuell wohl so ist, dass auch bei weit entfernten Städten jedes einzelne Gebäude mit seiner Textur als drawCall durch die CPU zur GPU gejagt wird, dieser Ansatz hätte zur Folge das bei jedem neuen Gebäude in einer Stadt eine neue "Geometrie" erstellt werden müsste, alles in allem dürfte das aber immer noch schneller gehen als jedes mal alle Gebäude zu rendern

    Kann man ganz einfach testen. Die FPS-Zahl nimmt nicht zu nur weil man zu einem Baum ganz hinzuszoomt. Man kann gleich in der Luft in Vogelperspektive stehen bleiben. Ändert Nichts an den FPS.


    Edit: Eigentlich ist meine Aussage widersprüchlich zu dem was der Analys sagt. Ich werde das lieber noch einmal prüfen. :/

    Einmal editiert, zuletzt von Ampere ()

  • Komisch ist, was ich schon öfters bemerkt habe:
    bei der Cockpitmitfahrt gibt es kaum Ruckler, jedoch wenn der Zug in den Bahnhof einfährt und nach dem Losfahren gibt es bei mir einen etwa 1-2 Sekunden langen Lag..
    Die Frage was ich mir da immer stelle ist, was er in diesem Moment rechnen muss, damit das Spiel so laggt. Einen Grund MUSS es ja dafür geben..

  • Wenn die Grafik aber so ineffizient dargestellt wird wie beschrieben müssten die Grafikkarten ja rotieren und eine Vollauslastung haben. Dies ist aber nicht der Fall. Meine legt sich sogar gemütlich in ihren Idle-Modus zurück und fährt vielleicht den halben Takt auf. Das zeigt eher dass entweder die Darstellung zumindest dieser GPU keine große Mühe macht, oder dass sie bei der Darstellung von der CPU abhängt und den lieben ganzen Tag damit verbringt zu warten bis die CPU was liefert.


    Die CPU hingegen zeigt ja das was sie bei allen zeigt: ein Thread wird genutzt, aber auch nicht voll, ein weiterer oder manchmal noch einer mehr wird ab und zu genutzt. Das sind aber 1 bis 2 Threads von 16 die möglich wären. Und der zweite (oder auch dritte) Thread wird auch bei den ältesten Spielen beansprucht. Hier läuft also nicht ein TPF-Task drauf, es wird eher der Grafiktreiber sein der da was auslagert und somit indirekt auch dem Spiel hilft.


    Ich lese ja oft dass in Simulationen es ach so schwierig ist zu parallelisieren. Das stimmt, es ist sicher schwieriger als bei anderen Genres. Aber wenn man TPF betrachtet es gäbe es genug was parallel ablaufen könnte. Allein wenn man an die individuelle Simulation der Einwohner und ihrer Wege denkt. Diese Wege hängen ja nicht miteinander zusammen, Bewohner A ist nicht abhängig von Bewohner B. Hier würde ich das meiste Potential sehen um das Spiel mit der Anzahl der CPU-Kerne besser skalieren zu lassen, was sich auf die FPS auswirken müsste.


    System:
    MB: Asus Prime X370 Pro, CPU: AMD Ryzen R7-1700X @3,8 GHz, RAM: 32 GB @ DDR4-2666, Grafik: PNY Geforce GTX 1080 XLR8-OC 8 GB, Sound: Asus Xonar Essence STX-II, SSD 1: Samsung 960 Evo 500 GB M.2, SSD 2: Crucial CT512MX100 512 GB SATA, OS: Windows 10 Pro 64 Bit

  • Naja komplett unabhängig sind sie nicht. Sie alle brauchen Ziele und diese haben begrenzte Kapazitäten welche verbraucht werden. Also zumindest das müsste gecheckt werden. Und wenn man jeden einzeln per thread berechnet wirft TpF irgendwann mit 100.000 Threads um sich und müllt den Scheduler zu :/

  • Ich habe übrigends ein paar FPS dazu bekommen als ich SMT abgeschaltet habe, nicht ganz so viele als ich manuell über den Windows Task Manager TPF die geraden Kerne (sollten die echten sein) zugewiesen habe, also 0, 2, 4, 6 ....
    Echte Kerne schmecken dem Spiel also wesentlich besser als virtuelle, allerdings kann man SMT nur im UEFI an- bzw. abstellen. Kerne zuweisen muss man nach jedem Programmstart erneut, also auch nicht sehr praktikabel.

  • Das hab ich auch nie kapiert warum bei aktivem SMT der Scheduler nicht sowieso "echte" Kerne bevorzugt. Meine Erfahrung ist aber ähnlich, wobei ich echt zu faul bin jedes mal das zu machen. Im UEFI würd ich es ganz sicher nicht deaktivieren, weil ja genug Programme davon profitieren. Ja ich weiß, es gibt ja auch Tools;-D Aber man sollte auch nie den Fehler machen einem Single-Core-lastigem Spiel dann nur einen kern zuzuweisen. Einfach ausprobieren, 2-4 echte Kerne sollten das beste Ergebnis bringen, weil ja doch paar Tasks zusätzlich laufen. Trotzdem traurig, da schon seit zig Jahren absehbar war dass in Zukunft die Leistungssteigerungen im CPU-Bereich durch Parallelisierung gemacht werden und nicht durch Erhöhung der Einzelkern-Leistung.


    System:
    MB: Asus Prime X370 Pro, CPU: AMD Ryzen R7-1700X @3,8 GHz, RAM: 32 GB @ DDR4-2666, Grafik: PNY Geforce GTX 1080 XLR8-OC 8 GB, Sound: Asus Xonar Essence STX-II, SSD 1: Samsung 960 Evo 500 GB M.2, SSD 2: Crucial CT512MX100 512 GB SATA, OS: Windows 10 Pro 64 Bit

  • Wenn die Grafik aber so ineffizient dargestellt wird wie beschrieben müssten die Grafikkarten ja rotieren und eine Vollauslastung haben. Dies ist aber nicht der Fall. Meine legt sich sogar gemütlich in ihren Idle-Modus zurück und fährt vielleicht den halben Takt auf. Das zeigt eher dass entweder die Darstellung zumindest dieser GPU keine große Mühe macht, oder dass sie bei der Darstellung von der CPU abhängt und den lieben ganzen Tag damit verbringt zu warten bis die CPU was liefert.


    Das stimmt, es ist sicher schwieriger als bei anderen Genres. Aber wenn man TPF betrachtet es gäbe es genug was parallel ablaufen könnte. Allein wenn man an die individuelle Simulation der Einwohner und ihrer Wege denkt. Diese Wege hängen ja nicht miteinander zusammen, Bewohner A ist nicht abhängig von Bewohner B. Hier würde ich das meiste Potential sehen um das Spiel mit der Anzahl der CPU-Kerne besser skalieren zu lassen, was sich auf die FPS auswirken müsste.

    Die GPU is gelangweilt weil die CPU so ewig braucht. Die CPU wird komplett ineffizient genutzt. Stichwort: Draw calls
    Anders gesagt: Die Dieselpumpe is zu klein, deswegen bringt dir der Hubraum auch nichts.

BlueBrixx