Saltar al contenido principal

Construir niveles para PS1 con Level Builder

· 6 min de lectura
Desarrollador de Unity y creador de Polygon Engine

Además de dibujar modelos, Polygon Engine necesitaba herramientas para construir espacios que se pudieran recorrer. Una habitación sencilla reúne varios de los problemas que quería resolver: pisos vistos en perspectiva, paredes cercanas a la cámara, puertas y colisiones que permitan moverse sin atravesar la geometría.

Trabajar con ese tipo de espacio me permitió relacionar el renderizado con la edición del nivel. Al cambiar el tamaño de una pared o la forma de una entrada, también tenía que considerar cómo se vería en PS1 y qué volumen de colisión necesitaría. Level Builder forma parte de ese flujo de creación y revisión.

Probar el recorrido del jugador​

Para revisar una habitación de prueba, me sirve definir un recorrido sencillo antes de agregar detalles: entrar, mirar el piso, acercarse a una esquina, cruzar una puerta y dar la vuelta. Son movimientos normales durante el juego, pero cada uno permite observar un aspecto distinto del nivel.

Al mirar hacia abajo se aprecia mejor el mapeo de la textura del piso. Acercarse a una pared permite revisar la geometría cerca de la cámara, y atravesar una puerta ayuda a comprobar las colisiones. Al regresar por el mismo camino también se pueden encontrar superficies que solo presentan problemas desde ciertos ángulos.

Para hacer esos ajustes quería conservar las operaciones habituales de Unity: seleccionar, mover, rotar, escalar y asignar componentes. La diferencia estaba en preparar el resultado para PS1. Un plano grande puede ser cómodo para construir el piso, por ejemplo, pero necesitar subdivisión para que su textura se vea mejor de cerca.

Elegir dónde subdividir la geometría​

El piso de un pasillo largo puede construirse con solo dos triángulos. Eso mantiene baja la cantidad de geometría, aunque la textura puede deformarse bastante cuando la cámara está cerca del suelo y la superficie se extiende hacia el fondo.

Dividir el piso en secciones más cortas puede reducir la deformación afín y darle al proceso de ordenamiento superficies más pequeñas. Pero una cuadrícula densa tiene un costo real. Aumenta los vértices transformados, los paquetes generados y el trabajo de ordenamiento. Si el jugador puede ver muchas secciones al mismo tiempo, el presupuesto vuelve a cambiar.

Por eso prefiero ajustar la subdivisión según la ubicación y el tamaño de cada superficie. Un piso cercano ocupa mucho más espacio en pantalla que un panel decorativo lejano. Una pared vista en ángulo puede necesitar otro tratamiento. Revisar el nivel desde la cámara del jugador ayuda a decidir dónde los triángulos adicionales mejoran lo suficiente la imagen para justificar su costo.

Las piezas contiguas también necesitan coincidir en sus bordes. Una división descuidada puede introducir grietas o límites desalineados. El sistema de renderizado y la herramienta de edición deben compartir criterios sobre la representación de posiciones y la preparación de la geometría.

Ajustar las colisiones al nivel visible​

Al agregar movimiento al nivel, también necesito revisar los volúmenes de colisión. La malla define la apariencia de una pared o una puerta; su colisión determina dónde puede moverse el personaje. Ambas representaciones deben coincidir en lo que afecta al recorrido, aunque no tengan el mismo nivel de detalle.

El marco de una puerta puede incluir biseles decorativos, paneles hundidos y una silueta complicada. Esos detalles no justifican automáticamente una colisión igual de compleja. Una distribución más sencilla puede ofrecer movimiento predecible y consultas menos costosas. Por otro lado, simplificar demasiado puede hacer que una abertura parezca transitable mientras una barrera invisible la bloquea.

En primera persona, una diferencia entre la entrada visible y su colisión se nota de inmediato: parece que el personaje cabe, pero no puede pasar. Para evitarlo hay que revisar juntas las dimensiones de la abertura, la forma del controlador, la altura de escalón y la ubicación de los colliders.

En Polygon Engine las colisiones se configuran mediante componentes, de modo que se pueden ajustar por separado de la malla. Eso permite conservar el detalle visual y usar formas de colisión más sencillas cuando son suficientes. También deja al usuario decidir qué partes del nivel deben bloquear el paso o funcionar como triggers.

Editar mallas en Level Builder​

Level Builder reúne las herramientas de edición de mallas dentro del editor. Permite trabajar con vértices, aristas, caras y UVs, y guardar el resultado como un recurso para utilizarlo en la escena. Quería que fuera posible construir y ajustar una habitación sin tener que cambiar de aplicación para cada modificación de la geometría.

Level Builder de Polygon Engine con herramientas de edición de mallas, un cubo y estadísticas de preparación para PS1

Level Builder en la versión documentada del editor. Esta captura posterior ilustra el flujo descrito; no es una imagen histórica de la fecha de la entrada.

Abre la imagen para verla a tamaño completo.

Durante esa edición también resulta útil ver los límites de la malla. Sin embargo, revisar un recurso aislado no alcanza para conocer el consumo de la escena completa: colocar varias copias aumenta el trabajo de renderizado. Por eso las estadísticas de Level Builder se complementan con el presupuesto del proyecto.

La guía de Level Builder explica los controles disponibles. Al integrarlos, me interesaba que la edición fuera cómoda y que hubiera información suficiente para revisar el resultado antes de exportar. Poder generar una forma rápidamente es útil, pero también necesito saber cómo afectará al juego.

Trabajar con un nivel pequeño de prueba​

Para revisar estos detalles, prefiero mantener el nivel de prueba pequeño y fácil de modificar. Puedo cambiar las secciones del piso, bajar la cámara, quitar una textura o simplificar un collider y comparar el resultado. En una escena más elaborada cuesta distinguir cuál de esos cambios explica la diferencia.

Eso también explica por qué un tutorial compacto puede enseñar más que una demostración enorme. Dos habitaciones y una puerta ofrecen suficiente estructura para ejercitar movimiento, visibilidad, interacción y organización de escenas, sin dejar de ser comprensibles.

Con esas pruebas busco comprobar el proceso completo: modificar la habitación, guardarla, volver a abrirla y exportarla. La geometría, los materiales y las colisiones deben conservar los ajustes realizados. Ese es el resultado que necesito para poder seguir construyendo el nivel sin repetir trabajo en cada compilación.