Descrizione dell'architettura
Sto creando (progettando) un sistema di entità e ho riscontrato molti problemi. Sto cercando di mantenerlo il più possibile orientato ai dati ed efficiente. I miei componenti sono strutture POD (array di byte per la precisione) allocate in pool omogenei. Ogni pool ha un ComponentDescriptor: contiene solo il nome del componente, i tipi di campo e i nomi dei campi.
L'entità è solo un puntatore all'array di componenti (dove l'indirizzo si comporta come un ID entità). EntityPrototype contiene il nome dell'entità e la matrice dei nomi dei componenti. Infine sottosistema (sistema o processore) che funziona su pool di componenti.
Problema reale
Il problema è che alcuni componenti dipendono da altri (Modello, Sprite, PhysicalBody, Animazione dipende dal componente Trasforma), il che crea molti problemi quando si tratta di elaborarli.
For example, lets define some entities using [S]prite, [P]hysicalBody and [H]ealth:
Tank: Transform, Sprite, PhysicalBody
BgTree: Transform, Sprite
House: Transform, Sprite, Health
and create 4 Tanks, 5 BgTrees and 2 Houses and my pools will look like:
TTTTTTTTTTT // Transform pool
SSSSSSSSSSS // Sprite pool
PPPP // PhysicalBody pool
HH // Health component
Non è possibile elaborarli utilizzando gli indici. Passo 3 giorni a lavorarci e ancora non ho idee. Nei progetti precedenti TransformComponent era legato all'entità, ma non era una buona idea. Potete darmi qualche consiglio su come elaborarli? O forse dovrei cambiare il design generale? Forse dovrei creare pool di entità (pool di pool di componenti), ma suppongo che sarà un incubo per le cache della CPU.
Grazie