Como a Soft Crunch Games adaptou Foxy Dumplings para todas as plataformas
Adam Axler - Unity
Senior Content Marketing Manager
Esta página da Web foi automaticamente traduzida para sua conveniência. Não podemos garantir a precisão ou a confiabilidade do conteúdo traduzido. Se tiver dúvidas sobre a precisão do conteúdo traduzido, consulte a versão oficial em inglês da página da Web.
Preparar o mesmo jogo para PC (Windows, macOS e Linux) via Steam, GOG, Epic Games Store e Microsoft Store com Xbox Play Anywhere, bem como no Nintendo Switch™, Nintendo Switch, PlayStation®4, PlayStation 5, Xbox Series X|S, iOS e Android ao mesmo tempo, é um desafio técnico ambicioso para qualquer estúdio. Para a equipe central de quatro pessoas da Soft Crunch Games, isso significou tornar o desenvolvimento multiplataforma parte da arquitetura do jogo desde o início.
Foxy Dumplings é um jogo aconchegante de culinária e gerenciamento sobre Lisa, uma chef profissional que se recupera do esgotamento ao recomeçar com a receita de dumplings de sua família e um food truck. Os jogadores viajam por 12 locais inspirados em culturas alimentares reais, cultivam ingredientes, aprendem receitas regionais, dirigem o caminhão e inventam seus próprios pratos.
Grzegorz Wątroba cuida de toda a programação, portas de plataforma, pipelines de construção e trabalho de certificação. Com um programador responsável por tantos alvos, o projeto foi construído em torno de uma regra: Toda plataforma recebe o mesmo jogo do mesmo commit.

Um projeto, um ramo, um jogo
Na prática, isso significava sem concessões: Não há ramificações separadas, nem edição móvel chegando meio ano depois, e nenhuma versão com metade do conteúdo.
Isso se tornou algumas regras. Isso se tornou algumas regras. Cada esquema de controle tinha que ser completo por si só, para que os jogadores pudessem terminar o jogo usando apenas um controle, apenas uma tela sensível ao toque ou apenas um mouse – com ou sem um teclado. O arquivo de salvamento usa o mesmo formato binário em todos os lugares, então mover o progresso entre dispositivos não requer conversão.
O arquivo de salvamento usa o mesmo formato binário em todos os lugares, então mover o progresso entre dispositivos não requer conversão.
"Também tratamos os requisitos de certificação como restrições de projeto desde o início", diz Wątroba. "Foxy Dumplings não tem campos de entrada de texto, por exemplo, então nunca temos que lidar com teclados na tela em múltiplos sistemas diferentes." SDKs de loja PC, como Steamworks, são removidos automaticamente dos builds de console e mobile."
Ele queria que cada compilação viesse de um menu sem que ninguém tocasse nas Configurações do Projeto manualmente. Hoje esse menu tem mais de 70 entradas em plataformas, tipos de compilação, demonstrações, builds de testador e configurações de saída.
Mantendo o código da plataforma nas bordas
Foxy Dumplings é um projeto Unity e um branch. A jogabilidade é sempre compartilhada. O código da plataforma é permitido apenas nas bordas, onde o jogo se comunica com o sistema: salvamento, contas de usuário, conquistas e troféus, sincronização em nuvem, verificações de DLC, diálogos do sistema e exportação de fotos.
Wątroba diz: "Cada sistema está atrás de uma interface." Usamos um padrão fachada para dar um ponto de entrada ao jogo, e então uma pequena fábrica seleciona o provedor de plataforma correto na inicialização. A jogabilidade pode dizer "desbloqueie esta conquista", mas não sabe se isso aparece no Steam, PlayStation® Network ou em lugar nenhum.
A configuração de tempo de execução lida com a maioria das diferenças, como se o jogador pode sair para a área de trabalho ou abrir um link da web. Scripts definem símbolos passados por scripts de build para lidar com casos como excluir o Steamworks de uma build PC não-Steam. As definições da plataforma Unity são o último recurso, apenas onde o código não pode compilar em outro lugar.
Diferenças de texto são dados também. As chaves de Localization têm variantes de plataforma, então "Achievement" pode se tornar "Trophy" no PlayStation® sem alterar o código de jogabilidade.

Dumplings Foxy | Soft Crunch Games
Automatizar qualquer coisa que aconteça duas vezes
A maneira como Wątroba mantém a carga de trabalho gerenciável é em parte experiência e em parte recusar fazer a mesma coisa duas vezes. Qualquer coisa repetida em várias plataformas acabou se tornando um script ou item de menu.
Fazer uma compilação específica é um clique com as definições, pasta de saída e configurações corretas. Eles também executam verificações de compilação em aproximadamente 40 configurações de plataforma e armazenamento, pegando o problema clássico de "compila no Windows, mas quebra no PlayStation" antes que o QA veja.
O escopo também importa. Dissemos não a recursos que multiplicam o trabalho da plataforma: entrada de texto, recursos online que teríamos que hospedar ou moderar e compras no jogo. Nós também enviamos uma versão do PlayStation que funciona tanto no PlayStation 4 quanto no PlayStation 5," ele diz.
Os empreiteiros não precisam pensar em plataformas. A UI é projetada uma vez em uma tela 4K e escalada por plataforma. A equipe de som trabalha em um projeto FMOD. O designer de jogos constrói conteúdo nos mesmos ativos de dados em todos os lugares. Ele diz: "As diferenças de plataforma são meu trabalho, não o deles."

Dumplings Foxy | Soft Crunch Games
Projetar a entrada e a interface do usuário antes de escrever o código
O primeiro passo para Wątroba foi projetar no papel com o designer de UX da equipe Foxy Dumplings.
"Eu vi projetos sofrerem porque a entrada e a UX não foram pensadas desde o início", diz Wątroba. "Nossa abordagem foi essencialmente:" Este é o nosso jogo, faça-o funcionar em cada plataforma.
Resolver aqueles problemas no papel antes da primeira linha de código ajudou a equipe a evitar muitos problemas depois.
Assim que a UX foi concluída, eles construíram controles em torno do Input System com um conjunto de ações e três esquemas de controle: gamepad, teclado e mouse, e toque. O jogo muda de esquema ao vivo com base no que os jogadores usaram por último, e a interface do usuário segue automaticamente.
A equipe usou um Prefab de prompt de botão único em quase 200 lugares. Ele entende a entrada para cada plataforma. "Pegue um controle e os prompts mudam; mova o mouse e eles mudam novamente," ele diz.
Os minijogos de culinária eram a parte mais difícil porque cada um tinha que funcionar com cada método de entrada. Steam Deck ensinou-lhes uma regra importante: Nunca pergunte se um dispositivo está presente; pergunte se ele pode realmente produzir a entrada que você precisa.
Wątroba explica: "Seu touchscreen pode aparecer como um mouse e botão esquerdo, o que tornou impossível terminar um minijogo que exigia ambos os botões do mouse." Projetar em torno de capacidades em vez de dispositivos também ajudou em hardware Android mais antigo."

Dumplings Foxy | Soft Crunch Games
Perfilando o hardware mais fraco primeiro
Foxy Dumplings é um jogo 2D com personagens Spine e materiais não iluminados, então quando a GPU tem dificuldades, geralmente é por causa de muitas camadas de tela cheia ou muitos pixels.
Um exemplo foi a cozinha. Alguns efeitos foram renderizados em uma textura de renderização 4K e compostados sobre a interface do usuário – desnecessário em uma tela de 1080p ou 720p. Watroba mudou as texturas de renderização para seguir a resolução real da tela e desativou as texturas HDR e de profundidade, que o jogo nunca usou. Visualmente, nada mudou, mas no Steam Deck essa camada agora preenche cerca de 8 vezes menos pixels a cada quadro, e sua textura de renderização caiu de cerca de 32 MB para cerca de 4 MB.
O processo de perfilagem de Wątroba é o mesmo que ele aprendeu anos atrás: Ele faz uma build de desenvolvimento no dispositivo real, anexa o Unity Profiler, descobre o que é caro, mede, corrige e mede novamente. Ele diz: "O dispositivo é o rei."
A memória também precisa de atenção. A equipe suporta 14 idiomas, incluindo chinês, japonês, coreano e tailandês, cada um com seu próprio atlas de fontes. Quando a equipe viu picos de memória durante as mudanças de idioma, eles perfilaram o caminho de alocação e descobriram que caracteres ausentes dos atlases estáticos eram rasterizados em tempo de execução em atlases de fallback superdimensionados de 4096×4096, com um recarregamento completo de atlas de 16 MB para cada novo caractere.
O conserto foi regenerar as fontes de fallback com páginas de 2048×2048 e adicionar glifos em lotes antes da troca, o que reduziu a memória do novo atlas para japonês de cerca de 48 MB para 4–8 MB por fonte.
A equipe usou Addressables no projeto porque Unity Localization é construído sobre eles. Tabelas de strings e de ativos para todos os 14 idiomas residem em grupos Addressable e são carregadas por idioma. "Tudo ainda é enviado localmente, mas os Addressables nos dão uma maneira limpa de gerenciar esses dados e memória."

Dumplings Foxy | Soft Crunch Games
Testando jogabilidade compartilhada uma vez, comportamento da plataforma muitas vezes
A equipe não tem um grande conjunto de testes automatizados, mas automatiza alguns sistemas, incluindo simulações que verificam se a Economy do jogo pode colapsar.
O que mantém o QA gerenciável para eles é que as plataformas compartilham quase todo o seu código. A jogabilidade é testada profundamente no PC, onde a iteração é mais rápida. Em consoles e dispositivos móveis, os testes focam na camada da plataforma: requisitos de certificação, salvar e carregar, suspender e retomar, troca de usuários, desconexões de controle, troféus e conquistas e falta de armazenamento.
"Nosso parceiro externo de QA recebe o lançamento, depuração e um lançamento de 'desbloqueio completo' com ferramentas de depuração", diz Wątroba. "Os testadores podem pular para qualquer capítulo ou missão e manipular dinheiro, energia ou tempo, para que não tenham que repetir cinco horas para verificar um bug."
A demonstração pública também tem sido uma grande fonte de testes. Mais de 18.000 pessoas jogaram, e a equipe recebeu mais de mil respostas de pesquisa que levaram a recursos de acessibilidade, correções de bugs, ajustes e melhorias na qualidade de vida.
Tornando os saves multiplataforma portáteis primeiro
A progressão multiplataforma começou tornando o salvamento em si portátil. Progresso é um arquivo binário criptografado, byte por byte no mesmo formato em todas as plataformas. Um arquivo salvo no celular pode ser lido no PC.
A sincronização tem duas camadas. O primeiro é o Cloud Save nativo de cada plataforma. O segundo é Unity Cloud Save, que carrega o progresso entre ecossistemas. Ambos ficam atrás da mesma interface, com lógica de mesclagem acima deles.
Cada slot de salvamento é comparado por seu carimbo de data/hora de última atualização. Slots excluídos deixam um marcador para que não retornem da nuvem. A fusão só acontece no menu principal, nunca no meio de um dia de jogo, porque Foxy Dumplings salva quando o jogador vai dormir. Os uploads tentam novamente silenciosamente quando não há rede e são limpos quando o jogo é suspenso.
A equipe vincula um console e PC usando o código de vinculação Unity Authentication, para que os jogadores não precisem de outra conta. A progressão cruzada é opcional, e o jogo permanece totalmente jogável offline.
Wątroba diz: "A maior lição foi que o armazenamento é a parte fácil; a identidade é a parte difícil." Cada ecossistema tem sua própria ideia de quem é o jogador, então a Authentication tem que confiar em tickets do Steam, tokens do PlayStation e tokens do Xbox separadamente."

Dumplings Foxy | Soft Crunch Games
Construindo o Foxtagram sem criar outro problema de plataforma
Foxtagram é um aplicativo no celular do jogo da Lisa onde os jogadores compõem fotos de pratos usando pratos, talheres, ingredientes, dumplings, filtros, molduras e adesivos, antes de publicá-las para aumentar a popularidade do restaurante.
A principal decisão arquitetural foi manter o editor na Unity UI regular, sem código específico de plataforma dentro dele. Wątroba explica: "Os seus 50 filtros são predefinições de um shader no material da foto, em vez de sobreposições." Quando você tira uma foto, uma câmera dedicada renderiza a área da foto em uma textura de renderização quadrada na resolução de saída. Nós lemos de volta com AsyncGPUReadback e codificamos o resultado como um JPG. Aquele quadro parece um flash de câmera.
A resolução de saída e a qualidade JPG vêm das configurações por plataforma. O editor suporta mouse, controle e toque: arrastar e roda do mouse no desktop; analógicos e gatilhos no controle; e pinça e torção no toque.
Compartilhar fora do jogo passa pelas próprias ferramentas de cada plataforma. O PC pode usar a pasta de fotos ou a biblioteca de mídia do Steam, os consoles usam seus álbuns do sistema e o celular usa a folha de compartilhamento do sistema. Para uma equipe pequena, usar os recursos de compartilhamento existentes da plataforma elimina muito trabalho de certificação e Moderation.

Dumplings Foxy | Soft Crunch Games
Migrando para Unity 6.3 LTS
"A coisa mais valiosa que Unity 6.3 LTS trouxe foi um lançamento LTS onde tudo em que dependemos se alinha e cujo período de suporte cobre nossas necessidades de lançamento," diz Wątroba.
A equipe achou 6.3 mais estável em áreas como edição de ScriptableObjects, e dispositivos Android mais antigos se beneficiaram de correções do Vulkan.
Os tempos de compilação também melhoraram. Com o IL2CPP, eu estimaria que nossos builds são aproximadamente 10–15% mais rápidos dependendo da plataforma e tipo de iteração. O desempenho em tempo de execução também melhorou em alguns por cento, especialmente em hardware mais fraco."
A atualização foi em grande parte tranquila. Cada efeito VFX Graph inicialmente ficou invisível porque as referências de shader foram perdidas durante a migração; reimpor os gráficos resolveu isso rapidamente.
Planejar o porto antes de haver um porto
A decisão com o maior impacto para a equipe foi manter um ramo e ser rigoroso com as diferenças de plataforma desde o início. "O código de jogabilidade nunca pergunta em qual plataforma está sendo executado." "Se algo difere, é dado, uma configuração de qualidade ou um provedor por trás de uma interface", diz Wątroba.
A equipe criou um documento de arquitetura técnica juntamente com o documento de design do jogo, a bíblia de arte e a bíblia narrativa, o que eles recomendam fazer. Wątroba notes, "Desenhar as camadas técnicas do jogo antes da produção nos ajudou a manter as responsabilidades separadas e tornou muito mais fácil adicionar plataformas."
Na próxima vez, a equipe faria os builds rodarem em todos os kits de desenvolvimento muito mais cedo. "A arquitetura estava correta, mas muito trabalho real de console ainda foi feito nos meses antes da submissão, e o hardware sempre encontra coisas que o Editor não encontrará."

Dumplings Foxy | Soft Crunch Games
Enviando um jogo para todos os lugares
Foxy Dumplings é construído em torno de uma promessa técnica simples: o mesmo jogo, do mesmo código-fonte, em PC, console e mobile. Para uma pequena equipe, isso só funciona se o desenvolvimento multiplataforma for tratado como uma restrição arquitetural em vez de uma tarefa de portabilidade deixada para o final.
"Ao manter a jogabilidade compartilhada, isolar integrações de plataforma, automatizar trabalho de compilação repetitivo e testar contra os alvos mais fracos cedo, estamos buscando tornar o lançamento simultâneo menos sobre manter muitas versões de Foxy Dumplings e mais sobre lançar um jogo em todos os lugares", diz Wątroba.
Foxy Dumplings estará disponível no PC (Windows, macOS e Linux) via Steam, GOG, Epic Games Store e Microsoft Store com Xbox Play Anywhere, bem como no Nintendo Switch 2, Nintendo Switch, PlayStation 4, PlayStation 5, Xbox Series X|S, iOS e Android em 2027. Confira mais histórias de desenvolvedores da Unity no Blog da Unity e no Resource Hub.
*Nintendo Switch é uma marca registrada da Nintendo.