/ / Gérer le trafic dans 2D city builder - 2D, simulation, trafic, isométrique

Traiter le trafic en 2D city builder - 2D, simulation, trafic, isométrique

Je crée un bâtiment de ville en 2D isométriquela simulation et aujourd'hui, j'ai une sorte de "bonne pratique" question sans demander de code spécifique. Comme dans tous les jeux de construction de villes, vous pouvez placer des bâtiments, des routes, etc. Le joueur est capable de placer des bâtiments partout, peu importe s'il est connecté à une route ou non. En plus de cela, il y a un bâtiment (appelé bâtiment central) avec lequel tous les bâtiments doivent être reliés (par la route). Je dois gérer cela sans faire trop de calculs, ce qui brise le FPS.

En ce moment j'ai un travail de minuterie pour chaque bâtimentqui vérifie si l’un des carreaux entourés d’un bâtiment est une route. Cela fonctionne très bien, aussi pour beaucoup de bâtiments puisque le chèque est simple. Mais maintenant, je voudrais vérifier la connexion au bâtiment central. Pour vérifier qu'il est nécessaire (à mon avis) d'utiliser quelque chose comme un pathfinder, qui vérifie si l'un des carreaux entourés est relié à l'un des carreaux entourés du bâtiment central. Je ne peux pas vérifier cela fréquemment car cela brise complètement le FPS à 30 ou moins. Mon idée était de déclencher un événement si une route avait été construite ou détruite pour "recalculer" la liaison routière. Mais il y a un autre problème: le joueur pourrait détruire une route au milieu de la carte et les bâtiments sont vraiment très éloignés les uns des autres. Je dois donc trouver les bâtiments concernés qui pourraient aussi prendre trop de temps.

Ma dernière idée est de créer quelque chose comme une file d'attente de minuterie et de traiter ces éléments progressivement, mais avant de continuer à utiliser la méthode de test et d'erreur, j'aimerais vous demander des idées.

Vraiment hâte de vos idées! Yheeky

Réponses:

0 pour la réponse № 1

Vous pourriez avoir chaque bâtiment stocker une liste detuiles (un chemin) qui le relie au bâtiment central. Ensuite, lorsqu'une tuile est détruite au hasard par le joueur, vous pouvez faire tester chaque bâtiment pour voir s'il a traversé cette tuile ou non.

Sinon, vous pourriez avoir chaque magasin de tuile de routequels bâtiments l'exigent, de sorte que lorsque la tuile est détruite, les bâtiments lancent immédiatement des drapeaux. Cela peut être assez compliqué, mais se prête bien aux appels de nettoyage en vitesse d'arrière-plan.

Les deux méthodes sont assez désordonnées. Peut-être pouvez-vous faire en sorte que le joueur puisse "placer des routes sauf à côté d'autres routes ou à côté du bâtiment central. Ensuite, lorsque le joueur supprime une tuile de route, faites un remplissage de style peinture qui détruit toutes les routes déconnectées. Vous pouvez aussi faire périodiquement un contrôle aléatoire sur les tuiles pour voir si elles sont placées illégalement ou non, mais cela devrait être inutile si vous faites attention.