Zay-ES-Net release 1.2.1
·
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.