Releases: jMonkeyEngine-Contributions/zay-es
Zay-ES core 1.3.1
Minor bug fix release.
Change log:
- Fixed MemStringIndex.getStringId(string, false) to return -1 instead of throwing an NPE if the string has no ID.
- Modified DefaultEntityData.addEntityComponentListener() to throw an IllegalArgumentException for null listeners.
Zay-ES-Net release 1.4.0
Bug fixes and internal improvements including the ability to provide per-client component filtering.
Change log:
- Fixed HostedEntityData.getStringInfo() to send back a null if the ID doesn't exist for the string rather than sending back -1. A -1 would have been cached but a null won't be.
- Added EntityDataHostedServer.getHostedEntityData() for setting up connection specific entity stuff from other services.
- Added support for client-specific ComponentVisibility filters that can be used to limit the clients' views of certain component values, e.g.: based on permissions, local object visibility, etc..
- Added lots of additional trace logging in support of the above.
- Fixed HostedEntityData.getEntitySet() to force the next sendUpdates() to make at least one pass through the entity sets. Else some components won't be properly tracked.
Zay-ES core 1.3.0
Really just a version refresh. Source compatibility was set to 1.7 and some compiler warnings were fixed.
Change log:
- MemStringIndex fixed to consider the boolean 'add' parameter.
- Set sourceCompatibility to 1.7 and turned on detailed 'unchecked' warnings
- Fixed a ton of 'unchecked' related issues. Many of the generic method signatures
have changed. - Some javadoc formatting fixes.
Zay-ES-Net release 1.3.1
Bug fix release over 1.3.0 which was also mostly a bug fix release.
Complete change log for both versions (1.3.0 has no github version):
Zay-ES-Net v1.3.1 (latest)
- Fixed a bug introduced in PR #18 where the filter check in RemoteEntityData
completeEntity() was inverted.
Zay-ES-Net v1.3.0
- RemoteEntityData.completeEntity() modified to check the components against
the filter to fix the case where two entity sets share the same components
but not the same filter. See PR #18 - Fix NPE in RemoteStringIndex when asking for a non-existant string. See Issue: #14
- Set sourceCompatibility to 1.7 and turned on detailed 'unchecked' warnings
- Fixed a ton of 'unchecked' related issues. Many of the generic method signatures
have changed. - Some javadoc formatting fixes.
Zay-ES core version 1.2.1
Includes the new WatchedEntity support for tracking the components and changes for a single entity. There are other small internal infrastructure changes.
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 the ability to get a WatchedEntity which acts like an entity
except can be watched for changes in a way similar to a whole
EntitySet. Useful for single-entity focused systems like player
displays/controls. - Deprecated the EntitySet.applyChanges(Set) method as it's not really
possible to accurately return the changes that caused the set
to be in its new state... especially not without a proper ordering.
The network code that relies on this method has been reworked to
do it more correctly. - DefaultEntityData.getEntities() now delegates loading of the entities
to the set instead of hand-rolling it. (The DefaultEntitySet was
already capable of loading its own data.) - DefaultEntitySet's Transaction.completeEntity() method was moved to
the outer class so that subclasses can override how incomplete entities
are resolved by the set.
Zay-ES-Net release 1.2.1
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.
Zay-ES core version 1.1.1
Post project conversion and move release.
Zay-ES as a Java-based entity-component-system library (https://en.wikipedia.org/wiki/Entity_component_system) that manages to side-step many of the common disadvantages of entity systems without breaking 'purity'.
Depends on:
- guava 12 or better
- slf4j-api-1.7.5
Note: if you find this project useful to you in they "Hey, I'd like to buy that guy lunch sometime" kind of way... consider becoming a patron: https://www.patreon.com/pspeed42
Change log for this release:
- Fixed the DefaultEntitySet logger to log to the appropriate category.
- Added some defensive entityId parameter checks to DefaultEntityData
getComponent and setComponent. - Added an in-memory StringIndex implementation and include it by default
in DefaultEntityData if it hasn't been extended.
Zay-ES-Net release 1.1.1
Post project conversion and move release.
Zay-ES-Net is an extension to Zay-ES that provides client/server networking support.
Depends on Zay-ES v1.1.1 or better.
Depends on JME's SpiderMonkey.
Note: if you find this project useful to you in they "Hey, I'd like to buy that guy lunch sometime" kind of way... consider becoming a patron: https://www.patreon.com/pspeed42
Changelog with this release: (last release's items are included also since there was a version consistency issue.)
- Implemented RemoteEntityData's string index.
- Added trace log for cache hits in RemoteEntityData.
- Modified RemoteEntityData.RemoteEntitySet.release() to check
to see if the connection is still connected before sending
the release message. - Fixed a bug where really eager sendUpdate() calls were causing
thread contention with entity set creation. This would be
especially true for large sets and short update cycles. - Fixed a similar future-bug for resetting the filter, too,
though that one would be much harder to time just right, ie:
even more bizarre if seen in the wild.