Von leerem Gras zu lebendigen Strecken
Strecken existieren nicht im luftleeren Raum. Der Bereich rund um den Asphalt ist entscheidend — er vermittelt Massstab, verankert die Kamera und verwandelt eine flache 2D-Ansicht in etwas, das sich wie ein realer Ort anfuehlt. So fuellt The Undercut diesen Raum mit prozedural generierten Waeldern.
Warum Baeume in einem Top-Down-Rennspiel wichtig sind
Auf den ersten Blick wirken Baeume in einem 2D-Top-Down-Spiel wie reine Dekoration. Aber sie erfuellen mehrere entscheidende Funktionen:
- Tiefenwirkung — Ueberlappende Baumkronen mit Schatten durchbrechen die Flachheit der Vogelperspektive und verleihen dem Gelaende ein Gefuehl von Erhabenheit
- Massstabsreferenz — Ein Auto, das an einer Baumgruppe vorbeifaehrt, vermittelt sofort Geschwindigkeit und Distanz
- Streckenrahmung — Vegetation lenkt den Blick natuerlich entlang des Streckenlayouts und macht Kurven und Geraden besser lesbar
- Atmosphaere — Eine kahle Strecke auf flachem Gras sieht aus wie eine Testumgebung, nicht wie ein Rennkurs
Die Herausforderung: Jede Strecke wird prozedural generiert, daher koennen die Baeume nicht von Hand platziert werden. Sie muessen aus denselben Daten entstehen, die auch die Strecke selbst aufbauen.
Drei Schichten Wald
Das Vegetationssystem baut jeden Baum aus drei uebereinandergelegten Schichten auf, von oben gerendert:
- Bodenschatten — Eine grosse, weiche, dunkle Ellipse unter der Baumkrone. Sie verankert den Baum am Boden und vermittelt den ersten Eindruck von Tiefe. Eine zweite, engere Schattenschicht fuegt Dichtevariationen hinzu.
- Baumkrone — Der Hauptkoerper des Baumes. Jede Krone besteht aus ueberlappenden Kreisen mit leichten Farb- und Groessenunterschieden, was eine organische, unregelmaessige Silhouette ergibt. Farbtonverschiebungen in einem kontrollierten Bereich halten die Palette natuerlich und vermeiden Eintoenigkeit.
- Innenschatten — Ein dezenter dunkler Ring am inneren Rand der Baumkrone. Er simuliert die Selbstverschattung, die man sieht, wenn man von oben in eine Baumkrone blickt, und fuegt Volumen ohne jegliche 3D-Geometrie hinzu.

Die Kombination wirkt aus der Top-Down-Kamera ueberraschend dreidimensional — Baumkronen scheinen ueber dem Boden zu schweben und werfen echte Schatten darunter.
Platzierungsregeln
Baeume werden ueber das Gelaende verteilt, wobei eine Dichtekarte verwendet wird, die aus dem Streckenlayout abgeleitet ist:
- Sperrzonen um die Streckenoberflaeche, Randsteine, Kiesbetten und Boxengasse — kein Baum soll das Renngeschehen verdecken oder in die Streckengeometrie eingreifen
- Dichteabfall — Mehr Baeume nahe den Streckenraendern (zur Rahmung des Kurses), auslaufend zu den Kartenraendern hin
- Gruppenbildung — Baeume erscheinen nicht einzeln. Ein Elternpunkt erzeugt eine kleine Gruppe von 3—8 Baeumen mit zufaelligen Versaetzen, was natuerlich wirkende Haine statt eines gleichmaessigen Rasters ergibt
- Groessenvariation — Jede Gruppe mischt grosse Kronenbaeume mit kleineren, was einen echten Waldrand nachahmt, wo hohe Baeume juengeren Wuchs beschirmen
Der Platzierungsalgorithmus laeuft einmal bei der Streckengenerierung — unter 50 Millisekunden fuer einen kompletten Wald.
Echtzeit-Feinabstimmung
Das richtige Aussehen zu treffen erforderte staendiges Iterieren. Anstatt neu zu kompilieren und neu zu laden, ist jeder visuelle Parameter in einem Echtzeit-Debug-Panel zugaenglich:

Das Panel bietet ueber 15 Parameter:
- Shadow Alpha / Scale / Diffuse — Steuern Dunkelheit, Groesse und Weichheit beider Schattenschichten
- Tree Factor — Globaler Dichtemultiplikator, der bestimmt, wie viele Baeume die Szene bevoelkern
- Shadow Offset — Verschiebt den Schatten relativ zur Baumkrone und simuliert einen Sonnenwinkel
- Inner Shadow Alpha / Scale — Der Selbstverschattungsring innerhalb jeder Baumkrone
- Mipmap Bias — Texturschaerfe bei verschiedenen Zoomstufen
- Hue Min / Max — Der Bereich der Gruentoene in der Baumkrone, von dunklem Wald bis hellem Fruehling
- Cumulative blending — Schattenschichten koennen sich fuer dichtere Ueberlappungsbereiche additiv mischen
Jede Aenderung wird sofort in der Live-Streckenansicht aktualisiert. Diese Feedback-Schleife machte es moeglich, den exakten Look in Minuten statt Stunden zu finden — und die Palette schnell fuer verschiedene Streckenthemen oder Jahreszeiten anzupassen.
Performant bleiben
Leistung zaehlt — The Undercut zielt auf 60 FPS auch auf bescheidener Hardware, und ein voller Wald kann Hunderte von Baeumen auf dem Bildschirm bedeuten.
Wichtige Optimierungen:
- Instanziertes Rendering — Alle Baeume teilen sich dieselbe Grundgeometrie, gezeichnet in einem einzigen Batch mit instanzspezifischen Transformationen und Farbversaetzen
- View-Frustum-Culling — Baeume ausserhalb des sichtbaren Kamerabereichs werden komplett uebersprungen
- LOD nach Zoom — Bei weit herausgezoomten Stufen werden Schattendetails vereinfacht und kleine Baeume weggelassen
- Texturatlas — Kronenvariationen sind in einem einzelnen Texturblatt gepackt, wodurch einzelne Draw-Calls pro Baum vermieden werden
Das Ergebnis: Ein kompletter Wald wird in unter 1 ms pro Frame gerendert, wodurch das GPU-Budget fuer Streckenrendering, Autos und UI frei bleibt.
Das Ergebnis
Was als “fueg etwas Gruenes um die Strecke hinzu” begann, wurde zu einem System, das das Spielgefuehl grundlegend veraendert. Strecken, die flach und steril wirkten, fuehlen sich jetzt in eine Landschaft eingebettet an. Die Schatten vermitteln Tiefe. Die Farbvariation vermittelt Leben. Und weil alles prozedural ist, bekommt jede generierte Strecke einen einzigartigen Wald, der zu ihrem Layout passt — ohne manuelle Arbeit.
Jedes Rennen, eine neue Strecke. Jede Strecke, ein neuer Wald.
