Richtige Verwendung der Szene von scene2d in einem Spiel mit einer riesigen Welt

8

Wenn die gesamte "Spielwelt" tausendmal breiter ist als ein Ansichtsfenster, und wenn ich scene2d verwenden möchte, um Spielobjekte als Actor s zu verwalten, sollte ich ein Stage-Objekt so breit wie die ganze Welt erstellen oder sollte Der Stage ist ein Bereich um das aktuelle Ansichtsfenster, aber nicht die ganze Welt?
Mit anderen Worten, verbraucht ein Stage mit größerer Breite und Höhe mehr Speicher, selbst wenn ich Objekte nur auf einem kleinen Teil im Darstellungsbereich rendere?

    
gvlasov 31.10.2013, 05:31
quelle

2 Antworten

14

Ich glaube, du hast missverstanden, was genau ein Stage ist. Eine Bühne hat nicht wirklich eine Größe. Wenn Sie keine Breite oder Höhe oder Stage angeben, geben Sie nur die Breite und Höhe des Ansichtsfensters an. Das Ansichtsfenster ist wie ein Fenster, das nur einen Teil deiner Welt, aka Szene, zeigt. A Stage ist ein 2D-Szenengraph und "wächst" mit deinem Actors . Je mehr Schauspieler Sie haben, desto größer (speichermäßig) ist Ihre Bühne, aber es kommt nicht darauf an, wie weit Ihre Schauspieler tatsächlich verteilt sind. Wenn sie sehr weit verbreitet sind und Sie nur einen sehr kleinen Teil Ihres gesamten Stage anzeigen, wird dies sehr effizient gehandhabt, da ein Szenengraph diesen riesigen Raum unterteilt, um sehr schnell entscheiden zu können, ob ein bestimmter ignoriert werden soll Schauspieler oder zeichne es auf dem Bildschirm.

Das bedeutet, dass ein Stage genau das ist, was Sie für diese Art von Situation brauchen, und Sie sollten wahrscheinlich keine Probleme haben, FPS und Speicher. Aber natürlich, wenn Ihr Stage das 1000-fache der Größe Ihres Ansichtsfensters ist und Sie selbst wissen, dass bestimmte Akteure nicht bald angezeigt werden, dann ist es möglicherweise sinnvoll, sie noch nicht zur Bühne hinzuzufügen .

    
noone 31.10.2013, 06:30
quelle
0

Eine Stufe ist nur ein Wurzelknoten, der alle Akteure enthält. Es ist Aufgabe, Methoden für seine Kinder aufzurufen (wie zeichnen und handeln); somit haben nur die Anzahl und die Komplexität des Schauspielers einen Einfluss auf die Speicher- und Bildrate.


Für Ihre Situation ist sicherlich eine Keulungsmethode erforderlich. Am einfachsten wäre es, zu überprüfen, ob sich ein Darsteller im Darstellungsbereich befindet und ihn nicht überspringt. Erstellen Sie einen benutzerdefinierten Akteur und fügen Sie diesen Code hinzu: Quelle

%Vor%


Wenn Sie die Leistung noch weiter verbessern müssen, können Sie manuell entscheiden, was sichtbar ist und was nicht (z. B. wenn Sie die Kamera bewegen). Dies wäre schneller, weil all diese Culling-Berechnungen für jeden Frame für jeden Schauspieler ausgeführt werden. Also, obwohl es viel schneller ist, etwas Mathe zu tun, anstatt zu zeichnen, würde eine große Anzahl von Schauspielern eine große Menge unerwünschter Anrufe geben.

    
sheitan 18.11.2013 10:27
quelle

Tags und Links