Mir ist im aktuellen Projekt die Frage aufgekommen, wie denn nun -speziell im GM, aber gern auch allgemein- ein effizientes Rendersystem für 2D/3D Welten aussehen könnte. Mein Ansatz, ohne bisherige Erfahrungen mit dem Rendern von größeren Datenmengen war:
1. Aufteilung der Maps in Chunks, um das ganze häppchenweise zu verarbeiten.
2. Laden der relevanten Chunks. Besser gesagt ausschließlich die umliegenden Chunks und löschen der ungenutzten.
3. Erstellung der Instanzen via Frustum Culling ähnlichem Verfahren (Nur Innerhalb des Sichtfelds Instanzen von Objekten erstellen, hier aber eher ein Rechteck anstelle einer Pyramide). Hierbei durchlaufe ich die Chunks und prüfe, ob die Position innerhalb des Sichtfelds liegt.
4. Ein Nebeneffekt des Chunkdurchlaufs ist der Else-Zweig, der ungesehene Instanzen zerstört.
Soweit zur Planung, hat sich als ziemlich ineffizient herausgestellt. Ein Großteil des Slowdowns ist dem Durchlaufen der Chunks und dem Prüfen der Positionen geschuldet, das Erstellen der Instanzen dürfte relativ performant sein, lediglich die Anzahl vieler Instanzen bereitet mir Bauchschmerzen. Bekämpft hab ich das durch die Verkleinerung des Sichtfelds und einem seltenerem Durchlauf/ Positionsprüfung der Chunks. Leider nur reine Schadensbegrenzung.
Immer wieder sieht man hier und auf der sandbox.yoyogames.com/ ziemlich aufwändige 3D Projekte, die mit den GM internen 3D Funktionen realisiert wurden. Jedoch auch viele Interessante Ansätze, die an einem ähnlichen Problem wie bei mir scheitern.
Habt ihr Vorschläge, Rat oder Erfahrung?
1. Aufteilung der Maps in Chunks, um das ganze häppchenweise zu verarbeiten.
2. Laden der relevanten Chunks. Besser gesagt ausschließlich die umliegenden Chunks und löschen der ungenutzten.
3. Erstellung der Instanzen via Frustum Culling ähnlichem Verfahren (Nur Innerhalb des Sichtfelds Instanzen von Objekten erstellen, hier aber eher ein Rechteck anstelle einer Pyramide). Hierbei durchlaufe ich die Chunks und prüfe, ob die Position innerhalb des Sichtfelds liegt.
4. Ein Nebeneffekt des Chunkdurchlaufs ist der Else-Zweig, der ungesehene Instanzen zerstört.
Soweit zur Planung, hat sich als ziemlich ineffizient herausgestellt. Ein Großteil des Slowdowns ist dem Durchlaufen der Chunks und dem Prüfen der Positionen geschuldet, das Erstellen der Instanzen dürfte relativ performant sein, lediglich die Anzahl vieler Instanzen bereitet mir Bauchschmerzen. Bekämpft hab ich das durch die Verkleinerung des Sichtfelds und einem seltenerem Durchlauf/ Positionsprüfung der Chunks. Leider nur reine Schadensbegrenzung.
Immer wieder sieht man hier und auf der sandbox.yoyogames.com/ ziemlich aufwändige 3D Projekte, die mit den GM internen 3D Funktionen realisiert wurden. Jedoch auch viele Interessante Ansätze, die an einem ähnlichen Problem wie bei mir scheitern.
Habt ihr Vorschläge, Rat oder Erfahrung?