Dev #06: Backend, UI and a Roadmap-Update

A lot has happend, but most of it in the invisible depths of the backend. None the less we want to show you what we are working on currently.

Dev #06: Current activities

For our upcoming second use case (see Dev #05) and the relating study the main work of the last months happened in the backend. Focusing on the creation of robust methods to import and work with files at runtime, grouping and nesting these objects into figments and environments and deploying this over the network is no small task, which is why we want to make sure everything is working as expected before building user facing methods. In a total opposite, we sure need to spend time on how users will interact with Figments.nrw, which is why work on a general interface design has started, beginning with the main menu users see first when starting the application. We took the opportunity to transition to Unity’s UI Toolkit for this, as it happens to be … at least different to creating user interfaces in Unity’s “traditional” way. We hope Unity continues to improve on this, as we think UI Toolkit to be more suited for our needs currently.

Updates to our Roadmap

Vorschaubild der Roadmap mit diversen Items zu aktuellen Arbeiten im Projekt
Preview of our Roadmap

After changing our internal processes at the start of the year and subsequently having to remove the old roadmap, we are now comfortable in sharing our next steps in developing Figments.nrw. For the upcoming quarterly terms we collated issues we are currently working on and plan to work on. We took the opportunity to formulate our main goals as well, so feel free to take a look!

Towards a uniform User Experience

Up until a few weeks ago we used a relatively simple placeholder as our start menu. As some things simply are easier done in desktop mode, for example copying and pasting urls are creating custom settings to use in vr, we used this menu for most of everything “not VR”. In keeping this approach we thought about on how to present this information to our future users and as such came up with a preliminary design for this menu, including resuable UI components. Starting the application in virtual reality (or as an observer in desktop mode) is still just one click away, but now it is far easier to set custom avatars and define which servers to connect for example. Especially the settings section will be expanded upon in the future to allow for further customization (e.g. enabling study tools with advanced tracking).

Creating the backbone of robust authoring tools

Please excuse us, but we are still working on a visualization for our backend components 🙂
Behind the scenes a lot has changed in the code base of Figments.nrw, as a major restructuring happened to compartmentalize methods into different core components. This allows us to have everything related to one major topic (e.g. networking, authoring) in one place while simultaneously reducing cross component dependencies. Currently we use the following cores, but will update these as needed:
  • FileIO: Loading and instancing of objects from local or networked sources (e.g. WebDAV)
  • Input: XR and Desktop input actions as needed by Unity’s input system
  • Interaction: XR and Desktop interactions for object manipulation and environment navigation (in the broadest sense, as this relates to everything a user can do)
  • Network: Handling player synchronisation and server orchestration, networking of loaded objects and environments and everything else that’s fun relating to netcode 😛
  • Player: Everything regarding character controllers, avatars and user specific data
  • State: Players and objects can exist in different states, e.g. an object can be in the grabbed state while a user holds it or a player can be in an annotation state while using the 3d brush annotation tool
  • Utilities: Helpers and everything the other cores may need
Over the course of the last month we also updated to the latest LTS version of Unity (2021.3.5f as of the writing of this post), updated the ReadyPlayer.me Avatar System, and refactored / maintained a lot of the code to squash a lot of bugs.

Table of Contents