Over the past few years I’ve heard mixed reviews of Unity. Some said it was a terrible, slow beginner’s tool and others really sang its praises. I think that by joining the party late I’ve skipped many of the bugs and odd quirks that narked some people as so far I’m having a great time. The user interface is intuitive, the code makes sense and for speed of development I don’t think anything can beat it.
I’m entirely accustomed to pure code projects as opposed to using graphical tools. Coming from a mixed Flash/C++ background I have experienced both sides and I usually prefer the code based approach. Graphical development environments seemed to get in my way with options buried in long lists or they would hide functionality in an attempt to appeal to the average user. Unity however seems to provide a good balance of accessible controls and flexibility. I could completely bypass the UI and do almost everything in code but I found myself using the UI more and more. I especially love the way coded references to objects can be set by dragging the object over the desired parameter in the component list.
The entity-component model is something that I’ve been adapting to since we began using Flambé and I really like it. I think the rationale behind breaking code down into smaller reusable components that can be applied to any object just makes sense. Two completely unrelated objects can share the same functionality without having to extend the same class and with minimal code duplication. Components become like building blocks; I want a car so I add a 3D car model, a physics block, a steering code block, etc. This code re-usability works even better with the variables exposed in the Unity editor as I can write the car steering code once and, by adjusting some parameters in the UI, reuse it to drive trucks and perhaps bikes without writing additional code.
I also like how much Unity gives you built in to the engine: Physics, a level editor, an animation editor and much more. What is extremely impressive is how the UI blends all of this together into an almost drag and drop kind of approach. With little effort and some rudimentary Blender skills, I was able to create a simple 3D object and have it animated and jumping around a 3D plane with full physics in less than an hour. For an actual project this would obviously take much longer but from naught to something in that amount of time is impressive.
I’m having plenty of fun experimenting with Unity and I have yet to try any of the advanced features. If all goes as well as the first impressions, I think I will enjoy using Unity in our future projects.