“Can I build a non-gaming application with Unity?” This question might seem simple to some but complex to others. In fact, many would wonder why this question is even relevant, after-all there are tons of frameworks that help you build non-gaming applications including flutter, react-native, Xcode, etc. If you have never heard of the Unity engine, I would describe it as a game engine and creation tool primarily targeted towards the creation of games (2D or 3D games). So many would wonder why anyone would want to use an engine that was primarily targeted towards game developers to build non-gaming apps. There are 4 main reasons I can think of why anyone would want to use Unity for Non-gaming application development.
- The application you are building makes use of some of Unity’s core features such as 3D graphics or physics simulation.
- You would like a “drag and drop” UI system where you do not need to write 5–10 lines of code just to describe what your text field or button should look like.
- You have several years experience using the Unity game engine and you therefore want to use your Unity engine skillset to build non-gaming apps.
- You can publish your apps to multiple platforms such as Windows, MacOS, Android, iOS, Xbox one, PS4, etc.
We know that game development is what attracts many people into the field of programming. After a couple of years developing games, lots of developers usually ask themselves if they can apply the C# and Unity skills that they have acquired over the years to a product that can be used for something serious in the real world outside entertainment. Sometimes, these feelings come from developers wanting to make impact in the real world, solve real world problems, or just transition out of the gaming industry to the mainstream tech industry where job security, better earnings and respect are more common for programmers, because for some reasons, some people just don’t consider game development to be a real job for grown-ups.
With the explosion in the demand of augmented reality and virtual reality as well as the rise of simulation software over the past decade, Unity engine now has the potential to become a popular tool for non-gaming apps. As an experienced Unity developer myself, with over 5 years of experience using the Unity engine, I would love to give my take on this topic as well as showcase some non-gaming projects I have built with Unity engine. Before I go on any further, I would like to state that Unity is not the best choice for all non-gaming apps. I am not recommending using Unity to build the next Microsoft Word or Microsoft Excel, or even apps like PDF converter. This is because these apps exploit very little (if any) features that the Unity engine has to offer.
Unity is not geared towards traditional apps, and because of this reason, lots of UI features are not present by default. Even simple UI features that you would normally take for granted, such as menu-bars and dialog boxes do not come “out of the box”. However Unity comes with some very good “building block” UI tools that we could use to craft any type of custom UI that may not be present by default and make it look native. I have been a big fan of Unity’s UI system and I am one of the few people who think it does not need any drastic change or improvement.
The major arguments that people raise against using Unity for non-gaming apps are:
- Non native user interface.
- Overkill for performance and battery usage.
- Output file size.
I want to surf on 3 non-gaming projects (“Food in 3D”, “CLUBASID”, and “Whatsapp Clone”) I have worked on using the Unity engine. You will see screenshots of these projects so that you will be able to judge the UI quality yourself, then I will explain performance challenges, battery drainage and executable file size output.
Food in 3D. This was the first non-gaming app I worked on using the Unity engine. This app is simply a demo restaurant menu, where the user can look at different restaurant dishes using augmented reality. You can describe this app as “Food Menu 2.0”. Look at the screenshots of the app below.
From the above images, I’m sure that more than a few people would agree that the UI of the app looks decent, so the other questions would be how good is the performance and what is the battery usage? Well, the battery usage was nothing to write home about. This is the kind of app that would drain your battery up, just like a game would. However, this is also not the kind of app one would usually spends hours on. The APK size was 145mb because of the highly-detailed 3D models and textures.
CLUBASID is a disease modelling software that aims to simulate the spread of infectious diseases within a populations group. It is a desktop application and it uses high-end visuals to format and represent data. It simulates different modes of transmission including droplets, aerosol, physical contacts and STIs. This app is very complex and I do not aim to discuss it in details in this article. However, I want to surf this app quickly and also point out certain “native-like” UI features present in this app. Below is a screenshot showing what CLUBASID looks like.
There are several “Native-Like” features I would like to highlight in this app which include Menu bars and “save dialog” window. These features are not present in Unity by default. This is because Unity engine is geared towards games and not traditional desktop apps. Below, are screenshots that highlight some of the “native-like” UI features.
The output file size for this app was 48MB which is not bad at all for a desktop app. As for the performance? Well, the performance is pretty good assuming you want to carry out simple simulation for a small population. If the population increases to tens of thousands or hundreds of thousands, then you’ll need a more powerful laptop. I would say that performance is not an issue, because after-all, this software is not aimed towards the general public, it is aimed at researchers, students and other people who are enthusiastic about learning how fast diseases can spread within a population. I would assume that these people should already prepare to have “high-spec” computers (assuming they want to simulate for a very large population).
Whatsapp Clone. Yes you read that right. Whatsapp clone was a little scrappy app I put together in matter of days to prove that not only can you build a chat app with Unity, but that you can also get seemingly “native” user interface, completely indistinguishable from the real one. For the backend, I built a small server side application using C#. Below are several screenshots of the application
We have finally debunked the claim that Unity’s UI system isn’t capable of delivering native looking UI. However battery drain is still an issue especially for mobile apps like this. Also output file size (34MB) is not really great for a chat app with just the most basic feature. For chatting apps like Whatsapp where people spend a lot of time on, battery usage is very important. And since we are not exploiting any Unity specific feature on here, then I would not recommend using Unity to build an app like Whatsapp. We do not want to release a basic chatting app of 34MB in size. So use Unity for your non gaming app if
- You are making a high-end 3D visual application (e.g. Architectural Visualisation).
- Your application uses augmented reality or virtual reality.
- Your application is doing some kind of simulation that would run on an update loop (even though it may not be physics simulation. e.g. CLUBASID).
- Your application uses the physics engine for physics simulation.