v1.1.0 Release notes
New features
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.
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.
Changelog
Aether Engine Common Library
code_position_2f
has been renamed tonet_decode_position_2f
to fix an accidental rename.tl::optional
is now exposed in theaether::compatibility
namespace.- Preprocessor logic has been fixed so that
aether::optional
isstd::optional
for C++17 and above. - Preprocessor logic has been fixed so that
aether::monostate
isstd::monostate
for C++17 and above. - The
common/io/byteorder.hh
header has been added which contains theaether::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
andcell
. - 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 totcp.hh
which enables checking if the last socket operation would have blocked on Posix and Windows.
Aether Engine
- The unmaintained MPI support has been removed.
- A bug is fixed where simulations using the global state and not using the external storage writer could not shutdown cleanly.
ECS
- Cloning an ECS component from an existing one no longer leads to undefined behaviour.
Generic Netcode
- 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 aint
error code instead of abool
indicating success.
Repclient
- The repclient is now default constructable.
- All non-default repclient constructors are marked as deprecated (since they would assert on failure)
- The
connect
,connect_record
andconnect_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.
CLI
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 ahadean::stop()
call.aether continue-all
will continue any processes that have been paused at either ahadean::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.
Installer
- The installer now supports installing the Visual Studio extension and the Unity plugin.
Demos
- The Physics demo now includes a Unity client.