Re: [Cities Skyline] pacchetto globale totale
Citazione:
Originariamente Scritto da
LucaX360
Sul check della morte mi pare che C:S tenga conto del parametro salute dei cittadini.
non l'avremmo mai detto :asd3:
Re: [Cities Skyline] pacchetto globale totale
Citazione:
Originariamente Scritto da
Moloch
però scusa, fammi capire dove sbaglio: alla "nascita" di un npc viene assegnata una data di scadenza a t1.
in un caso l'intervallo t0-t1 ha valore fisso, generando le citate ondate di morti a t1, uguale per tutti quei t0.
in un altro caso l'intervallo ha un valore semicasuale, assegnato per ogni npc a t0.
sia nel primo caso che nel secondo al singolo npc viene assegnato un t1, che permane in memoria fino alla scadenza (morte) dell'npc.
l'unica differenza computazionale tra il primo e il secondo caso è che il calcolo di t1 è leggermente più esoso, trattandosi nel primo caso di una somma t1=t0+x con x costante, e nel secondo della stessa somma con un x estratto, poniamo, da una distribuzione normale.
Il leggermente dipende da come è strutturato il gioco.
Nel primo caso hai sicuramente un tempo di elaborazione più ridotto ed avendo un range fisso ipotizzo (perchè non so nei vari giochi come la cosa sia realmente gestita) che ci sia anche un numero minore di controlli (ad es. se dovessi programmarlo io ed alla creazione di una casa creo tot pippotti che vivono metti 5 minuti il job della morte lo farei girare dopo 5 minuti con rischedulazione uguale ad ogni nuova costruzione).
Nel secondo caso dipende come funziona l'algoritmo che calcola X, non è detto che sia banale e va chiamato per ogni npc generato, può anche essere velocissimo ma se lo moltiplichi per centinaia di migliaia di volte comincia ad avere un impatto.
Di conseguenza hai anche il job della morte che sei costretto a far girare ogni secondo perchè non hai più modo di prevedere quando scatta il t1...quindi ogni secondo deve esaminare qualsivoglia struttura sia usata ed eliminare i record che hanno raggiunto t1.
Citazione:
Originariamente Scritto da
Moloch
il bottleneck è l'estrazione una tantum della x per ogni npc che entra ex novo nella simulazione? non mi sembra poi così esoso in fin dei conti (quanti npc entreranno nella simulazione al massimo in ogni giorno di gioco? 100? 200?)
Devi guardare nel complesso, Cities può fare milioni di npc.
Cmq il discorso non è se questo flusso è "tanto" o "poco" impattante ma semplicemente che è un aspetto che richiede anche lui i suoi calcoli, che non sono banalissimi e si aggiungono a tutti gli altri :bua:
Btw questo ragionamento (non è tanto esoso) è uno dei motivi per cui non basta più un 486 per andare sulla luna :asd:
Soprattutto i simulatori hanno così tante logiche che è figo (e spesso utile ovviamente) aggiungere che butti su anche senza ottimizzare troppo, a volte sia perchè non è possibile mentre altre perchè al momento non sembra un problema ma lo diventa poi.
In tal senso i blog della paradox sono spesso illuminanti (quelli di stellaris parlano spesso dei cicli di check per la gestione dell'IA e dei compromessi per le performance).
- - - Aggiornato - - -
Citazione:
Originariamente Scritto da
LucaX360
Sul check della morte mi pare che C:S tenga conto del parametro salute dei cittadini.
Esatto, era quello a cui mi riferivo con questa frase:
Citazione:
Originariamente Scritto da
von right
In più in titoli come Cities l'aspettativa di vita viene modificata anche da altri fattori e non puoi fare una logica semplice come "se evento X allora tutti vita -Y" perchè poi ti trovi con le ondate di morte da evento :bua:
Re: [Cities Skyline] pacchetto globale totale
Citazione:
Originariamente Scritto da
von right
Non è così semplice.
Per far morire un'unità devi fare un check per vedere se ha raggiunto il limite o meno, se il limite cambia (e quanto cambia) influisce sul numero di check che devi fare.
Il check poi lo devi fare per tutte le unità presenti il che già ti fa rendere conto del numero di check che devi fare solo per questa cosa (che si aggiunge agli altri miliardi di controlli).
Hm, no. Il check lo devi fare comunque. Se tutti muoiono a 80 anni devi comunque fare il check per verificare quali sono tutti quelli di 80 anni e farli morire, avere durate di vita diverse non cambia quanti controlli fai. Anzi, è più gravoso farli morire tutti insieme (devi attivare tutto ciò che riguarda la morte per n-mila oggetti tutti insieme).
Voto anche io per pigrizia.
Citazione:
Originariamente Scritto da
von right
Anche la definizione dell'età non è così banale, non basta dare un numero random per avere una simulazione decente.
Devi avere dei range e poi bilanciare l'assegnamento anche con i valori che son già stati attribuiti per evitare a punto che ti muoiano troppe unità giovani o vecchie in base a come son stati distribuiti i valori :asd:
In più in titoli come Cities l'aspettativa di vita viene modificata anche da altri fattori e non puoi fare una logica semplice come "se evento X allora tutti vita -Y" perchè poi ti trovi con le ondate di morte da evento :bua:
Qualunque cosa è meglio di "muoiono tutti insieme" dai :asd:
Re: [Cities Skyline] pacchetto globale totale
Citazione:
Originariamente Scritto da
Kemper Boyd
Hm, no. Il check lo devi fare comunque. Se tutti muoiono a 80 anni devi comunque fare il check per verificare quali sono tutti quelli di 80 anni e farli morire, avere durate di vita diverse non cambia quanti controlli fai. Anzi, è più gravoso farli morire tutti insieme (devi attivare tutto ciò che riguarda la morte per n-mila oggetti tutti insieme).
Voto anche io per pigrizia.
Non ho scritto che non lo devi fare, ho scritto che sapendo quando cadono le morti puoi schedulare i check.
Citazione:
Originariamente Scritto da
Kemper Boyd
Qualunque cosa è meglio di "muoiono tutti insieme" dai :asd:
Chiaro, di nuovo i miei post erano solo per far capire che una cosa così "semplice" non è poi così "semplice"...non che non si debba fare :asd:
Re: [Cities Skyline] pacchetto globale totale
Citazione:
Originariamente Scritto da
von right
Non ho scritto che non lo devi fare, ho scritto che sapendo quando cadono le morti puoi schedulare i check.
Il punto è che comunque le morti scadono dopo X anni dalla nascita, quindi di fatto non sai quando cadono le morti. Cioè, non hai momenti prefissati in cui cadono, dipende sempra da quando il cittadino è nato (il che se ho capito bene leggendo il thread dipende da quando crei l'area residenziale), e quello non è fisso. A ogni ciclo - o comunque in ogni momento in cui decidi che si fa il check delle morti - devi controllare chi ha X anni, non lo sai prima perché dipende da quando sono nati. A quel punto fare X variabile non cambia nulla.
Re: [Cities Skyline] pacchetto globale totale
Citazione:
Originariamente Scritto da
Kemper Boyd
Il punto è che comunque le morti scadono dopo X anni dalla nascita, quindi di fatto non sai quando cadono le morti. Cioè, non hai momenti prefissati in cui cadono, dipende sempra da quando il cittadino è nato (il che se ho capito bene leggendo il thread dipende da quando crei l'area residenziale), e quello non è fisso. A ogni ciclo - o comunque in ogni momento in cui decidi che si fa il check delle morti - devi controllare chi ha X anni, non lo sai prima perché dipende da quando sono nati. A quel punto fare X variabile non cambia nulla.
Mmm tu sai quando nascono, hai l'evento e quindi da quello puoi schedulare il job di morte :asd:
Faccio un esempio per tutti: prendiamo il tempo in secondi e che la vita di un npc sia 5 secondi.
Al tempo 2 nascono un tot di npc quindi al tempo 7 girerà il job per eliminarli.
Al tempo 5 nascono altri npc quindi al tempo 10 il job girerà di nuovo.
Risultato: nei primi 10 secondi il job è girato 2 volte.
Nel caso di morte variabile il job dovrebbe girare ogni secondo quindi 10.
Vabbè...il primo potresti farlo partire dalla prima nascita quindi risparmi 2 che è ininfluente, risultato 8.
Metti in scala e vedi la differenza :asd:
Re: [Cities Skyline] pacchetto globale totale
Citazione:
Originariamente Scritto da
von right
Mmm tu sai quando nascono, hai l'evento e quindi da quello puoi schedulare il job di morte :asd:
Faccio un esempio per tutti: prendiamo il tempo in secondi e che la vita di un npc sia 5 secondi.
Al tempo 2 nascono un tot di npc quindi al tempo 7 girerà il job per eliminarli.
Al tempo 5 nascono altri npc quindi al tempo 10 il job girerà di nuovo.
Risultato: nei primi 10 secondi il job è girato 2 volte.
Ma come fa il job a sapere che deve girare al tempo 7? Ci sarà uno scheduler che gira continuamente e arrivato al tempo 7 troverà che c'è gente da uccidere nella coda. E si torna al controllo costante che rende ininfluente raggruppare le morti.
Anche perché il grosso del lavoro è fare ciò che è conseguenza della morte (mi immagino svuotare le abitazioni, cancellare posti di lavoro occupati, modificare il traffico e chissà quali altre cose), controllare se un intero è maggiore di X è veramente una roba trascurabile.
Re: [Cities Skyline] pacchetto globale totale
Non è banale già simulare la morte dei pippotti, introdurre un controllo che eviti la contemporanea morte di più pippotti, evidentemente non è semplice altrimenti l'avrebbero patchato già.
Re: [Cities Skyline] pacchetto globale totale
Citazione:
Originariamente Scritto da
Angels
Non è banale già simulare la morte dei pippotti, introdurre un controllo che eviti la contemporanea morte di più pippotti, evidentemente non è semplice altrimenti l'avrebbero patchato già.
O, più probabilmente, qualcuno ha deciso che non serve ed è meglio lavorare sul prossimo DLC :fag:
Re: [Cities Skyline] pacchetto globale totale
Hanno rilasciato tante modifiche al gioco rispetto all'uscita in questi 7 anni, evidentemente hanno valutato che la soluzione era troppo impegnativa e l'hanno cannata.
Re: [Cities Skyline] pacchetto globale totale
Citazione:
Originariamente Scritto da
Howard TD
4 New trees
Re: [Cities Skyline] pacchetto globale totale
Citazione:
Originariamente Scritto da
Kemper Boyd
Ma come fa il job a sapere che deve girare al tempo 7? Ci sarà uno scheduler che gira continuamente e arrivato al tempo 7 troverà che c'è gente da uccidere nella coda. E si torna al controllo costante che rende ininfluente raggruppare le morti.
Anche perché il grosso del lavoro è fare ciò che è conseguenza della morte (mi immagino svuotare le abitazioni, cancellare posti di lavoro occupati, modificare il traffico e chissà quali altre cose), controllare se un intero è maggiore di X è veramente una roba trascurabile.
No, sono cose diverse :asd:
Chiaro che c'è sempre un job che gira ogni istante e lancia tutto ciò che va lanciato in quel momento ma quello è la base di funzionamento di...tutto :asd:
Cmq vabbè, ragà, se volete pensare che non abbiano voglia fate pure, a me non cambia nulla, vi ho solo spiegato cosa comporta quel caso (al netto che poi vai a sapere come hanno fatto realmente) :asd:
Re: [Cities Skyline] pacchetto globale totale
Citazione:
Originariamente Scritto da
Numero_6
4 New trees
Fondamentale :snob:
Re: [Cities Skyline] pacchetto globale totale
No beh io non penso sia davvero pigrizia, penso che ci sia un PO che dice su cosa lavorare e quello non è mai sulla lista. Faccio però davvero enorme fatica a pensare che non sia stato fatto per questioni di carico sulla CPU, non è proprio una cosa tecnicamente ragionevole.
Re: [Cities Skyline] pacchetto globale totale
asd il dlc a 10 €, un quinto del costo del gioco :asd:
https://store.steampowered.com/app/2...p_reviews_hash
Re: [Cities Skyline] pacchetto globale totale
Io sto giochicchiando col primo, ho toccato da poco i 40k
https://i.postimg.cc/ncxYPKqh/City-Skilines.jpg
Re: [Cities Skyline] pacchetto globale totale
Citazione:
Originariamente Scritto da
Howard TD
https://i.postimg.cc/Zqw5bVfv/1265346.jpg
Re: [Cities Skyline] pacchetto globale totale
Citazione:
Originariamente Scritto da
Angels
il primo era davvero bellino ed è anche il motivo per cui sto thread lo seguivo con trepidazione, col cavolo che però gli mollo tutti sti soldi per un gioco chiaramente nato male.
adesso punto al gioco dei castori (timberborn)quando lo danno in sconto
Re: [Cities Skyline] pacchetto globale totale
Il primo quanto costa incluso un minimo di dlc utili?
Re: [Cities Skyline] pacchetto globale totale
Il primo anche vanilla è un giocone