Como se inicia a geração de procedimentos?


147

A geração de procedimentos foi destacada recentemente (por Spore, MMOs, etc.) e parece uma técnica de programação interessante / poderosa.

Minhas perguntas são as seguintes:

  • Você conhece algum projeto de médio porte que utilize técnicas de geração de procedimentos?
  • Qual idioma / classe de idiomas é melhor para a geração de procedimentos?
  • Você pode usar a geração procedural para código "sério"? (ou seja, não é um jogo)

1
Gostaria de saber se você acha útil este artigo do X-Team? x-team.com/blog/…
Adam Gerard

Respostas:


117

Você provavelmente deve começar com um pouco de teoria e exemplos simples, como o algoritmo de deslocamento do ponto médio . Você também deve aprender um pouco sobre o Perlin Noise se estiver interessado em gerar gráficos. Eu usei isso para começar meu projeto final do ano sobre geração de procedimentos.

Os fractais estão intimamente relacionados à geração de procedimentos.

O Terragen e o SpeedTree mostrarão algumas possibilidades surpreendentes de geração de procedimentos.

A geração de procedimentos é uma técnica que pode ser usada em qualquer linguagem (definitivamente não está restrita a linguagens de procedimentos, como C, pois pode ser usada em linguagens OO, como Java, e linguagens de lógica, como Prolog). Um bom entendimento da recursão em qualquer idioma fortalecerá sua compreensão da Geração de Procedimentos.

Quanto ao código 'sério' ou não relacionado ao jogo, técnicas de geração de procedimentos foram usadas para:

  • simular o crescimento das cidades para planejar o gerenciamento de tráfego
  • para simular o crescimento dos vasos sanguíneos
  • SpeedTree é usado em filmes e apresentações arquitetônicas

Esse ruído Perlin se parece muito com o filtro "nuvens" do Photoshop.
usar o seguinte comando

O primeiro link está quebrado
Jean Carlo Machado

Alguma música Electro usa geração procedural para ser criada
Poyda 13/07

50

Wiki de geração de conteúdo processual:

http://pcg.wikidot.com/

se o que você deseja não estiver lá, adicione-o;)


11
Não consigo copiar o wiki inteiro aqui! Não há "parte essencial".
Martin

12

A geração de conteúdo processual agora está toda escrita para a GPU, portanto, você precisará conhecer um idioma de sombreador. Isso significa GLSL ou HLSL. Esses são os idiomas vinculados ao OpenGL e DirectX, respectivamente.

Embora minha preferência pessoal seja por Dx11 / HLSL devido à velocidade, uma curva de aprendizado mais fácil e Frank D Luna , o OpenGL é suportado em mais plataformas.

Você também deve verificar o WebGL se quiser pular direto para escrever shaders sem precisar gastar o (considerável) tempo necessário para configurar um mecanismo de jogo OpenGL / DirectX.

O conteúdo processual começa com o ruído.

Portanto, você precisará aprender sobre o ruído Perlin (e seu sucessor, o ruído Simplex ).

Shadertoy é uma excelente referência para aprender sobre programação de shader. Eu recomendo que você faça isso uma vez que tenha testado a codificação de sombreador, já que o código não é para os matematicamente sensíveis, mas é assim que o conteúdo processual é feito.

Shadertoy foi criado por um gênio processual, Inigo Quilez , um produto da cena demo que trabalha na Pixar. Ele tem alguns vídeos do youtube ( ótimo exemplo ) de sessões de codificação ao vivo e também posso recomendá-las.


17
O que você quer dizer com "geração processual de conteúdo agora está toda escrita para a GPU"? Você está apenas falando de coisas como folhas de grama? Você não quer dizer geração de mapas ou cidades para jogos, por exemplo?
Dronz

2
Sim, acho que o comentário "todos" aqui é uma generalização excessiva, mas na área de geração de paisagens (que eu acho que é o tipo mais comum), essa é uma resposta útil. Embora eu não possa imaginar quem gostaria de assistir alguém digitar o código em um vídeo.
Nate CK

1
Alguém que deseja aprender a escrever códigos complexos, como shaders, ou aprender a utilizar padrões complexos em seu design. E isso está apenas arranhando a superfície.
Ultroman the Tacoman

"A geração de conteúdo processual agora está toda escrita para a GPU, então você precisará conhecer uma linguagem de sombreador". é simplesmente falso e 100% enganoso. (Estou fazendo um projeto simples de geração de procedimentos, escrevi 0 linhas de código de sombreador em minha vida)
reduzindo a atividade


8

Não sou especialista nisso, mas posso tentar contribuir com algumas respostas:

  1. O NetHack e seus países são de código aberto e dependem muito da geração de níveis de procedimentos (mapas). Link para os downloads. Se você estiver mais interessado na geração de paisagem / textura / nuvem, recomendo que você pesquise o Gamasutra e o GameDev, que têm alguns artigos sobre esses assuntos.

  2. AFAIK Não acho que exista muita diferença entre os idiomas. A maior parte do código que você vê estará em C / CPP, porque ainda é muito o idioma oficial dos desenvolvedores de jogos, mas você pode usar o que quiser ...

  3. Bem, depende se você tiver um projeto que possa se beneficiar dessa tecnologia. Vi a geração processual usada em simuladores para o exército (que pode ser considerado um jogo, embora não seja muito jogável :)).

E uma pequena observação - minha definição, se a geração procedural for algo que gera muitos dados a partir de uma pequena quantidade de regras ou padrões e muita aleatoriedade, seus resultados podem variar :)


8

Há um excelente livro sobre o tema:

http://www.amazon.com/Texturing-Modeling-Third-Procedural-Approach/dp/1558608486

É tendencioso para efeitos visuais não em tempo real e geração de animação, mas a teoria e as idéias são utilizáveis ​​fora desses campos, suponho.

Também vale a pena mencionar que existe um pacote de software profissional que implementa um fluxo de trabalho processual completo chamado Houdini da SideFX. Você pode usá-lo para inventar e criar protótipos de soluções procedurais para problemas, que podem ser convertidos posteriormente em código.

Embora seja um pacote bastante caro, ele possui uma licença de avaliação gratuita, que pode ser usada como uma ótima ferramenta educacional e / ou de engenharia.


7

A geração de procedimentos é muito usada no demosceno para criar gráficos complexos em um pequeno executável. Will Wright chegou a dizer que se inspirou na demoscene enquanto fazia Spore. Esse pode ser o seu melhor lugar para começar.

http://en.wikipedia.org/wiki/Demoscene


3

o mais importante é analisar como as estradas, cidades, blocos e edifícios são estruturados. descubra o que todos os edifícios, por exemplo, têm em comum. olhe fotos, mapas, planos e realidade. se você fizer isso, estará um passo à frente das pessoas que consideram a construção da cidade uma questão meramente tecnológica por computador.

Em seguida, você deve desenvolver soluções sobre como criar essa geometria em etapas minúsculas e distintas. você precisa definir regras que compõem uma cidade crível. se você gosta de modelagem em 3D, precisa repensar muito do que aprendeu para que o computador possa seguir suas instruções em qualquer situação.

para não perder o controle, você deve configurar muitos operadores responsáveis ​​apenas por pequenas partes de todo o processo. isso facilita muito a depuração, a expansão e a melhoria do sistema. na próxima etapa, você deve vincular esses operadores e verificar os resultados alterando os parâmetros.

Eu já vi muitos "geradores de cidades" que consistem principalmente em caixas de formato aleatório com algumas texturas de janelas:


3

(Mais de 10 anos depois ...)

Geração processual significa apenas que o código é usado para gerar os dados, em vez de serem feitos à mão. Por exemplo, se você deseja gerar uma floresta com várias árvores, não projetará cada árvore manualmente , portanto, a codificação é mais eficiente para gerar as variações. Poderia ser a geração dos gráficos da árvore, tamanho, estrutura, posicionamento ...

Em geral, há algum tipo de interação com algumas regras , além de você poder adicionar algumas aleatorias e lógicas, combinar todas essas técnicas ... Qualquer coisa um pouco caótica, mas não muito caótica, pode produzir resultados interessantes.

Aqui estão algumas técnicas notáveis:

Alguns jogos famosos por sua geração processual:

Tutorial em vídeo sobre geração procedimental de massas terrestres .

Conferência sobre geração processual de conteúdo para jogos, tem muitos vídeos sobre o tema: tudo processual

Diverta-se.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.