This is a WIP draft!
The goal here is to allow users to implement interfaces that expose certain logic to allow plugins to attach themselves to either existing systems or add new additional systems to the engine.
Plugins are published on npm and self register to the engine.json. Once they are registered they will be built into the release & also on server startup self register into the main game loop both on the client & server if relevant.
Plugins need to indicated wether they are client only / server only or both.
WIP Installation process
npm i my-custom-plugin
You get asked if you want to add it to engine.json plugins section.
Assets
We need a structure for shipping assets but it can differ from the final release. For example if a plugin ships multiple prefabs and you only pull a certain prefab into the editor then only that should end up being shipped in the final release assets folder. We need some functionality on the server process to rearrange configs and based on that build the release.