Skip to content

0.10.1 - a few steps closer to 1.0.0

Compare
Choose a tag to compare
@junkdog junkdog released this 19 Jul 23:33

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 and setManager now under WorldConfiguration. This
      effectively removes World#initialize, as initializations happens inside
      World's constructor.
  • 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" }