Atualmente, estou trabalhando com a Phaser, criando um jogo gerado processualmente. Eu queria usar alguma arte de criador de RPG no meu jogo (para referência, estou usando o RTP). Eu tropecei neste artigo , que detalha como os blocos automáticos funcionam. Eu também me deparei com essa resposta, que tem um link para outro artigo que explica o agrupamento automático.
Aqui está a coisa, eu não tenho idéia de como eu implementaria algo assim. Tenho certeza de que precisaria acompanhar quais conjuntos de peças podem se conectar a outros conjuntos de peças (ou seja, algumas peças têm grama do lado de fora e areia do lado de dentro, portanto, neste exemplo, devo observar que "a grama "azulejos eram os azulejos externos).
Eu criei um gerador de mapas (veja aqui ) e queria fazer conexões perfeitas entre minhas áreas de mosaico. Por exemplo, as áreas marrons seriam áreas "densas" (florestas, cavernas etc.). As áreas roxas seriam pisos de pedra, e a área verde é a grama. Existe um conjunto de peças que funciona muito bem para coisas como esta:
Então, eu gostaria de usar a grama superior esquerda e o terceiro conjunto de azulejos, pedra, que se conecta à grama.
Que tipos de coisas eu deveria considerar ao implementar o agrupamento automático usando esses tipos de conjuntos de peças, e existe algum algoritmo que eu possa implementar?
fonte
Respostas:
Eu implementei isso (usando o RTP) de uma maneira simples (mas bastante tediosa).
Peguei uma lista de todos os vizinhos da célula atual e, com várias
if
declarações, desenhei o bloco como 4 blocos menores / quarto.Para mim, esse método leva a alguns erros pouco visíveis, mas eles podem ser resolvidos testando alguns casos extremos e corrigindo de acordo.
Se você olhar para as imagens de origem e a imagem resultante no criador de RPG, poderá fazer isso (talvez com algumas tentativas e erros) com
if
instruções, identificando qual é o caso atual para o trimestre indicado e desenhando adequadamente .Este método pode ser melhorado e tornado menos tedioso com máscaras de bits (como mencionado por jzx).
Respondendo ao seu comentário:
Ao renderizar apenas quartas peças, as possibilidades diminuem drasticamente.
Você não precisa manipular peças em peças, pois elas devem estar em camadas diferentes, combinadas com alfa ou com teclas coloridas uma na outra.
Além disso, não vejo por que você precisaria de vizinhos embutidos, mas isso poderia ser tratado separadamente no cálculo de vizinhos, talvez usando algum tipo de mapa (lista de pares que se misturam).
O mapa geralmente é estático e as imagens são de baixa resolução, portanto, não é necessário se preocupar com o desempenho.
fonte