Releases: NazaraEngine/NazaraEngine
Nightlies
The files here are generated after each push to the main branch.
Minor release - 0.4 - It's been a while!
Changelog:
This release took a LOT of time to release and there's way too many changes to list all of them, I'll do my best anyway.
Please note this update does break the API compatibility with the previous version (changes breaking the API compatibility are marked with a
Build system:
⚠️ Update premake binaries version to premake5-alpha12- It is now possible to generate a tool project running which will run the premake when built on Windows (PremakeProject=true).
- Added VS2017 Windows shortcut
Demo:
- Improved Particle Demo
Core:
- #126 File locking now works properly on Linux
- #136 Fixed std::getline with Nz::String not setting eofbit.
- Added support for CRC64
- Added MovablePtr utility class
⚠️ StackAllocation class has been replaced with much-more user-friendly StackArray class.⚠️ ParameterList now takes double and long long parameter instead of float and int parameters.- Threads can now be named (for debug purposes)
- Added ParameterList::ForEach method
- Flags operators works in the global namespace as well
Graphics:
- Added support for skybox reflections, realtime reflections are on the tracks!
⚠️ InstancedRenderable now handle materials and skins in a generic way (which means you can use skins on every InstancedRenderable such as Billboard, Sprites, etc.).
Lua:
- Added support for coroutines (LuaCoroutine class)
⚠️ Introduction of a new class, LuaState (inherited by LuaCoroutine and LuaInstance).
Network:
- Added ENet protocol support for reliable UDP communication
⚠️ SocketPoller is now able to wait on read/write status of socket⚠️ SocketPoller::Wait() has now support for infinite waiting (-1)- Added UdpSocket::ReceiveMultiple method
Renderer:
- Added WIP shader build (based on AST, with support for GLSL)
Physics2D:
- #127 Fixed RigidBody2D::GetAABB() wrong AABB
- Added basic support for constraints
- Added support for collision callbacks
- Added support for raycast
- Added support for nearest body queries
- Added support for debug draw
- Added support for damping
⚠️ RigidBody2D created without mass are now kinematic by default instead of statics
Utility:
- #128
⚠️ Platform-specific classes were moved to a new module: Platform (this means Utility module no longer needs to be linked to X11/xcb or gdi32). - #135
⚠️ Improved vertex declarations (they now checks template type with real type) - Mesh index buffer optimization is now disabled by default in debug mode
- It is now possible to set the vertex declaration wanted when building/loading a mesh
- It is now possible to set index/vertex buffer usage flags when building/loading a mesh
- Added VertexMapper::GetVertexBuffer()
- Added VertexMapper::GetVertexCount()
- Added VertexMapper::HasComponentOfType()
- Fixed SimpleTextDrawer bounds computation
SDK:
⚠️ Components no longer need to be copyable by assignation- Added BaseComponent::GetEntity()
⚠️ Systems are no longer copyable/clonable⚠️ World::[Get|Set]UpdateRate has been renamed World::[Get|Set]FixedUpdateRate.- Added World::[Get|Set]MaximumUpdateRate.
- Added BaseWidget::CenterHorizontal()
- Added BaseWidget::CenterVertical()
- EntityHandle are now handled in such a way they will never move in memory until a world update is triggered, this means it is now safe to returns const reference to EntityHandle as long as you do not keep them from one world update to another.
- Fixed a crash when destroying a hovered widget
- Added CollisionComponent2D::GetAABB()
- Added Entity::OnEntityDestruction signal
⚠️ EntityList were remade to take less memory and are easier to use but can only be iterated from front to back- Entities are now automatically removed from EntityLists when destroyed.
- It is no longer required for a component to have a default constructor to be binded to Lua.
- #123 StateMachine can now handle multiple states at once
- #132 Added ProgressBarWidget
- #133 ButtonWidget color and texture can now be customized
- #130 Added CheckboxWidget
- Added OnEntityDestruction() event on components in order to let them do better cleanup.
Known bugs:
- StateMachine state change occurs when ChangeState is called (should be at next update)
- Mesh loaders ignore parameters-provided vertex declaration
- Inclusion of Nazara/Renderer/ShaderBuilder.hpp (which is included by Nazara/Renderer.hpp) may lead to compilations errors (multiple define).
Minor release - 0.3 - Now with GUI and culling!
Changelog:
Please note this update does break the API compatibility with the previous version (changes breaking the API compatibility are marked with a
- Added
Configurations
parameter for build system, with support for ReleaseWithDebug. (67dcf16)
The following changes were made to the Nazara Engine:
- Added new particle demo (Space battle). (3c6a6cd)
- Added back automatic Frustum Culling. (a349b93)
- Added Nz::Flags class to properly handle enum flags. (d6b793f)
- Refactored Buffer classes to prepare the new Renderer. (9e0fd0a)
- Added a way to override über-shaders used by the engine at runtime. (d2d6bae)
⚠️ Reworked Nz::Cursor, it now includes default system cursors, allows to retrieve its image and is ref-counted (6751d48, 6751d48, 0cab95e).⚠️ Nz::WindowCursor has been renamed to Nz::SystemCursor. (6751d48)- Added Nz::CursorController class, for indirect cursor control. (a2e5e48)
- Added Nz::UdpSocket::SendMultiple method, allowing to merge multiple buffers into the same datagram. (ea0d42f).
- Added Nz::TcpClient::SendMultiple method, allowing to send multiple buffers at once.
- Added Nz::PlacementDestroy. (ea985fa)
- Added Nz::String::Format and Nz::String::FormatVA static methods. (cc6e412).
- Added Nz::ParticleGroup::GetBuffer method. (4dc8578)
- Added Nz::ParticleMapper::GetPointer method. (1f4e6c2)
⚠️ Structures provied by ParticleStruct header now have a float life. (472d964)- Fixed scale property of Nz::TextSprite not affecting its bounding volume. (52b29ba)
⚠️ Nz:MeshParams::flipUVs has been replaced by texCoordOffset and texCoordScale. (a1a7d90)- Fixed Nz::Music::Stop which was not resetting the playing offset. (12d7bc9, 24be974)
- Reworked LuaBinding classes to try to improve compile time and generated objects memory. (5555d24).
⚠️ Convert OpenMode to use the new Nz::Flags class. (49dfe31)⚠️ Convert StreamOption to use the new Nz::Flags class. (49dfe31)⚠️ Convert WindowStyleFlags to use the new Nz::Flags class. (6c04223)⚠️ Fix typo in OpenMode_MustExist (previously written as "MustExit"). (445ab13)- Added Nz::String::GetCharacterPosition method. (2f4ca23)
- Exposed Nz::SoftwareBuffer class. (842786d)
⚠️ Removed Sphere::SquaredDistance method, use Vector3::SquaredDistance with its center instead. (5b017ae)- Fixed SceneAmbient shader uniform not being sent by DepthRenderTechnique. (83e345a)
- Fixed light selection bug (causing an object to not have any light on it although it is within its radius). (9c04d79)
- Renderer::SetTexture and Renderer::SetTextureSampler now takes
unsigned int
instead ofUInt8
texture indexes. (09c2cbf) - When a shader fails to validate, its uniform are now dumped to the log. (0d37a3d)
- When a shader fails to compile, its code is now dumped to the log. (53ee891)
⚠️ Texture units used by Nazara are now static, fixes a bug with shadow. (b290a12)- Nz::Signal move constructor and assignement operators are now
noexcept
. (00144e9) - Nz::EventHandler is now a handled object. (498b84f).
- Added a way to specify receive and send buffer size per socket. (c4459f5).
- Fixed ObjectHandle <= operator. (6f60110)
- Fixed Nz::UdpSocket::Receive failing when peers suddenly closes its socket. (12401e0)
- All noises classes now uses std::mt19937 as a random number generator, to ensure the same results on every machine. (1f5ea98)
The following changes were made to the Nazara Development Kit:
- Added basic widgets. (c8a1208)
- VelocitySystem will no longer affect entities with PhysicsComponent2D. (a685323)
- Fixed EulerAngles constructor in Lua. (d55149a)
- Fixed Component::OnDetached not being called on entity destruction. (5b777eb)
Known issues:
- RUDPConnection is still very experimental and may fail to handle packet loss, do not use. (#74)
Note for MinGW users:
Multiples versions of MinGW exists, I recommand you to use the Mingw-w64 version, as they are more advanced and use a faster exception handling mode.
Compiled versions are only provided for the following toolchains
MinGW-6.3.0-x86-DW2
MinGW-6.3.0-x64-SEH
Please note that TDM-GCC versions are no longer provided because of their lack of compatibility with some options, and lack of necessity.
Here are the Visual Studio 2015 (msvc14), MinGW and Linux binaries.
As always, the online documentation got updated.
Patch release - 0.2.1 - With some Lua improvements!
Changelog:
The following changes were made:
- Nazara binaries are now compiled with Run-Time Type-Information. (a70acdc)
- Nazara demos are now compiled with relative dependencies on Linux.
(d6fbb4c) - Added Nz::BitCount function. (82e31a3)
- Added Nz::Bitset::AppendBits method. (b018a40)
- Added Nz::Bitset::Read method. (f0c40ec)
- Added Nz::Bitset::Reverse method. (0abd1bb)
- Added Nz::Bitset::FromPointer static method. (f0c40ec)
- Added an operator<< for
ostream
andNz::Bitset
. (9d9efac) - Added
Nz::Image::HasAlpha
method. (1029b37) - Added a Sprite::SetMaterial overload taking a material name. (d50f5ed)
- Added a Sprite::SetTexture overload taking a texture name. (d50f5ed)
- Added Nz::SegmentCollider2D class. (0ede1e8)
- Nz::CountBits now returns a
std::size_t
. (63e9d77) - Improved bitset unit tests by checking them with multiple blocks size (f6426a5)
NDEBUG
is no longer automatically defined by Nazara headers. (fef5337)- The engine now asserts on CHAR_BIT equality to 8. (01be79f)
- Fixed a crash occuring after a RigidBody2D got modified/removed. (874362a)
- Fixed Nz::Bitset::PerformandsAND (called by &= operator) giving wrong result. (ecfce94)
- PixelFormats with over 64 bits per components are now rejected. (119b7bc)
- Fixed
PixelFormatInfo
masks bit order. (62197da) - Fixed RigidBody2D collisions. (c99d7fd)
- Fixed RigidBody2D::AddForce application point. (7eb240e)
- Fixed Nz::Quaternion::Lerp compilation. (7392916)
The following changes were made to the Nazara Development Kit:
- Fixed missing group NDK in documentation. (51c6b02)
- Fixed CollisionComponent2D position when used alone. (e24d433)
- Including the following changes in the Lua API:
Known issues:
- RUDPConnection is still very experimental and may fail to handle packet loss, do not use. (#74)
Note for MinGW users:
Multiples versions of MinGW exists, I recommand you to use the Mingw-w64 version, as they are more advanced and use a faster exception handling mode.
Compiled versions are only provided for the following toolchains
MinGW-6.1.0-x86-DW2
MinGW-6.1.0-x64-SEH
Please note that TDM-GCC versions are no longer provided because of their lack of compatibility with some options, and lack of necessity.
Here are the Visual Studio 2015 (msvc14), MinGW and Linux binaries.
As always, the online documentation got updated.
Minor release - 0.2 - Physics update
Changelog:
Please note this update may break the API compatibility with the previous version (changes breaking the API compatibility are marked with a
The following changes were made:
- Added a .editorconfig file to help consistency (8126c98)
- Code::Blocks is now supported by Premake5 (4027613)
- Global headers no longer include generation date. (fd3161c)
- Upgraded Premake5 to alpha10, removing Premake4 in the process. (110064c)
The following changes were made to the Nazara Engine:
⚠️ The Physics module has been renamed to Physics3D (65bfd77)- A new Physics2D module has been added, using chipmunk (e9be18d)
⚠️ NAZARA_UTILITY_THREADED_WINDOW
got replaced by the runtime flagWindowStyle_Threaded
. (a7dd0e0)- LuaClass is now default-constructable and (re)initialized later with its
Reset
method (dc3e125) - LuaClass is now able to bind classes with deleted destructor (3168e5a)
- Added a
LuaInstance::Push
variadic overload able to push multiple arguments (a19edf1) - The Vector classes now have a std::hash overload (74b446a)
- The TextEntered event handling on Linux has been improved (7d1c5fa)
- An interactive unit test has been added for testing the window events (34d9232)
AbstractLogger::IsStdReplicationEnabled()
is now const (5df095c)FileLogger::IsTimeLoggingEnabled()
is now const (de0f931)- Fixed
Apply
return type not taking references into account (1eb49d3) - Fixed
LuaInstance::PushInstance
memory corruption (54b77c0) - Fixed
Matrix4::Get(Column|Row)
compilation (728d7b8) - Fixed
ResourceManager::Purge
compilation (c700283) - Fixed
Quaterniond::operator*
compilation (19dc95a) - Fixed the <= operator with two ObjectRef (7597578)
⚠️ LuaClass methods now include anargumentCount
parameter, and the instance remains at the top of the Lua stack, shifting all parameters by one (9b79478)- Fixed automatic lua binding of
T& T::Method()
, which will now return the original Lua instance instead of copying it. (d20fa00) VideoMode
third argument (bpp
) is now optional. (2ab311e)ByteArray::ToHex
is now implemented in ByteArray.cpp, to reduce the amount of warnings generated by MSVC because of thesprintf
call. (41e7e6a)
The following changes were made to the Nazara Development Kit:
⚠️ The Collision and Physics components now have a 3D suffix (6e289fe)- Added Collision and Physics components for 2D physics. (b5048df)
LuaAPI::GetBinding()
will now implicitly initialize LuaAPI if required (ec16114)- It is now possible to change the update order of a world's systems. (51b6979)
- By default, the Render and Listener systems update are now performed last. (dd22e5f)
- PhysicsSystem3D no longer initialize an internal PhysWorld3D if no physical entity gets created (e282442)
- Including the following changes in the Lua API:
GraphicsComponent:Attach
overloads (taking local matrix and render order) are fixed. (d525669)- Material is now accessible from Lua (aed4e1e)
- Matrix4 is now accessible from Lua (fb51840)
- Sprite is now accessible from Lua (e034dce)
- SpriteLibrary is now accessible from Lua (013a133)
- Texture is now accessible from Lua (f8b55a5)
- TextureLibrary is now accessible from Lua (3a64ef9)
- TextureManager is now accessible from Lua (3a64ef9)
The following issues were fixed:
- #102: Some shaders used by the Graphics module may fail to compile with some drivers.
- #104: On Windows, when using threaded windows, the window position obtained by
Window::GetPosition()
never gets updated. - #105: On Windows, when not using threaded windows, a lot of Moved events gets generated instead of just one for every movement.
- #111: On Linux,
IsKeyPressed(Keyboard::Q);
returns true if theA
key is pressed. - #114: Box/cubic sphere submesh generation is broken.
Known issues:
- RUDPConnection is still very experimental and may fail to handle packet loss, do not use. (#74)
- The
NAZARA_VERSION_*
macros are still referring to 0.1.1
Note for MinGW users:
Multiples versions of MinGW exists, I recommand you to use the Mingw-w64 version, as they are more advanced and use a faster exception handling mode.
Compiled versions are only provided for the following toolchains
MinGW-6.1.0-x86-DW2
MinGW-6.1.0-x64-SEH
Please note that TDM-GCC versions are no longer provided because of their lack of compatibility with some options, and lack of necessity.
Here are the Visual Studio 2015 (msvc14), MinGW and Linux binaries.
As always, the online documentation got updated.
Bugfix release - 0.1.1 - Now with Linux binaries!
Changelog:
The following additions were made:
- Nz::Bitset now supports shifting operations (along with <<, >> operators) (37089d9).
The following issues were fixed:
- #73, #81: Nazara fails to compile on Linux with x86 target.
- #75: Lua constructors may fail in some cases.
- #77: Packaging the engine under Linux fails to copy the executable binaries of the demo and unit tests.
- #78: Building with Clang fails.
- #79:
SocketPoller::Wait
does not update itserror
parameter on Linux. - #80: When initializing the engine, some pixel format errors occurs, this currently has no side-effect.
Known issues:
- RUDPConnection is still very experimental and may fail to handle packet loss, do not use. (#74)
- Some shaders used by the Graphics module may fail to compile with some drivers. (#102)
- On Windows, when using threaded windows, the window position obtained by
Window::GetPosition()
never gets updated. (#104) - On Windows, when not using threaded windows, a lot of Moved events gets generated instead of just one for every movement. (#105)
- Box/cubic sphere submesh generation is broken. (#114)
Note for MinGW users:
Multiples versions of MinGW exists, I recommand you to use the Mingw-w64 version, as they are more advanced and use a faster exception handling mode.
MinGW-6.1.0-x86-DW2
MinGW-6.1.0-x64-SEH
TDM-GCC-5.1.0-x86-SJLJ (Codeblocks 16.01 version)
Please note that TDM-GCC-5.1.0-x64-SJLJ fails to compile the engine because of their lack of support of the .lib format (used for Assimp/Newton, LIB2A was no help and compiling Assimp yielded a 26 MB binary instead of the 4MB version of Visual Studio).
Here are the Visual Studio 2015 (msvc14), MinGW binaries and for the first time, Linux binaries.
First release - 0.1.0
Changelog:
- First release.
Known issues:
- Nazara fails to compile on Linux with x86 target. (#73, #81)
- RUDPConnection is still very experimental and may fail to handle packet loss, do not use. (#74)
- Lua constructors may fail in some cases (#75)
- Packaging the engine under Linux fails to copy the executable binaries of the demo and unit tests (#77)
- Building with Clang fails (#78)
SocketPoller::Wait
does not update itserror
parameter on Linux. (#79)- When initializing the engine, some pixel format errors occurs, this currently has no side-effect. (#80)
Note for MinGW users:
Multiples versions of MinGW exists, I recommand you to use the Mingw-w64 version, as they are more advanced and use a faster exception handling mode.
MinGW-6.1.0-x86-DW2
MinGW-6.1.0-x64-SEH
TDM-GCC-5.1.0-x86-SJLJ (Codeblocks 16.01 version)
Please note that TDM-GCC-5.1.0-x64-SJLJ fails to compile the engine because of their lack of support of the .lib format (used for Assimp/Newton, LIB2A was no help and compiling Assimp yielded a 26 MB binary instead of the 4MB version of Visual Studio).
Here are the Visual Studio 2015 (msvc14) and MinGW binaries.