Como posso obter texturas nas bordas das paredes, como em Super Metroid e Aquaria?


57

Jogos como Super Metroid e Aquaria apresentam o terreno com as outras partes de frente com pedras e outras coisas, enquanto mais fundo atrás (por exemplo no subsolo) há detalhes diferentes ou apenas preto.

insira a descrição da imagem aqui

insira a descrição da imagem aqui

Eu gostaria de fazer algo semelhante usando polígonos. O terreno é criado no meu nível atual como um conjunto de caixas quadradas sobrepostas. Não tenho certeza se esse método de renderização funcionará nesse sistema para criar terrenos, mas se alguém tiver idéias, eu adoraria ouvi-las. Caso contrário, gostaria de saber como devo reescrever o sistema de renderização do terreno, para que ele realmente trabalhe para desenhar o terreno dessa maneira ...


1
O Aquaria inclui um editor de níveis, para que você possa ver exatamente como eles construíram os ativos.

2
Além de olhar para o editor de níveis do Aquaria, o método básico usado aqui é ter duas (ou mais) camadas de terreno sendo renderizadas.
Thedaian

Respostas:


133

Metroid está apenas usando peças, nada de especial acontecendo lá.

Aquário, no entanto, está fazendo algo bastante inteligente. Se você notar, muitas dessas pedras na cama se repetem várias vezes. Aqui está uma das pedras, por exemplo:

uma variedade de rock repetido com cada instância circulada

Parece que eles acabaram de jogar sprites ao longo das margens do terreno. É como o que Metroid fez - um arsenal enorme de ladrilhos de borda, mas se você prestar atenção, poderá notar a repetição dos ladrilhos. Acquaria está fazendo a mesma coisa, exceto com sprites de pedra, e não em uma grade.

Como replicá-lo

Pode não ser exatamente como eles fazem isso, mas é uma maneira de produzir o mesmo resultado final.

Primeiro, arranje um bom monte de sprites de pedra como este:

alguns sprites de rocha perdy

Agora há um processo a seguir para que você saiba onde colocá-los.

Determine os vértices e arestas que compõem o seu terreno.  Atravesse-os como uma aranha atravessando uma linha de teia e, a distâncias regulares, armazene a coordenada atual.  A distância inverval depende do tamanho dos seus sprites!  Colora um lado de preto e despeje um sprite em cada ponto que você gravou.

Tada!

Você pode usar isso uma vez para gerar uma lista de rochas e onde desenhá-las; em seguida, basta desenhar todos os seus sprites de rocha. Ou talvez você possa desenhar todos os pontos e escolher um sprite diferente para desenhar em cada etapa, criando a borda de um poço de lava ou um terreno alienígena!

E outros recursos do terreno ...

Aquário poderia ter usado um método muito semelhante para despejar todos os cogumelos, corais e outras características no fundo do mar (incluindo as gigantescas estruturas rochosas que formam o pano de fundo). Os cogumelos poderiam ter sido gerados assim:

  1. Reúna alguns pontos aleatoriamente intervalos , não em intervalos fixos.
  2. Não basta guardar o ponto. Também armazenar o normal, da aresta da qual você escolheu o ponto.
  3. Escolha uma rotação aleatória dentro de um certo intervalo da rotação da normal. Por exemplo, se o normal estiver apontando para 30 graus, escolha uma rotação dentro de 20 graus (ou seja, entre 10 e 50 graus).
  4. Desenhe seu cogumelo na rotação escolhida e em um comprimento aleatório da haste.

Tudo o resto é provavelmente uma variação nessas mesmas instruções: o coral não gira muito, essas duas conchas / pedras provavelmente só são colocadas se o terreno normal estiver apontando aproximadamente para cima (ou seja, o terreno do terreno).

Notas Finais

Como um comentarista perguntou: Eu crio essas imagens no Adobe Photoshop (reduzidas aqui em 50% para linhas nítidas) usando uma mesa gráfica Wacom Intuos3 (que permite desenhar à mão livre e naturalmente e variar a largura da linha etc.).


25
Boa resposta! Excelente arte finala de acompanhamento.
Tim Holt

2
Uau, a maioria dos desenhos e fotos que eu já vi em uma resposta.
Xeoncross

Melhor resposta. Bom trabalho
Ellis

2
@ Jonathan Hobbs: Arte muito boa. Você desenhou tudo isso? Se sim, qual programa você usou? Eu realmente gosto do resultado e do efeito que ele dá ao tentar demonstrar alguma coisa. Obrigado.
Jesse Emond

4
Penso: "Preciso pegar um desses tablets para poder fazer uma boa arte assim!" Então eu penso "Oh, certo, eu não sou bom em desenhar de qualquer maneira e um tablet não vai ajudar nisso"
MichaelHouse

3

Fazer isso com polígonos seria bastante simples, desde que você tenha um bom padrão de repetição / lado a lado, você pode facilmente configurar seus modelos para duplicar ao longo de uma curva, nada complexo.

Espero que ajude.


Depois disso, você PODE renderizá-lo e apenas usar aviões para obter o mesmo resultado (desde que sejam apenas para o primeiro plano e o jogador nunca os toque, dessa forma o policontamento dentro da cena seria menor, pois é possível que tenha tantos objectos duplicada (como no dois exemplos acima) será bastante poli intensiva.
Dan_Tsukasa

Se você usar uma faixa triangular para criar a borda, ela será menos intensiva em poli (N / 2) +2, mas você não poderá obter o bom efeito de 'sobreposição' sem criar blocos específicos.
Jonathan Connell
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.