OnekO escribió:Como sé que el HP nos lee, dejo un post de reddit que me ha recordado sus cambios de fecha de un día para el siguiente. Muy útil para cualquiera que quiera dedicarse al diseño/desarrollo de juegos en general, y para el propio HP en particular:
El Problema de la Puerta: Por qué esa "función simple" en Unity acaba de romperlo todo
Imagina esto: llevas tres meses trabajando en tu primer proyecto serio en Unity. El controlador del jugador va fluido, tu flujo de trabajo artístico está afinado, y por fin estás listo para añadir esa función pequeña que lleva meses en tu lista de tareas: puertas. Solo unas puertas simples que se abren y se cierran. ¿Qué tan difícil puede ser?
Seis semanas después, estás cuestionando todas las decisiones que te llevaron al desarrollo de videojuegos, y de alguna manera, esas puertas han generado una hidra de sistemas interconectados que harían llorar a un ingeniero de la NASA. Bienvenido a lo que Liz England acuñó brillantemente como “El Problema de la Puerta”. Si nunca has oído hablar de él, estás a punto de entender por qué los desarrolladores con experiencia ponen esa mirada perdida cuando un programador junior dice: "eso no debería tardar más de unas horas."
---
¿Qué es exactamente “El Problema de la Puerta”?
En 2014, Liz England trabajaba en Insomniac Games cuando se cansó de tener que explicar a qué se dedicaba un diseñador de videojuegos. Así que ideó la analogía perfecta: las puertas. No jefes épicos, ni mecánicas revolucionarias. Puertas. Porque las puertas, por mundanas que suenen, revelan la complejidad maravillosa que se oculta bajo cualquier función “simple” de un juego.
Todo empieza con preguntas inocentes:
¿Hay puertas en tu juego? ¿Pueden abrirse? ¿Todas se pueden abrir o algunas son solo decorativas? ¿Deben hacer sonido? ¿Y si el jugador corre en vez de caminar? ¿Qué pasa si dos jugadores intentan abrir la misma puerta a la vez?
Cada pregunta genera diez nuevas, y de pronto tu “implementación rápida” de una puerta tiene tentáculos que se extienden por todo el proyecto.
---
El iceberg detrás del pomo
Aquí es donde la cosa se vuelve fascinante: esa puerta ya no es solo una puerta. Es una sinfonía de disciplinas, cada una con sus requisitos y su mirada única.
Tu programador de físicas se preocupa por la detección de colisiones y por si la puerta atraviesa las paredes.
Tu ingeniero de sonido está creando efectos distintos para puertas de madera y metal, considerando reverberaciones según el entorno.
Tu animador diseña máquinas de estados para abrir, cerrar, bloquear o romper la puerta.
Tu programador de IA tiene que actualizar los navmeshes, porque las puertas cambian la navegación.
Tu diseñador de UI trabaja en los mensajes de interacción para teclado, mando, ratón o pantalla táctil.
Mientras tanto, tu tester de QA se divierte intentando romper todo: abre puertas mientras salta, se agacha al cruzarlas cuando se cierran, y de alguna forma logra que la puerta se quede atascada a medio abrir mientras carga con diecisiete objetos.
Cada miembro del equipo ve la misma puerta desde una perspectiva distinta, y todas son válidas.
---
Por qué esto duele especialmente en Unity
Los desarrolladores de Unity conocen bien este dolor. Empiezas con un script sencillo, quizá solo una rotación al pulsar un botón. Luego necesitas comprobar si el jugador está cerca, así que añades un trigger. Pero, ¿y si hay varios objetos en el área? Necesitas una lista. ¿Y el networking? De repente son las 2 de la mañana y estás leyendo la documentación sobre autoridad del cliente y sincronización de estado… para una puerta.
La maravilla de Unity es lo rápido que puedes crear ese primer prototipo. El reto es que esa puerta se conecta con todo lo demás: gestión de escenas, sistema de guardado, accesibilidad, rendimiento… Esa puerta inocente se convierte en una prueba de estrés para toda tu arquitectura.
---
La lección oculta en las bisagras
Lo genial del Problema de la Puerta es que no va realmente sobre puertas. Trata de comprender que la complejidad en el desarrollo de videojuegos es fractal. Toda función, por simple que parezca, vive dentro de un ecosistema de otros sistemas. Las funciones “simples” a menudo se vuelven las más complejas porque subestimamos su coste de integración.
He visto equipos pasar semanas con las puertas, mientras implementaban complejos sistemas de combate en solo unos días. ¿Por qué? Porque el combate se planificó desde el principio como una tarea compleja. Las puertas eran “solo puertas”... hasta que dejaron de serlo.
Kurt Margenau, de Naughty Dog, lo confirmó en Twitter: las puertas tardaron más en implementarse en The Last of Us Part II que cualquier otra característica. Y hablamos de un estudio que ha creado una de las IA y sistemas de animación más sofisticados del sector. Las puertas fueron su gran ballena blanca.
---
Guía de supervivencia al Problema de la Puerta
La próxima vez que te tiente añadir esa “función rápida”, hazte estas preguntas:
¿Cuál es mi problema de la puerta aquí?
¿Qué sistemas va a afectar?
¿Qué disciplinas tienen que participar?
¿Qué casos extremos no estoy viendo?
Empieza a mapear las conexiones desde el principio. Ese sistema de inventario afecta a la interfaz, al networking, al guardado, al sonido, a la animación… y probablemente a media docena de cosas más que aún no has pensado. Planea para el iceberg, no solo para la punta.
Y si acabas metido seis horas en una madriguera de errores porque tu función “simple” rompió otra parte del proyecto… recuerda: no es que seas malo. Solo acabas de descubrir tu propio Problema de la Puerta.
---
La conversación que nos hace humanos
Diez años después, la publicación original de Liz England sigue recibiendo comentarios de desarrolladores que están teniendo su propia epifanía con este tema. Hay algo reconfortante en saber que tanto quien trabaja en el próximo juego indie como el programador de un triple A están mirando la misma puerta con la misma desesperación existencial.
Así que lanzo esta pregunta:
¿Cuál ha sido tu Problema de la Puerta más inesperado?
Esa función que creías que te llevaría una tarde y terminó consumiendo semanas de tu vida.
¿Qué aprendiste de la arquitectura de tu proyecto al enfrentarte a algo que parecía tan sencillo?
Porque al compartir nuestros Problemas de la Puerta, nos recordamos que el desarrollo de videojuegos es algo bello, frustrante y maravillosamente complejo. Y que, a veces, las funciones más mundanas son las que más nos enseñan sobre nuestro oficio.
Ojalá algún día, dentro de unos años, podríamos disfrutar de una biografía del HP que nos cuente cuál fue su problema de la puerta.