/ / Lidar com tráfego no construtor de cidade 2D - 2d, simulação, tráfego, isométrica

Lidar com o tráfego no construtor de cidade 2D - 2d, simulação, tráfego, isométrica

Estou criando um edifício de cidade isométrica 2DSimulação e hoje tenho uma espécie de "melhor prática" pergunta sem pedir código específico. Como em todos os jogos de construção da cidade, você pode colocar prédios, estradas e assim por diante. O jogador é capaz de colocar o edifício em qualquer lugar, independentemente de estar ligado a uma estrada ou não. Além do que há um edifício (chame-o edifício central) todos os edifícios precisam de ser conectados com (pela estrada). Eu preciso lidar com isso sem fazer muitos cálculos que quebram o FPS.

Agora eu tenho um trabalho de timer para cada prédioque verifica se uma das telhas cercadas de um edifício é uma estrada. Isso funciona bem, também para muitos edifícios, já que o cheque é simples. Mas agora gostaria de verificar a conexão com o edifício central. Para verificar se é necessário (na minha opinião) usar algo como um pathfinder, que verifica se um dos blocos circundados tem uma ligação rodoviária a um dos painéis circundados do edifício central. Eu não posso verificar isso com freqüência porque isso esmaga completamente o FPS para 30 ou menos. Minha idéia era disparar um evento se uma estrada fosse construída ou destruída para "recalcular" a conexão da estrada. Mas aí vem outro problema ... o jogador pode destruir uma estrada no meio do mapa e os edifícios estão muito longe um do outro, então eu preciso encontrar os edifícios envolvidos que também podem levar muito tempo.

Minha última ideia é criar algo como uma fila de cronômetros e trabalhar com esses itens gradualmente, mas antes de continuar usando o método de tentativa e erro, gostaria de pedir algumas ideias.

Realmente ansioso para suas idéias! Yheeky

Respostas:

0 para resposta № 1

Você poderia ter cada edifício armazenar uma lista deladrilhos (um caminho) que o conecta ao edifício central. Então, quando uma peça é aleatoriamente destruída pelo jogador, você pode ter cada edifício testado para ver se ele percorreu esse caminho ou não.

Alternativamente, você poderia ter cada loja de azulejosquais edifícios exigem, então quando o ladrilho é destruído você tem os prédios imediatamente jogando bandeiras. Isso pode ficar bastante confuso, mas se presta a chamadas de limpeza em velocidade de fundo.

Ambos os métodos são bastante confusos. Talvez você possa tornar uma regra que o jogador pode "colocar as estradas, exceto ao lado de outras estradas ou ao lado do edifício do centro. Então, quando o jogador exclui uma estrada, faça um preenchimento de estilo de pintura que destrói todas as estradas desconectadas. Você também pode periodicamente fazer uma checagem aleatória nos tiles para ver se eles estão colocados ilegalmente ou não, mas isso deve ser desnecessário se você for "cuidadoso".