The Flatbuffer refactor was a high priority ticket to get rid of JSON, our current biggest performance bottleneck, and replace it with something much more efficient both in terms of memory and CPU. (In short, our terrible performance on Meta Quest is attributable to JSON decoding, which due to JSON's dynamic nature is really hard to fix).
The Flatbuffer approach might still be possible, but it doesn't feel like the correct approach anymore. Alloverse is designed to have a flexible set of interactions and components, but flatbuffers are very heavily tailored to doing schemas at compile time. The fallback is flexbuffers, but then you lose the power of schemas.
It might be viable to use ProtoBuf instead. It has schemas, but also allows dynamic fields if configured correctly. It also has arena allocation, which might be an acceptable replacement
Prerequisites
Main work
Nice to haves
Funding
The Flatbuffer refactor was a high priority ticket to get rid of JSON, our current biggest performance bottleneck, and replace it with something much more efficient both in terms of memory and CPU. (In short, our terrible performance on Meta Quest is attributable to JSON decoding, which due to JSON's dynamic nature is really hard to fix).
The Flatbuffer approach might still be possible, but it doesn't feel like the correct approach anymore. Alloverse is designed to have a flexible set of interactions and components, but flatbuffers are very heavily tailored to doing schemas at compile time. The fallback is flexbuffers, but then you lose the power of schemas.
It might be viable to use ProtoBuf instead. It has schemas, but also allows dynamic fields if configured correctly. It also has arena allocation, which might be an acceptable replacement
Prerequisites
flatbufferbranch that isn't strictly flatbuffer related, since that branch will never be mergedMain work
Nice to haves
Funding