Skip to content

Zay-ES-Net release 1.2.1

Compare
Choose a tag to compare
@pspeed42 pspeed42 released this 20 Feb 08:03
· 138 commits to master since this release

This release includes several performance improvements and some additional infrastructure classes making it easier to work with JME 3.1's new network service model. This makes networking an ES even more 'plug and play'.

Additionally, this release is built with gradle and will eventually make it to a central repo... but the immediate benefit is that -sources and -javadoc jars are generated automatically and available as part of the release.

Changelog:

  • Upgraded the project to be JDK 1.7 and source 1.7 based.
  • Added support for a TransientComponent tagging interface
    that can be used to avoid sending certain component types over the
    wire. (They go over as null.) Note: the classes themselves still
    need to be registered with the Serializer so that the types can be
    sent. This is a compromise over a more invasive and ultimately less
    flexible transient design. (For example: this still lets you grab
    entities with a transient component for selection purposes, it just won't
    have a value.)
  • Added support for the new WatchedEntity feature of EntityData. This can
    be a more efficient way of tracking one entity versus constantly polling
    using getComponent().
  • Added EntityDataHostedService and EntityDataClientService implementations
    to take advantage of JME 3.1's new service model.
  • Server-side entity data services modified to require ObservableEntityData
    implementations.
  • Completely reworked how entity updates are sent to clients. The
    HostedEntityData.sendUpdates() method is entirely new and based on a new
    approach. In short: client interest is tracked in a mark-and-sweep data
    structure and only relevant changes are sent after the data structures
    have been updated. This avoids sending out of order information as well
    as redundant or hidden information.
  • RemoteEntityData's internal RemoteEntitySet now avoids resolving incomplete
    entities. In the latest code, if the entity is a member of the set then
    it would already have received all of the necessary data. A round trip
    to the server to grab data that definitely won't be there is a wasteful
    op, now avoided.