Return Styles: Pseud0ch, Terminal, Valhalla, NES, Geocities, Blue Moon.

Pages: 1-4041-

Entity-Component System

Name: Anonymous 2013-07-14 15:04

okay /prog/. I am on the crossroads of destiny, I have only one choice for a game engine design pattern. Actually entity control pattern. Entity-Component System seems egin groski. Suggest me something /prog/, i have only chance  for a design pattern.

Name: Anonymous 2013-07-14 16:09

Suggest me something /prog/
Read SICP.

Name: Anonymous 2013-07-14 16:31

>>2
i did, even the SATORI EDITION

Name: Anonymous 2013-07-14 16:54

Entity-Component System actually works, I've used it on triple AAA games. What makes it turn into a disgusting mess is trying to use OOP techniques, it quickly becomes shit. This is compounded by many game programmers being too afraid to move away from the OO religion, and it's a huge effort undoing the brainwashing.

If you're starting fresh, use data-oriented design techniques instead.

Here have a book (still a WIP) on the subject: https://dl.dropboxusercontent.com/u/94514860/dodmain.pdf

Name: Anonymous 2013-07-14 17:38

>>1
Living organisms mostly use entity component system.

Nature cant be wrong, so stick with building system from components. Inheritance is overrated mathematical crap.

Same for OS design - stick with microkernel.

Name: Anonymous 2013-07-14 18:17

>>4
>>5
This. Also, Functional Reactive Programming, you can build library abstractions for it in C/C++ using data-oriented techniques.

Name: Anonymous 2013-07-14 19:14

>>4
I've used it on triple AAA games
I hope you know that actually isn't helpful to your point.

>>5
Nature cant be wrong
Stupid hippie atheist.

Name: Anonymous 2013-07-14 20:57

>>7
God created nature. Are you saying God is wrong?

Name: Anonymous 2013-07-14 21:17

>>8
Yahweh is never wrong.

Name: Anonymous 2013-07-14 23:53

>>9
I think you mean JEHOVAH. Are you Jewish by any chance?

Name: Anonymous 2013-07-14 23:55

CUMPONENT

Name: Anonymous 2013-07-15 3:00

>>4
>>5

thanks /g/ros, it is surprising to get an answer on /prog/. i will stick with the entity-component system. fuck oop.

Name: Anonymous 2013-07-15 5:49

>>12
I'll never understand people that limit themselves to a single pattern. Even the act of identifying a pattern is silly to me.

Name: Jewish Gypsy Alchemist 2013-07-15 8:21

>>10
YHWH Elohim is only one of the gods that govern our universe, brother.

Sim Salabim!

Name: Anonymous 2013-07-15 8:34

>>14
Elohim is not one god but many, you ignorant monotheistic moron.

Name: Anonymous 2013-07-15 15:53

>>15
Every Jew is a God?

They why do stupid goyim worship only Jesus and Mariam?

Name: Anonymous 2013-07-15 17:25

Should object's weight be a component, a class field or inherited from CWeighty abstract-class?

Name: Anonymous 2013-07-15 17:26

>>17
It should be hardcoded to CObject as a virtual method getWeight, which returns -1 by default. C++ is cool!

Name: Anonymous 2013-07-15 17:33

>>17

class Weight : public Component {
   float weight;
};

entity.addComponent(new Weight());

Name: Anonymous 2013-07-15 17:37

>>4
Data data data data data data. Data data data. Data data data data, data data data data. Data data data data data data data. Data data data data data data. Data data data. Data data data, data data data data. Data data data data data data data data.
Data data data data data data. Data data data. Data data data data, data data data data. Data data data data data data data. Data data data data data data. Data data data. Data data data, data data data data. Data data data data data data data data.
Data data data data data data. Data data data. Data data data data, data data data data. Data data data data data data data. Data data data data data data. Data data data. Data data data, data data data data. Data data data data data data data data.
Data data data data data data. Data data data. Data data data data, data data data data. Data data data data data data data. Data data data data data data. Data data data. Data data data, data data data data. Data data data data data data data data.
Data data data data data data. Data data data. Data data data data, data data data data. Data data data data data data data. Data data data data data data. Data data data. Data data data, data data data data. Data data data data data data data data.
Data data data data data data. Data data data. Data data data data, data data data data. Data data data data data data data. Data data data data data data. Data data data. Data data data, data data data data. Data data data data data data data data.
Data data data data data data. Data data data. Data data data data, data data data data. Data data data data data data data. Data data data data data data. Data data data. Data data data, data data data data. Data data data data data data data data.
Data data data data data data. Data data data. Data data data data, data data data data. Data data data data data data data. Data data data data data data. Data data data. Data data data, data data data data. Data data data data data data data data.
Data data data data data data. Data data data. Data data data data, data data data data. Data data data data data data data. Data data data data data data. Data data data. Data data data, data data data data. Data data data data data data data data.
Data data data data data data. Data data data. Data data data data, data data data data. Data data data data data data data. Data data data data data data. Data data data. Data data data, data data data data. Data data data data data data data data.
Data data data data data data. Data data data. Data data data data, data data data data. Data data data data data data data. Data data data data data data. Data data data. Data data data, data data data data. Data data data data data data data data.
Data data data data data data. Data data data. Data data data data, data data data data. Data data data data data data data. Data data data data data data. Data data data. Data data data, data data data data. Data data data data data data data data.
Data data data data data data. Data data data. Data data data data, data data data data. Data data data data data data data. Data data data data data data. Data data data. Data data data, data data data data. Data data data data data data data data.
Data data data data data data. Data data data. Data data data data, data data data data. Data data data data data data data. Data data data data data data. Data data data. Data data data, data data data data. Data data data data data data data data.
Data data data data data data. Data data data. Data data data data, data data data data. Data data data data data data data. Data data data data data data. Data data data. Data data data, data data data data. Data data data data data data data data.
Data data data data data data. Data data data. Data data data data, data data data data. Data data data data data data data. Data data data data data data. Data data data. Data data data, data data data data. Data data data data data data data data.
Data data data data data data. Data data data. Data data data data, data data data data. Data data data data data data data. Data data data data data data. Data data data. Data data data, data data data data. Data data data data data data data data.
Data data data data data data. Data data data. Data data data data, data data data data. Data data data data data data data. Data data data data data data. Data data data. Data data data, data data data data. Data data data data data data data data.
Data data data data data data. Data data data. Data data data data, data data data data. Data data data data data data data. Data data data data data data. Data data data. Data data data, data data data data. Data data data data data data data data.
Data data data data data data. Data data data. Data data data data, data data data data. Data data data data data data data. Data data data data data data. Data data data. Data data data, data data data data. Data data data data data data data data.
Data data data data data data. Data data data. Data data data data, data data data data. Data data data data data data data. Data data data data data data. Data data data. Data data data, data data data data. Data data data data data data data data.
Data data data data data data. Data data data. Data data data data, data data data data. Data data data data data data data. Data data data data data data. Data data data. Data data data, data data data data. Data data data data data data data data.
Data data data data data data. Data data data. Data data data data, data data data data. Data data data data data data data. Data data data data data data. Data data data. Data data data, data data data data. Data data data data data data data data.
Data data data data data data. Data data data. Data data data data, data data data data. Data data data data data data data. Data data data data data data. Data data data. Data data data, data data data data. Data data data data data data data data.
Data data data data data data. Data data data. Data data data data, data data data data. Data data data data data data data. Data data data data data data. Data data data. Data data data, data data data data. Data data data data data data data data.
Data data data data data data. Data data data. Data data data data, data data data data. Data data data data data data data. Data data data data data data. Data data data. Data data data, data data data data. Data data data data data data data data.
Data data data data data data. Data data data. Data data data data, data data data data. Data data data data data data data. Data data data data data data. Data data data. Data data data, data data data data. Data data data data data data data data.
Data data data data data data. Data data data. Data data data data, data data data data. Data data data data data data data. Data data data data data data. Data data data. Data data data, data data data data. Data data data data data data data data.
Data data data data data data. Data data data. Data data data data, data data data data. Data data data data data data data. Data data data data data data. Data data data. Data data data, data data data data. Data data data data data data data data.
Data data data data data data. Data data data. Data data data data, data data data data. Data data data data data data data. Data data data data data data. Data data data. Data data data, data data data data. Data data data data data data data data.
Data data data data data data. Data data data. Data data data data, data data data data. Data data data data data data data. Data data data data data data. Data data data. Data data data, data data data data. Data data data data data data data data.
Data data data data data data. Data data data. Data data data data, data data data data. Data data data data data data data. Data data data data data data. Data data data. Data data data, data data data data. Data data data data data data data data.

Name: Anonymous 2013-07-15 17:43

egin data for gro

Name: Anonymous 2013-07-15 17:56

I prefer the dubs driven pattern.

Name: Anonymous 2013-07-15 18:25

I have been looking into this myself, but concrete implementation examples are rather sparse. 2 somewhat different approaches I've found are:

1) Using Behaviors and Attributes, with message-passing for communication, as described here:
http://www.gdcvault.com/play/1911/Theory-and-Practice-of-the
And in slightly more detail here (which also explains some advantages this method has over method #2):
http://www.pdf-archive.com/2012/01/08/entity-component-system/
With a short code example here:
http://gamedev.stackexchange.com/questions/22396/behavior-attribute-gamecomponent-architecture

2) The (more traditional?) method using regular old entities, components, and systems, as described here:
http://t-machine.org/index.php/2009/10/26/entity-systems-are-the-future-of-mmos-part-5/comment-page-2/#comments
This article focuses on using databases for MMOs, but it seems fairly easy to adapt to other types of games.

So far I'm leaning towards method 1, but I'm not quite sure how something like collision-detection would work. I think entities would have "hitbox" attributes which are used by "collides-with-Floor" (or "collides-with-enemy", etc) behaviors, but I dunno where the actual collision checks would go. Some kind of global behavior/system that the collision behaviors register themselves with?

Name: Anonymous 2013-07-15 21:53

It is better to have 100 functions operate on one data structure than 10 functions on 10 data structures. -- Alan Perlis

Name: Anonymous 2013-07-15 21:56

>>24
Perlis was born to a Jewish family

Shalom!

Name: Anonymous 2013-07-15 22:02

>>25
But he got Turing Award!

And you got nothing, besides neckbeard and hemorroides.

Name: Anonymous 2013-07-15 22:07

>>26
Who gives a shit about awards. What matters is his work.
He isn't a Alan Turing it seems, just a random top-tier computer scientist but that's it. No genius there.

Name: Anonymous 2013-07-15 22:13

>>27
He invented Algol, and C/C++, Java and C# are basically versions of Algol. Beat it!

Name: Anonymous 2013-07-15 22:28

>>28
beat my dick

Name: Anonymous 2013-07-16 1:30

>>17
Homogenous and contiguous arrays, just like a relational database.

struct EntityData
{
   size_t count;     // total number of entities
   float4* position; // positions for count number of entities
   float* weight;    // weights for count number of entities
   // ...
};

Name: Anonymous 2013-07-16 3:31

>>30
A relational database is a B-tree, not an array.

Name: Anonymous 2013-07-16 19:16

Name: Anonymous 2013-07-16 20:01

>>32
idea of an entity just being an ID is quite interesting.
That is still a bad design.

A good system would produce all high level structures by the sole interplay of low level forces.

You don't really need "money_owned" or "inventory" parameters for Player character; but instead a purse with gold coins should be character's pocket, like any other physical object, unaffected by any of IDs.

See for example http://www.youtube.com/watch?v=UZ_NTYCFlHk - their algorithm creates complex objects out of mere pixels.

Name: Anonymous 2013-07-16 20:23

you mean a purse with shekels

Name: Anonymous 2013-07-16 20:32

egin groski
Stopped reading there.

Name: Anonymous 2013-07-16 22:17

>>31
A relational database is a finite collection of finite relations.

Name: Anonymous 2013-07-16 22:24

>>36
A set of all natural numbers is a an infinite collection of infinite relations.

Name: Anonymous 2013-07-16 23:13

Goyim are finite but the Jews are infinite.

Name: Anonymous 2013-07-17 0:00

>>38
Jews are full of infinite lies, just like how the "real" numbers are full of non-computable numbers--numbers that don't actually exist, nothing more than lies.

Name: Anonymous 2013-07-17 0:02

>>33
You still need an ordinal identifier acting as a primary key to tie everything together if you want to make it efficient. Simple integer compares for lookups, instead of comparing the value of everything for equality.

Name: Anonymous 2013-07-17 0:04

>>31
A b-tree underneath, I was talking more about a relational database schema, not how it may be implemented.

B-trees aren't needed much for games, don't need to support arbitrary insertions/deletions, most everything is pre-allocated. Just need fast searching and updating.

Name: Anonymous 2013-07-17 13:25

>>33
You don't really need "money_owned" or "inventory" parameters for Player character; but instead a purse with gold coins should be character's pocket, like any other physical object, unaffected by any of IDs.
I'm pretty sure that's the idea, you just need an ID to tie the components together, like >>40 kun says.

Name: Anonymous 2013-07-17 14:42

>>42
You don't need ID. Components should tie themselves automatically.

Of course if you simulate gravity, then after a planets have formed, they could be assigned entities to optimize physics, but it should be done in totally transparent way, so a meteor could break planet back into particle clouds with some attached thermodynamic simulation.

Name: Anonymous 2013-07-17 14:48

>>39
Jews are full of infinite lies, just like how the "real" numbers are full of non-computable numbers--numbers that don't actually exist, nothing more than lies.

Of course a stupid non-Jewish russian would never understand pure mathematics.

Shalom indeed, goyim.

Name: Anonymous 2013-07-17 14:56

>>44
goyim
goyim
im
Fucking stupid Gentile trying to look like a God's chosen.

Name: Anonymous 2013-07-17 15:12

>>43
well actually everything a component provides is just some data. I mean if you will make the entity responsible for gravity, you just  provide him a gravity value which is added with a component. the actual thing that creates the gravity is named 'system'. for example gravity system, checks all entities which have gravity component then applies the physics check according to the component's value.

Name: Anonymous 2013-07-17 15:22

>>46
The problem with that is that calculating your environment based on loop ticks makes your game move at the speed of childbirth.
For proof, see: Second Life

Name: Anonymous 2013-07-17 15:28

>>47

but why, you just have one iteration in the world object, that iterates through all entities and checks if there is appropriate system to update the entity. how can it be costly ?

Name: Anonymous 2013-07-17 15:28

hi every1 im new!!!!!!!

holds up spork my name is schlomo goldbergsteinbaum but u can call me t3h v4mP1R3 oF sh3Kels!!!!!!!! LEL... as u can see im very shalom!!!! thats why i came here, 2 meet shalom ppl like me _... im 13 years old (im mature 4 my age tho!!) i like 2 watch invader zion w/ my boyfreind (im bi if u dont like it deal w/it) its our favorite tv show!!! bcuz its SOOOO shalom!!!! hes shalom 2 of course but i want 2 meet more shalom ppl =) like they say the more the merrier!!!! LEL... neways i hope 2 make alot of shekels here so give me lots of commentses!!!!
OY VEYYYYYYYYY!!!!!!!!!!!!!!!! <--- me bein shalom again _^ hehe...toodles!!!!!

love and waffles,

t3h v4mP1R3 oF sh3Kels

Name: Anonymous 2013-07-17 16:23

>>45
God
Stupid fucking goy trying to look like one of G d's chosen.

Name: Anonymous 2013-07-17 16:50

>>50
hi every1 im JEW!!!!!!!

holds up spork my name is schlomo goldbergsteinbaum but u can call me t3h v4mP1R3 oF sh3Kels!!!!!!!! LEL... as u can see im very shalom!!!! thats why i came here, 2 meet shalom ppl like me _... im 13 years old (im mature 4 my age tho!!) i like 2 watch invader zion w/ my boyfreind (im bi if u dont like it deal w/it) its our favorite tv show!!! bcuz its SOOOO shalom!!!! hes shalom 2 of course but i want 2 meet more shalom ppl =) like they say the more the merrier!!!! LEL... neways i hope 2 make alot of shekels here so give me lots of commentses!!!!
OY VEYYYYYYYYY!!!!!!!!!!!!!!!! <--- me bein shalom again _^ hehe...toodles!!!!!

love and waffles,

t3h v4mP1R3 oF sh3Kels

Name: Anonymous 2013-07-17 16:54

>>51
you aint real. true godchosen are all smart.

Name: Anonymous 2013-07-17 19:47

>>51

invader zion

shalom!

Name: Anonymous 2013-07-18 2:17

shalım

Name: Anonymous 2013-07-18 14:10

check my entities

Name: Anonymous 2013-07-24 2:53

es spürdo

Don't change these.
Name: Email:
Entire Thread Thread List