This Week in Fyrox #8
Fyrox is a Rust game engine with lots of out-of-box game-ready features and a full-featured editor. Fourth week of December was mostly dedicated to polishing of the existing functionality and adding some improvements to the editor and other tools.
The previous TWiF #7 (opens new window) mentioned that animation blending state machines are currently in testing and here's how the machine on the screenshot above works in the game:
At this point the MVP of both ABSM and animation editor is finished, and it is now possible to create/edit/blend any animations. Animation system still lacks blend spaces, dopesheet mode for the animation editor, but the lack of the does not prevent you from making animations.
Animation editor is now allows you to enable/disable animations. This could be useful if you want an animation to be disabled by default. This is sometimes needed when you have one-shot animations controlled from code.
# Customizable Graph Update Pipeline
The engine now has a way to enable/disable steps of graph update pipeline, this includes: 3d physics, 2d physics, sound. Also it is now possible to set a list of nodes for update, and when set - only the nodes from the list will be updated. This customization mainly needed for the editor. The editor needs to have an ability to preview the result of updating scene nodes (this includes preview for animations, particle systems, etc) and the changes made in the preview mode must never sneak into the edited scene.
# An Ability to Enable/Disable Scene Nodes
The new feature allows you to completely disable scene nodes. Disabled scene nodes won't be updated and rendered, their scripts won't be updated too. Disabling some of the nodes ( rigid bodies, colliders, sound sources) will result in less memory consumption, mainly because backend entities that backs the nodes will be removed. This feature could be used for optimizations. For example you can disable distant scene nodes, so they won't consume precious CPU and GPU resources.
Animation system is now fully documented; a few usage examples were added. The code examples are quite large, and it is advised to use the editor all the time to create animations and animation blending state machines.
fyrox-template (a small project generator) is now checks for reserved Rust keywords before
trying to create a project. Previously an attempt to generate a project with a keyword as a
name would result in crash in the tool. Also, the tool now prints much more user-friendly
# What's next?
Before releasing the next version of the engine (0.29), the book must be extended with a few chapters related to the reworked animation system. As usual there's a need in extensive testing of the new functionality.
# Full List of Changes in Random Order
- Added docs for animation and animation blending state machine entities
fyrox-templatenow prints a detailed error message when some of it steps fails (kudos to @lenscas (opens new window))
- Give a warning message in
fyrox-templatewhen trying to create a project with one of reserved Rust keywords (kudos to @EggShark (opens new window))
Animation::rewindmethod - it was setting playback position to zero, instead of beginning of the animation's time slice.
Animation::remove_tracksmethod - is was resetting animation's time slice.
- Added an ability to enable/disable animations in the animation editor
- Added an ability to enable/disable scene nodes
- Minimal support for headless mode (dedicated) for server-side of network games (kudos to @martin-t (opens new window))
- Rename various structs and methods to have less confusing names.
- Removed unused methods of
Scene::remove_nodemethod - it is not needed anymore since it recently became just a simple alias to the
NodeTrait::on_removed_from_graphto remove confusion
- Fixed nodes validation in the editor
- Added validation for rigid bodies to check if they have at least one collider.
- Fixed colorization in the world viewer
- Ability to disable steps of update pipeline of the
If you want to support the development of the project, click one of the links below. Preferable way is to use Boosty (opens new window) - this way the money will be available for the development immediately. Alternatively you can can use Patreon (opens new window), but in this case the money will be on-hold for unknown period of time (details are here (opens new window)).