Prototype/resource upload hygiene

Admin uploads are really cool, but they have multiple technical issues:

  • You cannot upload a prototype twice without possibly causing replay issues and other buggyness. Ideally this would be supported to “bugfix” content.
  • We currently require server restarts after content has been uploaded, to avoid causing technical issues. A system for graceful unloading would be nice.

Improving this system could also enable other cool things, such as dynamic prototype creation for gameplay features. Not sure this makes sense for upstreams, but I’ve seen this idea floated for downstreams.

The question is how to achieve this. I’m currently floating around in my head that we probably need to be able to namespace prototypes somehow, and then have prototype ID references be looked up in a namespace-aware way. So if I write toSpawn: SomeEntityPrototype, the serializer will replace that string with upload_123!SomeEntityPrototype or something at runtime. A similar system would be needed for resources.