Pergunta

Eu estou trabalhando em um jogo multiplayer simples em que 2-4 jogadores são colocados em pontos de entrada separados em um labirinto e necessidade de chegar a um ponto objetivo. Gerando um labirinto em geral é muito fácil, mas neste caso, o objetivo do jogo é atingir a meta antes de todo mundo e eu não quero que o algoritmo de geração para favorecer drasticamente um jogador sobre os outros.

Então, eu estou procurando um algoritmo de geração de labirinto onde o caminho ideal para cada jogador do ponto inicial para a meta não é mais do que 10% mais etapas do que o caminho médio. Desta forma, os jogadores estão em mais ou menos um campo de jogo igual. Alguém pode pensar-se um algoritmo tal?

(Eu tenho uma ideia tal como está, mas não é bem pensado e parece muito menos do que ideal -. Eu vou postá-lo como uma resposta)

Foi útil?

Solução

Uma alternativa para a resposta de freespace seria gerar um labirinto aleatório, em seguida, atribuir cada célula um valor que representa o número de movimentos para chegar ao final do labirinto (você pode fazer ambos ao mesmo tempo, se você decidir que você está começando a o fim'). Em seguida, escolher uma distância (talvez a mais alta com n pontos em que a distância?) E colocar os jogadores em quadrados com esse valor.

Outras dicas

E a primeira seleção a posição dos jogadores e objetivo e um caminho de comprimento igual e posteriormente construir um labirinto respeitando os caminhos definidos? Se os caminhos não se cruzam este trabalho deve facilmente, presumo

Gostaria de abordar esta questão, definindo a meta e ponto de entrada de cada jogador, em seguida, gerando caminhos de comprimento semelhante para cada um deles para o gol. Então eu iria começar a adicionar falsos ramos ao longo desses caminhos, tomando cuidado para evitar ligando para caminhos de outros jogadores, ou ter um back connect ramo para o caminho. Então, basicamente todos os ramos é um beco sem saída.

Desta forma, você garante os caminhos são semelhantes em comprimento. No entanto, não permitirá que os jogadores interagem uns com os outros. No entanto, pode colocar isso em, através da criação de ligações entre filiais tais que os pontos de entrada ramo de cada caminho estão a uma distância semelhante longe do gol. E neste ramo que você pode ramificar extremidades mais mortos para diversão e lucro :-)

A solução mais fácil que eu posso vir acima com é para gerar aleatoriamente um labirinto inteiro como normal, em seguida, escolher aleatoriamente o ponto objetivo e startpoints jogador. Uma vez feito isso, calcular o caminho mais curto de cada ponto inicial para o gol. Encontre a média e começar 'suavização' (barreiras remover / mover - não sei como isso vai funcionar) os caminhos que são significativamente acima dele, até que todos os caminhos estão dentro da margem adequada. Além disso, poderia ser possível levar os que são significativamente abaixo da média e inserir barreiras adicionais.

Escolha o seu ponto algum lugar saída no meio

Comece o seu N caminhos de lá, acrescentando 1 a cada caminho por laço, até que eles são contanto que você quer que eles sejam.

Existem seu N começar pontos, e todos eles são do mesmo comprimento.

Adicionar ramos adicionais fora das linhas, até que o labirinto está cheio.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top