Mars Attracts: Construindo um jogo no estilo tycoon com apelo retrô máximo

Mars Attracts, desenvolvido pela Outlier Games e disponível agora em Acesso Antecipado no Steam, oferece uma reviravolta astuta no gênero tycoon, desafiando os jogadores a povoar e administrar um zoológico alienígena. Entrevistamos Paul Froggatt, diretor técnico da Outlier Games, para aprender como seu último lançamento foi desenvolvido, desde trabalhar com uma IP icônica até tomar as decisões técnicas certas para impulsionar uma simulação complexa de parque temático.
Você pode contar aos nossos leitores um pouco sobre as origens de Mars Attracts? Como você acabou trabalhando com essa IP?
Mars Attracts começou com um conceito de jogabilidade: um jogo tycoon astuto sobre abduzir humanos para servir como exposições em um zoológico alienígena. Com o conceito em mente e um protótipo muito básico, procuramos IPs que pudessem adicionar personalidade ao mundo do jogo.
Uma das primeiras franquias que veio à mente foi Mars Attacks! A equipe era fã do filme de Tim Burton de 1996, e após investigar os direitos, nos apaixonamos pelos carros retro de ficção científica originais nos quais o filme foi baseado. Entramos em contato com a Topps (que possui o Mars Attacks! IP), e ficamos encantados quando eles se interessaram pelo nosso conceito excêntrico para o jogo.
Uma vez que tivemos o conceito de jogabilidade e a IP, a equipe se expandiu e começamos a trabalhar na construção do jogo! A tarefa tecnicamente mais desafiadora foi a complexidade de criar um jogo tycoon em grande escala no estilo de Evil Genius, Dungeon Keeper, Theme Hospital, e RollerCoaster Tycoon com uma equipe pequena (5–6 pessoas).
Vamos ser mais específicos sobre esses desafios – quais foram alguns dos obstáculos criativos e técnicos que você enfrentou ao trazer o mundo de Mars Attacks! para um simulador de parque temático? Como você traduziu seu humor negro distinto em jogabilidade?
Um dos elementos mais desafiadores criativamente ao fazer um simulador de parque Mars Attacks estava na verdade não relacionado à IP – o gênero tem tantas grandes entradas que há um nível básico de funcionalidade, recursos de qualidade de vida e complexidade que as pessoas esperam desse tipo de jogo. Levou ANOS para alcançar esse nível básico de funcionalidade a um ponto em que o jogo pudesse se igualar a outras entradas do gênero. Uma vez que tivemos isso em prática, diferenciar o jogo com mecânicas de Mars Attacks! foi muito mais fácil (e muito divertido)! Ter uma reunião sobre as maneiras mais grotescas de torturar humanos nunca envelhece.
Mars Attracts apresenta uma "IA de personagem complexa baseada em necessidades" que impulsiona os comportamentos de cada convidado e funcionário no parque temático. Você poderia nos dar uma ideia geral de como isso funciona? Como você enfrentou o desafio de gerenciar decisões e movimentos de tantos personagens ao mesmo tempo?
Na verdade, fizemos um vídeo exatamente sobre isso! A estrutura da IA de personagens mudou um pouco ao longo do desenvolvimento.
Cada personagem tem um conjunto de necessidades (fome, sede, excitação, etc) e as ordena com base em quão feliz eles estão atualmente com essa necessidade. Eles então vão pela lista e tentam encontrar uma solução próxima para a necessidade (por exemplo, uma barraca de comida para a fome, um passeio para a excitação, e assim por diante). Se eles conseguirem encontrar algo para fazer, recebem uma tarefa para ir e fazê-lo. Se não, eles vão para a próxima necessidade na lista.
Uma lição chave enquanto construíamos o sistema foi dividir a tarefa em duas partes – o destino e a intenção. Originalmente, não separávamos a intenção; por exemplo, um personagem faminto "caminharia até a barraca de comida", mas descobrimos que isso se tornava uma limitação para comportamentos mais complexos – um convidado poderia caminhar até a barraca de comida para comprar algo, mas um zelador poderia caminhar até a barraca de comida para consertá-la. Uma vez que tivemos um sistema de tarefas multi-elemento, pudemos construir muito mais variação para os personagens.
Em um nível técnico, a busca de caminho usa o A* Pathfinding plug-in para Unity e gráficos de grade. Curiosamente, temos gráficos diferentes para diferentes tarefas, então se um humano quiser escapar, eles usam um gráfico que pode encontrar caminhos através de paredes e obstruções (usando penalidades de movimento para obstruções, então eles caminharão ao redor delas se puderem). Isso significa que se o humano quiser, ele pode abrir um caminho de destruição pelo seu parque perfeitamente cuidado.
O que motivou a decisão de optar por um sistema de animação baseado em malha em vez de animações esqueléticas mais tradicionais? Houve algum compromisso que você teve que fazer, e como essas escolhas afetaram seu fluxo de trabalho de arte e animação?
O jogo tem o potencial de ter centenas (ou eventualmente milhares) de convidados na tela ao mesmo tempo. Queríamos grandes multidões sem sacrificar o desempenho, e descobrimos que os componentes Animator estavam consumindo uma quantidade significativa da largura de banda de desempenho.
Para combater isso, para os convidados do parque, mudamos para animações baseadas em malha, que pré-cozinham animações e oferecem animações muito mais eficientes para grandes números de personagens.
A desvantagem é que é mais difícil adicionar variação aos convidados (já que cada variação precisa ser personalizada), e descobrimos que funcionou melhor com animações relativamente curtas.
Este jogo realmente evoca uma sensação de nostalgia, desde a propriedade intelectual até a aparência e sensação geral. Quais técnicas específicas ou elementos visuais você usou para capturar aquela estética particular e alcançar o “visual” desejado?
Encontrar o equilíbrio certo entre nostalgia e novidade foi um grande foco para nós. No aspecto visual, a paleta de cores e o design arquitetônico se inspiram no retrofuturismo – não há nada no jogo que pareça muito polido, tudo é intencionalmente projetado para parecer o que as pessoas nos anos 1960 achavam que uma civilização em Marte poderia parecer.

Quando se tratou das fundações técnicas, o que levou sua equipe a escolher o Universal Render Pipeline (URP)? Como essa escolha beneficiou um projeto com esse estilo visual particular e densidade de personagens?
Os visuais de Mars Attracts foram projetados para serem reminiscências de clássicos do gênero e ficção científica retro, enquanto também atendiam às expectativas dos jogadores para um jogo moderno. As principais considerações foram se poderíamos a) fazer tudo com um único artista 3D, e b) fazer o jogo funcionar bem, mesmo em máquinas de menor desempenho. A acessibilidade e estabilidade do URP foram ideais para construir os ambientes que queríamos alcançar.
Como mais você abordou a garantia de que o jogo funcionasse suavemente? Quais foram algumas das suas estratégias mais eficazes para otimizar o desempenho em uma simulação dessa escala?
O Unity Profiler tem sido inestimável na identificação de gargalos. Devido ao número de convidados, a maioria das melhorias de desempenho tem girado em torno de ineficiências na IA dos convidados.
Como um exemplo rápido, imagine um grande parque onde o jogador tem 1.000 edifícios diferentes que os convidados poderiam visitar. Se um convidado estiver com fome, ele teria que percorrer 1.000 edifícios para ver se eles servem comida. Se servirem, verifica-se o estado do edifício para garantir que têm comida em estoque, não estão danificados, estão com funcionários, etc. Se nenhum dos edifícios for utilizável, repita para a próxima necessidade do convidado (por exemplo, sede) e repita para 10-15 necessidades. Então multiplique isso por 500 convidados. Isso dá 1.000 edifícios x 10 necessidades x 500 convidados = 5.000.000 verificações.
Para resolver isso, implementamos Regiões de Busca dentro do parque, para que os convidados possam "ver" apenas os edifícios em sua região atual ou nas regiões vizinhas. Isso pode reduzir o número de edifícios a serem verificados para apenas 100, então 100 edifícios x 10 necessidades x 500 convidados = 500.000 verificações. Uma enorme economia sem qualquer diferença real para o jogador.

Pensando bem, qual foi uma decisão arquitetônica que você tomou no início que realmente valeu a pena à medida que o projeto se tornava mais complexo?
UnityEvents. Usamos isso o tempo todo. Uma lição chave do nosso projeto anterior Isso Significa Warp é a importância crítica de um código modular e autocontido. Usar Eventos do Unity para comunicar entre classes reduz drasticamente as ligações codificadas e torna muito mais fácil construir novos recursos.
Você mencionou o uso de shaders de sobreposição granular para mostrar informações visuais importantes aos jogadores. Você poderia elaborar sobre isso?
Sim, temos um shader personalizado que atualiza um material com base nos valores armazenados em uma grade. Isso permite que o usuário visualize quão bonito ou limpo um azulejo é, ou quão próximo ele está de edifícios de um determinado habitat. Eu não fiz o shader, então em termos de como ele funciona, vou apenas dizer... Mágica.

Houve alguma ferramenta da Unity Asset Store que se mostrou particularmente valiosa, e se sim, por quê?
BGDatabase – todas as estatísticas de construção e strings de localização são extraídas do Google Sheets. Isso torna muito mais fácil atualizar as coisas em grande escala, obter feedback de parceiros de localização, etc. BGDatabase ajuda a trazer isso para o Unity de forma integrada, usamos em todos os projetos.
Que conselho você daria a um desenvolvedor que deseja criar um jogo no estilo tycoon, especialmente um que envolva um grande número de agentes de IA em uma simulação?
Eu definitivamente recomendaria olhar para animação baseada em malha para melhorar o desempenho com tantos personagens. Da mesma forma, trabalhar com o profiler é absolutamente crítico.
Uma coisa que eu gostaria que tivéssemos pensado antes era Salvar/Carregar. Usamos o EasySave3 plug-in, mas não integramos o salvamento e carregamento no jogo até pouco antes do lançamento do Acesso Antecipado. O suporte a salvar e carregar realmente adiciona um pouco de sobrecarga para fazê-lo funcionar para cada recurso, então economizamos algum tempo fazendo isso para tudo de uma vez, mas não consideramos o impacto que isso poderia ter em acelerar os testes durante o desenvolvimento. Ser capaz de gerar um ambiente com centenas de convidados, refletindo uma experiência de jogo realista, é super útil para depurar e otimizar parques em grande escala.
Uma dica relacionada que alguém me deu pouco antes do lançamento – anexe o jogo salvo do jogador em qualquer relatório de feedback dentro do jogo. Super útil para recriar o problema deles!

Mars Attracts está disponível agora no PC. Explore mais jogos feitos com Unity em nossa Página do Curador Steam oficial. Leia mais histórias de desenvolvedores no Blog da Unity e no hub de Recursos.
