IssueRaiser

Rework core data model implementation

### Is your feature request related to a problem? Please describe. FrooxEngine's data model is one of the most powerful features, upon which nearly everything else is built. It provides implicit synchronization and persistence, with very little effort, giving Resonite it's highly dynamic and collaborative nature. However currently this comes with certain costs, as some common usage patterns end up causing significant amount of overhead. Notably any behaviors that are continuously changing the data model (such as IK or Dynamic Bones) have their changes explicitly tracked every single frame. The implementation of the data model has also been done in a way that makes it easier to reason about the data model function, but has significant performance and memory overheads and poor cache locality. There is significant overhead associated with every field on a component for example, both during initialization and runtime. Lastly, the data model still has some limitations and specifics for particular type of application - a 3D game engine application. Its versatility and use cases go beyond that, but those are harder to leverage with current implementation. ### Describe the solution you'd like I've been working on a design for a new fresh implementation that will resolve the above problems and provide a foundation for many subsequent engine optimizations and expansions. There are many things that come to this design to describe in detail here, but here is a quick summary: - D

Posted by Frooxius on Nov 15, 2023, 7:46 PM

Tags

Related issues

Raise real-world problems, find people facing the same issue, and discuss solutions.2,000 issues0 comments

github (Software)

Rework core data model implementation

FrooxiusNov 15, 2023, 7:46 PM

### Is your feature request related to a problem? Please describe. FrooxEngine's data model is one of the most powerful features, upon which nearly everything else is built. It provides implicit synchronization and persistence, with very little effort, giving Resonite it's highly dynamic and collaborative nature. However currently this comes with certain costs, as some common usage patterns end up causing significant amount of overhead. Notably any behaviors that are continuously changing the data model (such as IK or Dynamic Bones) have their changes explicitly tracked every single frame. The implementation of the data model has also been done in a way that makes it easier to reason about the data model function, but has significant performance and memory overheads and poor cache locality. There is significant overhead associated with every field on a component for example, both during initialization and runtime. Lastly, the data model still has some limitations and specifics for particular type of application - a 3D game engine application. Its versatility and use cases go beyond that, but those are harder to leverage with current implementation. ### Describe the solution you'd like I've been working on a design for a new fresh implementation that will resolve the above problems and provide a foundation for many subsequent engine optimizations and expansions. There are many things that come to this design to describe in detail here, but here is a quick summary: - D

Comments (0)

No comments yet. Start the discussion.

Comment on this issue