0.10.1 - a few steps closer to 1.0.0
Psst. 0.10.2 has been released - it fixes a bug w.r.t. entity transmuters.
0.10.0
/0.10.1
dev suffered neglect during the past months. Saving/loading world instances has been pushed back to the next release. Earlier experiments waded in growing complexity. I have a much simpler solution in mind now, without sacrificing any/much of the potential of the previous design.
The biggest changes for this release revolve around the AspectSubscriptionManager, increasing the responsibility of WorldConfiguration
, and generally decoupling the world - making it slightly more open to custom configurations.
Nota Bene: breaking existing code
This release can be considered a preparatory release anticipating 1.0.0
. Some existing code will break; most/all deprecated code should have javadoc or exceptions pointing you in the right direction.
The cycle of breakage will stop once we reach 1.0.0
; until then, please bear with me.
Nota Bene: perf hit
0.11.0
introduced a pretty nasty perf hit. Initial benchmarks indicate <25% poorer throughput when iterating entities.
In the interest of moving towards 1.0.0
as quickly as possible, optimizations restoring the performance has been postponed until 1.1.0
(or 1.0.0
).
Change Log
Version: 0.10.1 - 2015-07-20
- Fix: Reduced visibility of AspectionSubscriptionManager constructor.
- Fix: NPE related to
EntitySubscription#createSubscription
.
Version: 0.10.0 - 2015-07-19
- MINOR BREAKING CHANGES
- BaseSystem is now the most basic system type.
- World#getSystems returns Bag.
- EntitySystem constructor expects Aspect.Builder:
- Implies existing classes have to be recompiled against this release.
- Existing custom entity systems need to pass Aspect.Builder to EntitySystem.
- EntitySystem no longer implements EntityObserver.
- ArtemisProfiler#initialize now requires BaseSystem instead of EntitySystem.
- VoidEntitySystem no longer subclass of EntitySystem.
setSystem
andsetManager
now underWorldConfiguration
. This
effectively removesWorld#initialize
, as initializations happens inside
World's constructor.
- BaseSystem is now the most basic system type.
- New internal EntitySubscription and accompanying AspectSubscriptionManager
resulting in cleaner and more flexible EntitySystems. - SystemInvocationStrategy opening up for more granular control over system processing.
- Default strategy behaves as before.
- Aspect split into Aspect and Aspect.Builder.
- Simplified static method names, mirroring Aspect's old instance methods.
- EntityFactories support for enum values.
- Children of EntitySystems can create flyweight entities.
- Fix: Uninitialized worlds threw cryptic NPE when invoking #process.
- Fix:
World#createFactory(Class<EntityFactory>)
was package local. - Fix:
Entity#edit
used together with EntityTransmuters or Archetypes
caused the wrong compositionId to be reported, if all changes took place
during the same processing round..
Downloads
Maven
<dependency>
<groupId>net.onedaybeard.artemis</groupId>
<artifactId>artemis-odb</artifactId>
<version>0.10.1</version>
</dependency>
See weave automation and module overview
Gradle
dependencies { compile "net.onedaybeard.artemis:artemis-odb:0.10.1" }