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.

# Animation

absm editor

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.

anim editor

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.

# Documentation

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.

# Other

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 error messages.

# 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-template now prints a detailed error message when some of it steps fails (kudos to @lenscas (opens new window))
  • Give a warning message in fyrox-template when trying to create a project with one of reserved Rust keywords (kudos to @EggShark (opens new window))
  • Fixed Animation::rewind method - it was setting playback position to zero, instead of beginning of the animation's time slice.
  • Fixed Animation::remove_tracks method - 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 Animation
  • Removed Scene::remove_node method - it is not needed anymore since it recently became just a simple alias to the Graph::remove_node.
  • Rename NodeTrait::clean_up -> NodeTrait::on_removed_from_graph to 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 Graph

# Support

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)).

Also, you can help by fixing one of the "good first issues" (opens new window), adding a desired feature to the engine, or making a contribution to the book (opens new window)