coco07 Geschrieben 4. April 2018 Melden Share Geschrieben 4. April 2018 Hallo liebe Community, ich bin gerade dabei ein Game zu schreiben und habe heute das erste Mal auf meinen iOS-Geräten getestet. Ergebnis war, dass das Game ohne Ende stottert bei (laut Profiler) ca. 200FPS auf dem iPad und 100FPS auf dem iPhone. Was mich etwas stutzig macht war die Tatsache, dass ich dieses Problem zuerst auch auf Android Geräten hatte, welches ich beheben konnte, in dem ich in den Qualitysettings den VSync Counter auf "Every Blank" stellte. Ab da wurde im Profiler "WaitForTargetFPS" nicht mehr angezeigt und das Game läuft flüssig. Gibt es hier aktuell einen VSync Bug in Unity? Müsste es nicht genau anders herum sein? Bei VSync "on" sollte "WaitForTargetFPS" bei zu hoher FPS im Profiler angezeigt werden und nicht bei VSync "off", oder liege ich da falsch? Bei iOS macht es keinen Unterschied, ob ich es an oder aus stelle, das Ergebnis bleibt das Gleiche --> Ca 100 - 200 FPS und das Game stottert wie sonst was und es spielt sich wie im "Slow-Motion Mode". Ich habe übrigens keine Positionsveränderungen in Update statt in FixedUpdate enthalten. Bei Touch wird einem Objekt einfach eine Geschwindigkeit zugewiesen, daher kann der Fehler also schon mal nicht kommen. Wäre ja auch seltsam, denn auf Android läufts absolut butterweich. Habe mal ein Screenshot vom Profiler unter iOS beigefügt. Ich bin für jegliche Antwort sehr dankbar MfG Coco07 Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Zer0Cool Geschrieben 5. April 2018 Melden Share Geschrieben 5. April 2018 Du kannst mit der Maus auf die "Peeks" gehen und schauen, welche Komponente / Skript den Peak verursacht hat. Kann alles Mögliche sein... Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
coco07 Geschrieben 5. April 2018 Autor Melden Share Geschrieben 5. April 2018 Hallo Zer0Cool, die Peaks sind ja nicht mal das Problem. Das Game stottert ohne Ende bei 200FPS... Fühlt sich an wie 5-10 FPS und ist absolut unspielbar. Ich hätte eigentlich damit gerechnet, dass hier jemand "Unaccounted time between..." mit ca 30ms per frame anspricht. Ich finde bei Google absolut nichts darüber und Unity gibt mir schlichtweg zu wenig Infos. Mal abgesehen davon, dass 30ms per Frame mit 200FPS gar nicht möglich sind... Und das tritt überall auf, nicht nur bei den Peaks. MfG Coco07 Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Zer0Cool Geschrieben 5. April 2018 Melden Share Geschrieben 5. April 2018 Der Wert "unaccounted time ... " sieht seltsam aus... Wenn dieser Wert einen Hänger von 30ms bei der CPU anzeigen sollte wäre das übel ... Es könnte auch das Warten auf V-Sync sein und der Wert wird nur falsch angezeigt? Kann es sein, daß deine Framerate auf dem Testgerät bei 30FPS liegt. Lass dich von den hohen FPS Zahlen des Profilers nicht täuschen. Am besten du baust mal einen FPS-Counter in dein Game ein, ich vermute der wird dann 30 FPS anzeigen. iOS kann die Framerate auf 30 FPS drücken:https://forum.unity.com/threads/ios-fixed-to-30-fps-application-targetframerate-doesnt-help.347825/ Aber wenn du konstant 30 FPS hast (oder mehr) und das Spiel ruckelt, dann stimmt vermutlich irgendwas anderes nicht ... Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Sascha Geschrieben 5. April 2018 Melden Share Geschrieben 5. April 2018 @coco07 Stottert auch ein neues Objekt, das ein simples Drehscript hat (transform.Rotate mit konstantem Wert mal Time.deltaTime in Update)? Wenn ja, auch in einer ansonsten leeren Szene? Das Ganze klingt nämlich so, als wäre die Framerate voll in Ordnung, aber deine Codebase nicht. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
coco07 Geschrieben 5. April 2018 Autor Melden Share Geschrieben 5. April 2018 Zer0Cool, werde ich gleich mal testen --> Guter Tipp Sascha@ Ja, selbst Animationen, die ich mit dem Animator gemacht habe, und simple Transform-Verschiebungen enthalten, laufen in Slowmotion und man sieht jedes einzelne Frame. Ich kann mir auch nicht vorstellen, dass irgendwas am Code nicht peformant genug wäre, um das Spiel auf einem iPhone 7 nicht ruckelfrei anzeigen zu lassen, auf einem S3 mini aber schon.. WIe gesagt, auf Android butterweich und ich hatte gleiche Resultate, bevor ich bei Unity nicht VSync auf "every V Blanc" stellte und fälschlicherweise damit deaktiviert hab. Auf dem S3 Mini, LG G2 mini, LG g2 und nem alten HTC läufts ohne Probleme. Ich habe jetzt mal das Menü auf dem iPad getestet. Außer UI Buttons und einem Partikelsystem(max 10 Partikel pro Sekunde), ist dort nicht enthalten --> kein eigener Code. Die Partikel bewegen sich in Zeitlupe... Auch eine leere Szene zeigt im Profiler "unaccounted time between..." an Ich füge mal den Profiler einer leeren Szene bei. Man sieht, auch hier sind Peaks enthalten edit: Ich habe jetzt mal ein Rotate-Script mit folgender Update Methode geschrieben: void Update(){ mTransform.Rotate(speed * Time.deltaTime); } Geschwindigkeit ist auf Android und iOS natürlich gleich, auf dem iPad und iPhone allerdings alles andere als flüssig. Fühlt sich wie gesagt wie ca. 5-10 FPS an. Man kann einzelne Frames erkennen Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Zer0Cool Geschrieben 5. April 2018 Melden Share Geschrieben 5. April 2018 Ich würde mal ein leeres Projekt erstellen und dort eine quasi leere Szene und dort nur einen Würfel verschieben mit deiner obigen Methode.. Wenn dieser Build dann auch ruckelt, dann hast du ein Problem mit dem Build ... Vielleicht passen hier wieder OS Frameworkversion und Unity nicht zusammen oder ähnliches .. aber wie gesagt ein leeres Projekt, um ein "Fremdasset" welches das Build stören könnte auszuschließen. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
coco07 Geschrieben 5. April 2018 Autor Melden Share Geschrieben 5. April 2018 Zer0Cool, habe ich gerade gemacht. Gleiches Problem, flüssig ist was anderes... Da zahlt man für Plus 40 Euro im Monat und Unity bekommt es nicht hin, das Build anständig zu exportieren. Sauber! Ich werde mal weiter forschen und vielleicht bekomme ich das Problem ja demnächst in den Griff Werde dann hier im Thread schreiben, sobald es läuft! DANKE erstmal an euch 2 Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
coco07 Geschrieben 23. Mai 2018 Autor Melden Share Geschrieben 23. Mai 2018 Fehler ist behoben Ich habe V-Sync deaktiviert und beim Spielstart der statischen Variable "Application.targetframeRate" den Wert 60 zugewiesen. Seit dem läufts absolut flüssig! Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Recommended Posts
Archiviert
Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.