Nel mio gioco, ci sono appezzamenti di terra con edifici (case, centri di risorse). Gli edifici come case hanno inquilini, stanze, componenti aggiuntivi, eccetera, e ci sono diversi valori che devono essere simulati sulla base di tutte queste variabili.
Ora, vorrei usare AndEngine per le cose front-end e creare un altro thread per eseguire i calcoli di simulazione (forse anche in seguito includere l'IA in questo thread). Questo è così che un intero thread non fa tutto il lavoro e causa problemi come il blocco. Questo introduce il problema della concorrenza e della dipendenza .
Il problema di valuta è il mio thread principale dell'interfaccia utente e il thread di calcolo dovrebbe entrambi accedere a tutti gli oggetti di simulazione. Quindi devo renderli sicuri per i thread, ma non so come archiviare e strutturare gli oggetti di simulazione per abilitarlo.
Il problema della dipendenza è che per calcolare i valori, i miei calcoli dipendono dai valori di altri oggetti.
Quale sarebbe il modo migliore per collegare il mio oggetto inquilino nell'edificio con i miei calcoli? Codificarlo nella classe dei tenant? Qual è un buon modo per "memorizzare" gli algoritmi in modo che possano essere facilmente modificati?
Un modo semplice e pigro sarebbe di mettere tutto in una classe che contiene tutti gli oggetti, come trame di terra (che a loro volta tengono gli edifici, eccetera). Questa classe manterrebbe anche lo stato di gioco come la tecnologia disponibile per l'utente, i pool di oggetti per cose come gli sprite. Ma questo è un modo pigro e pericoloso, giusto?
Modifica: stavo guardando Dependency Injection, ma quanto riesce a farcela come una classe che contiene altri oggetti? cioè, il mio appezzamento di terra, con un edificio, che ha un inquilino e una miriade di altri valori. DI sembra un dolore nel culo anche con AndEngine.