Heyho,
nachdem ich mir ein paar Ideen aus dem Tutorial von Quaxli (ein dickes Danke an dieser Stelle ) geholt habe, wollte ich dann auch mal ein Spiel programmieren, ein 2D Sidescroller um genau zu sein.
Bisher hat auch alles prima funktioniert, gestern habe ich dann das Scrollen implementiert was auch funktioniert, nur leider kommt es während des Scrollens oft zu kleinen Spalten zwischen den Objekten.
Der Grund ist mir klar, da die paint Methode (Applet) nicht alle Objekte mit der neuen Position zeichnet, darum habe ich mithilfe der Collection in der sich die ganzen Objekte befinden die Threads synchronisiert, was jedoch zu den krassen Framerate-Einbrüchen führte. Jetzt sieht das ganze zwar schicker aus und die Spalten bleiben aus, jedoch ist die Framerate von 90-100 fps auf 50-60 fps gefallen und das schon bei ~10 Objekten in der Collection, bei mehr Objekten sinkt es natürlich weiterhin. Darum hoffe ich jetzt, dass es hier eventuell Leute gibt, die schon Mal das selbe Problem hatten und eine Lösung gefunden haben, da ich bezüglich des Problems ideenlos bin.
Falls es hilft, hier mal Auszüge aus der paint Methode und dem Scrollen:
Ein Objekt zu zeichnen dauert etwa 1.5-2ms
nachdem ich mir ein paar Ideen aus dem Tutorial von Quaxli (ein dickes Danke an dieser Stelle ) geholt habe, wollte ich dann auch mal ein Spiel programmieren, ein 2D Sidescroller um genau zu sein.
Bisher hat auch alles prima funktioniert, gestern habe ich dann das Scrollen implementiert was auch funktioniert, nur leider kommt es während des Scrollens oft zu kleinen Spalten zwischen den Objekten.
Der Grund ist mir klar, da die paint Methode (Applet) nicht alle Objekte mit der neuen Position zeichnet, darum habe ich mithilfe der Collection in der sich die ganzen Objekte befinden die Threads synchronisiert, was jedoch zu den krassen Framerate-Einbrüchen führte. Jetzt sieht das ganze zwar schicker aus und die Spalten bleiben aus, jedoch ist die Framerate von 90-100 fps auf 50-60 fps gefallen und das schon bei ~10 Objekten in der Collection, bei mehr Objekten sinkt es natürlich weiterhin. Darum hoffe ich jetzt, dass es hier eventuell Leute gibt, die schon Mal das selbe Problem hatten und eine Lösung gefunden haben, da ich bezüglich des Problems ideenlos bin.
Falls es hilft, hier mal Auszüge aus der paint Methode und dem Scrollen:
Java:
synchronized(actors) {
for (Actor actor : actors) {
actor.drawActor(buffgraphics);
}
}
Java:
synchronized(actors) {
for (Actor actor : actors) {
if (player.x < 200) {
actor.x++;
}
if (player.x + player.width > 500) {
actor.x--;
}
if (player.y < 100) {
actor.y++;
}
if (player.y + player.height > 300) {
actor.y--;
}
}
}
Zuletzt bearbeitet von einem Moderator: