Skip to content

Releases: bryanedds/Nu

API Improvements (mostly around ImNui)

15 Feb 23:04
Compare
Choose a tag to compare

This release brings some breaking API changes that allow us to improve the usability and understandability of Nu's APIs, particularly ImNui. Detailed updates in change list below -

  • Fixed non-usage of ReferenceEqualityComparer in PooledArray.
  • Removed use of pooled collections since they are way to slow for what they're being used for.
  • Optimized animation property updates.
  • Updated doc comments to reflect change in BodyId type name.
  • Exposed eye properties directly from World instance for common convenience.
  • Renamed ImNui Recent functions to Declared for better understandability.
  • Applied newly found algebraic pattern to Terra Firma.
  • Closed semantic ImNui hole by assuming Gui as default group (ScreenDispatcher.CreateDefaultGroup method removed).

Full Changelog: v18.5.0...v18.6.0

Engines fixes for DynamicFrameRate and Character navigation (plus more!)

13 Feb 19:02
Compare
Choose a tag to compare

Unfortunately, some regressions came out of the recent Jolt Physics integration relating to character controllers. Additionally, we didn't do a good enough job of testing the DynamicFrameRate feature where it interacted with said feature. However, this and many other issues have been surfaced and fixed so that hopefully no user will ever see them to begin with!

Important Changes -

  • Decided to make groups always process as well since top-level behavior get also descend in to them.
  • Added back Chain monad for the odd case someone finds it useful.
  • Increased Light Shadow Sample Scalar max in Gaia.
  • Made normalizing attenuation undoable.
  • Improved 3D snapping behavior so it only snaps along the axes being manipulated.
  • Adjusted ImGuizmo config to be less annoying to use.
  • Hot-keys for creation parent designation and reset. (Ctrl+P, Ctrl+Shift+P)
  • Increased LightCutoffMarginDefault to 0.5f for more expected lighting…
  • Currying Math extension fns as should be.
  • Changed FollowMoveSpeed default to 1.0f.
  • Increased Light Shadow Bias Max in Gaia.
  • Implemented tick delta averaging and left it opt-in.
  • Changed GL debugging configuration semantics.
  • Allow opt-out of animation parallelism via new UseJobGraph property.
  • Attempt to increase accuracy of bone animation computation.
  • Fixed exception when using FollowerFacet on non-rigid-bodies.
  • Removed incorrect use of delta time in FollowerFacet.
  • Removed unusable TraversalDamping field.
  • Fixed nav rotation issues.
  • Fixed 8089b52
  • Fixed 8f2ba17
  • No longer requiring lin and ang vels for followers.
  • Fixed 600fc02
  • Fixed e42013c
  • Removed unnecessary write parameters from game, screen, and group.
  • Fixed an editor exception due to code reloading not being handled properly.
  • TF no longer needlessly resets player position on code reload.
  • Mitigation for 6c76fd1
  • Implemented 841aac6
  • Made RigidBodyFacets not static by default.
  • Fixed enumerator invalidation in Gaia when propagating entities in imperative mode.

Full Changelog: v18.4.0...v18.5.0

ImNui ports for Blaze Vector + Terra Firma, many engine and ImNui fixes!

07 Feb 19:35
Compare
Choose a tag to compare

This time around we've created an additional Blaze Vector project that specifically uses the ImNui API. We still keep the existing project that uses MMCC for comparison and have renamed it accordingly Additionally, we've directly ported Terra Firma to the ImNui API without keeping the old MMCC implementation for it. This is because we believe that ImNui is a far better fit for action / non-turn-based games than MMCC (tho the jury may still be out if that's true for networked action / non-tb games).

In the process of creating these ImNui ports, we got the opportunity to surface and fix several engine and ImNui implementation bugs.

Since Prime was updated here, be sure to update any of your existing project's nuget version like so - https://github.com/bryanedds/Nu/wiki/Updating-User%E2%80%90Created-Projects-on-Engine-Updates

Most Important Changes -

  • Turned Nu.Globals into a module so it can't be opened explicitly.
  • Changed Capture Mode to F10 in Gaia.
  • Copy if newer as standard file asset strategy.
  • Added isMouseButtonPressed API.
  • Implemented ImNui conversion of Blaze Vector.
  • Updated Prime.
  • Fixed redundant facet attachment bug.
  • Converted Terra Firma to ImNui API
  • Added throwaway exception to Log.error.
  • Fixed physics clear regression.
  • Not counting empty nav 3d creation as error.
  • Fixed mounting order in ImNui.
  • Now processing all ImNui screens by default (instead of just the currently selected screen.
  • Regression fix from mount order change
  • Fixed Log.errorOnce implementation.
  • Added ScreenResults to ScreenDispatcherImNui.Process.
  • Removed the character interpolation crap that Bullet physics used to force on us.
  • Synthetically passing in Select result to first frame of a given screen
  • Fixed duplicate 3D physics events.

Full Changelog: v18.3.0...v18.4.0

New ImNui project conversions and ImNui enhancements + fixes!

04 Feb 03:16
Compare
Choose a tag to compare

We've surfaced some shortcomings and bugs with the ImNui API and have fixed them in this release! Additionally, we've created a port of Blaze Vector to ImNui as well as converted Terra Firma to ImNui as well!

Since Prime was also updated, make sure to follow the instructions for existing Nu Game Engine projects here - https://github.com/bryanedds/Nu/wiki/Updating-User%E2%80%90Created-Projects-on-Engine-Updates

Additional changes -

  • Turned Nu.Globals into a module so it can't be opened explicitly.
  • Changed Capture Mode in Gaia to F10.
  • Copy if newer as standard file asset strategy.
  • Added isMouseButtonPressed API.
  • Implemented ImNui conversion of Blaze Vector.
  • Fixed BV MMCC jump.
  • Updated Prime.
  • Fixed redundant facet attachment bug.
  • Converted Terra Firma to ImNui.
  • Added throwaway exception to Log.error.
  • Fixed physics clear regression.
  • Not counting empty nav 3d creation as error.
  • Fixed mounting order in ImNui.
  • Now processing all ImNui screens by default.
  • Fixed Log.errorOnce implementation to call Log.error instead of Log.warn.
  • Added ScreenResults to ScreenDispatcherImNui.Process.
  • Removed the character interpolation crap that Bullet physics used to require.
  • Removed avg from Character3d that Bullet physics used to require.
  • Embedded animated model directly in TF character.
  • Synthetically passing in Select result to first frame of a given screen to make user-defined screen initialization in ImNui reliable.

Full Changelog: v18.2.0...v18.3.0

Important Engine Fixes

27 Jan 13:03
Compare
Choose a tag to compare

This time, we've surfaced some important engine bugs and fixed them. If you have an existing project created with Nu.Gaia, you'll need to update your dependencies as explained here - https://github.com/bryanedds/Nu/wiki/Updating-User%E2%80%90Created-Project-Assets-on-Engine-Updates

Changes -

  • Fixed World.sweepSimulants not being called when world halted (fixed ImNui not destroying dead simulant when editor is halted).
  • Added HACK to fix property edit exception.
  • Got rid of hack by moving non-model property fix-ups lower.
  • Prevented invalid surface index values from creeping into physics system.
  • Fixed #937
  • Fixed regression from recent fix.
  • Updated DotRecast to latest official release.
  • Tuned stair step defaults.

Full Changelog: v18.1.0...v18.2.0

Minor Stability and API Enhancements

25 Jan 03:49
Compare
Choose a tag to compare

Mostly this is just a maintenance release, so nothing significant.

Additional changes -

  • Fixed #872.
  • Simplified semantics of ImNui so that user doesn't need to guard against Process when screen isn't selected.
  • Renamed body joint cases.
  • Added missing 3D character collision masking.
  • Removed unused parameters from Continuous case.
  • Implemented jump body for 2D physics and then used in jump box demo.
  • Fixed 3D constraint output types.
  • Preventing zero or negative scales from crashing Jolt.
  • Logging on Jolt scale correction.
  • Log.fail for id32 overflow.
  • Added Box3i type converter to Math.Init.
  • Log function doc comment fixes.
  • Routing angular velocity through TF characters.
  • Updated code reload dll targets.
  • Fixed snapshotting when nothing to paste.

Full Changelog: v18.0.0...v18.1.0

Replaced Bullet Physics with Jolt Physics!

08 Jan 09:33
Compare
Choose a tag to compare

Unfortunately, we weren't too happy with Bullet Physics as a 3D game physics platform, so we decided a while back to schedule its replacement with Jolt Physics, the 3D game physics engine that was used to ship Horizon: Zero Dawn. We still have a bit more optimization work and fine-grained testing to do, but everything appears to be working much more efficiently and smoothly with the new integration -

image

Additional changes -

  • Changed ImNui template to be more amenable to its form factor's particulars.
  • Implicit fix for #925.
  • Cleaned up dead portion of 2d render API.
  • Working on joint breaking code.
  • Attempting to get collision mask code working properly.

Full Changelog: v17.11.0...v18.0.0

Spine 2D integration plus various fixes!

24 Dec 00:00
Compare
Choose a tag to compare

The big hullaballoo this release is the integration of the Spine 2D animation system -

image

The only caveat with this integration is that it doesn't respect Nu's functional undo / redo system in some ways because it's inherently imperative and we haven't taken the time to figure out if or how we need to mitigate that in #922.

If you have an existing Nu project, you'll need to add this line to its .fsproj file -

<ProjectReference Include="..\..\Nu\Nu.Spine\Nu.Spine.csproj" />

...and if you wish to use the new Spine functionality, add the json and skel entries to your AssetGraph.nuag like so -

[[Assets Assets/Default [bmp png psd ttf skel json] [PsdToPng] [Render2d]]

...and atlas like so -

[Assets Assets/Default [nuentity nugroup tsx tmx atlas bin] [] []]]]]

...and finally, be sure to copy over the new Default assets files to your project's Assets/Default folder as described here -

https://github.com/bryanedds/Nu/wiki/Updating-User%E2%80%90Created-Project-Assets-on-Engine-Updates

Additional changes -

  • Quick font rendering regression on window resize fix.
  • Made font reload failure fatal due to inability to having to unconditional font deletion
  • Integrated Spine skeleton animation system.
  • Fixed unit tests.
  • Fixed unintended interaction with view manipulator when dragging 2D entities.

Full Changelog: v17.10.0...v17.11.0

(Finally) Implemented Run-Time Resolution Changes + Threading Fixes

18 Dec 22:25
Compare
Choose a tag to compare

So this got put off for quite a while, being implemented in bits and pieces over the years - #50

This was a pretty complicated thing to do given how much variation you can get between platforms and the fact that its representation requires the use of global mutable variables that just perfectly go against Nu's architectural thrust.

Additionally, recent stability issues due to the new SemaphoreSlim-based renderer threading model have been addressed by effectively going back to the old volatile flags + spin yields threading model. It may not make as optimal utilization of the OS's scheduling resources, but at least it does hang itself when the window is minimized or cause 'random' hangs in the Visual Studio debugger.

Finally, during the refactoring process that enabled fixing #50, a few constants were refactored, resulting in VirtualScalar being renamed to DisplayScalar in your program's App.config file.

Finally, we've exposed support for public discussion in this github repository, with which a discussion for this release will be provided in case of any comments or questions!

Full Changelog: v17.9.0...v17.10.0

ImGui update and fixes.

12 Dec 23:53
Compare
Choose a tag to compare

The bulk of this release revolves around updating ImGui to its latest version, thus enabling us to fix several ImGui-related issues.

If you have an existing Nu project, you'll need to do the following -

  1. Removed the existing Twizzle ImGui nuget packages from your project.
  2. Add the Twizzle.ImGui-Bundle.NET 1.91.5.1 nuget package to your project.
  3. Run the appropriate PropagateAssets script to update your default assets.
  4. Delete imgui.ini from your project's output folders.
  5. Optionally add gltf and glb to your Render3d assets and bin to the any assets like so -
[[Default
  [[Assets Assets/Default [bmp png psd ttf] [PsdToPng] [Render2d]]
   [Assets Assets/Default [jpg jpeg tga tif tiff dds] [ConvertToDds] [Render3d]]
   [Assets Assets/Default [cbm fbx gltf glb dae obj mtl glsl raw] [] [Render3d]]
   [Assets Assets/Default [wav ogg mp3] [] [Audio]]
   [Assets Assets/Default [nueffect nuscript csv] [] [Symbol]]
   [Assets Assets/Default [nuentity nugroup tsx tmx bin] [] []]]]]

See this wiki for more detail - https://github.com/bryanedds/Nu/wiki/Updating-User%E2%80%90Created-Project-Assets-on-Engine-Updates

Additional changes -

  • Fixed #915 [by using a frame-based texture id blacklist.]
  • Added height map-specific naming conventions for non-compression.
  • Better log reports when encountering mismatched terrain resolution images
  • Better doc comment for FeelerFacet.
  • Made Presence into a struct type for efficiency and got rid of its Type properties (which are now auto-available in F# via Is properties).
  • ImGui update.
  • Enabled mixed mode debugging for better ImGui debugging.
  • ImGui delta time population improvement.
  • ImGui layout clean-up.
  • Addressed #862
  • Fixed #854
  • Goes far enough to fix the primary issues with #815
  • Fixed #910
  • Fixed #892
  • Exposed ImGui debug log feature.
  • Implemented CastShadow property.
  • Exposed gltf support.
  • Clear log as menu and quick command in Gaia.
  • Implemented #888
  • Dummied out fix for #832 in order to partly solve #918