So optimieren Sie eine Karte im Hammer Editor: 10 Schritte (mit Bildern)

Inhaltsverzeichnis:

So optimieren Sie eine Karte im Hammer Editor: 10 Schritte (mit Bildern)
So optimieren Sie eine Karte im Hammer Editor: 10 Schritte (mit Bildern)
Anonim

Möchten Sie die Leistung Ihrer benutzerdefinierten Karte beschleunigen, sich nicht in Renderproblemen verzetteln und die Kompilierzeit verkürzen? Hier sind einige Tipps, die Ihnen helfen, jede Karte in Hammer zu optimieren.

Schritte

Optimieren Sie eine Karte im Hammer Editor Schritt 1

Schritt 1. Räume abdichten

Das ist ein Muss. Wenn es irgendwelche Lecks in der Map gibt, kann der Compiler die Grenzen der Map nicht bestimmen und versucht, alles innerhalb der Map auf einmal zu rendern. Schlimmer noch, alle Bereichsportale, Hinweispinsel und Okkluder auf der Karte funktionieren nicht, was sie nutzlos macht. Außerdem wird Wasser nicht korrekt gerendert, wenn die Karte undichte Stellen aufweist.

  • In Abb. 1a ist der Raum offensichtlich nicht abgedichtet. Wenn Sie diese Karte mit diesem Leck kompilieren, vvis (der Teil der Kompilierung, der die Sichtbarkeitsdaten bestimmt) kann die Grenzen der Karte nicht bestimmen, da die Visleaves einfach in die schwarze Leere außerhalb unserer Karte "durchsickern".
  • In Abb. 1b ist der Raum versiegelt und wird korrekt zusammengestellt.
  • Um nach Lecks zu suchen, vergewissern Sie sich zuerst, dass sich mindestens eine Entität in der Karte befindet (z. B. "info_player_start"), andernfalls funktioniert dies nicht. Speichern und kompilieren Sie das BSP, indem Sie F9 drücken oder zu File -> Run Map gehen. Wählen Sie "Normal" für BSP ausführen, und wählen Sie "Nein" für beide Führen Sie VIS. aus und RAD ausführen (überprüfen Sie auch die "Spiel nach dem Kompilieren nicht ausführen" Kasten). Sobald die Kompilierung abgeschlossen ist, schließen Sie das Kompilierungsprotokoll und gehen Sie zu Map -> Load Point File. Wenn es Lecks gibt, werden Sie aufgefordert, den Vorgang zu bestätigen (z. B. "Standardpunktdatei laden? [C:\Programme\----]) Wählen Sie "Ja" und Sie sehen eine hervorstehende rote Linie von der nächsten Entität* durch den Bereich des Lecks. (*Deshalb benötigen Sie eine Entität, entweder Pinsel oder Punkt, in Ihrer Karte. Es funktioniert nicht mit Welt- oder Detailpinsel.) Versiegeln Sie das Leck, kompilieren Sie die BSP, und laden Sie die Punktdatei.Wenn alles versiegelt ist, sollte es einfach in einen leeren Ordner im Steam\steamapps\GAMERTAG\GAME\mapsrc Mappe. Überprüfen Sie immer auf Lecks, bevor die Karte der Öffentlichkeit zugänglich gemacht wird.
Optimieren Sie eine Karte im Hammer Editor Schritt 2

Schritt 2. Erstellen Sie Pinsel mit "tools/toolsnodraw"

Stellen Sie sicher, dass Sie Pinsel immer mit dem. erstellen Werkzeuge/Werkzeugenodraw zuerst texturieren und dann nur texturieren, was der Spieler aus der Sicht des Spielers sehen kann. Wenn Sie nur eine Seite einer Wand sehen möchten, texturieren Sie nur diese sichtbare Seite.

Optimieren Sie eine Karte im Hammer Editor Schritt 3

Schritt 3. Reduzieren Sie die Anzahl der Pinsel und Gesichter

Wenn möglich, erstellen Sie Geometrie mit wenigen großen Pinseln und nicht mit tausend kleinen. Mehr Pinsel bedeuten mehr Gesichter, und mehr Gesichter bedeuten langsamere Leistung und Kompilierzeit. Fazit: Wenn Sie komplexe Geometrie mit einem oder zwei Pinseln erstellen können, warum sollten Sie dann mehr verwenden?

In Abb. 3a gibt es zwei Pinsel: Der linke wurde mit dem Bogenwerkzeug erstellt, der einen 8-seitigen Pinsel mit 40 Flächen erstellt hat, und der rechte wurde aus einem einzelnen abgeschnittenen Pinsel mit nur 11 Flächen erstellt. Letzteres wurde mit dem Clipping-Tool (Shift + X) erreicht. Um letzteres zu erreichen, empfiehlt es sich, zuerst die gewünschte geometrische Form aus dem Arch Tool als Referenz zu erstellen. Erstellen Sie dann einen Pinsel mit der gleichen Länge, Breite und Höhe wie der Referenzbogen und platzieren Sie ihn leicht über der Referenz. Wählen Sie den Pinsel aus und schneiden Sie die Winkel zu. (Möglicherweise müssen Sie die Rastergröße ändern ("-" zum Verkleinern, "+" zum Vergrößern) und/oder die Scheitelpunkte (Umschalt + V) des Referenzbogens manuell verschieben, um den nächsten Rasterpunkt zu fangen.) Jetzt haben Sie ein geometrisch identischer Pinsel, aber nur mit weniger Gesichtern

Optimieren Sie eine Karte im Hammer Editor Schritt 4

Schritt 4. Nutzen Sie die Detailpinsel gut

Weltbürsten blockieren die Sichtbarkeit, versiegeln die Karte und teilen das BSP in "Blätter" auf, die im Grunde die Art und Weise des Compilers sind, zu bestimmen, was zu einer bestimmten Zeit und an einem bestimmten Ort gesehen werden kann und was nicht. Detailpinsel wurden so konzipiert, dass sie für den Compiler im Wesentlichen "unsichtbar" sind. Die einzigen Bürsten, die Weltbürsten sein sollten, sind die Wände, der Boden und die Decke eines Raumes. So ziemlich alles andere im Raum, das keine funktionierende Einheit ist und die Sicht des Spielers nicht wesentlich blockiert, sollte an einen func_detail-Pinsel gebunden werden (mit Strg + T binden). Da Detailpinsel die Sichtbarkeit nicht blockieren, werden sie nicht kompiliert vvis Berechnungen und teilt die Karte nicht in mehrere Visleaves auf (was in den meisten Fällen gut ist). Seien Sie jedoch gewarnt, dass die Karte auch nicht versiegelt wird. Stellen Sie einfach sicher, dass alle Weltbürsten die Karte versiegeln und es keine Probleme geben sollte.

Optimieren Sie eine Karte im Hammer Editor Schritt 5

Schritt 5. Verwenden Sie die Bereichsportale und Hinweispinsel entsprechend

Bereichsportale und Hinweispinsel sind großartige Möglichkeiten, die Sichtbarkeit einzuschränken und die Leistung zu steigern, wenn sie richtig ausgeführt werden. Diese sollten Sie jedoch nicht in jedem Flur und Fenster platzieren, da die Berechnung, was wann gerendert werden soll, sehr wohl die Summe übersteigen könnte, den gesamten Raum auf einmal zu rendern. Stattdessen sollten Sie nur Räume mit vielen Details trennen. Dies erspart Ihrem Computer das Rendern vieler unnötiger Objekte und hilft, die Leistung zu steigern, ohne die Sichtbarkeitsberechnungen zu stark zu belasten.

Optimieren Sie eine Karte im Hammer Editor Schritt 6

Schritt 6. Verwenden Sie Okkluder (sparsam)

Okkluder ähneln einem Portal für geschlossene Bereiche, da es nicht rendert, was sich dahinter befindet. Es unterscheidet sich jedoch von einem geschlossenen Bereichsportal darin, dass es keinen Raum versiegeln muss (es kann freistehend sein und keine Weltbürsten berühren) und es blockiert nur 3D-Modelle (auch bekannt als Requisiten). Dieses Tool ist sehr speicherintensiv, daher sollten Sie Ocluder nur verwenden, wenn sich ein teures 3D-Modell hinter einer freistehenden Wand befindet, die nicht durch Areaportale abgedichtet werden kann.

Optimieren Sie eine Karte im Hammer Editor Schritt 7

Schritt 7. Fügen Sie 3D-Sky-Boxen hinzu

Nicht unbedingt notwendig, aber es wird dazu beitragen, dass die Karte viel größer aussieht, ohne die FPS (Frames pro Sekunde) drastisch zu verlangsamen. 3D-Skyboxen sind normalerweise für "große" Outdoor-Karten gedacht, aber es ist möglich, sie für eine Indoor-Karte zu erstellen, wenn Sie durch ein Fenster oder so etwas von außen sehen können. 3D-Skyboxen sind sehr billig zu rendern und können eine kleine Karte bis zu 16x größer erscheinen lassen, da 3D-Skyboxen in Hammer auf einen Maßstab von 1/16 eingestellt und dann während des Kompilierens vergrößert werden.

Optimieren Sie eine Karte im Hammer Editor Schritt 8

Schritt 8. Nebel hinzufügen

Auf großen Outdoor-Karten kann Nebel die Menge der gerenderten Details einschränken und Ihre Karte dabei realistischer erscheinen lassen. Fügen Sie einfach eine env_fog_controller-Entität zu Ihrer Karte hinzu. Auf der Option "Nebel aktivieren" im Objekteigenschaften Registerkarte "Ja" auswählen. Bearbeiten Sie als Nächstes die Fern-Z-Clip-Ebene nach Ihren Wünschen, wodurch alle Pinsel nach dieser Entfernung entfernt werden, wodurch die Engine unnötige Objekte rendert (Die Fern-Z-Clip-Ebene Wert sollte größer sein als der Nebelende Wert).

Optimieren Sie eine Karte im Hammer Editor Schritt 9

Schritt 9. Machen Sie sich mit der Lightmap-Skala nicht verrückt

Die Lightmap-Skala bestimmt im Wesentlichen, wie scharfe oder verschwommene Schatten auf der Geometrie gerendert werden. Größere Zahlen verschlechtern die Schattenqualität, können jedoch die Leistung erhöhen. Im Gegensatz dazu erhöht eine niedrigere Lightmap-Skala die visuelle Darstellung der Schatten, kann jedoch die Leistung erheblich beeinträchtigen. Ein zu großer oder zu kleiner Lightmap-Maßstab könnte einen unrealistischen Beleuchtungseffekt erzeugen, der entweder zu matt bzw. zu scharf ist. Die Standard-Lightmap-Skalierung für alle Pinsel beträgt 16, was einen ausgewogenen Bereich zwischen Grafik und Leistung darstellt.

Optimieren Sie eine Karte im Hammer Editor Schritt 10

Schritt 10. Wenn Ihre Karte Wasser enthält, platzieren Sie eine "water_lod_control"-Entität in der Karte

Diese Entität bestimmt, wie weit Sie von "teurem" Wasser entfernt sein müssen, damit es zu "billigem" Wasser wird. Teures Wasser sieht viel realistischer aus als billiges Wasser und kostet daher mehr in Bezug auf Speicherverbrauch und Berechnungen am Computer. Eine kürzere Übergangsentfernung produziert billigeres Wasser bei einer kürzeren Entfernung und verliert daher viel an visueller Qualität auf Entfernung, erhöht aber auch die Leistung.

Tipps

  • Verschiebungen blockieren nicht die Sichtbarkeit. Um also sicherzustellen, dass die Karte versiegelt ist, erstellen Sie einen Weltpinsel mit dem Werkzeuge/Werkzeugenodraw Textur unter der Verschiebung und versiegeln die Karte damit (d.h. die Ecken dieses Pinsels berühren die Ecken der Skybox). Stellen Sie wie im ersten Schritt immer sicher, dass die Karte versiegelt ist, da sonst praktisch jede erwähnte Optimierungstechnik aus dem Fenster und in die schwarze Leere der Source-Engine geworfen wird.
  • Beim Erstellen von Areaportalen (indem Sie einen Pinsel erstellen, der mit Werkzeuge/Werkzeugbereichportal und die Verknüpfung mit func_areaportal), ist es sehr wichtig, dass die Seiten eines Areaportals, die nicht durchgesehen werden, Weltpinsel berühren. Wenn Sie beispielsweise ein Areaportal in einer Türöffnung platzieren möchten, diese Türöffnung jedoch einen an func_detail gebundenen Rahmen hat, würden Sie nicht Lassen Sie den areaportal-Pinsel den Türrahmen berühren, da er func_detail ist (und da func_detail-Pinsel die Sichtbarkeit nicht beeinflussen, wird das Kompilierungsprotokoll mit einem Leck zurückkehren). Stattdessen sollte die Areaportalbürste die Wände, die Decke und den Boden der Tür (die alle Weltbürsten sein sollten) berühren und den Türrahmen kreuzen. Machen Sie sich keine Sorgen, dass es um den Türrahmen zu "Z-Clipping" kommen könnte; der Frame wird im Spiel immer noch korrekt gerendert… Es ist einfach im Hammer-Editor für den Compiler vorhanden, um ihn währenddessen zu verwenden vvis.
  • In diesem Artikel wird davon ausgegangen, dass Sie über Grundkenntnisse der Benutzeroberfläche des Hammer Editors verfügen (Erstellen von Pinseln, Platzieren von Objekten, Binden von Objekten usw.).
  • Texturieren Sie beim Erstellen von Hinweispinseln nur die als Hinweisebenen fungierenden Flächen (die Flächen, die das BSP teilen) mit dem Werkzeuge/Werkzeuge Textur. Texturieren Sie jede andere Fläche auf dem Pinsel, die nicht als Hinweisebene fungiert, mit Werkzeuge/Werkzeugeüberspringen, andernfalls erstellen Sie mehr Visleafs, als Sie möchten.
  • Sie können den Status Offen/Geschlossen eines Bereichsportals mit einer funktionierenden Tür wie einer func_door, func_door_rotating oder einer ähnlichen Entität verknüpfen. Dazu benötigt die Tür, auf die das Areaportal verlinken soll, einen eindeutigen "Namen". (Geben Sie den Namen ein, indem Sie auf die Tür doppelklicken, um sie zu öffnen Objekteigenschaften Fenster und geben Sie ihm einen einfachen Namen unter Name im Reiter Klasseninfo.) Sobald Sie die Tür benannt haben, gehen Sie zum Bereichsportal Objekteigenschaften und scrollen Sie nach unten zu "Name der verknüpften Tür" und wählen Sie die Tür aus, mit der Sie das Bereichsportal verknüpfen möchten. Außerdem (und das ist sehr wichtig) müssen Sie die Ausgangszustand des Bereichsportals zum Ausgangszustand der Tür. Dadurch wird sichergestellt, dass beim Schließen der Tür das Areaportal mit schließt. Wenn Sie wissen möchten, was genau die Open/Closed-Areaportal-Zustände vorschreiben, werden alle Visleaves, die durch die andere Seite des Areaportals sichtbar sind, gerendert, wenn ein Areaportal Open ist. Im Gegensatz dazu, wenn das areaportal Closed ist, wird nichts über das areaportal hinaus gerendert. Wenn es also einen offenen Flur gibt, in den Sie immer einsehen können, ist die Ausgangszustand des Bereichsportals sollte auf Offen und nicht auf Geschlossen gesetzt werden. Und wenn Sie mit einer Tür verbunden sind, können Sie sowieso nicht an der Tür vorbei sehen, also setzen Sie sie auf Geschlossen, wenn die Tür geschlossen erscheint (es sei denn, sie hat ein transparentes Fenster, das Sie dann im Bereichsportal auf Offen stellen sollten und nicht nicht einmal die Mühe machen, es mit der Tür zu verbinden).

Warnungen

  • Machen Sie mit dem Hohlwerkzeug nie einen komplizierten Pinsel. Die Scheitelpunkte (Ecken der Pinsel) überschneiden sich und erzeugen nur ein großes schlampiges Durcheinander.
  • Verwenden Sie Okkluder nur als letzten Ausweg. Es ist sehr speicherintensiv, wenn also eine Stütze in einem Raum mit Areaportalen abgedichtet werden kann oder wenn es möglich ist, die Visleaves mit Hint- und Skip-Pinseln zu teilen, dann verzichten Sie auf die Verwendung von Okkludern.
  • Offene Areaportale sind wesentlich speicherintensiver, da die Visleaves in Echtzeit berechnet werden. Es empfiehlt sich, so oft wie möglich entweder geschlossene Areaportale oder Hinweispinsel zu verwenden.

Beliebt nach Thema