Como você lida com blocos irregulares ao renderizar um mapa de blocos?

13

insira a descrição da imagem aqui

Aqui está o que eu quero fazer com o meu mapa de blocos que não tenho certeza. Como você pode ver, as paredes superiores são muito maiores que as inferiores e laterais (esse também é um problema nos meus cantos, que têm formas estranhas [mais como um L que um quadrado] e também maiores que os 40x40px dos meus ladrilhos atuais )

insira a descrição da imagem aqui

Também anexei a folha de ladrilhos que estou usando para mostrar como são os cantos e as partes superiores em comparação com o restante dos ladrilhos.

O que estou pensando é que posso desenhá-los usando a mesma matriz que tenho se usar a largura e a altura dos ladrilhos em vez de um conjunto WxH? Eu não sei o quão bem isso vai funcionar, mas foram os blocos que terão valores diferentes, os jogadores / NPCs não podem pisar, então pode não ser um problema, novamente, eu nem tenho certeza se isso é viável. solução.

Meu código, caso você queira ver como estou lidando com ele no momento: Map.java (pastebin) (edit: não estou lidando com isso, significava como estou fazendo o mapa no momento)

tl; dr - como posso pegar meu mapa de blocos em 2D e alterá-lo para ter blocos de tamanhos diferentes? ou existe uma maneira melhor de fazer o que estou tentando fazer? Existe o nome de um método que eu deveria procurar enquanto pesquisava no Google?

Latência
fonte

Respostas:

19

Existem duas maneiras padrão de fazer isso.

  • Divida os tamanhos de ladrilhos não padrão em tamanhos padrão. Portanto, essas tiras de paredes se tornam uma "pilha" de peças quadradas que você apenas sabe juntar no seu editor de níveis. Jogos como os primeiros jogos de Final Fantasy funcionavam dessa maneira.
  • Deixe qualquer peça de azulejo ser mais alta que a sua altura padrão. Alinhe os ladrilhos na parte inferior do retângulo de ladrilhos, permitindo que qualquer extra extra seja maior que a altura normal do ladrilho. Ao desenhar seu mapa, você desenha peças começando pela parte de trás (as peças ficam mais altas na tela) e terminando com as peças inferiores (as que estão na parte inferior da tela). Isso garante que os blocos altos em primeiro plano sejam adequadamente sobrepostos sobre os blocos em segundo plano. Observe que, nessa abordagem, seus blocos ainda estão limitados a um único bloco de largura.

Você pode fazer uma ou ambas as abordagens. Mesmo os jogos que usam a abordagem "dividir em pilhas de peças" geralmente permitem que alguns objetos (árvores, etc.) quebrem os limites de altura da peça e apenas impõem uma ordem de desenho do mapa de cima para baixo, para garantir que tudo esteja em camadas corretamente.

Trevor Powell
fonte
2
+1 para a segunda abordagem. Basicamente, isso o move do mapa de blocos para os objetos no mapa.
Kromster diz apoio Monica
Perfeito, muito obrigado, pensei que poderia ser algo semelhante à segunda opção, mas queria ter certeza de que estava fazendo isso de maneira padronizada. = D
Latência
2

Fatie e pique seus ladrilhos de tamanhos ímpares para se ajustarem às dimensões padrão. O ponto principal de um mapa de blocos é que você obtém muita velocidade e utilidade dimensionando tudo de mesmo tamanho.

Patrick Hughes
fonte