Los pitones son como puntos de control. Son especialmente útiles cuando empiezas a jugar.
Análisis en profundidad del arte técnico: Cómo Cairn representa materiales rocosos específicos para el juego mediante mapas de mezcla 3D

Anthony Beyer, de The Game Bakers, nos adentra en los aspectos técnicos del desarrollo de las «superficies sin pitones» para su juego de simulación de escalada, Cairn. Descubre cómo superaron el reto de armonizar los elementos visuales con la jugabilidad utilizando mapas de mezcla 3D y shaders de cálculo en Unity.
Hello! Soy Anthony Beyer, Director técnico de arte en The Game Bakers. Mi formación profesional se centra en el diseño gráfico (web e impresión). Mi primera experiencia en el mundo de los videojuegos fue en el ámbito de los juegos para móviles, como modelador 3D, en 2010. En aquel momento, no sabía nada de programación, pero me interesaba mucho trabajar con gráficos en un motor de videojuegos, así que empecé a aprender JavaScript y me dediqué a trastear con algunos proyectos pequeños de Unity en mi tiempo libre. ¡Hoy en día dedico más tiempo a programar que a crear modelos 3D! Puedes ver algunos de mis trabajos en mi página de ArtStation.
Empecé a trabajar con el Studio The Game Bakers en los inicios del desarrollo de Furi, allá por 2014. Tras el lanzamiento de Furi en 2016, trabajamos en Haven (lanzado en 2020) y, en enero de 2026, lanzamos nuestro nuevo juego, Cairn, un videojuego de simulación de escalada.
¿Qué es un pitón en Cairn?
En Cairn, puedes escalar casi cualquier pared, y hemos incorporado un sistema de resistencia para que la experiencia resulte más desafiante. Después de subir durante un rato, Aava (el personaje del jugador) acabará cansándose. Para descansar un rato, puede fijarse a la pared con clavos metálicos llamados pitones. (Nota sobre la jugabilidad: Los pitones son opcionales y se puede escalar sin ellos, pero se requiere un conocimiento más profundo de loscontroles de escalada de Cairn.
Para aumentar la dificultad en algunas paredes y obligar a escalar rutas «en solitario sin aseguramiento», queríamos prohibir la colocación de clavos en determinadas áreas del entorno. En esta entrada del blog, explicaré cómo desarrollamos esta pequeña parte técnica del juego que llamamos «No-Piton Surfaces».
Aava, la protagonista de «Cairn», se niega a clavar un pitón en una superficie en la que no se permite su uso.
Cómo añadir diferentes tipos de superficies al entorno
Cuando quieres crear variaciones en el terreno, ¿qué es lo primero que se te viene a la mente? Puedes…
- añadir nuevos objetos y geometría
- añadir «pintura de color de vértices»
- Utiliza una «textura de mapa de mezcla»
Cairn no es, en absoluto, el típico terreno «controlado por un mapa de altitud»; en realidad, se trata de una montaña creada a partir de varios elementos combinados (más detalles al respecto en esta publicación de ArtStation).

Esto dificultaba la creación de variaciones mediante objetos o geometría adicionales, ya que añadía más restricciones a un proceso de diseño de niveles que ya era complejo (y queríamos diseñar libremente nuestras superficies «No-Piton» sobre la base del diseño de los niveles de escalada propiamente dichos).
Blendmap y Vertex Color son técnicas similares, ya que ambas consisten en máscaras que se muestrean en el sombreador para crear variaciones en el renderizado.
En nuestro caso, no pudimos utilizar el pintado de vértices porque:
- Había demasiados vértices que pintar.
- Había demasiados casos de geometría superpuesta (Meshes de objetos de mano proyectadas sobre terreno creado a partir de elementos combinados).
- Nuestras rocas modulares utilizan niveles de detalle (LOD), por lo que la densidad de los vértices no es uniforme.
Mapa de mezcla 2D
Al final, ¡decidimos optar por una solución con Blendmap!
Por suerte, ya contábamos con una herramienta personalizada para el diseño de niveles: TexturePainter. Esta herramienta nos permitió pintar mapas de mezcla directamente en el editor y asignarlos a grupos de renderizadores (ya fueran seleccionados manualmente o automáticamente, si se encontraban dentro de los límites de TexturePainter).
En The Game Bakers, nos encanta crear herramientas personalizadas en Unity; ¡[ExecuteAlways] suele ser la primera línea que añado a todos los scripts!
Utilizamos TexturePainter principalmente para pintar capas de hierba y nieve en el suelo, pero como podemos girar libremente en TexturePainter, también podemos pintar en las paredes.

Tras unos pequeños ajustes en el sombreado, creamos nuestro mapa de mezcla «No-Piton Surfaces» y pudimos modificar dinámicamente nuestras texturas y nuestro sombreado.
Como se trata de un Texture2D «horneado», es fácil obtener el valor de una textura en una posición determinada del mundo para determinar si el jugador puede colocar un pitón o no.
¡La idea funcionó! Pero en esa fase aún era bastante limitado, ya que se trataba de una proyección de máscara en 2D, y solo podíamos utilizar una para toda la montaña, por lo que la precisión era baja.
En ese momento, no estábamos seguros de si las «superficies sin pitones» llegarían a incluirse en el juego. Visualmente, no resultaban atractivos, y tendríamos que realizar numerosas pruebas de jugabilidad y diseño de niveles para asegurarnos de que aportaban un valor significativo al juego.
Pero al menos podríamos empezar a dar vueltas a cómo debería quedar.
Al ajustar algunos parámetros de renderizado, podemos intentar diferentes aspectos posibles para este tipo de superficie.
Cuando tu primera solución no funciona en absoluto
Mientras intentábamos mejorar el renderizado desde el punto de vista de la dirección artística, en lo que respecta al diseño de niveles, la limitación de la «proyección 2D» se estaba convirtiendo en un problema cada vez mayor. Debido a la naturaleza del diseño de nuestros niveles, necesitábamos tener control en 3D de las siguientes superficies No-Piton:
- Superficies sin pitones que se pueden encontrar en el interior de la montaña (en cuevas)
- Superficies sin pitones que pueden envolver paredes o elementos arquitectónicos cóncavos o convexos
…
Salto temporal
En el desarrollo de videojuegos siempre surgen muchas ideas nuevas y cosas nuevas que hacer. Me gusta trabajar como una mariposa: cada vez que me quedo atascado en algo, ignoro el problema y me voy a hacer otras cosas a otro sitio.
…
De tres a seis meses después…
En cuanto a otras novedades, utilizamos Texture3D para la representación de campos de distancia. Colocamos numerosos volúmenes (cajas y elipsoides) y generamos a partir de ellos una textura de campo de distancia, en la que cada píxel contiene la distancia al volumen más cercano. Cada volumen puede ser aditivo o sustractivo.
Esto es lo que llamamos la «vista topológica»: un efecto de imagen en el espacio de la pantalla controlado por un objeto Texture3D en el espacio del mundo.
Estas texturas de campo de distancia en 3D son de baja resolución y se generan bajo demanda durante el runtime (además, no se preprocesan en el Editor y no son legibles por la CPU).
Mapa de mezcla 3D
Llegado este punto, era el momento de probar nuestra solución de mapas de mezcla 3D para superficies sin vértices.
En lo que respecta al shader, cambiar de una Texture2D a una Texture3D es muy sencillo. Ahora solo quedaba añadir algo de ruido a las coordenadas del mundo para ocultar esos texeles de baja resolución, ¡y voilà!
Edición de superficies sin clavos
Esta solución funcionaba a nivel visual, pero todo fallaba en cuanto a la jugabilidad, ya que no podíamos detectar la ubicación del jugador en la textura porque esta no era legible para la CPU.
El muestreo del campo de distancia se llevó a cabo en la CPU mediante iteraciones sobre cada volumen primitivo (cajas, elipsoides). Sin embargo, como habíamos añadido ruido a las coordenadas globales en el sombreador de rocas, se producía un desplazamiento visible en los bordes; sin duda, le faltaba precisión.

Sincronización de los elementos visuales con la jugabilidad
Para solucionar esto, utilizamos un Compute Shader para obtener exactamente los mismos valores que se ven en el shader de la roca.
Cuando el jugador quiere colocar un pitón, lanzamos un rayo hacia la pared para determinar dónde se colocará el pitón y comprobamos si el jugador se encuentra dentro de una zona donde no se pueden colocar pitones. Si ese es el caso, enviamos la solicitud al Compute Shader en la posición de plantación del pitón. Cuando se obtiene el resultado del Compute Shader (en el mismo fotograma o en el siguiente), validamos o desactivamos la posibilidad de colocar un pitón.
Ahora tenemos un ejemplo con texeles perfectos: «rock shader» y «No-Piton Checking Compute Shader», ambos con exactamente el mismo código.
¡Al final resultó que esta solución era demasiado precisa!
Imagina que te encuentras entre una roca normal y una roca en la que no se pueden colocar pitones, y quieres colocar un pitón, pero no puedes porque el sistema de posicionamiento del juego ha determinado que estás sobre una superficie en la que no se pueden colocar pitones. Esto parece muy injusto cuando se puede clavar un pitón a solo cinco centímetros de distancia.
Para fixar esto, generamos varias muestras alrededor del jugador en un área reducida para encontrar un punto válido, si hay alguno disponible.
Aquí se puede ver que la marca de la línea verde está en una roca sin clavos, mientras que la marca de la línea azul superior está en una roca normal; elegiremos esta segunda posición para colocar el clavo.
Siempre hay algo que pulir
Ahora que todo tiene buen aspecto, es hora de perfeccionarlo y darle los últimos retoques.
Hemos implementado una forma de cargar varias AREAS «No-Piton» al mismo tiempo. Solo la zona más cercana es la «real», mientras que las demás se representan como calcomanías LOD. Esta solución dista mucho de ser perfecta, ya que las calcomanías se aplican de forma diferida y no pueden recibir la iluminación de la misma manera que el sombreador de rocas, pero fue suficiente para nuestras necesidades.
Transición en el mapa de mezcla 3D «No-Piton» de LOD0 (renderizado dentro del sombreador de roca) a LOD1 (renderizado con una calcomanía diferida)
Esto es todo lo que hay que saber sobre las superficies sin clavos. Si estás jugando a Cairn y encuentras la manera de colocar un pitón en una superficie en la que no se pueden colocar pitones, por favor, dímelo: ¡siempre hay algo que fixar!
¡Gracias por leer!
Cairn ya está disponible para PC y PlayStation®5, y este verano se lanzará el DLC gratuito «On The Trail». Descubre más juegos creados con Unity en nuestra página de Steam Curator y echa un vistazo a más historias de desarrolladores de Unity en el blog de Unity y en el hub de recursos.
