Horizon World: Maze Runner - Parte 5 - NPC corredores

Aprende a crear dos NPC en Maze Runner: un corredor aleatorio y otro directo, con rutas en la grilla, teletransporte y velocidades ajustables para equilibrar el juego.

8 sept 2025 • 6 min de lectura • Equipo Q2BSTUDIO

Inteligencia-Artificial-

En las entregas anteriores de esta serie construimos el mundo, las mecánicas básicas, la música de fondo, un temporizador en el HUD y un generador de laberintos aleatorios. En esta última parte añadiremos corredores NPC para subir la dificultad. Crearemos dos tipos de NPCs: uno que navega el laberinto al azar y otro que se dirige de forma directa a la meta. Para mantener el equilibrio, el corredor directo se moverá más lento que el aleatorio.

Comencemos con el corredor aleatorio. Abre el proyecto Maze Runner en el editor de escritorio. Inserta el gizmo de NPC desde el panel de gizmos, colócalo en el lobby mirando hacia el centro y asígnale un nombre visible y de objeto, por ejemplo Rex. Personaliza su aspecto con el botón Edit Avatar en propiedades, guarda cambios en el navegador y refresca el editor para ver el resultado.

Crea un punto de reaparición en la misma posición y orientación del NPC. Ese spawn se usará para devolver al NPC al lobby tras cada ronda. Renómbralo como RexSpawnPoint o equivalente.

En el panel de scripts crea un nuevo script llamado RandomNPCRunner y adjúntalo al NPC. En el código importa GameState y Events desde GameUtils. Además, necesitarás AvatarAIAgent para controlar el NPC por código. Si el compilador indica que no existe el módulo avatar_ai_agent, abre ajustes de scripts, entra en el panel API y habilita avatar ai agent. Guarda para recompilar.

Define propiedades en propsDefinition para controlar el comportamiento del NPC: minSpeed y maxSpeed, referencias a gameSpawnPoint y lobbySpawnPoint y un offset para que varios NPC no corran exactamente centrados. En el editor asigna los spawn points y coloca el offset en 0.5.

Necesitamos compartir el camino del laberinto con el NPC para que no choque contra muros. Agrega a GameUtils.ts un nuevo evento en Events llamado mazeCarved que emita una versión condensada de la malla con solo x, y, z y type, excluyendo paredes. En Maze.ts, al terminar de tallar el laberinto durante el estado Starting, llama a una función privada que recorra la grilla, reemplace paredes por celdas indefinidas y marque S en la celda de inicio y E en la celda de fin. Después, emite Events.mazeCarved con ese arreglo 2D condensado.

De vuelta en RandomNPCRunner, crea propiedades privadas: npc de tipo AvatarAIAgent, maze para la grilla y finished para saber si la ronda terminó. En start castea this.entity a AvatarAIAgent y conéctate al evento mazeCarved para almacenar la grilla. En preStart escucha gameStateChanged y maneja: Starting establece finished en falso; Playing teletransporta el NPC al punto de inicio del laberinto y lanza la lógica de movimiento; Ending pone finished en verdadero; Finished devuelve el NPC al lobby y limpia la grilla.

La función que entra en juego al iniciar la ronda teletransporta al jugador del agente al gameSpawnPoint usando SpawnPointGizmo.teleportPlayer y, tras un breve retardo asíncrono, inicia el recorrido del NPC. El retardo evita que el NPC empiece a moverse antes de completar el teleport.

Para moverse de forma aleatoria, el NPC construye una ruta paso a paso sobre la grilla recibida por evento. La idea es explorar desde la celda S barajando direcciones posibles en cada paso, registrando visitadas para no repetir celdas y aplicando backtracking cuando encuentra un callejón sin salida. El resultado es un listado de posiciones con la dirección de entrada a cada celda. Luego se simplifica la ruta eliminando puntos redundantes en tramos rectos para conseguir desplazamientos más suaves.

El movimiento se ejecuta secuencialmente encadenando rotaciones hacia la nueva dirección y desplazamientos a la siguiente posición del camino. Antes de cada acción se comprueba la bandera finished para cortar la cadena si la ronda ya terminó. La velocidad se elige en cada tramo de forma aleatoria entre minSpeed y maxSpeed. Se aplica el offset en X y Z para que el NPC no corra por el centro perfecto del pasillo y así haya variedad entre múltiples NPCs.

Para volver al lobby al cerrar la ronda, teletransporta el agente al lobbySpawnPoint y, tras un pequeño retardo, reubícalo con moveToPosition y ajústalo mirando hacia el forward del spawn, evitando que siga ejecutando una orden de movimiento anterior.

Ahora dupliquemos el script para crear el corredor directo. Duplica RandomNPCRunner, renómbralo a DirectNPCRunner y cambia minSpeed y maxSpeed a valores más bajos, por ejemplo 2 y 4. Crea un segundo NPC, por ejemplo Eliza, con su spawn y enlaza el nuevo script.

En el corredor directo solo cambiaremos la construcción de la ruta. En lugar de exploración aleatoria, usa una búsqueda sistemática hasta la meta E. Una forma efectiva es realizar una búsqueda con estructura de nodos enlazados que registra para cada celda su predecesora y el sentido por el que se llegó. Itera por niveles sobre las celdas caminables evitando paredes y repetidos, y cuando encuentres E, reconstruye el camino retrocediendo por los punteros prev hasta S. Con esa reconstrucción tendremos un trayecto directo desde S hasta E. El resto del flujo es igual: simplificar ruta, rotar y avanzar tramo a tramo a velocidad más lenta para mantener el equilibrio del juego.

Prueba en modo juego. Deberías ver al NPC aleatorio teleportarse al laberinto y explorar a distintas velocidades, y al NPC directo dirigirse de manera eficiente a la meta con paso más pausado. Cuando alcancen el final, esperarán al cierre de ronda y volverán al lobby.

Consejos de ajuste fino: si reduces el conteo atrás de la ronda, mantén el retardo posterior al teletransporte para evitar que un NPC conserve una orden de movimiento activa. Ajusta offset y velocidades para dar personalidad a cada corredor. Si cambias las coordenadas de inicio o fin del laberinto, recuerda actualizar la asignación de S y E en el evento.

Q2BSTUDIO puede ayudarte a llevar este tipo de experiencias al siguiente nivel con software a medida, agentes IA y automatizaciones que integren lógica de juego, analítica e infraestructura. Somos expertos en aplicaciones a medida, inteligencia artificial, ciberseguridad, servicios cloud aws y azure, servicios inteligencia de negocio y power bi. Si buscas incorporar ia para empresas o diseñar agentes IA que aporten valor real, visita nuestro servicio de inteligencia artificial. Y si necesitas una plataforma sólida para tu producto digital, descubre nuestro enfoque de software a medida centrado en resultados.

Con ambos corredores implementados, tu Maze Runner ofrece variedad y desafío. A partir de aquí puedes ampliar con nuevas estrategias de IA, puntuaciones, analítica con power bi, tableros, integración con servicios cloud aws y azure y reglas dinámicas. En Q2BSTUDIO te acompañamos desde el diseño hasta la puesta en producción con seguridad y rendimiento, incluyendo ciberseguridad, pentesting, servicios inteligencia de negocio y todo lo necesario para que tu experiencia crezca de forma sostenible.

¿UNA PAUSA?

Juega un momento antes de irte

NUESTROS SERVICIOS

Cómo podemos ayudarte

Inteligencia artificial

Agentes de IA, chatbots y asistentes inteligentes que automatizan tareas y atienden a tus clientes 24/7 para mejorar la eficiencia de tu negocio.

Más info

Desarrollo de software

Aplicaciones web, móviles y de escritorio, intranets, e-commerce, SaaS y plataformas de gestión diseñadas para las necesidades concretas de tu empresa.

Más info

Servicios cloud

Migración, infraestructura, hosting gestionado, alta disponibilidad y seguridad en Microsoft Azure y Amazon Web Services para que tu negocio escale sin límites.

Más info

Ciberseguridad y pentesting

Auditorías de seguridad, test de intrusión (pentesting) y protección de aplicaciones, datos e infraestructura on-premise y cloud, con hacking ético y cumplimiento normativo.

Más info

Business Intelligence

Cuadros de mando y análisis de datos con Power BI: integramos tus fuentes, diseñamos dashboards y KPIs y convertimos tus datos en decisiones.

Más info

Automatización de procesos

Automatizamos tareas repetitivas y conectamos tus aplicaciones con n8n, Power Automate, Make y RPA, eliminando trabajo manual y aumentando la productividad.

Más info

Formación para empresas

Formamos a tus equipos en tecnología con criterio: desarrollo web, bases de datos, Git, buenas prácticas y seguridad, automatización con n8n, inteligencia artificial para empresas y creación de soluciones de IA con Azure AI Foundry.

Más info

Auditoría de código

Auditamos el código que creas tú, tu equipo o una IA: te decimos qué está bien y qué mejorar, lo securizamos y lo dejamos listo para producción, web o app.

Más info

Generación de imágenes con IA

Creamos por ti las imágenes que necesita tu negocio con inteligencia artificial: producto, redes, publicidad, ilustración y avatares. Tú nos dices qué quieres y te lo entregamos listo para usar.

Más info

Generación de vídeos con IA

Creamos por ti vídeos con inteligencia artificial: promocionales, para redes, presentadores virtuales, doblaje y animaciones. Nos cuentas la idea y te lo entregamos montado y listo para publicar.

Más info

Avatares conversacionales con IA

Creamos avatares conversacionales con IA —humanos digitales con cara y voz— que atienden a tus clientes y equipos con el conocimiento de tu empresa, en tu web, monitores interactivos, WhatsApp o Teams.

Más info

Marketing Online e IA

Google Ads, Meta Ads, LinkedIn Ads y posicionamiento en motores de IA (GEO/AEO): captamos clientes y hacemos que tu marca aparezca donde te buscan, también en ChatGPT, Gemini y Perplexity.

Más info

¿Tienes un proyecto en mente?

Cuéntanos tu visión y la convertimos en una solución de software. Sea cual sea el alcance, hacemos realidad tu idea.

Live Chat