Shogun 2 CPU Performance - unerklärliches Phänomen?

B

boxleitnerb

Gast
Hi,

ich hab grad etwas sehr Merkwürdiges festgestellt, was ich mir nicht erklären kann:

Wenn ich in Shogun 2 ein 1vs1 Gefecht starte und ins Kampfgetümmel reinzoome, hab ich ein CPU-Limit, die fps fallen entsprechend, es ruckelt.

Wenn ich jetzt aber ein 4vs4 Gefecht starte, ruckeln die Animationen schon direkt nach Schlachtbeginn. Soweit so normal, gibt ja viele Einheiten zu berechnen.
Aber: Die angezeigten fps sind sind total flüssig! Die Kamera auch! Nur die Bewegungsanimationen ruckeln sich einen ab.

Der zweite Fall an sich ist nachvollziehbar, wenn die Animationen und das Rendering performancemäßig entkoppelt sind. Aber warum ist das bei kleinen Gefechten anders?
 
Was hast du denn für eine PC-Konfiguration?
 
Deine CPU ist wohl zu schwach und dass eine ruckelnde Kamera vermieden wird, werden die Einheitsanimationen einfach nicht so oft berechnet.

(Nichts ist schlimmer als eine ruckelnde Kamera)

Was hast du für Hardware?
 
2600K@4GHz, GTX580 3GB SLI@stock

Wenn die Engine so priorisieren kann, warum tut sie es nicht bei kleineren Schlachten? Das ist es, was ich nicht verstehe.
 
Wenn du online zockst hat er deine Internetverbindung ein Problem, oder deine Treiber sind nicht mehr aktuell. Das System sollte doch locker ausreichen.
 
Teste mal bitte folgendes:
- Starte das Spiel
- Tab ins Windows raus
- Starte den Task Manager
- gehe auf Prozesse und suche den Prozess von Shogun raus
- mache einen Rechtsklick darauf und gehe auf "Zugehörigkeit festlegen"
- mache alle Haken bis auf den eines einzelnen Cores raus
- Tab ins Spiel und schau mal wie es läuft und berichte. ;)
 
Nur offline. Shogun 2 geht schon massiv auf die CPU, gerade größere Schlachten schafft kein aktuelles System ansatzweise flüssig. Die Frage ist halt, warum sich die Engine in diesen beiden Fällen so unterschiedlich verhält.
 
Die Engine ist doch eh ein Fall für sich! Ich spiele Shogun2 bereits seit Release (589 Stunden) und trotz unzähliger Patches crasht das Spiel andauernd. Ich habe noch nicht einen Spieltag erlebt, an dem es ohne Probleme lief.
 
pgene schrieb:
Teste mal bitte folgendes:
- Starte das Spiel
- Tab ins Windows raus
- Starte den Task Manager
- gehe auf Prozesse und suche den Prozess von Shogun raus
- mache einen Rechtsklick darauf und gehe auf "Zugehörigkeit festlegen"
- mache alle Haken bis auf den eines einzelnen Cores raus
- Tab ins Spiel und schau mal wie es läuft und berichte. ;)

Das macht hier keinen Unterschied, die Einheiten zuckeln weiterhin.

Ich muss meinen Post von vorhin revidieren:
Bei einer 1vs1 Schlacht ruckelt nur die Kamera, wenn die fps niedrig sind, nicht die Animationen (ist schwierig zu beurteilen, aber mir kommt es recht flüssig vor. Jedenfalls kein Vergleich mit 4vs4).

Bei 4vs4 ruckeln die Animationen immer, die Kamera nur, wenn man in die Action reinzoomt bzw. auf einen großen "Haufen" verkeilter Einheiten schaut.
 
Zuletzt bearbeitet:
Das Spiel wird wahrscheinlich so eine Standard Pipeline haben:

Berechnen der Spiellogik(viel Single Threaded CPU + evtl GPU) -> Berechnen der Grapischen Spiellogik(viel Multi Threaded CPU + evtl GPU) -> Zeichnen (kaum CPU+vieeeeel GPU)

Berechnen der Spiellogik:
Berechnung der Bewegung, Verhalten, Position, Bewegungszustand, der Einheiten Geschosse KI Kollisionsberechnung, Scripting, Spielerbefehle und etc
-Diverse Berechnungen, wie Partikel oder Physik können auf die GPU ausgelagert werden, was CA hier allerdings wie ich vermute nicht getan hat
-Läuft mit fester FPS entkoppelt vom nächsten Schritt
-Kopiert immer wenn er mit einem Frame fertig ist alle potentiell graphisch relevanten Daten in einen Buffer, der vom Nächsten Schritt ausgelesen wird.
Weite Teile davon sind schlecht parallelisierbar weshalb der Schritt bei Shogun nur auf einen Kern läuft. Dies merkt man sehr schön wenn man aus einer laufenden Schlacht auf dem Desktop geht: Das Spiel lastet dann nur einen Kern komplett aus, während es bei mir im maximierten Zustand 1 Kern komplett und 3 halb auslastet.



Berechnen der Grapischen Spiellogik:
Berechnung des Graphischen Zustands der Spielwelt aus den Informationen des letzten Schritts:
-Bestimmt was muss überhaupt gezeichnet werden muss und dementsprechend einen Graphischen Zustand braucht.
-Berechnung des graphischen Zustands dieser Objekte: Hauptsächlich die Animationen bzw die Knochen der Soldaten aus dem Bewegunszustand
-Ist fest an den nächsten Schritt gekoppelt.
-Dieser Schritt "kann" einen Frame im "voraus" zu berechnen, dh er fängt mit dem rechnen an, sobald der ZeichenSchritt anfängt, die von diesem Schritt so eben berechneten Graphischen Zustände zu rendern. Denn dadurch erzielt man eine höhere Auslastung von CPU und GPU, was man sich allerdings durch ein höheres Delay erkauft . Alternativ ist es auch möglich diesen Schritt stark mit dem nächsten Schritt zu verschmelzen, so dass jegliche Graphischen Objekte, welche bereit wären gezeichnet zu werden sofort gezeichnet werden.
-Prinzipiell dynamische Genauigkeit möglich:Würde der Schritt zu lange dauern, werden diverse Objekte nicht mehr genau berechnet, wie Animationen, damit das Spiel dennoch flüssig spielbar bleibt. Das wird denke ich auch bei Shogun gemacht, da ich das Gefühl habe, dass die Soldaten bei großem Berechnungsaufwand in diesem Schritt über den Boden gleiten wie auf Rollschuhen oder sich über kurze Distanzen "Teleportieren".
-Auch ist dieser Schritt gut parallelisierbiar, je nachdem wie die CA Leute das aufgezogen haben, könnten davon Teile auf der GPU ablaufen. Wegen der starken CPU abhängigkeit in Situationen, wo dieser Schritt viel Rechenaufwand benötigt, schliesse ich das allerdings aus.

Interessant finde ich hier, da der Zeichenschritt nur kaum CPU benötigt, dass dementsprechend dieser Schritt für die oben erwähnten 3 halb ausgelasteten Kerne verantwortlich sein muss. Da sämtliche Berechnungen in diesem Schritt potentiell gut parallelisierbar sind, und Shogun es dennoch mit diesem Schritt nur schaft 3 Kerne halb auszulasten, hat CA hier wohl mal wieder designtechnisch sehr sehr großen Mist gebaut.


Zeichnen:
Die graphischen Zustände, sofern sie nicht schon im VRAM sind, und die Zeichenbefehle werden an die GPU gesendet und diese führt sie aus.
-In DX11 teilweise parallelisierbar (Display Lists) in DX9 nicht parallelisierbar



Je nachdem wo nun etwas limitiert sind andere Effekte zu erwarten:
1. Schritt:
Limitiert bei großen Schlachten vermutlich an der Single Threaded CPU Performance
Spiel wird langsamer, Animationen ruckeln, weil mehrmals die selbe Animationsphase gezeichnet wird

2. Schritt:
Limitiert bei vielen Objekten auf dem Bildschirm vermutlich an Multi Threaded CPU Performance
Bei dynamischer Genauigkeit bewegen sich die Einheiten evtl seltsam oder nicht mehr
Bildwiederholrate sinkt

3.Schritt
Limitiert bei großen Graphikdetails Auflösung etc an zu niedriger Graphikleistung
Bildwiederholrate sinkt
 
Zurück
Oben