Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

11

06.06.2013, 06:32

objektTex ist ein sf::Texture
Dann entstehen definitiv Kopien der Texturen. Das dauert sehr lange, zumindest im Debug-Modus. Außerdem verseucht Dir das natürlich massiv den Speicher, wenn das jeden Frame passiert. Da ist schnell mal Feierabend mit dem Spiel und sollte daher unbedingt gefixt werden. Das ist wohl die nervigste Sache bei SFML, so eine Textur-Kopie passiert ganz leicht mal.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Sacaldur

Community-Fossil

Beiträge: 2 301

Wohnort: Berlin

Beruf: FIAE

  • Private Nachricht senden

12

06.06.2013, 10:36

Sofern es stimmt, dass das Zuweisen der Textur nur einmalig und nicht je Frame durchgeführt wird, liegt der Fehler wohl an einer anderen Sache. Am ehesten würde ich da auf das Update tippen.
Was wird denn alles in einem Update gemacht? Was wird dabei gemacht, was mit steigender Anzahl an Einheiten einen steigenden Zeitaufwand nach sich zieht?
Wie Eingangs bereits geschrieben wurde: Parallelisierung könnte vielleicht ein bisschen helfen, das eigentliche Problem wird damit aber nicht behoben. Wenn das eigentliche Problem erst behoben ist, wirst du wohl auch keine Parallelisierung mehr benötigen.
Spieleentwickler in Berlin? (Thema in diesem Forum)
---
Es ist ja keine Schande etwas falsch zu machen, als Programmierer tu ich das täglich, [...].

13

06.06.2013, 10:48

Hi,
versuch doch mal den Update bzw. den Render Algorithmus auszukommentieren.
Dann reaktivierst du den peu a peu.
Dabei misst du immer wieder die Zeit, bzw die FPS.

Du siehst dann ja was so lange braucht, bzw. wann die FPS sinken.
Das Codestück untersuchst du dann genauer, nach dem selben Prinzip.
Manchmal wundert man sich, was klemmt.

LG
Bilder zu meinem Projekt: ParSim

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

14

06.06.2013, 11:00

Warum so umständlich?
Es gibt doch Profiler wie z.B. den AMD CodeAnalyst (jetzt CodeXL) oder GlowCode.

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

15

06.06.2013, 11:03

Visual Studio hat selbst auch Profiling Tools mit dabei. Vielleicht reichen die ja schon aus.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

16

06.06.2013, 11:08

Man muss doch erstmal wirklich nur schauen, wo "sf::Texture" verwendet wird und diese Zuweisungen und direkten oder indirekten Copy-Konstruktoren entfernen. Da braucht's kein schräges Profiling ;)
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

17

06.06.2013, 11:42

Das ist ja jetzt nur eine Vermutung von dir.
Anstatt Vermutung für Vermutung einzeln durchzutesten, kann man mit einem Profiler auch sofort einen guten Überblick kriegen. Aber das brauche ich dir wohl nicht zu sagen ;)

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

18

06.06.2013, 11:52

Er hat die Vermutung doch selbst schon bestätigt. Ich habe ihm außerdem gesagt er soll mal mit gDebugger schauen, ob ich Recht habe. ;)
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

19

06.06.2013, 11:55

Diese Kopie findet aber in einer Methode statt, die "init" heißt.
Klingt nicht nach einer Methode, die jedes Frame aufgerufen wird.
Es kann natürlich sein, dass es noch woanders passiert, aber auch das könnte man ja mit einem Profiler leicht erkennen, und in einem dann auch noch andere Ansatzpunkte für die Optimierung finden.
Ich finde, das ist ein guter Fall, um sich erstmalig mit der Verwendung eines Profilers vertraut zu machen.

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

20

06.06.2013, 13:43

Wenn's an einer Stelle ist, ist es bestimmt auch noch an weiteren.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Werbeanzeige