We are currently in the middle of a project for which we are using Unity 3D to quickly create a working prototype. We had wanted to use Unity for a while now because other tools felt too constrained. Now we finally have the opportunity to do so.
Other design companies and departments are also finding out about the benefits of Unity. I saw two jobs for Unity experts through my network in the past weeks as opposed to absolutely none before. IXDS were looking for a Unity expert and this week I saw that HERE have a permanent position for a Unity prototyper.
There are two main reasons why Unity is a great tool for iterative design.
First, Unity is a production quality tool in which you can prototype quickly. Unity will allow you to drop your assets into it and place them in a 2D/3D scene. Unity will take almost anything you throw at it and if not you can find a library for it (for example see this workflow by Zach Gage). If you add some behaviours to these objects, you can then quickly have something that is interactive. These behaviours can be programmed fully but Unity is aimed foremost at non-programmers. Finally you can publish your project with a single action to a mobile device, desktop or website. There are simply no other tools that support this workflow and are this mature.
Second, the fact that the editor and the engine are within the same application enable things that are otherwise impossible. In Unity you can declare any property of an object to be public. Unity will then automatically generate a control in the inspector which you can use to tweak this property. You can then run your application in the editor using the play button and tweak the value while it is running. In the GIF above (from this tutorial) you can see somebody playing around with the speed of a car. This ‘live-coding’ capability is one of the most important features of Unity.
During almost every project we have done we wanted to be able to tweak variables of a running application. When you want to do playful design, you need to fine-tune things to make your game or app feel just right. Currently the only way to do this is through a difficult and time consuming edit-compile-run-test cycle. Xcode has some ways to expose variables but they are difficult to set up and share within a team. Unity has this as a key feature.
This being said, actually getting started in Unity isn’t easy. There are lots of ways to do everything which doesn’t make it very straight forward. But the documentation has improved massively since the last time we tried it and the basic version is now free. There are also many powerful libraries built on top of Unity for people creating games. It seems like a matter of time until there will also be libraries and assets for people making other things.
Unity is one of the most popular engines for doing game development right now. Larger companies picking it up for design prototyping is an interesting development. It shows the need for having tools that allow designers and programmers to be able to prototype together. One of the few other tools out there that facilitates such an integrated prototyping workflow is the increasingly popular Framer. I look forward to seeing more tools for better iterative design like these emerge.