"Allgemeine" Performance verbessern (LWJGL 2)

pcfreak9000

Mitglied
Hallo,
ich bastel mir gerade eine 2D Spieleengine mit der LWJGL. Ich denke, ich habe schon viel optimiert, aber vielleicht fällt euch noch was ein.
Was ich bereits habe:
- ich benutze den SpriteBatch und den Shader von:
https://github.com/mattdesl/lwjgl-basics
- Alle GameObjects sind in einer HashMap, die als Key den layer hat, wo das GameObject gerendert werden soll
- GameObjects werden nur gerendert, wenn sie in Sichtweite meiner Camera sind
- keine unnötigen Objektinstanzierungen in der Gameloop
- keine unnötigen neuen Zuordnungen von Variablen (zB Float x; mir fällt der richtige Name gerade nicht ein, oder ist er das?) in der Gameloop -> 99% als Felder

Geplant:
- Textureatlas benutzen/besseren Support einbauen

Beim testen dieses Setups schaffe ich (i7-4790, GTX 770) 1.000.000 Sprites die die gleiche Textur benutzen mit 15-18 FPS.
Ich denke zwar, dass das schon ein netter Wert ist, aber ganz sicher bin ich mir da nicht. Und neulich habe ich ein Video gesehen (
, ob es genau das Video ist weiß ich nicht mehr aber es ist das Spiel), wo diejenige Person eine ca 6000*2000 Welt hat, und es scheint als es würde flüssig laufen. Wie kann ich das erreichen? Kann ich vlt Multithreading verwenden? Rendering geht ja leider nur im Hauptthread :(

Danke für eine Antwort.

EDIT: GL_DEPTH_TEST ist deaktiviert und GL_CULL_FACE ist aktiviert (GL_FRONT)

PS.: Ist vom Handy geschrieben, entschuldigt etwaige Fehler...
 

pcfreak9000

Mitglied
So, ich habe noch ein bisschen herumhebastelt und es geschafft! 20.000.000 (gleich texturierte) GameObjects bei 250 FPS (dort habe ich die FPS gecapt).

Ich habe jetzt eine Klasse Chunk, die jetzt die GameObject HashMap hat, in der alle GameObjects des Chunks drin sind. Die Scene hat jetzt eine HashMap, die als Key Chunkkoordinaten hat und als Value einen Chunk. Beim Rendern rendere ich jetzt nur noch GameObjects, die in einem Chunk in der Nähe sind, und zwar so, das ich nicht alle Chunks durchgehe wie vorher die GameObjects, sondern mir die passenden Chunks via Chunkkoordinaten aus der Scene hole. Am Ende des Renderns eines GameObjects schaue ich dann noch, ob soch die Chunkkoordinaten des GameObjects geändert haben und wenn ja entferne ich es aus dm alten Chunk und füge es dem neun hinzu, sodass damit aich Bewegungen berücksichtigt werden.

Der Ram wird blos sehr doll auselastet... ich muss mal schauen, ob sich da noh was optimieren lässt.
 
Zuletzt bearbeitet:

RalleYTN

Bekanntes Mitglied
Der Ram wird blos sehr doll auselastet... ich muss mal schauen, ob sich da noh was optimieren lässt.
Das mehr RAM verwendet wird ist normal bei guter performance. ist halt der trade off.
Wenn du wirklich noch etwas sparen möchtest, solltest du darauf achten so wenig unnötige Daten wie möglich zu haben. Zum Beispiel statt nem Vector3f einfach nur 3 floats verwenden. Beim Objekt Vector3f ist nämlich overhead den du nicht brauchst. Allgemein primitive Datentypen statt Objekten verwenden, falls möglich.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
G [Java Server] Allgemeine Frage zum Thema Networking in Videospielen Spiele- und Multimedia-Programmierung 15
M Allgemeine Fragen zu JOGL2 / OpenGL3.2 Spiele- und Multimedia-Programmierung 36
0x7F800000 allgemeine frage zu Java 3D Spiele- und Multimedia-Programmierung 12
K VideoPlayer: Xuggler seekkeyframe extrem schlechte Performance.. Spiele- und Multimedia-Programmierung 3
turing OpenGL / Jogle Code Reveiw zur Performance Verbesserung Spiele- und Multimedia-Programmierung 1
F Massive FPS-Schwankungen, schlechte Performance Spiele- und Multimedia-Programmierung 3
J Java Game performance Probleme Spiele- und Multimedia-Programmierung 7
R LWJGL: Performance glBegin, drawList, ... Spiele- und Multimedia-Programmierung 16
K Android: OpenGL render performance Tipps ? Spiele- und Multimedia-Programmierung 4
B Performance Spiele- und Multimedia-Programmierung 19
Grejak Performance Spiele- und Multimedia-Programmierung 5
M Performance Problem bei BufferedImage Spiele- und Multimedia-Programmierung 7
M Performance von BufferedImages Spiele- und Multimedia-Programmierung 15
M Pixel eines BufferedImage bearbeiten (Performance) Spiele- und Multimedia-Programmierung 23
A jogl 2d performance Spiele- und Multimedia-Programmierung 20
P int-Array zu BufferedImage (performance?) Spiele- und Multimedia-Programmierung 14
S Graphics2D Oval vs. Rect -Performance Spiele- und Multimedia-Programmierung 17
Taschenschieber Schachbrett mit SVG/Batik: Performance? Spiele- und Multimedia-Programmierung 3
Tapsi Anfänger braucht einen Rat ^^ --> Performance Spiele- und Multimedia-Programmierung 7
T performance Spiele- und Multimedia-Programmierung 10
egrath Vista OpenGL Performance Problem? Spiele- und Multimedia-Programmierung 3
I RPG-Spiel und Performance Spiele- und Multimedia-Programmierung 33
N Performance Problem bei mit Graphics Spiele- und Multimedia-Programmierung 6
M Spiel Performance erhöhen Spiele- und Multimedia-Programmierung 24
M Performance Spiele- und Multimedia-Programmierung 5
S [Java2D] Performance Frage Spiele- und Multimedia-Programmierung 4
H Performance check Pong Spiele- und Multimedia-Programmierung 19
M Space PingPong Game --> Performance ok? Spiele- und Multimedia-Programmierung 44
J Performance Spiele- und Multimedia-Programmierung 6
P Java3D Performance und Abstürze Spiele- und Multimedia-Programmierung 3
K Performance von J3D Spiele- und Multimedia-Programmierung 5
P Snake Game Verbessern Spiele- und Multimedia-Programmierung 15
ARadauer Spiel verbessern - ConcurrentModificationException Spiele- und Multimedia-Programmierung 8
K Tastatursteuerung verbessern Spiele- und Multimedia-Programmierung 8

Ähnliche Java Themen

Neue Themen


Oben