Skip to content

Releases: Simsilica/SiO2

SiO2 version 1.8.0

27 Jan 02:02
Compare
Choose a tag to compare

A maintenance release with some general bug fixes and usability improvements.

Change log:

  • Change the target version of the project to Java 8 to match the few Java 8 classes that are used.
  • Added SafeVarargs annotation to EntityContainer to avoid unchecked varargs warnings.
  • Added ChatHostedService.add/removeChatSessionListener() so that the server can listen for chat messages.
  • Added ChatHostedService.postMessage() so that a server console can post messages to the chat.
  • Added some alternate constructors to GameSystemState that allow passing of an existing/custom GameSystemManager.
  • Added GameSystemsState.getGameSystemManager() and GameSystemsState.get(class, boolean) methods.
  • Added RecurringTaskSystem for executing general tasks once per frame.
  • Added JobState/WorkerPool.isBusy() to indicate if there are still pending/running workers.
  • Added JobState.getPoolSize() for querying the number of threads in the pool.
  • Modified JobState.getQueuedCount()/getActiveCount() to return the live numbers from WorkerPool instead of the (likely delayed) numbers that the versioned objects are tracking.
  • Fixed an issue where shutdown workers were spewing InterruptedException stack traces to the logs during shutdown.
  • Changed the element ID for MessageState labels to be "console.message.label" instead of "message.label". The latter was too generic in styling and was often catching optionPanel.message.label as well.
  • Fixed BulletSystem collision listener iteration to use getArray() instead of creating an iterator every time. (thanks Ali-RS)

SiO2 version 1.7.0

06 Apr 00:40
Compare
Choose a tag to compare

Adds the blackboard-related classes and fixes some issues with other code. Also the build has been upgraded to work with gradle 7.4.2 and publish to maven central.

Change log:

  • Fixed a bug in MovementState where disabled states would be auto-enabled if the default camera initialization ran.
  • Added a more general WorkerPool class to encapsulate the job management of JobState. Modified JobState to delegate to it.
  • Added a Blackboard class and auto-registered it with the GameSystemsManager.
  • Added a BlackboardState class for convenient access to a blackboard object in client-side code.
  • Renamed the JobState.getQueuedCountReference() and getActiveCountReference() to getQueuedCount() and getActiveCount() respectively. The old one was a typo and since this is a newish class, hopefully it doesn't affect too many folks to fix it now.
  • Breaking change to the CommandEntry interface where runCommand() now has a boolean return value. Returning true allows the command to keep the console open.
  • Fixed DecaySystem to call the "fail on error" version of getSystem() when looking up the entity system.
  • Updated SimTime to have a setCurrentTime() method that allows resetting the simulation to a particular time, either because the game is being reloaded or because it's being continued after a pause, etc..
  • Refactored SimTime's internals to make time tracking easier and more flexible.
  • Updated GameLoop to call setCurrentTime() on its safe sim time instead of update(), ie: the time returned by GameLoop.getStepTime()
    This avoids a base time discrepancy but leaves a breaking change that tpf will always be 0. (tpf was generally nonsense before.)
  • Updated GameLoop to allow waiting for start() to complete. If waiting then if there is an error during startup then it will be wrapped and rethrown from the start(true) method.
  • Added SimEvent.simFailed and modified GameSystemsManager to publish this event if either initialize() or start() fails.
  • Fixed a bug in MovementState where the provided walk speed wasn't being adopted unless the run state changed.
  • Migrated the build to gradle 7.4.2
  • Moved distribution to maven central.

SiO2 version 1.6.0

31 Mar 17:17
Compare
Choose a tag to compare

Incremental release with a few new utility classes and some bug fixes/enhancements.

Change log:

  • Added a CubeSceneState for quickly adding a fully lit test scene to an application.
  • Added a DefaultSceneProcessor which is basically an empty implementation of JME's SceneProcessor interface.
  • Fixed DebugHudState to automatically resize its screen layout when the viewport size changes.
  • Updated JME version to 3.3. (To get the new AppState ID methods.)
  • Added a JobState class and Job interface for running background jobs in a simple and JME-friendly way.
  • Added some standard simple chat service classes for networked apps.
  • Added CompositeAppState.clearChildren()
  • Modified MovementState to handle null movement targets. The state will be automatically enabled/disabled with non-null/null movement targets, respectively.

SiO2 version 1.5.0

02 Jul 20:04
Compare
Choose a tag to compare

A quick patch to 1.4.0 that includes some additional features of the MovementState/MovementTarget code added in 1.4.0 that missed my commits.

Changelog:

  • Added an initialize and terminate methods to MovementTarget for the MovementState to call when the target is set.
  • Added an AbstractMovementTarget class to shield subclasses from future interface changes.

SiO2 version 1.4.0

02 Jul 18:56
Compare
Choose a tag to compare

Bugs fixes, usability improvements, and a new MovementState class for setting up player/camera movement.

Change log:

  • Fixed a an issue where EntityContainer.stop() wasn't clearing the internal entity set reference causing other issues if operations were performed on the container after stop.
  • Refactored GameLoop to allow setting a custom loop sleep strategy.
  • Added a NanoLoopSleepStrategy that uses LockSupport.parkNanos() to sleep and may perform better on some OSes.
  • Added a standard MovementState with default mappings for mouse, keyboard, and joystick and a default wiring to the standard JME camera. The movement target is configurable.

SiO2 version 1.3.0

14 Feb 09:58
Compare
Choose a tag to compare
SiO2 version 1.3.0 Pre-release
Pre-release

Minor updates and dependency version increases.

Change log:

  • Upped the Zay-ES-net version to 1.4.0 (fix was in 1.3.1) to get the entity set filtering bug fix.
  • CompositeAppState modified to use SafeArrayList.getArray() in for loops.
  • Modified GameLoop's default frame interval constant to be public: GameLoop.FPS_60
  • Added a GameSystemsState utility for managing a GameSystemManager in single player games.
  • Added a MemoryDebugState utility that displays memory stats using the DebugHudState.
  • Upped Lemur and Zay-ES/Zay-ES-Net dependencies to latest versions (1.12.0 and 1.3.1/1.4.0 respectively.)

SiO2 version 1.2.0

20 Nov 01:12
Compare
Choose a tag to compare
SiO2 version 1.2.0 Pre-release
Pre-release

Change log:

  • Fixed a SimTime initialization problem where the first tpf would be
    huge.
  • Fixed an issue where EntityContainer wouldn't support nested parameterized
    types.
  • Added GameSystemManager.getStepTime()
  • Added GameLoop.getStepTime() that is thread-safe with respect to the game loop
    thread.
  • Added SimTime.toSimTime() and SimTime.getFutureTime(duration) to help with
    conversion of seconds to game time.
  • Added a standard es.common.Decay component for tracking the 'life' of an
    entity.
  • Added a standard sim.common.DecaySystem for automatically destroying entities
    whose Decay time has expired.
  • Added GameSystemManager.get(class, failOnMiss) that can optionally throw an
    exception if the system does not exist.
  • Added AbstractGameSystem.getSystem(class, failOnMiss) that can optionally
    throw an exception if the system does not exist.
  • Added a MessageState that can be used to display fading messages popping up from
    the bottom of the screen.
  • Added a basic CommandConsoleState that can be used to allow command entry (can
    automatically feed the MessageState).
  • Modified DebugHudState to allow user-supplied VersionedObjects to be displayed
    instead of forcing them to be created through the API.
  • Added a CameraState to make it easier to independently set camera parameters like
    FOV, near, and far plane values.
  • Modified SimTime to initialize baseTime to current time on the first frame so
    that game time begins counting from the first frame.
  • Fixed an NPE in CompositeAppState.addChild() when called after the outer state is
    attached but before it was initialized. See PR #5.
  • Added SimTime.getUnlockedTime() which will return a SimTime-translated time
    between frames, ie: not frame locked.
  • Set sourceCompatibility to 1.7 and turned on detailed 'unchecked' warnings
  • Suppressed 'unchecked' warnings in some methods of EntityContainer, EventBus,
    and DecaySystem where it is known that the operations are safe or safe-ish,
    ie: we know we did it for a reason and don't need to be reminded all the time.
  • Increased Zay-ES versions to 1.3.0

SiO2 release 1.1.0

18 Feb 06:55
Compare
Choose a tag to compare
SiO2 release 1.1.0 Pre-release
Pre-release

A minor upgrade that fixes up some of the EventBus methods.

The full change list in this release:

  • Fixed the EventBus addListener()/removeListener() methods to be static
    like they were supposed to be.
  • Added the ability to add/remove global 'dispatch' listeners to the
    EventBus. This is useful for things like lifecycle logging or
    other debug/status related operations.
  • Fixed the EventBus to properly check superclasses for autowired
    event listener methods.
  • Exposed the DebugHudState's element IDs to make it easier to restyle
    the debug HUD.

SiO2 release 1.0.3

22 Nov 10:19
Compare
Choose a tag to compare
SiO2 release 1.0.3 Pre-release
Pre-release

An incremental release with the following changes:

  • Flipped the GameLoop's update loop to sleep when idle instead of
    only after an actual update was run.
  • Modified GameLoop to allow configuring the amount of time to sleep
    when idle-busy-polling for the next update interval.
  • Modified GameSystemManager to log its update errors before sending
    them to the event bus as a fatal error.
  • Modified the EventBus to log.debug() any events that are undelivered.
  • Modified the build.gradle to replace the JME version with a specific
    version instead of letting it float. I think alpha4 is generally
    the minimum accepted 3.1 version at this point.
    Did the same for all of the floating version references.

SiO2 release 1.0.2

15 Aug 06:28
Compare
Choose a tag to compare
SiO2 release 1.0.2 Pre-release
Pre-release

A small bug fix release over the initial 1.0.1 release. This includes:

  • Added some lifecycle trace logging to GameSystemManager.
  • Added a DebugHudState.removeDebugValue() for removing previously created debug values
    from the HUD.
  • Fixed the DebugHudState to clear the background of the "screen" container regardless
    of style settings.
  • Fixed a bug where the wrong class was being reported in the exception message for
    adding event bus listeners.