D2: Design Document

Platform Selection

  1. Programming Languages:
    • Unity primarily uses C# for scripting, making it one of the only options to choose from. C# is friendlier with a faster learning process than C++. Also, C# is well suited for common use and software architecture implementation at scale which requires maintenance when the app grows.
    • Alternatively, Unreal Engine primarily uses C++ for scripting. The implementation of C++ in Unreal relies heavily on Unreal-specific code that does not translate to general C++ usage.
      • Blueprint the primary way to assemble game logic in Unreal, especially for beginners.  With C++ providing anything that cannot be accomplished by Blueprint. Learning Bluerprint does not translate to C++.
  2. Frontend Technologies:
    • Unity is a game engine with an nice beginner-friendly interface and cross-platform support which inlcudes VR. There are lots of resources provided by unity including asset stores and tutorials that can aid in development. The engine supports various VR platform such as Oculus Rift, HTC Vive, Windows Mixed Reality, Meta Quest, and more.
    • Unreal Engine Stands out for its industry leading graphics and rendering techniques. Its good choice for creating VR environment and making it a stunning experience. Its learning curve is steep and may require high computational power for its advanced features. Blueprint visual scripting can help mitigate this for those without programming experience/ It also has marketplace that can provide asstes and aid in development.
    • https://xrbootcamp.com/unity-vs-unreal-engine-for-xr-development/
  3. Backend Technologies:
    • Since our system primarily works within the VR headset without a traditional client-server architecture, backend technologies are not relevant in this context.
  4. Database Components:
    • As the system is initially based on manually selected prompts, we do not need a database component at the stage of development. The project in this stage will be directly working within the applications file architecture, and if necessary the OS file system.
  5. Hardware/OS Considerations:
    • The project is specifically tailored for the Meta Quest 3 VR headset, ensuring compatibility with its hardware and operating system. A possible future consideration is to have this project be integratable with any type of VR headset.

Considering client requirements and project specifications, we chose Unity as the development platform for creating the virtual environment aligns well with our goals. It offers one of the best support for VR development, including lots of plugins and libraries that are already made for the Meta Quest 3. Not only that the game engine is much easier to learn and use for beginners compared to Unreal Engine. The advance rendering is not really necessary for the features we are trying to provide users. Additionally, by using the Meta Quest 3 VR headset we can ensure that the patient gets the best experience with the latest technology and one of the best hand tracking controls.

Architecture Diagram: