Unity 3: Loving it.

Published 2011-09-15 on Farid Zakaria's Blog

Unity 3

Unity 3 is a game development engine. It helps abstract a lot of the repetitive grunt work of game design by abstracting it into a reusable engine.

Is it Unity 3 or Unity 3D? I don't really care because I'm loving it. Using a fully fledged and amazing game engine seemed to have been the logical choice. At first I started with building my own simple 2D Game engine, moving forward to the XNA framework (one extra level of abstraction), to finally using a complete game engine. I have had previous experience with a few different types of game engines through my co-op experience within the video games industry, and Unity is one my most enjoyable experiences.

I followed the excellent video tutorials found here by 3D Buzz. The tutorials cover creating the classic 2D Space Shooter. Following the video, I'm creating a simple 3D Pong game and although it is very basic it actually exposes you to a lot of the features of the engine.

You can test it out here (Click to Start):
[WP_UnityObject altimage=""/code/Unity/Pong.png" src="/code/Unity/FirstGame.unity3d"/]

Reasons why I loved it

Personal preference is what divides me from you, and our preference for game engines will likely differ. Personally I enjoy the '1 complete application' game engine, that bundles all systems of the engine into a single application (i.e. animation editor, map editor, playing the game) as opposed to a collection of tools that when combined together become a game engine. Each type has their own pros & cons however through my co-op experiences at Digital Extremes (single game engine application) and Capcom Vancouver (uses a collection of tools) I got to experience both and even then I had preferred the single application architecture.

To be honest, Unity 3 is very similar in functionality, architecture and feel to the proprietary game engine developed by Digital Extremes

I haven't yet gone head first into Unity (although I'd say I have both feet wet), I'm amazed at how well they have incorporated data driven design and the component based architecture into the engine. You hear/read a lot of explanations of both design paradigms and see how many people misunderstand it and possibly butcher it. Unity decouples everything beatifully and presents it to you in a very elegant manner.

You truly cannot understand/comprehend the power of data driven and component based design until you're working with an engine that does it right. Exposing variables via scripts (C# or Javascript) that can be changed dynamically through the engine, lets you analyze and test games in ways that makes all others seem obsolete.

I plan on writing some future posts on advanced features I hope to learn/pickup playing with Unity 3.