Imagem cortesia de Matthieu Fiorilli

Chasing the Unseen utiliza a matemática fractal para gerar seus ambientes

Desenvolvedor de jogos independentes Matthieu Fiorilli |
23 de novembro de 2022
A Strange Shift Studio nasceu em 2022, em Montreal, e é uma desenvolvedora de jogos independentes de uma só pessoa fundada por Matthieu Fiorilli.
Chasing the Unseen é um jogo para escalar criaturas gigantes e explorar ambientes sobrenaturais gerados por matemática fractal. Sendo um desenvolvedor de jogos solo, ao assumir um projeto ambicioso como esse, eu sabia que precisava das ferramentas certas. Nesta publicação, apresentarei uma visão geral de como abordei esses desafios em Chasing the Unseen.
 

As ferramentas para dar autonomia a desenvolvedores independentes evoluíram muito nos últimos anos, e esse tipo de projeto não seria possível até bem recentemente. Esse projeto só pôde existir graças à Epic, à SideFX e outras, que se esforçam para disponibilizar essas ferramentas poderosas para qualquer pessoa.

Para encarar esse projeto ambicioso, eu sabia que precisava das ferramentas adequadas, e foi isso que encontrei por meio de uma simbiose entre a Unreal Engine e o Houdini.

As criaturas

Primeiro, vamos conferir as criaturas e o sistema de escalada.
Imagem cortesia de Matthieu Fiorilli
Captura de tela do jogo
Minhas criaturas são feitas no Houdini usando diversas ferramentas. Pegando o polvo como exemplo, eu uso as ferramentas tradicionais do Houdini para modelá-lo processualmente e, em seguida, faço uma simulação usando o recente multissolucionador do Houdini chamado Vellum. A simulação me fornece deformações muito naturais e fluidas. Depois, o desafio é levar as criaturas para a Unreal Engine e tornar possível escalá-las. Para essa tarefa, usei a poderosa ferramenta Dem Bones. Minha simulação de polvo no Houdini é pesada. Cada ponto da geometria tem sua própria animação, e não é algo que dá para simplesmente integrar a uma engine de jogo. O Dem Bones me permite gerar processualmente um conjunto de ossos e revestimentos para reconstruir a simulação com dados compatíveis com a engine de jogo. Isso significa que, em vez de ter uma animação em cada um dos 128.000 vértices/pontos do polvo, consigo ter uma animação em apenas 600 ossos.
Imagem cortesia de Matthieu Fiorilli
Simulação do Vellum incorporada usando o Dem Bones
Assim, eu posso levar a criatura para dentro da Unreal Engine e reproduzi-la em tempo real. É aqui que uso uma máquina de estado para misturar diferentes animações. Com base nas informações de revestimento geradas com o Dem Bones, posso gerar invólucros convexos processualmente para criar as colisões, que são levados para a Unreal Engine por meio de ferramentas personalizadas.
Imagem cortesia de Matthieu Fiorilli
Malhas de colisão na Unreal Engine
Uma malha de resolução mais baixa é gerada e levada para a Unreal para a escalada. Com uma mistura de Blueprint e C++, meu sistema de escalada consegue usar a malha de resolução mais baixa para fixar o personagem às criaturas.
Imagem cortesia de Matthieu Fiorilli
Sistema de escalada usando Blueprints e C++

Os ambientes

Já nos ambientes, eu uso matemática fractal e outras técnicas processuais. Fractais são fórmulas matemáticas curtas que geram formas que se repetem infinitamente. Um dos fractais mais conhecidos é o conjunto de Mandelbrot.
Imagem cortesia da Wikipédia
Imagem da Wikipédia do conjunto de Mandelbrot
O conjunto de Mandelbrot é um fractal 2D e seu nome é uma homenagem a Benoit Mandelbrot. Anos após sua descoberta, uma versão 3D análoga também foi descoberta: o Mandelbulb.

Isso levanta a questão: como colocar fractais em um jogo? Por meio da simbiose entre o Houdini e a Unreal Engine, eu consigo resolver esse problema. No Houdini, eu usei o projeto de graduação "VFX Fractal Toolkit" do Juraj Tomori para gerar os fractais. Em seguida, desenvolvi um pipeline em torno dele para preparar a geometria para ser integrada à Unreal Engine. Esse pipeline é usado em fractais e outros métodos procedurais de geração de malha (dependendo do nível).
Imagem cortesia de Matthieu Fiorilli
Malhas fractais geradas para um nível de jogo
Para preparar os fractais para a Unreal Engine, muitas tarefas diferentes tiveram que ser realizadas. Precisei remover detalhes, criar inclinações planas caminháveis, dividir as malhas em partes para a oclusão adequada na UE, reduzir malhas, gerar LODs, UVs e mapas de iluminação, entre outras coisas. Todo esse processo é automatizado e adaptado para atender aos requisitos da Unreal Engine.
Imagem cortesia de Matthieu Fiorilli
Captura de tela de um dos níveis do jogo
Por fim, depois de todos esses processos concluídos, o nível é construído na Unreal, e utilizo o sistema de iluminação para incorporar os mapas de iluminação. Como o nível é separado em várias partes, o sistema de oclusão da Unreal faz um ótimo trabalho desenhando apenas as malhas que vemos na câmera. O sistema de LODs da Unreal desenha as malhas apenas com a densidade necessária com base na distância da câmera. Para as colisões, eu gero uma malha separada de baixa resolução.
Imagem cortesia de Matthieu Fiorilli
Captura de tela de um dos níveis do jogo

Palavras finais

Essa é uma visão geral de como eu lido com as criaturas, com a escalada e com os níveis no meu jogo. É o fluxo de trabalho principal que uso durante o jogo e, quando necessário, posso introduzir diferentes variações de criaturas ou níveis.

Foi bastante desafiador encontrar soluções para resolver os desafios desse projeto, mas trabalhar como desenvolvedor independente me deu liberdade e flexibilidade para usar as ferramentas mais recentes para tornar isso possível. Espero que essa publicação tenha sido útil para dar a você uma ideia do processo técnico do projeto, mesmo que por cima, e que tenha dado a você algumas ideias do que é possível fazer com as ferramentas existentes.

Obrigado por ler! Chasing the Unseen será lançado para PC. Saiba mais do projeto em www.chasingtheunseen.com.

    Obtenha a Unreal Engine hoje!

    Obtenha a ferramenta de criação mais aberta e avançada do mundo.
    Com diversos recursos e acesso a códigos-fonte inclusos, a Unreal Engine vem carregada e pronta para usar.
    Conteúdo gratuito em destaque da Loja da Unreal Engine - Fevereiro de 2024
    Notícias
    6 de fevereiro

    Conteúdo gratuito em destaque da Loja da Unreal Engine - Fevereiro de 2024

    Interiores de fantasia, minas de cristal estilizadas, uma viagem de volta aos anos 90 e muito mais. Chegaram os ativos 3D gratuitos de fevereiro da Loja da Unreal Engine!
    Conteúdo gratuito em destaque da Loja da Unreal Engine - Fevereiro de 2024
    Notícias

    Conteúdo gratuito em destaque da Loja da Unreal Engine - Fevereiro de 2024

    Interiores de fantasia, minas de cristal estilizadas, uma viagem de volta aos anos 90 e muito mais. Chegaram os ativos 3D gratuitos de fevereiro da Loja da Unreal Engine!
    Promoção de fevereiro na Loja: mais de 2.000 produtos com 50% de desconto
    Notícias
    5 de fevereiro

    Promoção de fevereiro na Loja: mais de 2.000 produtos com 50% de desconto

    Cafeterias retrô, interiores rústicos, cidades com baixa contagem de polígonos, PNJs personalizáveis: a promoção de fevereiro na Loja tem algo para todos. Compre agora para obter os itens selecionados do mês pela metade do preço.
    Promoção de fevereiro na Loja: mais de 2.000 produtos com 50% de desconto
    Notícias

    Promoção de fevereiro na Loja: mais de 2.000 produtos com 50% de desconto

    Cafeterias retrô, interiores rústicos, cidades com baixa contagem de polígonos, PNJs personalizáveis: a promoção de fevereiro na Loja tem algo para todos. Compre agora para obter os itens selecionados do mês pela metade do preço.