-
Notifications
You must be signed in to change notification settings - Fork 3
Entity Component System Model
brodenini edited this page Nov 19, 2012
·
8 revisions
En entity representerar ett spelobjekt i världen, som t.ex ett träd, en cykel, en spelare, ett vapen. En tom entity i sig ger ingen direkt funktionalitet.
(Insert picture)
Vad den minimalt innehåller är:
- En lista med noll till flera olika komponenter
- Ett unikt id eller namn
Vad den kan innehålla optionally:
- Child-entities. Detta ger möjlighet till relativa entiteter vars t.ex. positioner specifieras som relativa coordinater.
Varje entity har komponenter som beskriver hur den interagerar med/påverkar världen. Antag att vi har en entity-typ "Högtalare". Entiteten skulle då kunna innehålla följande komponenter:
- Mesh (en grafisk representation av hur högtalaren ser ut)
- Position (var den står)
- Bounding Volym (Vad den har för sorts collisionsvolym, t.ex. box)
- Renderer (vilken sorts renderare den använder)
- Ljudkälla (högtalaren emittar ett ljud)
- Körs kontinuerligt (och kan utökas till att köras multitrådat)
- Hanterar hur komponenter hos en entitet uppdateras.
- Hanterar enbart komponenter som är relevanta att uppdatera för det givna systemet. Exempelvis: Antag att det finns komponenter av typerna Position, Audio Source och Listener. Ett AudioSystem skulle där hämta ut alla entities som har en position och en audio source, samt alla entities som har en position och en listener (En listener snappar upp ljud från audio sources), och sedan processa dessa komponenter.
(Exempelfigur på Audio)
Ett RenderingSystem skulle t.ex hantera entities med komponenter av typena Position, Rotation, Skala (Eller om alla tre ligger i en Transform-komponent), och Renderer.
(Exempelfigur på Rendering)
...
...
...