Unity is a cross-platform game development application, with tools for creating scripted and interactive 3D spaces with game mechanics and rules, that obey programmable laws of physics. It has a plugin (ProBuilder) that enables users to rapidly build game environments from scratch, with drag and drop shape placement, intersection and extrusion tools. It’s possible to create entire spaces inside the tool.
Models can also be imported from other tools, photogrammetric scans and archives or Unity’s built in asset store – which means that SketchUp or Blender can be used for fast spatial modelling, or outdoor spaces can be assembled using prefabricated pieces. The asset store also enables users to also download scripts, sound effects, UI elements and so on. However, like other professional level development platforms (like Photoshop, Logic) there are layers of control. So, although it is possible to quickly develop Unity games with off-the-shelf scripts, assets and controls, it’s also possible to programme with C++ – a sophisticated programming language. Finished game environments can be exported to a variety of platforms including VR headsets. I used Unity to develop several environments, including a large gallery space and a game level prototype, with ProBuilder. The main goal was to evaluate the difference between the build tools in SketchUp and Unity.
Feelings
Using both Unity and Unreal Engine, which I also evaluated, I initially felt overwhelmed. Even though I have experience with the constituent parts (asset stores, coding, 3D spatial design tools, deployment platforms) – having them all in one place, with versioning and plug-ins to enhance functionality made Unity feel bloated. Still Unity is the simpler of the two and boasts integration with several tools that are compatible with a VR journalism workflow.
Concentrating on one task at a time, and using custom workspaces, I developed methods that made sense. In particular, I was able to envisage combining photogrammetry with level design.
Evaluation
One of the main challenges in switching to Unity for environment building was learning new ways of modelling—some of which felt counterintuitive after SketchUp’s easy workflow and, particularly, extrusion tools. In ProBuilder, it’s possible to create walls in a way similar to SketchUp by “looping” through them and then extruding the face.
However, solid walls are also a hangover from an architectural approach to modelling. Working with Unity reveals that working with game engines is more like set building, where all that matters is what the camera can see… The set of Monica’s apartment in Friends or the apartment in Rope. Neither is a real apartment with real walls. They are stage flats, with backdrops showing through windows, for example. It is an interior set. Similarly, we don’t need to build architecturally complete maps (and, in VR, the metaphor of interiors for room spaces is more apt).
I spent a long time developing a building method that felt satisfying, building architecturally complete spaces, when that is not what the medium requires.
Application
Undoubtedly, Unity will be the platform I build VR experiences on from the end of this project onwards. Of course, I will bring all the knowledge I learned in creating content for other platforms, including photogrammetric and architectural workflows. But Unity is a dedicated 3D-level building and programming tool that matches all requirements. However, for deployment, I will be looking at spatial.io or VRChat.
Conclusions
Unity’s learning curve is that of any other sophisticated development tool – and I did not have the time (or the plan) to fully explore all of its capabilities alongside everything else I was doing on this project. However, I have used it for building gallery environments and rudimentary game levels – and conclude that it will be central to future projects.