v1 - Release Notes



We’ve added EnTT integration to Aether Engine meaning you can now make use of it’s Entity Component System in your Aether Engine simulations.
Get started with EnTT by following the example in the docs.

Usage changes

  • Additional metrics added to the metrics API, see the metrics list for the newly available metrics.
  • The message buffering API is now implemented outside of the ECS, you may need to make changes to existing Aether Engine ECS code, read migrating existing Aether ECS code for details

Bug fixes

  • Fixed an issues causing Aether Engine to fail to start simulation without providing any information
  • Prometheus output is now conformant to the official standard
  • Visual Studio extension can now be updated without uninstalling first
  • Creating a new project with ''aether new'' works as expected
  • Fixed a problem causing Visual Studio Extension 1.3.0 to not install correctly
  • Including Boost no longer makes build fail
  • C shared libraries no longer cause build failures
  • Metric aether_time_elapsed_sec no longer returns current time instead of time elapsed
  • Metrics are now written to the correct location on remote runs
  • Web portal not reporting bandwidth used by a cluster
  • User interaction not working in the demos


Usage changes

  • Aether Engine version selector defaults to latest on the portal.
  • werror enabled for simulation builds.
  • VS Extension now lists debuggable processes.
  • Worker messaging counter added to engine metrics.
  • Added docs for prometheus.
  • Metrics names and labels rationalised.
  • Version of Boost bumped to 1.72.

Bug fixes

  • Fixed warnings when compiling Physics demo with cross compiler.
  • Installer works when invalid directories are part of PATH
  • Cross compiler now works with non-default install paths.
  • Temporary files properly cleaned up after simulation run ends.
  • Aether Hunt 2 demo now provides error on incorrect input of endpoint.
  • Rollback installation after failed installation of Virtual Machine.
  • Fixed build errors in Aether Engine headers for cross compiler.


NEW FEATURE: Simulation metrics

Now you can keep track of what’s happening in your simulation with Prometheus. Get started with metrics now.

NEW FEATURE: Faster iterations with our cross compiler

The cross compiler greatly speeds up the build process, meaning you can code, build and debug faster. Read the docs to boost your workflow.

Usage changes

  • Added new member functions: “sqr_magnitude” to vec2f and vec3f.
  • Added new member functions “sqr_magnitude” and “closer_than” to geometry.
  • Unified the “vec2f” and “vec3f” interfaces. See the API reference for details.
  • Unity version 2019.4 is now recommended for the Unity Plugin.
  • Generic netcode: Entities can include a field to determine if net relevancy should be performed.
  • Clean build can now be performed from Visual Studio.
  • The Physics demo now has example collision metrics.
  • Installation no longer requires BMI2.

Bug fixes

  • Fix “spawn_cell_level_offset” being ignored.
  • Account phase barrier time in the correct phase.
  • Install crash handler earlier in initialisation, before user code is called.
  • More reliable detection of SSH in the installer.
  • More comprehensive logging in the installer.
  • Fixed broken documentation links.


NEW FEATURE: Debugging

You can now debug a running simulation with the familiar tools of Visual Studio. Individual workers within a simulation can be paused, enabling you to inspect variables, step through code and assign values. See the debugging documentation to get started.

NEW FEATURE: Unity client

Using C# bindings, Unity clients can connect to Aether Engine simulations to receive and send messages. This is demonstrated in an example Unity PhysX project, which shows bouncing PhysX cubes in Unity, with user interaction using FlatBuffers to share protocol definitions between C++ and C# code bases. See the Unity documentation to get started.

Usage Changes

  • The generic netcode will now emit a warning when no updates are sent to a player because no user-controlled entity is found.
  • The decode function of demarshaller now returns a int error code instead of a bool indicating success.
  • The installer now supports installing the Visual Studio extension and the Unity plugin.
  • aether run has a new --debug flag that will start a simulation with debugging enabled.
  • aether list-paused-processes is a new command that will provide the list of Hadean PIDs that are currently paused on a hadean::stop() call.
  • aether continue-all will continue any processes that have been paused at either a hadean::stop() call or breakpoint and are not currently being debugged.
  • aether status will now indicate if the simulation being inspected was run with debugging enabled, and if there is currently a debugger attached.
  • The repclient is now default constructable.
  • The unmaintained MPI support has been removed.
  • The Physics demo now includes a Unity client.

Bug Fixes

  • code_position_2f has been renamed to net_decode_position_2f to fix an accidental rename.
  • tl::optional is now exposed in the aether::compatibility namespace.
  • Preprocessor logic has been fixed so that aether::optional is std::optional for C++17 and above.
  • Preprocessor logic has been fixed so that aether::monostate is std::monostate for C++17 and above.
  • The common/io/byteorder.hh header has been added which contains the aether::io::byte_order::endian_buffer class along with typedefs for buffers which hold unsigned integers in little and big-endian representations.
  • The logging framework has been updated to prevent race conditions in initialisation which could lead to crashes.
  • aether::morton::AABB has been modified not to use the range-v3 library.
  • Serialization support has been added to morton_code and cell.
  • All headers and source files have been updated not to include C++17 headers.
  • interval now asserts that the end is after the start during construction.
  • region::clear() has been added.
  • mpl::uint_exact has been added which maps bit-widths to unsigned integer types.
  • Aether Engine's random number generation functions are moved to the aether::random namespace.
  • The last_error_is_would_block function is added to tcp.hh which enables checking if the last socket operation would have blocked on Posix and Windows.
  • Cloning an ECS component from an existing one no longer leads to undefined behaviour.
  • A bug is fixed where simulations using the global state and not using the external storage writer could not shutdown cleanly.
  • All non-default repclient constructors are marked as deprecated (since they would assert on failure)
  • The connect, connect_record and connect_playback functions are added to the repclient to initiate connections and interact with dump files.
  • The repclient now correctly interprets an EOF during send or receive as a disconnect.
  • The repclient now interprets an error or EOF while reading a dump file as a disconnect.
  • The repclient now correctly handles "would block" errors during sends and receives.