|
|
Auf dieser Seite erscheinen einfache Tricks um die Framerate innerhalb eines Spieles mit großen Außenleveln und vielen Entities zu verbessern.
Entity Cache Eine große Ansammlung von Entities im Level drückt die Framerate bei der
Darstellung erheblich. Um jedoch realistisch wirkende Wälder und Außenlevel
aufbauen zu können ist es jedoch unabdingbar eine Eine einfache Möglichkeit die Framerate zu verbessern ist es Entities, die außerhalb der Sichtweite (bzw. einer einstellbaren Entfernung zum Spieler) liegen auf der Z-Achse nach unten zu verschieben und sobald das Entity wieder in der Sichtweite des Spielers liegt wieder auf der Z-Achse an den angestammten Platz zurückzuschieben. Es gibt mit Sicherheit wesentlich ausgefeiltere Möglichkeiten, aber diese Methode hat zu einer deutlichen Verbesserung der Framerate geführt und kann sofort in jedem bestehenden Level verwendet werden ohne dass dieses verändert werden müsste.
Das Script ist gut geeignet für Aussenlevel in denen die Einstellung von camera.clip_far sehr hoch gewählt werden muss um z.B. die umgebenden Berge sichtbar zu halten und die dennoch eine große Anzahl von Entities (z.B. in Wäldern enthalten).
init_tree_buffer() Mit dieser Methode wird der Buffer mit den Entities gefüllt die durch den Cache berücksichtigt werden sollen. Die Methode muss nur einmalig nach dem laden des Levels eingefügt werden.
check_trees() Diese Methode muss in das Bewegungsscript des Spielers eingefügt werden. Die Neuberechnung der Entity Positionen erfolgt jedoch nur wenn sich der Spieler um mehr als 500 Quads zur Position der letzten Berechnung bewegt hat. treebufdist Diese Variable dient zur Initialisierung und gibt an ab welcher Entfernung ein Entity durch das Script ausser Sichtweite geschoben werden soll. Dieser Wert muss in jedem Fall kleiner als die Einstellung von camera.clip_far sein da das Script sonst keine Wirkung hat.
tree.wdl
//
// Wenn
Entity mit tree im Namen gefunden dann Pointer im Cache merken // Wenn
Entity mit bush5 im Namen gefunden dann Pointer im Cache merken // Hier
können noch beliebige weitere Entities über den Namen hinzugefügt werden in lasttreepos.x=-100000; // // Berechne die sichtbaren
Entities nur wenn sich der Spieler 500 Quad bewegt hat // Gehe durch alle Enities im Cache
und verschiebe Sie aus der Sichtweite wenn Sie
// Der Wert (hier 25000) muss größer als die Sichtbarkeitseinstellung camera.clip_far
sein
// Der Wert (hier 25000) muss größer als die Sichtbarkeitseinstellung camera.clip_far
sein
|