Programming, Unity → Two weeks with Unity: Flash what?
I’ve got most of my Flash work on hold at the moment, because I’m basically abandoning my own Flash game engine in favor of the upcoming PushButton Engine. I invested a lot of time, blood and sweat into my own engine and even built a nice editor. But, the friction of trying to push that forward while also trying to prototype new ideas is enormous–especially after using Unity.
I will detail my thoughts and experiences with PushButton Engine in a later post (I haven’t used it much, and it’s not quite production ready), but I can offload a huge amount of effort and leverage the work of a bunch of really smart people. But, I digress.
This post is about Unity. It’s been about two weeks since I started working with Unity. Because it’s a 3d engine and doesn’t use ActionScript, it had the effect of forcing me to learn more than just the Unity API and editor.
I’ve become a 3d modeler. Yes, I’ve bitten the bullet and learned about Blender. Turns out it’s a really nice tool, it’s free, and it’s a lot of fun! I haven’t animated anything yet, but that’s coming up real soon.
I have created several models during my learning stages (over the past few months in between everything else), and I think one day I will be decent at it. I’ll never be great, but I can probably model most of the stuff my small projects will require. Albeit, this is something that will require a lot of practice. I don’t expect much in the way of pleasing results for a while. But that won’t stop me from making new games.
I’ve learned C#. Unity uses Mono (an implementation of .NET), and I don’t like UnityScript (ECMA script, basically) because that’s how I roll. I prefer a verbose, strongly typed, manly language, and C# delivers. It wasn’t hard to learn since it’s close to C++, ActionScript, and Java, and I know all of those already. I did buy a book, though, for reference and some deeper learning as my Unity projects increase in complexity. Overall, C# has been fun, but not as fun as learning Blender.
Here’s how I would sum up my experience with Unity from a total noob standpoint:
- Realize that almost every core game engine system is already implemented: input, physics, collision detection, rendering, runtime game object management, editing tools, web connectivity, asset management, etc. It’s all there.
- Hit a few annoying oversights: font handling, lack of collision groups/filtering, a very minor particle system missing feature (rotation/spin). Realize that you can still do 99% of what you want to without developing a huge infrastructure of your own.
- Proceed directly to game logic programming. Do not mess with low level minutia at all, other than learning the API.
- Become joyous and explode with glee.
So, yeah. Basically, you just go straight to the fun parts!
I am working on a simple learning project which I will release soon, and I honestly think that if I had known how to model, how to code C#, how to use Unity’s API that I could have made this game in a few days, tops. The art and sound will be more time consuming than making the game itself!
This is such a huge change from Flash, especially when I was slogging away on my own engine, trying to get to a point where I could do what I am now doing in Unity. I just want to get the heck on with making a game. I’m not the kind of guy who enjoys low level system programming. Some coders like that stuff, and–bless their hearts–now I don’t have to.
All the hype is true. Unity is everything you’ve heard that it is.
I won’t totally abandon Flash (yet), but at this point Flash has specific, limited utility (2d games that need a specific look and games that require massive audience reach) whereas before I viewed it as obvious and clearly superior choice for web games. No more!
April 12th, 2009 at 5:31 pm
Flash works on Linux.
I’ll take cross-compatibility over anything else thanks.
April 13th, 2009 at 4:51 pm
Cool to hear your thoughts on PBE and Unity. I agree that Unity is a great piece of tech. Personally, I think ubiquity trumps capabilities, but there’s room for both in the world.
April 13th, 2009 at 7:17 pm
In general, I agree with you, Ben. But in specific, it depends on the project and its goals.
Sometimes you want maximum eyeballs, and sometimes Flash just can’t do certain things.
I would also point out other distribution platforms such as Facebook and iPhone that can give a game significant reach relative to revenue/ROI. (I have no plans to make an iPhone game, but I’m illustrating the point with that example.)
To be clear, I will not be bashing Flash or anything like that!
I still think Flash is great. I have just found Unity gets me straight to the “game” making part of making games more quickly than Flash. PBE will very likely improve that experience for me on the Flash side thanks to your outstanding efforts, but Unity is still going to get a major proportion of my attention for now.
So, yeah, I’m going to be your customer, too.
Thanks for commenting!