Há alguns problemas que encontrei no meu jogo baseado em ruído Perlin. Dê uma olhada na captura de tela em anexo abaixo.
As áreas brancas que você vê são paredes e as áreas pretas são passáveis. O triângulo no meio é o jogador.
Eu implementei a física neste jogo, desenhando-a em uma textura (pixels brancos ou pretos) e depois obtendo isso da CPU.
No entanto, agora estou com um problema diferente em mãos. Quero que as unidades (ou creeps, como você as chama) sejam geradas constantemente, na borda da tela. O ponto aqui é que, no jogo final, haverá um "nevoeiro de guerra" que não permite que o jogador veja tão longe assim.
Imaginei que poderia apenas digitalizar os pixels na borda da tela e ver se a textura física deles era preta, e então gerar coisas aleatoriamente lá. No entanto, se você der uma segunda olhada na captura de tela, existe (no canto superior esquerdo) um exemplo de onde eu não gostaria que os creeps aparecessem (já que eles não seriam capazes de alcançar o jogador de lá) .
É possível que, de alguma forma, a GPU determine esses pontos de reprodução para mim, ou de alguma maneira diferente? Pensei em criar vetores entre o ponto proposto na borda da tela e o player e segui-lo a cada 10 voxels, e ver se uma parede colide antes de gerar uma unidade lá.
No entanto, a solução proposta acima pode exigir muita CPU.
Alguma sugestão sobre este assunto?
Nota 1 Para as unidades geradas, não quero usar nenhuma forma de busca de caminhos para evitar colisões na parede, pois essas unidades correm em direção ao jogador. Portanto, as unidades devem aparecer na borda da tela, em um local em que caminhar em linha reta em direção ao jogador não colidir com nenhuma parede.