Pitons sind wie Kontrollpunkte. Sie sind besonders hilfreich, wenn man anfängt, das Spiel zu spielen.
Technische Kunst im Detail: Wie Cairn gameplay-spezifische Gesteinsmaterialien mit 3D-Blendmaps rendert.

Anthony Beyer von The Game Bakers taucht in die technische Kunst der Entwicklung von "No-Piton-Oberflächen" für ihr Kletterspiel Cairn ein. Erfahren Sie, wie sie die Herausforderung gemeistert haben, die visuellen Elemente mit dem Gameplay mithilfe von 3D-Blendmaps und Compute Shaders in Unity auszurichten.
Hallo! Ich bin Anthony Beyer, technischer Art Director bei The Game Bakers. Ursprünglich komme ich aus dem Bereich Grafikdesign (Web, Print). Meine erste Erfahrung mit Videospielen hatte ich 2010 als 3D-Modellierer bei mobilen Spielen. Zu diesem Zeitpunkt wusste ich nichts über Programmierung, aber ich war sehr daran interessiert, mit Grafiken in einer Spiel-Engine zu arbeiten, also begann ich, JavaScript zu lernen und bastelte in meiner Freizeit an ein paar kleinen Unity-Projekten. Heutzutage verbringe ich mehr Zeit mit dem Schreiben von Code als mit dem Erstellen von 3D-Modellen! Einige meiner Arbeiten finden Sie auf meiner ArtStation-Seite.
Ich begann, mit dem Studio The Game Bakers zu arbeiten, ganz am Anfang der Entwicklung von Furi, etwa 2014. Nach der Veröffentlichung von Furi im Jahr 2016 arbeiteten wir an Haven (veröffentlicht 2020), und im Januar 2026 veröffentlichten wir unser neues Spiel, Cairn, ein Kletter-Simulationsspiel.
Was ist ein Piton in Cairn?
In Cairn können Sie an fast jeder Wand klettern, und wir haben eine Ausdauermechanik implementiert, um dieses Erlebnis herausfordernder zu gestalten. Nach einer gewissen Zeit des Kletterns wird Aava (der Spielercharakter) schließlich müde. Um sich auszuruhen, kann sie sich mit metallenen Spikes, die Pitons genannt werden, an der Wand sichern. (Gameplay-Hinweis: Pitons sind optional, und Sie können ohne sie klettern, aber es erfordert ein tieferes Wissen über Cairn’s Klettersteuerung).
Um die Schwierigkeit an einigen Wänden zu erhöhen und "Free Solo"-Routen zu erzwingen, wollten wir das Pflanzen von Pitons in bestimmten Bereichen der Umgebung untersagen. In diesem Blogbeitrag werde ich erklären, wie wir diesen kleinen technischen Teil des Spiels entwickelt haben, den wir No-Piton-Oberflächen nennen.
Cairn Protagonistin Aava weigert sich, einen Piton auf einer No-Piton-Oberfläche zu pflanzen.
Wie man verschiedene Arten von Oberflächen zur Umgebung hinzufügt
Wenn Sie Variationen im Terrain erstellen möchten, was ist das Erste, was Ihnen in den Sinn kommt? Sie können…
- neue Objekte und Geometrie hinzufügen
- „Vertex-Farbmalerei“ hinzufügen
- Eine „Blendmap-Textur“ verwenden
Cairn ist definitiv kein typisches „höhenkartenkontrolliertes“ Terrain; es ist tatsächlich ein zusammengebauter Berg (mehr dazu in diesem ArtStation-Beitrag).

Das machte es schwierig, Variationen über zusätzliche Objekte/Geometrie zu erstellen, da es mehr Einschränkungen zu einem bereits komplexen Level-Design-Prozess hinzufügte (und wir wollten unsere No-Piton-Oberflächen frei über das tatsächliche Kletterlevel-Design gestalten).
Blendmap und Vertex-Farbe sind ähnliche Techniken, beide sind Masken, die im Shader abgetastet werden, um Rendering-Variationen zu erzeugen.
In unserem Fall konnten wir die Vertex-Farbmalerei nicht verwenden, weil:
- Es gab zu viele Vertices zu malen.
- Es gab zu viele Instanzen von überlappender Geometrie (Handgriff-Meshes, die auf zusammengebasteltem Terrain projiziert wurden).
- Unsere modularen Felsen verwenden LODs, sodass die Dichte der Vertices nicht konsistent ist.
2D Blendmap
Am Ende haben wir uns für eine Blendmap-Lösung entschieden!
Hilfreicherweise hatten wir bereits ein benutzerdefiniertes Werkzeug für Level Art, den TexturePainter. Dieses Werkzeug ermöglichte es uns, Blendmaps im Editor zu malen und sie Gruppen von Renderern zuzuweisen (manuell ausgewählte Renderer oder automatisch, wenn sie sich innerhalb der Grenzen des TexturePainters befinden).
Bei The Game Bakers lieben wir es, benutzerdefinierte Werkzeuge in Unity zu erstellen – [ExecuteAlways] ist in der Regel die erste Zeile, die ich zu jedem Skript hinzufüge!
Wir verwenden hauptsächlich den TexturePainter, um Gras- und Schneeschichten auf dem Boden zu malen, aber da wir im TexturePainter frei rotieren können, können wir auch an Wänden malen.

Nach ein paar kleinen Shader-Anpassungen haben wir unsere „No-Piton-Oberflächen“-Blendmap erstellt und konnten unser Texturieren/Schattieren dynamisch ändern.
Da es sich um eine gebackene Texture2D handelt, ist es einfach, den Wert einer Textur an einer bestimmten Weltposition zu sampeln, um zu bestimmen, ob der Spieler einen Piton setzen kann oder nicht.
Das Konzept hat funktioniert! Aber in diesem Stadium war es immer noch ziemlich begrenzt, da es sich um eine 2D-Maskenprojektion handelt und wir nur eine davon für den gesamten Berg haben konnten, sodass die Präzision niedrig war.
Zu diesem Zeitpunkt waren wir uns nicht sicher, ob „No-Piton-Oberflächen“ ins Spiel kommen würden. Visuell waren sie nicht ansprechend, und wir müssten viele Gameplay-/Level-Design-Tests durchführen, um sicherzustellen, dass sie dem Spiel einen bedeutenden Wert hinzufügen.
Aber wir könnten zumindest anfangen, darüber nachzudenken, wie es aussehen sollte.
Das Offenlegen einiger Rendering-Parameter ermöglicht es uns, verschiedene potenzielle Aussehen für diese Art von Oberfläche auszuprobieren.
Wenn Ihre erste Lösung überhaupt nicht funktioniert
Während wir versuchten, das Rendering auf der Seite der künstlerischen Leitung zu verbessern, wurde die Einschränkung der "2D-Projektion" auf der Seite des Level-Designs zunehmend problematisch. Aufgrund der Natur unseres Level-Designs mussten wir 3D-Kontrolle über die folgenden No-Piton-Oberflächen haben:
- No-Piton-Oberflächen, die sich im Inneren des Berges (in Höhlen) befinden
- No-Piton-Oberflächen, die sich um konkave/konvexe Wände/Architekturen wickeln können
…
Zeitsprung
Es gibt immer viele neue Ideen und neue Dinge, die in der Spieleentwicklung zu tun sind. Ich arbeite gerne wie ein Schmetterling – jedes Mal, wenn ich bei etwas feststecke, ignoriere ich das Problem und mache woanders andere Dinge!
…
Drei bis sechs Monate später…
Für andere neue Funktionen verwenden wir Texture3D zur Darstellung von Distanzfeldern. Wir platzieren viele Volumen (Kisten und Ellipsoide) und erzeugen eine Distanzfeldtextur daraus, wobei jeder Pixel die Entfernung zum nächsten Volumen enthält. Jedes Volumen kann additiv oder subtraktiv sein.
Das ist, was wir die "Topologieansicht" nennen: ein bildschirmraumbezogenes Bildeffekt, das von einer weltraumbezogenen Texture3D gesteuert wird.
Diese 3D-Distanzfeldtexturen sind niedrig aufgelöst und werden bei Bedarf zur Laufzeit generiert (sie werden auch nicht im Editor gebacken und sind nicht CPU-seitig lesbar).
3D Blendmap
An diesem Punkt war es Zeit, unsere 3D-Blendmap-Lösung für No-Piton-Oberflächen auszuprobieren.
Auf der Shader-Seite ist es einfach, von einer Texture2D zu einer Texture3D zu wechseln. Jetzt blieb nur noch zu tun, etwas Rauschen zu den Weltkoordinaten hinzuzufügen, um diese niedrig aufgelösten Texel zu verbergen, und, voilà!
Bearbeitung von No-Piton-Oberflächen
Diese Lösung funktionierte visuell, aber alles war gameplay-technisch kaputt, weil wir die Position des Spielers auf der Textur nicht erkennen konnten, da die Textur nicht CPU-lesbar war.
Die Abtastung des Distanzfeldes wurde CPU-seitig durchgeführt, indem über jedes primitive Volumen (Kisten, Ellipsoide) iteriert wurde. Allerdings gab es, weil wir Rauschen zu den Weltkoordinaten im Felsen-Shader hinzugefügt hatten, einen sichtbaren Versatz an den Kanten; offensichtlich fehlte es an Präzision.

Synchronisierung von visuellen Effekten mit dem Gameplay
Um dies zu beheben, verwendeten wir einen Compute-Shader, um die genau gleichen Werte zu erhalten, die im Felsen-Shader gesehen wurden.
Wenn der Spieler einen Piton setzen möchte, strahlen wir gegen die Wand, um zu finden, wo der Piton positioniert werden soll, und überprüfen, ob der Spieler sich in einem No-Piton-Bereich befindet. Wenn das der Fall ist, senden wir die Anfrage an den Compute-Shader an der Position des Piton-Setzens. Wenn das Ergebnis des Compute-Shaders zurückkommt (im selben Frame oder einen Frame später), validieren oder deaktivieren wir die Fähigkeit, einen Piton zu setzen.
Jetzt haben wir eine texel-perfekte Probe: „Felsen-Shader“ und „No-Piton-Überprüfungs-Compute-Shader“, die beide denselben Code teilen.
Wie sich herausstellte, war diese Lösung ein wenig zu präzise!
Stellen Sie sich vor, Sie befinden sich in der Mitte von normalem Fels und No-Piton-Fels, und Sie möchten einen Piton setzen, aber Sie können nicht, weil die Weltpositionierung des Spiels bestimmt hat, dass Sie sich auf einer No-Piton-Oberfläche befinden. Das scheint sehr unfair, wenn Sie einen Piton nur zwei Zoll entfernt setzen können.
Um dies zu beheben, aktivieren wir mehrere Proben um den Spieler in einem kleinen Bereich, um einen gültigen Platz zu finden, falls einer verfügbar ist.
Hier sehen Sie, dass die grüne Linienprüfung auf einem No-Piton-Fels ist, während die obere blaue Linienprüfung auf einem normalen Fels ist; wir werden diese zweite Position wählen, um den Piton zu setzen.
Es gibt immer etwas zu polieren
Wenn alles gut aussieht, ist es Zeit, zu verfeinern und zu polieren.
Wir haben eine Möglichkeit implementiert, mehrere No-Piton-Bereiche gleichzeitig zu laden. Nur der nächstgelegene Bereich ist der "echte", während die anderen als LOD-Decals gerendert werden. Diese Lösung ist alles andere als perfekt, da Decals verzögert sind und nicht auf die gleiche Weise wie der Fels-Shader beleuchtet werden können, aber sie war ausreichend für unsere Bedürfnisse.
No-Piton 3D-Blendmap-Übergang von LOD0 (im Fels-Shader gerendert) zu LOD1 (mit einem verzögerten Decal gerendert)
Das ist alles über No-Piton-Oberflächen. Wenn Sie Cairn spielen und einen Weg finden, einen Piton auf einer No-Piton-Oberfläche zu setzen, lassen Sie es mich bitte wissen – es gibt immer etwas zu beheben!
Danke fürs Lesen!
Cairn ist jetzt für PC und PlayStation®5 erhältlich, mit dem kostenlosen DLC "On The Trail", der diesen Sommer kommt. Entdecken Sie weitere Made with Unity-Spiele auf unserer Steam-Kuratorseite und schauen Sie sich weitere Geschichten von Unity-Entwicklern auf dem Unity-Blog und Ressourcen-Hub an.
