Latios Framework 0.10 is Officially Here
Link
This is a feature release targeting Entities 1.2.1 using ENTITY_STORE_V1. Feature releases contain breaking changes. If you would like to upgrade from [0.9.4], please read the Upgrade Guide. There are only a small number of breaking changes in this release, and most projects will be unaffected.
Wait! 1.2.1?
After reassessing the current state of things, I realized that switching to this version using ENTITY_STORE_V1 was a very low risk to me personally, and only a high risk to the community and official support efforts. I decided to give the Latios Framework Discord community a choice, I could either stay on 1.1.0-pre.3, or I could upgrade, and if anything on Unity’s end broke, I would not provide any official support or remedies. The decision was unanimous. So far, the editor seems to be stable. Builds? Good luck!
Overall Highlights
I had three goals for this release:
- Make Psyshock viable for more use cases
- Cross a bunch of small features off Kinemation’s roadmap
- Keep up with Fribur on the Calligraphics/TextMeshDOTS collab
Core Highlights
Core got a new AddComponentsCommandBuffer. The main motivation for this was to handle cleanup components more elegantly.
Scene management now supports loading some subscenes asynchronously. You can choose this on a per-subscene basis.
Core also saw a few additional low-level changes and improvements to its collections, which the rest of the framework can leverage to great effect. If you used UnsafeParallelBlockList in the past, you can find new alignment guarantees and a new indexed variant. There’s also a new ThreadStackAllocator which can recycle per-thread temporary allocations made multiple times within a job.
QVVS Transforms Highlights
GameObjectEntity should support Unity Transforms now. It is not installed by default, but the new Unity Transforms bootstraps allow you to enable it by uncommenting a couple lines.
Psyshock Physics Highlights
Psyshock saw major updates.
First, FindPairs got a new optimization that can result in up to 5X improvements! You may need to retune your CollisionLayerSettings to have more subdivisions as a result.
Second, CollisionLayer has been changed to be backed by NativeLists instead of NativeArrays. This removes a sync point when using enabled components in EntityQueries, and also allows you to build layers from body lists populated in jobs.
Third, Psyshock has a new sibling to FindPairs named ForEachPair, which can leverage the new PairStream native container to cache arbitrary data with found pairs and iterate over them multiple times later. The mechanism is extremely flexible, cache friendly, parallel, and safer than NativeStream.
Lastly, I have extracted many of the core rigid body algorithms from Unity Physics and made them available in the UnitySim class. When combined with Psyshock’s existing tools, it is now possible to build your own rigid body simulation tailored to your project’s needs. Psyshock has finally delivered on this promise! And if you don’t need simulation, there’s no performance penalty.
Myri Audio Highlights
I have made progress on effect stacks, but they are not ready yet.
Kinemation Highlights
Kinemation got a bunch of small, but exciting additions.
Dual quaternion skinning is here! You can choose whether to use it or linear blend skinning on a per-mesh basis.
There’s a new LOD algorithm with LOD Crossfade support! The algorithm is also much faster than the previous algorithm. This is a breaking change if you do anything with LODs in code. However, if you just used the LOD Group in authoring, it should all just work.
Animation sampling masks are here. AclUnity will now automatically accumulate weights per bone, and the weights no longer need to add up to 1 anymore. You can implement both additive and override layers.
In baking, you can now request bone names for optimized skeleton to help bake bone indices for faster runtime bone manipulation.
There’s now a runtime skeleton animation clip blob generation API. More APIs like this can be added upon request.
Calligraphics Highlights
Thanks to Fribur, Calligraphics received a major update. Many of these improvements can also be found in TextMeshDOTS on Fribur’s GitHub, if you just want text rendering compatible with Entities Graphics.
Fribur’s big contribution was overhauling the glyph generator to support a plethora of rich text tags. You can perform all kinds of inline manipulations now.
Fribur also improved the shader. Bold fonts and other features should work now!
The vertical layouter has been upgraded to support dynamic line heights and allows for anchoring against any of the font lines.
Multi-font support is here. You can change fonts using rich text tags.
There’s a new rendering mode called GPU-Resident Text which caches the generated glyphs on the GPU. There are tradeoffs between this and the default rendering mode, but you can pick on a per-entity basis.
What’s Next?
I have yet to decide what will be included in 0.11 development. Despite being the most-requested feature, I think IK is unlikely, given the lack of community involvement in that area. But there are a few areas I am heavily considering.
NetCode is back on the table. There’s real potential for me to make this more integrated with the framework. I also believe I can greatly reduce the main thread costs of Kinemation and build a rigid body physics simulation that has extremely low latency for physics prediction use cases. All of these efforts would likely set the stage for a future framework-exclusive networking stack that provides more flexibility and easier development than NetCode. I have ideas.
Calligraphics is a likely candidate for further improvement. Not just in text, but I’d also like to explore vector graphics capabilities, both for debugging and in-game world-space shapes.
Myri Effect Stacks is at the point where I just need to hard commit to it, and make Myri much more viable as an audio solution.
Terrain, environment, and VFX are on my radar. I’m skeptical I will be able to deliver something good without artist direction. But we’ll see I guess.
I may also do some prototyping with character controllers (specifically FPS-style) and other common gameplay mechanics to help identify gaps in the APIs. However, I’m not sure yet under what license I would release these kinds of developments (if I release them at all), since I really don’t want inexperienced and/or noisy developers around these prototypes.
Lastly, there’s a chance I may explore the world of soft body physics. These could also very easily fall into the prototype category, with restrictions on release.
Of course we can’t forget any curveballs Unity throws at us, especially with 1.3 around the corner.
Anyways, since this is a feature release, I anticipate a few bugs to have slipped through. Make sure to join the Discord and ask questions, report bugs, suggest new features, share tips, showcase your work, and discuss random framework or DOTS things. I may not be taking paid jobs, but I am open to collaboration for mutual benefit.
Enjoy the new release!