O que é geração procedural: a “mágica matemática” que cria universos infinitos nos games

Wait 5 sec.

A geração procedural, vinda da computação, é uma forma de criar dados de forma algorítmica. Ou seja, através de instruções programadas e processamento de códigos numéricos (map seed), o que permite gerar elementos aleatórios automaticamente. É um processo que permite gerar até coisas complexas como texturas e modelos 3D, como é usado na computação gráfica por exemplo. Entretanto, apesar de tantas aplicabilidades, a geração procedural surgiu justamente no desenvolvimento dos games.Geração procedural nos gamesA geração procedural nos games foi realizada com o intuito de facilitar a criação de fases, mapas e mundos, com o mínimo de esforço humano. Para isso, são utilizados certos algoritmos e técnicas, de acordo com o tipo de conteúdo que será criado.Grafos aleatóriosO Randomized graph traversal (travessia aleatória de grafos) é comumente utilizado em geradores de dungeons, ou em mapas ramificados (como em Slay the Spire e FTL: Faster Than Light). Esse processo é realizado com a construção de grafos (modelos matemáticos) que constroem salas e conexões, enquanto aplicam regras pré-definidas referentes a situações como mínimo de caminho, quantidade de barreiras (como portas trancadas ou outros tipos de obstruções que precisam de determinados itens/habilidades para desbloquear), e becos sem saída.Todos esses elementos, geralmente, são extraídos de assets prontos e posteriormente organizados em uma forma geométrica passível de renderização. Exemplificando: a estrutura de nós e ligações em diferentes diagonais é transformada em uma estrutura “quadrada”, com ligações horizontais e verticais, como vemos nas dungeons dos jogos.Funções de ruídoO ruído de Perlin de forma visual – Imagem: Reprodução / Sebastian HirnschallSão algoritmos como o Ruído de Perlin e o Diagrama de Voronoi. Essas funções criam transições suaves entre os elementos, ideais para paisagens naturais. Elevação de terrenos, textura de nuvens e delimitação de diferentes biomas ou terrenos são os usos mais comuns dessas ferramentas. São recursos muito comuns em engines para desenvolvimento de jogos, como a Unity 3D e a Unreal Engine.Seleção aleatória ponderadaWeighted random selection é uma função extremamente comum no posicionamento de inimigos e armadilhas, assim como na criação de loots e equipamentos. Todos esses dados são inseridos previamente, assim como o “peso” de cada um deles. Com essas informações, cabe ao algoritmo ponderar, de acordo com o “peso” estabelecido, e inserir no jogo conforme a probabilidade e outras regras estabelecidas.Um bom exemplo pode ser visto em jogos como Diablo, Borderlands e a maioria dos roguelikes. As suas armas e equipamentos possuem diferentes status e habilidades, normalmente com valores variáveis, que são inseridos aleatoriamente em cada item, enquanto também consideram o seu tipo, a sua raridade e outros aspectos.O começo da geração procedural na história dos videogamesRogue, lançado em 1980, o pai dos roguelikes – Imagem: Reprodução / EpyxA geração procedural nos games data do fim da década de 70, mais precisamente nos primeiros roguelikes. Eram jogos inspirados em Dungeons & Dragons, mas que adotavam uma jogabilidade solo, enquanto suas dungeons eram geradas de formas aleatórias. Entretanto, o processo era muito mais simples, devido aos gráficos serem basicamente caracteres ASCII (letras e símbolos comuns do teclado). Um dos games mais populares dessa época foi Rogue, lançado em 1980 (sim, foi esse jogo que inspirou os roguelikes, o que pode ser visto inclusive em seu nome).Apesar de ser algo tão antigo, a primeira vez na qual a geração procedural foi utilizada de forma mais complexa, com todo seu potencial gráfico, foi em 1996. Foi nessa época que The Elder Scrolls II: Daggerfall foi lançado com um mapa gerado de forma procedural. O resultado era um mundo gigantesco, com 160.000km², que combinava regiões centrais pré-concebidas com terrenos, cidades e dungeons montadas algoritmicamente.The Elder Scrolls II: Daggerfall, lançado em 1996 e desenvolvido pela Bethesda Softworks – Imagem: Reprodução / Bethesda SoftworksGerador de números pseudoaleatórios (PRNG)É uma forma “primitiva” de geração procedural, que ficou conhecida por causa de Gauntlet, lançado em 1985 para os fliperamas. O jogo utilizava 125 mapas diferentes, o que criava uma sensação de novidade quando o jogo resetava e voltava para o primeiro mapa, juntamente com o aumento de dificuldade e randomização de itens e tesouros.Gauntlet, lançado em 1985 e desenvolvido pela Atari Games – Imagem: Reprodução / Warner Bros. EntertainmentNa sua continuação, lançada em 1986, essa “aleatoriedade” foi ainda mais aprimorada. Os seus mais de 100 mapas poderiam aparecer invertidos verticalmente ou horizontalmente, assim como rotacionados em até 180°, enquanto as saídas também podiam mudar de lugar. Eram elementos que traziam uma sensação de singularidade ainda maior.O futuro da geração procedural nos jogosAs redes neurais, modelos de aprendizado de máquina inspirados no cérebro humano, têm sido utilizadas recentemente para refinar a geração procedural. Ao combinar métodos tradicionais de geração com o deep learning das IAs, novas formas de gerar áudio, imagens e níveis nos jogos são oferecidas. Também é possível criar agentes que testam o jogo, ou mesmo NPCs mais inteligentes, capazes de reagir a comandos de fala ou responder “naturalmente” a perguntas e falas dos jogadores.Porém, são tecnologias que ainda estão em desenvolvimento, em estágios muito iniciais. Um exemplo foi o NEO NPC da Ubisoft. O projeto visava criar NPCs que interagiam naturalmente com os jogadores, gerando respostas automatizadas e de acordo com as falas dos jogadores, mas o projeto não saiu como esperado. Sem grandes esclarecimentos, ele tomou um rumo completamente diferente com o Teammates, agentes que respondem automaticamente aos comandos de voz do jogador, no lugar de uma lista de comandos pré-definida.Ubisoft Teammates, ainda em testes fechados – Imagem: Reprodução / UbisoftSão ótimas ideias que podem levar os jogos a um novo patamar de interatividade, trazer uma experiência inédita e ainda mais imersão. No entanto, são tecnologias que ainda são promessas, a maioria em fase inicial de testes, que podem terminar em falha ou entregar algo completamente diferente do escopo original (como o NEO NPC). Por isso, deve-se olhar com calma para essas novidades, pelo menos até que algo mais concreto surja de fato.O post O que é geração procedural: a “mágica matemática” que cria universos infinitos nos games apareceu primeiro em Olhar Digital.