Le macchine a stati sembrano causare dipendenze dannose nelle architetture basate su componenti.
Come, in particolare, viene gestita la comunicazione tra una macchina a stati e i componenti che svolgono un comportamento legato allo stato?
Dove sono:
- Sono nuovo alle architetture basate su componenti.
- Sto realizzando un gioco di combattimento, anche se non penso che dovrebbe importare. Immagino che la mia macchina a stati venga utilizzata per alternare stati come "accovacciarsi", "precipitare", "bloccare", ecc.
- Ho trovato questa tecnica di gestione dello stato come il sistema più naturale per un'architettura basata su componenti, ma è in conflitto con le tecniche di cui ho letto: Sistema di componenti di oggetti di gioco dinamici per personaggi a comportamento mutevole Suggerisce che tutti i componenti si attivano / disattivano controllando continuamente una condizione per l'attivazione.
- Penso che azioni come "correre" o "camminare" abbiano senso come stati, il che è in disaccordo con la risposta accettata qui: /gamedev//a/7934
L'ho trovato utile, ma ambiguo: come implementare il comportamento in un'architettura di gioco basata su componenti? Suggerisce di avere un componente separato che non contiene altro che una macchina a stati. Ma ciò richiede una sorta di accoppiamento tra il componente della macchina a stati e quasi tutti gli altri componenti. Non capisco come debba essere gestito questo accoppiamento. Queste sono alcune ipotesi:
A. I componenti dipendono dalla macchina a stati: i
componenti ricevono riferimento ai componenti della macchina a statigetState()
, che restituisce una costante di enumerazione. I componenti si aggiornano regolarmente e controllano se necessario.B. La macchina a stati dipende dai componenti:
il componente a macchina a stati riceve riferimenti a tutti i componenti che sta monitorando. Interroga i lorogetState()
metodi per vedere dove si trovano.C. Qualche astrazione tra di loro
Utilizzare un hub eventi? Pattern di comando?D. Separare gli oggetti di stato che fanno riferimento ai componenti
State Pattern. Vengono creati oggetti di stato separati che attivano / disattivano un insieme di componenti. La macchina a stati commuta tra oggetti a stati.Sto guardando i componenti come implementazioni di aspetti . Fanno tutto il necessario internamente per far accadere quell'aspetto. Sembra che i componenti dovrebbero funzionare da soli, senza fare affidamento su altri componenti. So che alcune dipendenze sono necessarie, ma le macchine a stati sembrano voler controllare tutti i miei componenti.