Our first effort at KlickNation after becoming an Electronic Arts studio was to build a 3D game for Facebook using Unity3D and the newly released Flash export option. After some initial work on prototypes for the game, I was heavily focused on the UI design and implementation.
The RTS-like game was fully 3D, down to the menu options and buttons. Since I was working on the UI, I used NGUI, the only Flash-supporting GUI solution at the time. I ran into hysterically bad problems with NGUI, most of them stemming from its own implementation of 3D depth management. Even without the NGUI problems, the nature of social games calls for more menus and other 2D elements UI than a 3D game engine like Unity usually supports. I was constantly behind trying to implement all of the custom screens.
The experience wasn't all bad, however. Though I had briefly worked with Unity before, I really learned the engine's ins and outs, its strengths and weaknesses. I learned a lot of tricks and good practices for making C# code for Unity. I designed and partially implemented several very slick GUI ideas that sadly won't see the light of day for a while.
The game was canceled after several months of development due to feature creep and an overly optimistic schedule. Our code, art, and design were given to Mythic Studio to be re-developed as a mobile game. At the time of writing, the game has not yet been released. The promotional images hint to me that Mythic used some of our core design ideas and engineering architecture, but completely changed the graphics. Our graphics had a gritty, realistic feel, whereas Mythic's version uses a cartoony, cell shading-like style (which I personally prefer).
Implemented
- Several proof of concept prototypes
- 3D snap-to-edges indicators
- 2D gridding layout container
- Global event system
- Feature-complete event-firing mouse and keyboard input system for 3D space
- Non-modal tooltip-based UI with multiple layers
- Integration of 2D art into the HUD and UI
- Almost all GUI (2D and 2.5D)
- Other odds and ends