Level Design

Die ersten Schritte zum Erstellen eines Basislevels sind im Game Design Tutorial beschrieben und damit sollten Sie auch anfangen. Allerdings müssen beim Level-Design nicht nur ästhetische, sondern auch technische Kriterien beachtet werden und diese werden hier beschrieben.

Berücksichtigungen bezüglich BSP-Tree

Beim Build-Prozess einer A7 BSP Map werden die unsichtbaren, sich überschneidenden Teile von Blocks abgeschnitten und an den Schnittpunkten automatisch neue Kanten und Vertices platziert. Dadurch wird das Rendern schneller, denn die sich überlappenden Teile von Blocks werden nicht mitgerendert (in einer einfachen Map werden einfach nur alle Blocks im View-Frustum übereinander gerendert). Der Nachteil besteht darin, dass kleine Winkeldifferenzen zu großen Unterschieden in der Vertex-Position führen können. Wenn sich Flächen unter einem sehr kleinen Winkel berühren oder schneiden, können Ungenauigkeiten vor nur einem hunderstel Grad zu einer Verschiebung der Schnittkante von mehreren Pixeln führen. Dies ist im Level durchaus sichtbar.

Vermeiden Sie bei einer BSP-Map daher extrem schmale, langgezogene oder spitzwinkelige Blocks. Bauen Sie keine Blocks mit Kanten, die kürzer als 2 Quants sind. Versuchen Sie mit so wenig Flächen wie möglich auszukommen, und arbeiten Sie mit möglichst dicken Blocks. Manchmal können Sie nicht vermeiden, dass sich Flächen unter einem kleinen Winkel berühren - aber auch dann gibt es schlechte und gute Methoden. Nehmen wir als Beispiel eine Straße, die über einen Hügel führt (Seitenansicht):

Schlechtes BSP-Design: lange dünne Platten und kleine Winkelungenauigkeiten können an den markierten Stellen zu von oben sichtbaren 'Lücken' oder 'Stufen' führen.

Gutes BSP- Design: 3 Blocks mit 13 Flächen anstelle von 5 Blocks mit 20 und Winkelungenauigkeiten, selbst wenn welche auftreten, sind hier nicht sichtbar.

Die BSP-Tree-Erstellung setzt alle Vertices auf ganzzahlige Positionen. Dies kann, wenn der Verbindungsvertex nicht an einer ganzzahligen Position steht, bei T-Verbindungen - einer Stelle wo zwei Blockkanten ein `T´ formen - zu Problemen führen. In diesem Fall führt das automatische Verschieben des Vertex auf eine ganzzahlige Position zu einem sichtbaren Spalt oder einer Naht zwischen der Verbindung und dem nicht dargestellten Querbalken des `T´s. Bei BSP-Tree-Leveln ist dies ein häufiges Problem. Der Map-Compiler versucht, so viele 3-Wege-T-Verbindungen wie möglich in 4-Wege-`X´-Verbindungen, die in dieser Hinsicht kein Problem darstellen, zu konvertieren. Allerdings kann er nicht alle erwischen. Es gibt zwei Lösungen: a) vermeiden Sie T-Verbindungen und/oder b) lassen Sie sämtliche Vertices auf das ganzzahlige Gitter Ihres Levels springen.

Noch ein paar mehr Tipps zum Leveldesign:

► Aktuelle Version Online