Possibilities with the Component System

ComponentSystem: Component System, Where lives an Entity?

With the Component Systems we have unlimited possibilities in theory:

e.g.
Player can rides Blocks
A Block can fire a Player with an arrow
Any Block/Item can be an ItemHolder
Blocks need food

What are your cool ideas?

1 Like

i though component system was cancelled.

No?
People work on it …
https://github.com/SpongePowered/Artemis

But it will not be the “only” way and I am sure not part of the first releases :wink:

With a Component System it shouldn’t be too hard to make a type of creeper that gets a larger blast radius whenever it eats grass, right?
Because id like to make something like that.

With a component System you can create a creeper with any explosion radius that explodes if you not feed him with gunpowder or breed him with another creeper xD

I’m starting to get some interesting ideas now.

The thread is for new people, to get an overview, why a component system is so powerful :wink:

I never encountered the principle of a component system before, but after i noticed it mentioned on some other posts. I really need to figure out how to create one for my own projects. It seems really useful.

It is not the answer for all questions xD
But in some use cases useful.

Docs:
http://t-machine.org/index.php/2007/09/03/entity-systems-are-the-future-of-mmog-development-part-1/
http://entity-systems.wikidot.com/

Again, the component system, simply makes this type of thing easier. All this was possible via the inheritance method, though much more code would have to be written to implement it. I do have some interesting ideas for the component system though, I think I will definitely try to use that system when possible when porting plugins.

You forget that it is all limited to what Minecraft can do.
A component system is nice, but when stuff is hardcoded in MCs code, the component system won’t do anything :wink:

in theory !

From @TheYeti:
shareable player, lose wool, changed skin, …

Uh, correct me if I am wrong, but isn’t there Artemis, an ECS for sponge on the github page? github.com/spongepowered

Artemis and ECS used the Component System oO
Or what is your question?

Everyone is talking about the ECS and component system and stuff, but Artemis is on the dev page. why is everyone talking about adding one if it is there???

Like unity. It would be wonderful to add custom components. Flying blocks, modeled like rockets, searching for the player in the blockcart/mariocart race first position.
Smoother implementation in equation to bukkit pathfinding.

Yeah I have experienced this first hand when working with custom entities in bukkit. There is only so much that you can make a particular entity do and that is all based on the MC client code. As an example you cannot make a FallingBlock entity rotate, its impossible due to client side code.

1 Like

In theory :smile:
In theory, we could finally have PROPER chairs. We could have shear-able dirt (because we’ve all wanted to shear dirt with the hopes it turns into a diamond block). We could finally have the ultimate adventure traps features which has hidden block disguised traps and secret ItemHolders. And we can actually have a ‘pet rock’ because we’ve all wanted to feed a block of stone that golden apple.

Sounds interesting, but at the same time, wacky and crazy. I like it :smiley:

As a programmer, I will admit that ECS is something that always will fascinate me. Its an excellent take on change the way programs are designed.

That said, many forget the REASON ECS is not widely implemented. It requires a LOT of backend work that is not worth investing time, effort, and money into if the program does not require it. The initial designers of the first working system described the concept requiring THOUSANDS of possible entities, with THOUSANDS of components.

For a little bit of background, remember that an ECS setup is designed around three parts:

  1. Entity Merely an object in the world. Grass, a sword, the player, a bullet, or a raindrop all count as entities. On a generic level, they usually have a position and a name.
  2. Component Gives the entity flavor. It allows entities to have collision, a different rendering method, the ability to move, be controlled by AI, etc.
  3. System Implements the afforementioned actions. After all this is setup, the individual systems are iterated upon. They look over the various entities, and find certain component combinations, and do some sort of task related to that. For example, one system could be the Draw() system, which looks for entities that have hasModel and hasTexture components. Another good one is Gravity.
1 Like