A framework I build during my internship at SeriousVR enabling an improved workflow during VR application development.
The developed framework was to contain most used assets across the existing projects, with the ability to expand this collection of assets as required by future projects. Aside from this, the framework had to provide a new way of building applications, so that projects can be build using a more uniformly shared approach.
For the development of the framework numerous requirements were set, with some more important than others, but on a global note they were all very clear and therefore easy to work towards.
- Modularity; This is a very important aspect of the framework, as application build using the framework should not fail were 1 module to be removed. This meant that hard dependencies were something to be avoided where ever possible.
- Quick response to new trends; The framework was to also provide the ability of quickly responding to new trends in the market (i.e. VR gloves), when these would pop up. For these trends only minor changes, if any, to the framework should be required, but overall the framework should simply be compatible with these systems.
- Reducing development time; This was perhaps the most important aspect of the framework, and was not just achieved using clever techniques, but also through the use of assisting in setup by automating wherever possible. Aside from this, the framework provides a set of tooling that are both simple to use, and easy to learn. Implementing all these items whilst keeping the framework lightweight and highly versatile was an interesting challenge, but paid off greatly.
The framework had to be build with several restrictive limitations in mind, but none of these limitations affected the effectivity of the final result in a negative way.
- Due to the high level of modularity that the framework required, it was deemed very unfeasible to have hard dependencies upon third party libraries. This meant that wherever these libraries were required, a solution had to be found that would allow the framework to continue operating if the library dropped away. One of the biggest issues that came from this approach was the compatibility between the framework and said third party libraries, as their supplied APIs could not be directly approached.
- Due to automation in terms of configuration of projects, the framework required a fair bit of additional logic to handle situations (Such as managing highlight and physics states) that would otherwise require a great deal of manual labor.
- The framework had to avoid depending too much on the physics engine in the Unity3D engine, as it proved not reliable enough for VR applications. This meant that a fair bit of logic had to be written to facilitate these elements in a different way, although plenty of (stable) dependencies on the physics engine were unavoidable, or deemed stable enough for usage, and are therefore still present in the framework.
The company SeriousVR, ended up extremely happy with the developed framework, as it managed to cater to all their needs, and allowed them to solve many issues they encountered before.
- Development time dropped
- Clarity in projects improved
- Asset re-usability improved
- Project maintainability improved