Skip to content
Zicklag edited this page Jan 9, 2023 · 2 revisions

Why Create Another ECS?

Note: For an in-depth overview see Why Create an ECS?.

  1. For networking support
    • Our networking is built on the rollback model
    • Rollback networking requires shapshot/restore and determinism.
    • In Bevy:
      • Snapshot/Restore can only work partially in Bevy, which leads to pitfalls, especially for new contributors.
      • Determinism requires un-ergonomic workarounds in Bevy, and also creates hard to network sync bugs when you accidentally use a non-deterministic feature in Bevy.
    • In Bones:
      • Snapshot/Restore is trivial on the complete ECS world.
      • Deterministic by default.
  2. Modding support
    • Bevy is difficult to create a powerful scripting API to.
    • Bones ECS has a very simple API that can be easily tied scripts.

Does Bones Replace Bevy?

No.

Bones sits on top of Bevy for rendering, audio playback, and other system-related things.

The Bones ECS world is where the core game logic resides. Bevy and the Bevy ECS sit outside of that, reading from the Bones ECS world, what core game wants to render, what sound effects it wants to play, etc., and displaying that to the user.

Will Fishfolk Games Other than Jumpy Use Bones?

If Bones proves itself with Jumpy then we do plan on using it for other FishFolk games. The hope is that we can put the common elements of our games into the bones framework, so that each new game doesn't have to re-invent all of the pieces common to all the games.

Things like UI, networking, controller inputs, settings, etc. should be hopefully shared, so that we can focus on what makes each game unique and fun.

Clone this wiki locally