Nicht eingeloggt
Registrieren

Perfomance - Leveloptimierung und Feintuning

Komplexe Level, Außenarenen oder Stellen an denen viel dynamisches Licht verwendet wird, sehen zwar immer recht imposant und toll aus, jedoch läßt oft dei Performance in solchen Levelabschnitten zu wünschen übrig. Sie sind einfach zu groß und die CPU muß zu viel Zeit damit verschwenden zu errechnen welche Polygone sie gerade darstellen muß und welche sie in der Darstellung unterdrückt, um den Level anzuzeigen. Oft muß dabei die CPU aus maximal möglichen 50.000 Nodes (Eckpunkte) weniger als 200 raussuchen, die für die momentane Darstellungssituation von Nöten sind. Das ist nicht immer einfach für die CPU, großflächige Performanceverluste sind angesagt. Das muß verhindert werden. Dieses Tutorial ist Bestandteil der UnrealED 2.0 Tutorial-Sammlung.

 



Wie optimiere ich einen Level?
Versuche den Level schon von Anfang an so aufzubauen, daß so wenig wie möglich Flächen eines weit entfernten Objektes sichtbar sind (Es empfihlt sich z.Bsp. verwinkelte Arenen zu bauen, und jeweils in versteckte Ecken ein Haus zu bauen, von dem aus man das jeweils andere nicht sehen kann o.ä.). Je weniger beleuchtet der Level ist, oder je weniger Verbindungspunkte benutzt wurden, desto besser ist die Performance. Um zu sehen was genau die Performance deines Levels stört, kannst du folgende Analysebefehle in der Konsole (log.Window) anwenden:

stat mesh zeigt die von der aktuellen Position der Kamera sichtbaren Mesh's (Verbindungspunkte) an. Das Ergebnis steht unter: "meshcount"

Wenn der Befehl angewendet wurde, sollte man ein eine Weile um den Punkt herumlaufen, an dem man die maximale Performance-Einbuße erwartet. Vielleicht kann man an diesen Stellen entweder einige Polygone einsparen, einige Darsteller löschen. Oft ist aber auch ein transparentes Fenster an den Performanceeinbußen schuld. Hier gibt es einen einfachen Trick: Das Fenster sollte so gebaut sein, daß es nur von einer Seite aus durchsichtig ist, von der anderen aber nicht durchsichtig. Dazu kann man z.Bsp. einen Würfel als Fenster bauen, der zum Raum hin mit einer einseitig transparenten Textur belegt ist, nach außen aber mit einer einseitigen nicht transparenten Textur belegt ist. Dadurch können dann Spieler von innen nach außen, jdoch nicht von außen nach innen sehen (oder Umgekehrt).

Ist die zu optimierende Stelle hell beleuchtet, dann ist wohl die Beleuchtung der Polygone Grund der Performance-Einbuße. In diesem Fall gibt es eine regelrechte Patentlösung: Man kann die entsprechenden Stellen auf einfachste Weise von der Beleuchtung entbinden. Dies kann vollständig oder teilweise geschehen. Dazu ist es notwendig die entspr. Texturen zu markieren. Im "Surface Properties"-Fenster (klicke mit der rechten Maustaste auf die selektierte Textur / die Option steht dann im Kontextmenue) auf dem Effekte-Layer können folgende Optionen angewendet werden:

1. Hi Shadow Detail Die Textur wird mit allen Beleuchtungsfiltern gerendert
(schlechteste Perform./ beste Optik, wie sonst auch!)
2. Lo Shadow Detail Die Textur wird mit nur einigen Beleuchtungsfiltern gerendert
(medium Performance / medium Optik)
3. Hi Shadow Detail
& Lo Shadow Detail Die Textur wird mit nur einem Beleuchtungsfilter gerendert
(sehr gute Performance / schlechte Optik)
4. Unlit Die Textur verzichtet völlig auf Beleuchtungsfilter (Unbeleuchtet)
(bestmögliche Performance / schlechteste Optik)
Die "Unlit"-Funktion sollte man wirklich nur bei Lichtquellentexturen, wie Neonröhren, Glühlampen, und Beleuchtungen einsetzen, da sonst die weißen Flächen der Lampen Beleuchtungsschatten erhalten, obwohl sie es nicht sollen.