Mars Attracts: Construyendo un juego al estilo tycoon con el máximo atractivo retro

Mars Atrae, desarrollado por Outlier Games y disponible ahora en Acceso Anticipado en Steam, ofrece un giro engañoso en el género de los tycoon, encargando a los jugadores la tarea de poblar y gestionar un zoológico alienígena. Entrevistamos a Paul Froggatt, director técnico de Outlier Games, para aprender cómo se unió su último lanzamiento, desde trabajar con una IP icónica hasta tomar las decisiones técnicas correctas para impulsar una compleja simulación de parque temático.
¿Puedes contarles a nuestros lectores un poco sobre los orígenes de Mars Atrae? ¿Cómo terminaste trabajando con esta IP?
Mars Atrae comenzó con un concepto de juego: un juego de tycoon engañoso sobre abducir humanos para servir como exhibiciones en un zoológico alienígena. Con el concepto en mente y un prototipo muy básico, buscamos IPs que pudieran añadir personalidad al mundo del juego.
Una de las primeras franquicias que vino a la mente fue Mars Attacks! El equipo era gran fanático de la película de Tim Burton de 1996, y después de investigar los derechos nos enamoramos de los coches retro de ciencia ficción originales en los que se basó la película. Nos pusimos en contacto con Topps (que posee la Mars Attacks! IP), y nos alegró mucho cuando mostraron interés en nuestro concepto peculiar para el juego.
Una vez que tuvimos el concepto de juego y la IP, el equipo se expandió y comenzamos a trabajar en el desarrollo del juego. La tarea más técnicamente desalentadora fue la pura complejidad de hacer un juego de tycoon a gran escala en la línea de Evil Genius, Dungeon Keeper, Theme Hospital, y RollerCoaster Tycoon con un pequeño equipo (5-6 personas).
Seamos más específicos sobre esos desafíos: ¿cuáles fueron algunos de los obstáculos creativos y técnicos que enfrentaste al llevar el mundo de Mars Attacks! a un simulador de parque temático? ¿Cómo tradujiste su distintivo humor oscuro en la jugabilidad?
Uno de los elementos más desafiantes creativamente al hacer un simulador de parque de Mars Attacks estaba en realidad no relacionado con la IP: el género tiene tantas grandes entradas que hay un nivel base de funcionalidad, características de calidad de vida y complejidad que la gente espera de este tipo de juego. Tomó AÑOS llevar esa funcionalidad base a un nivel que el juego pudiera estar a la altura de otras entradas del género. Una vez que tuvimos eso en su lugar, diferenciar el juego con mecánicas de Mars Attacks! fue mucho más fácil (¡y muy divertido)! Tener una reunión sobre las formas más espantosas de torturar humanos nunca pasa de moda.
Mars Atrae presenta una "IA de personajes compleja basada en necesidades" que impulsa los comportamientos de cada invitado y empleado en el parque temático. ¿Podrías darnos una idea general de cómo funciona eso? ¿Cómo abordaste el desafío de gestionar decisiones y movimientos para tantos personajes a la vez?
¡De hecho hicimos un video sobre exactamente esto! La estructura de la IA de personajes cambió un poco a lo largo del desarrollo.
Cada personaje tiene un conjunto de necesidades (hambre, sed, emoción, etc.) y las ordena según cuán feliz está actualmente con esa necesidad. Luego, bajan la lista y tratan de encontrar una solución cercana a la necesidad (por ejemplo, un puesto de comida para el hambre, una atracción para la emoción, y así sucesivamente). Si pueden encontrar algo que hacer, se les asigna una tarea para ir y hacerlo. Si no, bajan a la siguiente necesidad en la lista.
Una lección clave mientras construíamos el sistema fue dividir la tarea en dos partes: el destino y la intención. Originalmente no separamos la intención; por ejemplo, un personaje hambriento "caminaría hacia el puesto de comida", pero descubrimos que esto se convirtió en una limitación para comportamientos más complejos: un invitado podría caminar hacia el puesto de comida para comprar algo de comida, pero un conserje podría caminar hacia el puesto de comida para repararlo. Una vez que tuvimos un sistema de tareas multielemento, pudimos construir mucha más variación para los personajes.
A nivel técnico, la búsqueda de caminos utiliza el Pathfinding A* complemento para Unity y gráficos de cuadrícula. Curiosamente, tenemos diferentes gráficos para diferentes tareas, así que si un humano quiere escapar, utilizan un gráfico que puede encontrar caminos a través de paredes y obstrucciones (usando penalizaciones de movimiento para obstrucciones para que caminen alrededor de ellas si pueden). Esto significa que si el humano quiere, puede abrirse camino a través de tu parque perfectamente cuidado.
¿Qué motivó la decisión de optar por un sistema de animación basado en mallas en lugar de animaciones esqueléticas más tradicionales? ¿Hubo algún compromiso que tuviste que hacer, y cómo afectaron esas elecciones tu flujo de trabajo de arte y animación?
El juego tiene el potencial de tener cientos (o eventualmente miles) de invitados en pantalla al mismo tiempo. Queríamos multitudes grandes sin sacrificar el rendimiento, y descubrimos que los componentes Animator estaban ocupando una cantidad significativa del ancho de banda de rendimiento.
Para combatir esto, para los huéspedes del parque cambiamos a animaciones basadas en mallas, que prehornean animaciones y ofrecen animaciones mucho más eficientes para un gran número de personajes.
La desventaja es que es más difícil agregar variación a los huéspedes (ya que cada variación necesita ser horneada de forma personalizada), y encontramos que funcionaba mejor con animaciones relativamente cortas.
Este juego realmente evoca un sentido de nostalgia, desde la propiedad intelectual hasta la apariencia y sensación general. ¿Qué técnicas o elementos visuales específicos utilizaste para capturar esa estética particular y lograr el “look” deseado?
Encontrar el equilibrio adecuado entre nostalgia y novedad fue un gran enfoque para nosotros. En el aspecto visual, la paleta de colores y el diseño arquitectónico se inspiran en el retrofuturismo; no hay nada en el juego que se vea demasiado elegante, todo está destinado a parecerse a lo que la gente de los años 60 pensaba que podría parecer una civilización en Marte.

Cuando se trató de los fundamentos técnicos, ¿qué llevó a tu equipo a elegir el Universal Render Pipeline (URP)? ¿Cómo benefició esa elección a un proyecto con este estilo visual particular y densidad de personajes?
Los visuales de Mars Attracts estaban destinados a recordar a los clásicos del género y la ciencia ficción retro, mientras cumplían con las expectativas de los jugadores para un juego moderno. Las consideraciones principales eran si podíamos a) hacer todo con un solo artista 3D, y b) hacer que el juego funcionara bien, incluso en máquinas de gama baja. La accesibilidad y estabilidad del URP fueron ideales para construir los entornos que queríamos lograr.
¿De qué otra manera abordaste asegurar que el juego funcionara sin problemas? ¿Cuáles fueron algunas de tus estrategias más efectivas para optimizar el rendimiento en una simulación de esta escala?
El Unity Profiler ha sido invaluable para identificar cuellos de botella. Debido al número de invitados, la mayoría de las mejoras de rendimiento han estado relacionadas con ineficiencias en la IA de los invitados.
Como un ejemplo rápido, imagina un gran parque donde el jugador tiene 1,000 edificios diferentes que los invitados podrían visitar. Si un invitado tiene hambre, tendría que recorrer 1,000 edificios para ver si sirven comida. Si lo hacen, verifica el estado del edificio para asegurarse de que tienen comida en stock, no están dañados, tienen personal, etc. Si ninguno de los edificios es utilizable, repite para la siguiente necesidad del invitado (por ejemplo, sed), y repite para 10-15 necesidades. Luego multiplica eso por 500 invitados. Eso son 1,000 edificios x 10 necesidades x 500 invitados = 5,000,000 verificaciones.
Para abordar esto, implementamos Regiones de Búsqueda dentro del parque, para que los invitados solo puedan "ver" edificios en su región actual o en regiones vecinas. Esto podría reducir el número de edificios a verificar a solo 100, así que 100 edificios x 10 necesidades x 500 invitados = 500,000 verificaciones. Un gran ahorro sin ninguna diferencia real para el jugador.

Pensando en el pasado, ¿cuál es una decisión arquitectónica que tomaste al principio que realmente valió la pena a medida que el proyecto se volvía más complejo?
UnityEvents. Usamos estos todo el tiempo. Una lección clave de nuestro proyecto anterior Esto significa Guerra es la importancia crítica de un código modular y autónomo. Usar Eventos de Unity para comunicarse entre clases reduce masivamente los enlaces codificados y hace que sea mucho más fácil construir nuevas características.
Mencionaste usar sombreadores de superposición granulares para mostrar a los jugadores información visual importante. ¿Podrías elaborar sobre eso?
Sí, tenemos un shader personalizado que actualiza un material basado en los valores almacenados en una cuadrícula. Esto permite al usuario visualizar cuán hermoso o limpio es un azulejo, o cuán cerca está de los edificios de un hábitat determinado. No hice el shader, así que en términos de cómo funciona, solo diré... Magia.

¿Hubo alguna herramienta de la Unity Asset Store que resultara particularmente valiosa, y si es así, por qué?
BGDatabase – todas las estadísticas de construcción y cadenas de localización se extraen de Google sheets. Esto facilita mucho la actualización de cosas a gran escala, obtener información de socios de localización, etc. BGDatabase ayuda a integrar esto en Unity sin problemas, lo usamos en cada proyecto.
¿Qué consejo le ofrecerías a un desarrollador que busca crear un juego estilo tycoon, especialmente uno que involucre un gran número de agentes de IA en una simulación?
Definitivamente recomendaría investigar la animación basada en mallas para mejorar el rendimiento con tantos personajes. De manera similar, trabajar con el profiler es absolutamente crítico.
Una cosa en la que desearía que hubiéramos pensado antes era en Guardar/Cargar. Usamos el EasySave3 complemento, pero no integramos la función de guardar y cargar en el juego hasta justo antes del lanzamiento de Acceso Anticipado. El soporte para guardar y cargar agrega un poco de sobrecarga para hacerlo funcionar para cada función, así que ahorramos algo de tiempo haciéndolo todo de una vez, pero no habíamos considerado el impacto que podría haber tenido en acelerar las pruebas durante el desarrollo. Poder generar un entorno con cientos de invitados, reflejando una experiencia de juego realista, es muy útil para depurar y optimizar parques a gran escala.
Un consejo relacionado que alguien me dio justo antes del lanzamiento: adjunta el juego guardado del jugador en cualquier informe de retroalimentación dentro del juego. ¡Súper útil para recrear su problema!

Mars Attracts está disponible ahora en PC. Explora más juegos Hechos con Unity en nuestra Página de curadores de Steam oficial. Lee más historias de desarrolladores en el Blog de Unity y en el centro de recursos.
