Usuário(a):Márlon Luís de Almeida/Geração procedural

Origem: Wikipédia, a enciclopédia livre.


Em computação gráfica, geração de procedimento ocorre quando o conteúdo esta sendo gerado algoritmicamente em vez de manualmente. Em um jogos eletronicos, isso significa que o conteúdo gráfico para um jogo pode ser criado pelo computador host, em vez de uma Pré-renderização já inclusa no pacote do jogo.

Visão Geral[editar | editar código-fonte]

O termo procedural refere-se ao processo que calcula uma função particular. Fractais , sao um exemplo de geração procedural, expressam este conceito, em torno do qual um corpo inteiramente matemático--geometria fractal--evolui. Conteúdo o procedural comum inclui texturas e malhas. O som é frequentemente proceduralmente gerado, tendo aplicações tanto em Síntese de voz, bem como na música. Ela tem sido usada para criar composições em vários gêneros de música eletrônica por artistas como Brian Eno , que popularizou o termo "generative music".

Diversos desenvolvedores de software têm aplicado técnicas de geração procedurais durante anos, alguns produtos têm utilizado esta abordagem extensivamente. Elementos proceduralmente gerados têm aparecido em jogos eletrônicos a muito tempo: The Elder Scrolls II: Daggerfall ocorre em um mundo na maior parte proceduralmente gerado, dando um mundo cerca de duas vezes o tamanho real das Ilhas Britânicas. Soldier of Fortune de Raven Software usa rotinas simples para detalhar modelos de inimigos, enquanto its sequel contou com um modo de nível gerado aleatoriamente. Avalanche Studios empregou geração procedural para criar um grupo grande e variado de ilhas tropicais com grande detalhe para Just Cause. "No Man's Sky", um jogo que está sendo desenvolvido pelo estúdio jogos de Hello Games é todo baseado em elementos proceduralmente gerados.

As modernas demoscene usam geração procedural para embalar uma grande quantidade de conteúdo audiovisual em programas relativamente pequenos.

Novos métodos e aplicações são apresentados anualmente em conferências como a | IEEE Conference on Computational Intelligence and Games e Artificial Intelligence and Interactive Digital Entertainment.

Aplicações contemporâneas[editar | editar código-fonte]

Jogos eletrônicos[editar | editar código-fonte]

RoboBlitz usado texturas proceduralmente gerados , a fim de reduzir o tamanho do arquivo do jogo

História Antiga[editar | editar código-fonte]

Os primeiros jogos de computador foram severamente limitada pela memória restrições. Isto forçou conteúdo, tais como mapas, a ser gerado através de algoritmos em tempo real: simplesmente não havia espaço suficiente para armazenar uma grande quantidade de níveis pré-fabricados e obras de arte.Gerador de números pseudo-aleatórios eram usados ​​frequentemente com valores( sementes) predefinidas, a fim de criar grandes mundos.


Talvez o primeiro jogo a utilizar uma semente para gerar um mundo foi Akalabeth de Richard Garriott em 1980; usando o mesmo número de sementes, um jogador podia sempre voltar a um determinado mundo. The Sentinel supostamente tinha 10.000 níveis diferentes armazenados em apenas 48 e 64 kilobytes. Um caso extremo foi | Elite, que foi originalmente planejado para conter um total de 248 (aproximadamente 282 trilhões) galáxias com 256 sistemas solares cada. A editora, no entanto, tinha medo de que um universo tão gigantesca causaria descrença em jogadores, e oito destas galáxias foram escolhidos para a versão final. Outros exemplos adiantados notáveis ​​incluem o jogo 1985 de | Rescue on Fractalus que usava fractais para criar proceduralmente em tempo real, as montanhas escarpadas de um planeta alienígena e River Raid, de 1982 da Activision jogo que usou uma sequência de números pseudo-aleatórios gerados por um registo de deslocamento linear feedback shift register, a fim de gerar um labirinto de rolagem de obstáculos.

Como o hardware de computador avançado e CDs tornou-se capaz de armazenar milhares de vezes mais dados do que era possível no início dos anos 80, utilizando a geração procedural para construir grandes mundos tornou-se desnecessário. Conteúdo do jogo, como texturas e modelos de personagens e do ambiente são muitas vezes criados por artistas de antecedência, de modo a manter a qualidade do conteúdo consistente de alta.

Armazenar projetos originais na memória do jogo, ao invés de produzir vários objetos usando diretrizes semelhantes permite uma variedade de modelos detalhados que são cada substancialmente diferente. No entanto, quando cada modelo tem de ser concebido com a mão, um número limitado de objectos existirá. Algumas abordagens iniciais a síntese procedural tentaram resolver este problema através da inversão do ónus da geração de conteúdo dos artistas para os programadores que podem criar código que gera automaticamente diferentes tipos de telas de acordo com parâmetros de entrada.

Embora, por vezes, isso ainda acontece, o que foi reconhecido é que a aplicação de um modelo puramente procedural é muitas vezes difícil na melhor das hipóteses, o que requer grandes quantidades de tempo para evoluir para um método funcional, utilizáveis ​​e de aparência realista. Em vez de escrever um procedimento que constrói completamente o conteúdo procedural, provou-se ser muito mais barato e mais eficaz utilizar artistas que criam o conteúdo para alguns detalhes. Por exemplo,SpeedTree é middleware usado para gerar uma grande variedade de árvores proceduralmente, mas suas texturas folha pode ser obtido a partir de arquivos regulares, muitas vezes representando folhagem verdadeira digitalmente adquirido. Outros métodos eficazes para gerar o conteúdo híbrido são proceduralmente mesclar diferentes ativos pré-fabricados ou aplicar proceduralmente algumas distorções para eles.

Supondo que, no entanto, um único algoritmo pode ser previsto para gerar uma árvore com uma aparência realista, o algoritmo pode ser chamado para gerar árvores aleatórias, preenchendo assim toda uma floresta no tempo de execução, em vez de armazenar todos os vértices requeridos pelos diferentes modelos. Isso pouparia espaço de mídia de armazenamento e reduzir a carga sobre os artistas, proporcionando um nível semelhante de imersão para o jogador. Este método exige muito mais poder de processamento, mas desde CPUs estão constantemente a aumentar em velocidade este está se tornando menos de um obstáculo.

Um problema diferente é que não é fácil de desenvolver um bom algoritmo para uma única árvore, e muito menos para uma variedade de espécies. Uma advertência adicional é que a montagem de uma floresta de aparência realista não poderia ser feito simplesmente montar árvores, porque no mundo real existem interações entre as várias árvores que podem mudar drasticamente a sua aparência e distribuição.

O uso moderno[editar | editar código-fonte]

Em 2004, um jogo de tiro em primeira pessoa para PC chamado .kkrieger foi lançado fizendo uso pesado de síntese procedural: ao mesmo tempo bastante curto e muito simples, os efeitos de vídeo avançadas foram embalados em apenas 96 Kilobytes . Em contrapartida, muitos jogos modernos têm de ser lançado em DVDs , muitas vezes superior a 2 gigabytes de tamanho, mais de 20 mil vezes maior. RoboBlitz da Naked Sky Entertainment|Naked Sky's usou geração procedural para maximizar o conteúdo em um menos de 50 MB de arquivos para download para Xbox Live Arcade. Spore de Will Wright também faz uso de síntese procedural.

Em 2008, a Valve Software lançou Left 4 Dead, um jogo de tiro em primeira pessoa baseado na Source engine , que utilizou geração procedural como um grande jogo mecânico. O jogo contou com uma estrutura de inteligência artificial, apelidado de "Director", que analisou as estatísticas do jogador e estados de jogo em tempo real para fornecer experiências dinâmicas em cada jogada. Com base em variáveis ​​jogador diferentes, como a saúde restante, munição, e número de jogadores, o Director AI poderia potencialmente criar ou remover inimigos e itens para que determinado jogo manteve um ritmo emocionante e alucinante. Left 4 Dead 2 , lançado em novembro de 2009 , ampliou esse conceito, a introdução de mecanismos mais avançados para o director AI, tais como a capacidade de gerar novos caminhos para os jogadores a seguir de acordo com seus status individuais.

Um indie jogo que depende fortemente de geração procedural é Dwarf Fortress, lançado pela primeira vez em 2006 e em desenvolvimento ativo. Antes de o jogador começa o jogo num mundo de fantasia, tudo é gerado com base em um conjunto complexo de opções de configuração completa, com seu terreno, história, personagens notáveis, e monstros.

Outra indie jogo que faz uso extensivo de geração procedural é Minecraft, lançado pela primeira vez em 2009. No jogo o estado inicial do mundo é principalmente aleatório (com orientações a fim de gerar terreno parecido com a Terra), e novas áreas são gerados sempre que o jogador se desloca no sentido dos bordos do mundo.

Ambos Dwarf Fortress e Minecraft tem o benefício que cada vez que um novo jogo é feito, o mundo é completamente diferente e vai precisar de um método diferente para ser bem sucedido, agregando valor replay.

Nosso 400 bilhões de estrelas-sistemas grande galáxia está sendo proceduralmente gerado no [Elite: Dangerous] em verdadeira escala, que foi lançado em 2014. Gerado proceduralmente possui um nível detalhado da superfície dos planetas e estão previstas para a expansão que permite a aterragem planetária.

No Man's Sky, previsto para ser lançado em 2015, é um jogo que permite aos jogadores explorar planetas que são proceduralmente gerados. Segundo os desenvolvedores, isso permite que há mais de 18 quintilhões de possíveis planetas.

Filmes[editar | editar código-fonte]

Como em jogos de vídeo, geração procedural é muitas vezes utilizado no cinema para criar rapidamente espaços visualmente interessantes e precisos. Isto vem em uma ampla variedade de aplicações.

Uma aplicação é conhecida como uma "fábrica imperfeita", onde os artistas podem gerar rapidamente um grande número de objetos semelhantes. Isso explica o fato de que, na vida real, não há dois objetos são sempre exatamente iguais. Por exemplo, um artista poderia modelar um produto para uma prateleira de supermercado, e, em seguida, criar uma fábrica imperfeita que geraria um grande número de objetos semelhantes para preencher a prateleira.

Coherent noise pode ser extremamente importante para o fluxo de trabalho procedural no cinema. Simplex noise é muitas vezes mais rápido com menos artefatos, embora uma função mais antiga chamada Perlin noise pode ser usado também. Coherent noise, neste caso, refere-se a uma função que gera liso pseudo-aleatório de n dimensões.