Estou escrevendo mecanismo isométrico em c ++. Decidi adotar uma abordagem mais realista e fazer com que as paredes ocupassem espaço entre dois ladrilhos, e não um único ladrilho inteiro, como mostra a figura abaixo (como no The Sims).
Meu problema é que não tenho idéia de como armazenar os dados relacionados ao mapa de blocos em algo que não é grade. Nesta situação, acho que vou precisar torná-lo A * amigável, para que haja nós e arestas entre os ladrilhos não divididos por paredes. Aqui está outra imagem mostrando o que eu quero alcançar:
Então, aqui estão as perguntas:
Como devo:
- armazenar o mapa inteiro, tanto azulejos quanto paredes
- otimizá-lo para renderização
- usá-lo para A * e outros algoritmos bastante simples de implementar em uma grade simples, mas agora usando paredes (arestas) para determinar a visibilidade, colisão etc.?