There’s been a lot of talk in the Flash community lately about Unity and the way it is transforming 3D on the web. Having read a lot about it, played a few demos and seen that Unity Indie is now available for free, I just had to take a closer look. So what follows are my first impressions of the game engine and development environment, a quick look at some of the best Unity projects out there at the moment, and an overview of the resources available to new developers, especially those like me, who are from an ActionScript background.
From Flash to Unity
Working with Unity is a lot like developing in the Flash IDE, in fact there are so many similarities that as a Flash developer it’s very easy to understand the basics. Lots of comparisons have been drawn between the basic building blocks in both environments: the Unity Project Panel is just like the Library in Flash, the Hierarchy is your Timeline, the Unity GameObject is a bit like the base DisplayObject in Flash, while Prefabs can be instantiated at runtime just like Linked MovieClips, even the default scripting language looks very familiar.
What quickly becomes apparent though, is that aside from the obvious performance advantage that Unity brings to 3D graphics, this is also an engine that was built mainly for making games with rather than a platform for everything from 2D vector animations to video playback. To make a game in Flash – even with something as advanced as the PushButtonEngine – is still a major piece of work, with Unity everything is there at your fingertips: 3D renderer, shaders, particle effects, a physics engine, standardized player input, an optimized game loop, sound management… the list goes on. All of this means that you can focus on creating the actual game itself, rather than trying to build an engine from scratch or spend ages working out how to combine some existing code libraries or frameworks to make a game in Flash.
Some of the coolest games and demos
Right now there seems to be so many projects being made in Unity, with great new examples appearing almost daily on the web. Alongside Unity’s own impressive Far Cry style tech demo I would have to say that my favorite right now has to be the HelloRacer demo from Carlos Ulloa of HelloEnjoy and Papervision3D. The quality of the graphics and the realism and responsiveness of the handling is just amazing.
Another Unity project from people with a background in the Flash development scene is Infrared5’s Star Wars Trench Run game on the iPhone. This is one example that really shows what is possible with Unity on a mobile platform, the game runs blindingly fast and has great graphics and a cool tilt-based control system.
Another great Unity developer is Flashbang Studios, they have put out some really unique Unity powered games on their Blurst games site including the classic Off-Road Velociraptor Safari, but my favorite of theirs right now has to be Blush. With some great ambient music and lovely underwater graphics, it’s a chill out game that reminds me a lot of FlOw by thatgamecompany.
But Unity isn’t just for iPhone and the web, the engine’s flexibility when it comes to target platforms means that you can also publish for the desktop and even the Wii (although I think that’s only if you happen to be a registered Nintendo developer). With the company now hiring Xbox and PlayStation programmers there are even rumors that you will soon be able to publish to HD consoles too.
So who’s using Unity for console game development right now? Well, Max and the Magic Marker from Press Play is one such game for the Wii, and for me it has to be the most impressive showcase of Unity I’ve seen so far, with a level of professional polish that easily puts it alongside Lostwinds and World of Goo as one of the best looking games on WiiWare. There is even a demo version on the game’s website that uses the Unity web player and is definitely worth checking out.
Beyond the core engine
The Unity website already does a great job of explaining the core features of the engine so I won’t repeat that here, but I would like to highlight two of my favorite extensions, both of which show how the core Unity engine can be built upon in very different ways.
The Locomotion system by Rune Skovbo Johansen adds high quality semi-procedural animation techniques to Unity. The framework blends your existing animation sequences and intelligently adjusts them to enable characters to convincingly navigate complex scenery such as stairs and uneven outdoor terrain. The results look very impressive and add a lot of depth and believability to the way your game characters interact with their environment.
The Detonator framework by Ben Throop allows you to easily create fantastic looking explosions, with particle effects, dynamic lighting and debris. All aspects of the explosions can be customised to create any number of unique effects and each one can be saved as a prefab for later use. Built on top of Unity’s standard particle system, these effects can even be plugged into your game’s physics engine so that they actually interact with other objects in the game environment.
Both packages are free to download from the Unity website and show just what’s possible beyond the core engine. The quality and usefulness of these frameworks really highlights that despite already being much more of a ready made games engine than Flash, there is just as much potential for highly specialised 3rd party plugins and code libraries for Unity as there is for Flash.
For what is still a relatively new platform, there are a lot of great resources out there to help you learn the engine. While Unity is often pitched as something that anyone can learn, I think any knowledge of Flash, or experience of other consumer focused game engines or level editors such as Torque, CryEngine, UnrealED or Hammer will give you a considerable advantage.
Alongside the usual online manual and scripting references on the Unity website, there are a stack of excellent official tutorial videos and even some sample projects. But if you are looking for a really well written introduction to the engine, then Will Goldstone’s Unity Game Development Essentials is the place to start. This book takes the form of one long tutorial, introducing all the most important features of the engine while guiding you through the creation of something similar to the Unity Island Demo. While the book is actually quite light on scripting, it really does explain the process of making games in Unity very clearly, and for that reason alone it is highly recommended.
A couple of other great resources that are worth a mention are the Unify Community Wiki and Unity Answers message board. The Wiki is a great source of code examples and project tutorials to help with learning the engine, whereas Answers is a great place to start if you get stuck on something in the middle of a project.
So after all that, what would I recommend for a Flash developer looking to get started with Unity? How about the following steps…
- Install Unity and watch the official intro videos, they do a great job of introducing the Unity editor.
- Download one of the official sample projects and have a look at how a Unity game is actually structured.
- Watch these Flash to Unity migration videos from Richard Hart, they really are an excellent introduction.
- Read Will Goldstone’s Unity Game Development Essentials book.
- Install Visual Studio Express for C#, it’s free, it now works with Unity projects and it will help with the final step on this list.
Hopefully this has been interesting reading. I’ve been working on a few Unity demos recently, so I’ll try and post the results here soon.