Component System framework/architecture

Has anyone developed a game using a component based or entity system approach? I’ve been searching the web for a C*+ entity system framework but haven’t had much success. I found a few good ones: one for ActionScrpt and one for Java/C# .
I’ve started porting the Artemis C# version to C**, but I am by no means an experienced C*+ developer so if anyone would like to help or can point me to a C++ framework, that would be awesome

Thanks

I’m also considering a component/entity system. But script binding and editor will go first.

If and when you do decide to implement or use one, let me know. Maybe by that ime I’ll have something done by then or we can help each other make one. In the meantime, I’ll try and continue with the Artemis port.

You may also consider Cistron which is C++
http://code.google.com/p/cistron/

Cistron looks promising.

I also found a C++ port of Artemis, but it’s dependent on DirectX.

http://www.gamedev.net/blog/1390/entry-2254064-c-port-of-artemis-entity-component-system-framework-in-progress/

I’ve started a list of frameworks on my blog for refernce, if anyone’s interested:

http://blog.wujitouch.com/post/ComponentEntity-System-Frameworks.aspx

I’ve learned Adam Martin’s blogs from t-machine.org. So I prefer Artemis. Another reason is that it’s licensed with simple BSD.
Cistron should be excluded from consideration because its LGPL license, which will bring troubles on iOS platform.

The current step of both cocos2d-iphone/-x is javascript binding and editor. Maybe we can implement entity/component system later in javascript layer, which can be much easier to implement. After all, c++ has many limits, especially has no reflection.

“Cistron should be excluded from consideration because its LGPL license, which will bring troubles on iOS platform.”

How will this bring trouble in iOS? The LGPL license is for both proprietary and free/open source. The ordinary GPL limits a library’s use for just free programs, not the LGPL.

“The GNU Project has two principal licenses to use for libraries. One is the GNU Lesser GPL; the other is the ordinary GNU GPL. The choice of license makes a big difference: using the Lesser GPL permits use of the library in proprietary programs; using the ordinary GPL for a library makes it available only for free programs.”

http://www.gnu.org/licenses/why-not-lgpl.html

Just an update for everyone. Karel has kindly changed the license for Cistron to the MIT license so it can now be used freely in your iOS game using cocos2d-x.

Here’s a C++ port of Artemis which works great with cocos2d-x

I just found there is a plan to convert CCNode to component based design in next release (http://www.cocos2d-x.org/issues/2089)
Therefore, I bump this topic and see if someone interested.

I’m not in favor of adding component based architecture to CCNode. It is easy to integrate cocos2d-x with already existing component architectures (Cistron and Artemis for example). I’ve even developed my own simple component architecture and used it with cocos2d-x.

I would be in favor of a simple component architecture as an extension that doesn’t affect the current architecture. Something that is optional where the code is not introduced at all unless you add the extension.

@winipcfg, yeah, we plan to do it. And it’s alos planned in cocos2d 3.0 https://github.com/cocos2d/cocos2d-js/issues/64.
The problem is that I’m not sure how slow it will be. I had to test its performance after a demo comes out.

I’m finishing a demo with Ash-js port with the cocos2d-html5 framework.

Once I have the demo working fine (on cocos2d-html5 + cocos2d-x) I will share the code.

1 Like

cant wait!