Skip to content

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Repository files navigation

Prototype for an out-of-process bevy editor framework.

Basic idea is to have the editor spawn a game process compiled with an integration plugin and communicate using ipc.

Rendering is done by the game process, which is embedded in the editor using a shared texture extracted by the integration plugin.

Separete from the main world of the game process is a "editor world", which is synchronized with the editor process' main world. This world is used to host game-specific editor extensions: custom panels, visualizations, controls, etc. Only entities with SyncEntity marker are synchronized, and only changed components (powered by bevy's change detection) are sent over. Events can be registered for replication, in which case if an EntityEvent is triggered on a replicated entity, it is sent over to the other side.

Mostly accurate architecture diagram

TODO

General

  • Clean up deps
  • Write docs

External texture

  • Rewrite linux vulkan implementation
  • Add vulkan implementation for windows
  • Add metal implementation for macos
  • Clean up ViewportTargets implementation (both editor side and game side)

Remote app

  • Add RemoteAppEvent<Event> to allow targeting/receive events from secondary processes Added RemoteAppTrigger instead
  • Add a "don't run user startup systems" mode to allow using the project for rendering scenes instead of playing immediately
  • Lock framerate to editor's framerate / add synchronization
  • Improve system toggling
  • Add observer toggling
  • Allow inspecting subapps
  • Make game spawning non-blocking

World sync

  • Remove set_changed_by
  • Mutate changed components instead of reinserting them
  • Map targets for replicated events on remote side instead of local side
  • Break loops of replicated events
  • Split ChangedEntities
  • Replace SyncChangedEntities event with IpcMsg
  • Encode type_path as index and de/serialize components to an arena instead of individual Vec's
  • Support synchronizing to multiple processes
  • Serialize component data to shared memory instead of sending it over ipc
  • Improve replicate_event* by replicating entity observers instead of using global observers
  • Restore SyncEntities after process restart whenever possible

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages