Entreri 1.7 Released
I seem to pick the end of semesters to be the most productive on my personal projects; it must be something to do about avoiding actual studying. The exciting news is that Entreri, my entity-component framework, has had some significant improvements and revisions. Much of its codebase has been simplified and better segregated. The primary classes: Entity, Component, and EntitySystem are now interfaces. And maybe this wasn’t a big deal to the few people who use it, but it always bothered me, but now IndexedDataStore is gone and Property implementations are more consolidated.
However, the biggest change of all is how component types are defined. In previous versions, there were two classes that represented components: Component, which was final and encoded only the identity and type; and then ComponentData, which defined the properties within a component type and was used to create flyweight instances. This separation has been done away with. By using annotation processors, all you need to do is create a sub-interface declaring the getter and setter methods for a property and everything else is done for you.
That’s it. It’s basically as easy as defining your data model for the component type and you barely have to worry about the implementation details. Of course, I tried to put in customization options so it’s still possible to write your own property implementations and configure a mapping so they’re picked up by the annotation processor. Attribute annotations are still fully supported, and now because the type definitions are even simpler they stand out as a useful documentation element as well.
It will be hitting Maven Central shortly, and it the Bitbucket codebase is all up-to-date so check it out.
Hi,
Interesting take on Entity-System Frameworks. I vaguely remember seeing a demo project, though I can’t find it now – is there such a thing somewhere? More specifically, do you have any benchmark demos?
I maintain artemis-odb over at github; been pushing it in a similar direction to yours, but adhering closer to artemis’ original API. Would be interesting to compare performance and memory characteristics between the two implementations; maybe there could be some cross-fertilization.
Also, is Entreri still being updated? I noticed there hasn’t been any commits since july on master.
There’s not a great standalone demo project. My other main project on bitbucket, Ferox, uses Entreri for a few things including physics and scene management. I haven’t put together a lot of very reproduce able benchmarks, but I think it would be great. From what I remember, entreri and artemis were pretty close pre-GC but once a real-app environment kicked in, entreri was a lot more predictable.
I am not actively updating entreri anymore, but it’s certainly not dead, it’s just feature complete for what I need and once that changes I’ll start updating it again; I still use it regularly with Ferox development.
And sorry for the delay, I don’t get notifications when people comment and I’m not used to much traffic but I’d be happy to get in touch and discuss the broader shared goals.