Whilst Three.JS and WebGL could be used to develop my project, I felt it was important to research and weigh up all development options. In turn, arguably the best alternative to using Three.JS would be the Unity game engine.
WHAT IS UNITY?
Unity is a software package that enables users to develop 2D/3D experiences that are primarily games. It has become an industry leader in video game development and is a well-documented and stable platform. Users develop the games within the Unity software package and then export projects to the platform they desire.
- User interface
The major advantage of Unity is that it comes shipped with a straightforward graphical user interface. Developers can actively edit their projects and preview projects through the development interface. The process of developing and visualising the project could therefore potentially be much more efficient when compared to the likes of Three.JS.
- Imported models and textures
Like Three.JS, Unity supports the importing of models form 3D packages such as Autodesk Maya. In turn, all Unity requires is .fbx model files. These are automatically converted for use within the Unity game engine whilst also maintaining modelling textures too. This is a major advantage over Three.JS as no server settings or advanced shaders are needed to import the 3D files. What’s more, users can actively edit imported models within the Unity software and position these models accurately therefore resulting once again in a more streamlined development process.
- Export to WebGL
Unity allows users to export projects to a wide variety of packages including HTML5/WebGL. This enables Unity projects to effectively be embedded within a website. Moreover, Unity makes use of the high performance CPU technology that is included in WebGL therefore resulting in quicker loading time.
Unity projects include core analytics capabilities. This could prove highly useful within the user testing stages of my project in order to determine user behaviours and identify patterns. Moreover, CPU performance and application efficiency can also be analysed in order to create a more streamlined application and experience.
- Personal Experience
From a personal perspective I have had significant exposure to the Unity game engine both in academic and personal projects. Due to this familiarity I feel I could develop and deliver the EXPLORE:LDN project much quicker when compared to using Three.JS for instance. What’s more through using Unity, I could really push my knowledge to an advanced stage through this project.
- Native Support
A downside of Unity is that it does not hold the same native support as Three.JS. In order to export packages, a number of file conversions are required during the loading process that may result in a slightly reduced load speed when compared to other 3D browser technologies.
- Mobile devices
Support for mobile devices is potentially the largest downfall of the Unity package. Whilst Unity supports the exporting of WebGL packages, it lacks mobile compatibility. However, I personally feel that due to the highly interactive and visual nature of this project, the lack of mobile support would not be an issue, as the project would prove difficult to replicate on a mobile device. Moreover, as the application will be housed within a wider website, other features such as route planning, status updates and social media feeds will remain accessible.