/ / Verkehr in 2D-Stadt Builder - 2D, Simulation, Verkehr, isometrische

Handle Verkehr in 2D Stadt Builder - 2D, Simulation, Verkehr, isometrische

Ich erschaffe ein 2D isometrisches StadtgebäudeSimulation und heute habe ich eine Art "Best-Practice" -Frage, ohne nach einem bestimmten Code zu fragen. Wie bei allen Stadtbauspielen können Sie Gebäude, Straßen usw. platzieren. Der Spieler kann Gebäude überall platzieren, egal ob es mit einer Straße verbunden ist oder nicht. Darüber hinaus gibt es ein Gebäude (nennen Sie es Center Building), mit dem alle Gebäude verbunden werden müssen (auf der Straße). Ich muss damit umgehen, ohne zu viele Berechnungen zu machen, die den FPS durchbrechen.

Im Moment habe ich einen Timer Job für jedes GebäudeDas prüft, ob eine der umgebenen Kacheln eines Gebäudes eine Straße ist. Das funktioniert auch für viele Gebäude gut, da der Check einfach ist. Aber jetzt würde ich gerne die Verbindung zum Zentralgebäude überprüfen. Um zu überprüfen, dass es (meiner Meinung nach) notwendig ist, etwas wie einen Pfadfinder zu verwenden, der prüft, ob eine der umgebenen Kacheln eine Straßenverbindung zu einer der umgebenen Kacheln des mittleren Gebäudes hat. Ich kann das nicht regelmäßig überprüfen, da dies den FPS komplett auf 30 oder weniger reduziert. Meine Idee war, ein Ereignis auszulösen, wenn eine Straße gebaut oder zerstört wurde, um die Straßenverbindung "neu zu berechnen". Aber da kommt ein anderes Problem ... der Spieler könnte eine Straße in der Mitte der Karte zerstören und die Gebäude sind wirklich weit voneinander entfernt, so dass ich die beteiligten Gebäude finden muss, die auch zu viel Zeit brauchen könnten.

Meine letzte Idee ist es, so etwas wie eine Timer-Warteschlange zu erstellen und diese Elemente schrittweise zu bearbeiten, aber bevor ich die Trial-and-Error-Methode benutze, möchte ich Sie um Ideen bitten.

Freue mich schon auf deine Ideen! Yheeky

Antworten:

0 für die Antwort № 1

Sie könnten jedes Gebäude speichern eine Liste vonKacheln (ein Pfad), der es mit dem Zentralgebäude verbindet. Wenn eine Kachel zufällig vom Spieler zerstört wird, können Sie jedes Gebäude testen lassen, um zu sehen, ob es durch diese Kachel geschlagen wurde oder nicht.

Alternativ könnten Sie jeden Straßenfliesenladen habenFür welche Gebäude ist es erforderlich, also wenn die Fliese zerstört ist, werfen die Gebäude sofort Fahnen. Dies könnte zwar ziemlich unordentlich werden, bietet sich aber anständig für Hintergrundbereinigungsaufrufe an.

Beide Methoden sind ziemlich unordentlich. Vielleicht kannst du es zu einer Regel machen, dass der Spieler keine Straßen außer neben anderen Straßen oder neben dem Gebäude in der Mitte platzieren kann. Wenn der Spieler dann eine Straßenkachel löscht, führe eine Farbe aus, die alle nicht verbundenen Straßen zerstört. Sie können auch periodisch eine zufällige Überprüfung von Kacheln durchführen, um zu sehen, ob sie illegal platziert sind oder nicht, aber das sollte unnötig sein, wenn Sie vorsichtig sind.