microsoft / mixed-reality-extension-sdk

The Mixed Reality Extension SDK enables developers to build 3D world extensions for AltspaceVR, using Node.JS.
MIT License
142 stars 61 forks source link

Add concept of a "suspended" MRE #622

Open stevenvergenz opened 4 years ago

stevenvergenz commented 4 years ago

@tombuMS and I had this discussion today. It would be useful for low-power devices to have a state between an MRE being fully shutdown, and an MRE fully running, simulating physics, playing animations and sounds, etc.. We envision "suspended" as the result if the runtime connected to an app, fully synced, then disconnected without cleaning up any actors/assets/etc..

Overall, the runtime state diagram could look like this:

Joined - Identify the user to the server, allow interaction, permissions, etc.
    ^^ IMREApp.UserJoin() - IMREApp.UserLeave() vv
Connected - Client connects to server, syncs, and fully simulates the app.
    ^^ IMREApp.Startup() - IMREApp.Shutdown() vv
Stopped - App is not running. Placeholder/icon only.
    vv IMREApp.Suspend() - IMREApp.Shutdown() ^^
Suspended - Client connects to server, syncs, then disconnects without cleaning up.
tombuMS commented 4 years ago

Thanks for creating this. I was thinking about taking a stab at a design around the state transitions of the app.

sorenhan commented 4 years ago

Can't believe we didn't have an issue for this already. We discussed this a long time ago but never wrote it up. Thank you.