/ / Gestire il traffico in 2D costruttore di città - 2d, simulazione, traffico, isometrica

Gestire il traffico in 2D costruttore di città - 2d, simulazione, traffico, isometrica

Sto creando una costruzione isometrica 2D della cittàsimulazione e oggi ho una sorta di "best practice" senza chiedere codice specifico. Come in tutti i giochi di costruzione di città, puoi posizionare edifici, strade e così via. Il giocatore può piazzare un edificio ovunque, non importa se è collegato a una strada o meno. Oltre a questo c'è un edificio (chiamalo centro edificio) tutti gli edifici devono essere collegati con (su strada). Ho bisogno di gestirlo senza fare troppi calcoli che interrompono l'FPS.

In questo momento ho un lavoro con il timer per ogni edificioche controlla se una delle tessere circondate di un edificio è una strada. Funziona bene, anche per molti edifici poiché il controllo è semplice. Ma ora vorrei verificare la connessione con l'edificio del centro. Per verificare che sia necessario (secondo me) utilizzare qualcosa come un esploratore, che verifica se una delle tessere circondate ha una connessione stradale a una delle tessere circondate dell'edificio centrale. Non riesco a controllarlo frequentemente perché questo smantella completamente l'FPS fino a 30 o meno. La mia idea era di lanciare un evento se una strada è stata costruita o distrutta per "ricalibrare" la connessione stradale. Ma arriva un altro problema ... il giocatore potrebbe disfare una strada nel mezzo della mappa e gli edifici sono davvero molto lontani tra loro, quindi ho bisogno di trovare gli edifici coinvolti che potrebbero anche impiegare troppo tempo.

La mia ultima idea è creare qualcosa come una coda di timer e lavorare gradualmente attraverso questi elementi, ma prima di continuare a utilizzare il metodo di prova ed errore vorrei chiedere idee.

Aspetto davvero le tue idee! Yheeky

risposte:

0 per risposta № 1

Potresti fare in modo che ogni edificio memorizzi un elencotessere (un percorso) che lo collega al centro dell'edificio. Quindi, quando una tessera viene distrutta in modo casuale dal giocatore, puoi fare in modo che ogni edificio venga testato per vedere se è percorso attraverso quella tessera stradale o meno.

In alternativa puoi avere ogni negozio di piastrelle stradaliquali edifici lo richiedono, quindi quando la tessera viene distrutta, gli edifici gettano immediatamente le bandiere. Questo potrebbe diventare abbastanza disordinato, ma si presta in modo decente alle chiamate di pulizia di sfondo.

Entrambi i metodi sono abbastanza disordinati. Forse puoi stabilire una regola per cui il giocatore non può posizionare le strade tranne accanto ad altre strade o accanto all'edificio centrale, quindi quando il giocatore cancella una tessera stradale, crea un riempimento in stile vernice che distrugge tutte le strade sconnesse. Puoi anche fare periodicamente un controllo casuale sulle tessere per vedere se sono piazzate illegalmente o meno, ma questo non dovrebbe essere necessario se stai attento.