The Game Changer: Why I switched from Flash to Unity3D

I’ve seen the light! Hallelujah! The light is bright. The light is calling me. The light is called Unity, and, well, it’s jaw droppingly fantastic.

unityLogo

But before I step into to these warm, bright rays, and hopefully bring other aspiring game developers with me, I want to give you a bit of background into the foggy shroud that’s surrounded me lately. I’m a game developer, by trade, by vocation – it’s in my blood. I designed games as a kid. I designed games as a teenager. I’m 36 now and I have flecks of grey in my beard, and I’m a game designer. I’ll be a game designer as a cranky old man.

2004 was a great year. For me, it was the beginning of the golden age of online games – the era of Flash. And what a technology Flash was. It was an amazing bit of software. You could draw your artwork in it, animate it, then code scripts to turn it into fully fledged games that were no bigger in filesize then your average JPEG file. I dedicated myself to Flash, first with Actionscript 1, through 2 and finally the mighty Actionscript 3. I got very good at Flash. I released several hundred games while working full time as a game designer for a small startup company in Sydney.

I even had a smash hit online game called Swords and Sandals, which I’ve blogged about before. Flash just seemed to be going from strength to strength.

Then, disaster struck. Steve Jobs, the snake oils salesman extraordinaire, then CEO of Apple, wrote his now infamous Thoughts On Flash piece. Which much of it was flat out lies and propaganda, it basically spelled the death of Flash on the web. In the public’s eyes, Flash had become a dirty word. Adobe, seemingly ashamed of the amazing piece of technology they had, gutted their Flash team and scattered their platform evangelists like Lee Brimelow and Thibault Imbert to other platforms. Adobe even sipped on the Apple kool-aid and started trumpeting HTML5 in favour of their own highly superior tech.

 

jobsFlash2

 

This, mind you, was 5 years ago. The great irony was that in the meantime, Flash had morphed into something hugely powerful , the cross platform juggernaut Adobe AIR. Using new graphics acceleration and the fantastic Starling Framework by Gamua’s Daniel Sperl, AIR could now build 60fps (that’s fast!) games for the web, the desktop, iOS and Android, all from one code base.

But hang on, hang on, you say… I thought this blog post was about Unity, not Flash?

The problem here, was that nobody cared about Flash/AIR. Despite its many virtues, Adobe has remained virtually silent about it, and as a result nobody even knows what it’s capable of. Despite, somewhat incredulously, the language behind Flash, Actionscript, rising to #14 on the Tiobe Index ( a popularity chart for languages) there is scant work out there for game developers using AIR. Certainly here in Australia anyway, where the truly sub-par HTML5 continues to be the flavour of the month despite an underwhelming offering and a horrible workflow.

There came a point in my professional career where I found myself on the outer. Flash has become a great big white elephant. I’ve learnt it for a decade, but nobody wants my services. It’s a good life lesson actually, don’t put all your eggs in one basket. You hear this all the time, and programming is no different. It’s important to have a few strings to your bow, to know a few languages. I resisted for a long time, because I’m good at Flash, I know exactly how it works, I know it’s limitations and I can build things rapidly. But I’ve lost faith in Adobe and I’m sick of being an outcast.

This, dear readers ( and thank you for your infinite patience) is where Unity comes in.

Funny enough, I remember seeing some early Unity demos from about 6 years ago and thinking “Wow. That’s some great tech. If that really takes off, it’ll be a game changer.” . Unity was an all-in-one game development environment that promised out-of-the-box physics, lighting, 3D.

Here’s the thing: Unity is dedicated to games. Dedicated. They are innovative, rapid in their updates and highly engaging with their community. Hell, you can tweet Unity’s CEO David Helgason and there’s a good chance he will respond to you. That’s impressive.

It was a chance meeting with a game developer I’ve long admired, Terry Paton, that got it started. Terry had long been a Flash games evangelist, making hundreds of games over the years and countless tutorials. He was outspoken, passionate and creative with the technology. Now, it just so happened that Terry and I worked together briefly last year. Terry had jumped ship to Unity, but was brought in to do some Flash/AIR work. I remember his frustration – how backwards and unwieldy the technology seemed to him. We’d have lunchtime chats about Unity – every day he said this to me:

“Ollie, I’m going to convert you to Unity one day.”

He’d fire up Unity and make a quick prototype, some spheres bouncing down a path, fully 3D with integrated physics. All in about 5 minutes. He could rotate a camera and change the perspective of the game, he could add lights to the scene and it just seemed to me to be so… gamelike. So much fun. So intuitive. And I realised that day, this is what I should be learning. I owe a great deal to Terry’s passion, his enthusiasm and his unshaking belief. Game development should be fun.

illustratedHead_400x400
Mind you, it took me a whole year for this advice to sink in. For many of us are at heart creatures of habit – it can be very hard stepping out of your comfort zone. I built a couple more games in AIR. I left my job and released my first independent release, Captain Fishblock, to defeaning silence thunderous applause. I’ve dabbled in HTML5, and found it completely unsatisfactory for anything but the simplest games. I don’t want to have to compromise my ideas because a technology isn’t up to the task. Terry told me he just wanted to make games – out of the box. Not having to create everything from scratch. Creating our own blitting classes, sound managers, texture packers, and so on – it’s tedious work that is a necessary evil in most languages – as easy as Flash/actionscript is to use, there’s still a barrier for starting game developers that is frankly just too high.

And there Unity was, whispering like a seductive temptress.

unityscreens

After some soul searching on a trip to Europe over the last 3 weeks, I’ve decided to dedicate myself to building a game full time over the coming year. It’s a risky endeavour, financially. The app store is a lottery, you just have no idea if you’ll have any kind of success. I believe I’ve got the talent to do it and I want to give it a shot – a real shot. I believe Unity is the right tech for the job. And here’s why.

  • It’s visual – which is a great thing for me. I’m self taught as a coder and I come to things from a visual perspective. You can see your sprites, textures, sounds in the Unity IDE. You can set up animations visually and drag and drop their relationships to each other. You can see your characters and environments on the screen in the IDE, move them around like you would actors on a stage.
  • It’s customisable. You can move around panels as you see fit, drop plugins like pathfinding, particle engines and so on, and use them straight away.
  • It’s rapid and intuitive. You press play on your game and can tinker with variables like “jump power” in real time. Every item in your game has a relationship to another visually – it’s not hidden away under thousands of lines of obtuse code – unless you want it to be.
  • You can build 2D and 3D games in it. Prior to Unity 4.3, this was more a big drawback to Unity – it wasn’t really designed for 2D games, the strength of Flash – but moving forward, it seems easier and easier to build them in Unity, and you have the option to use 3D elements in it if you want. ( throw in a 3D background maybe, or skew your game on a weird angle, no problem! )
  • It’s scalable. You want to build a game for the web? You want to build a game for XBOX or Nintendo? You can do that too ( though that is going to cost you – more on this in a second )
  • It has a future. This is the most important point. The industry is backing it. There are plenty of big studios using Unity for game development, more and more each day – just check Gamasutra for Unity jobs.

So, are there any downsides to this miracle bit of software? Sure.

  • It’s free for indie developers, but there’s a bunch of advanced features in the Unity Pro version that will cost you thousands of dollars if you want to implement them. I don’t see this as a big barrier to entry though – most of those features are related to big studio development and you likely won’t need them until you’re successful.
  • It can get expensive, even if you don’t go for the pro option. There’s an Asset Store which allows you to buy models, textures, bits of script, for your game. Individually these are cheap, $5 here, $30 there, but that can add up fast. Relative to how long it would take you to build/code your own, it’s actually pretty reasonable – but compared to other languages, there seems to be less stuff open sourced and given away to the public for free. Especially compared to Flash, where almost everything you wanted to do, someone had the code and was happy to give it to you free of charge.
  • It can be daunting. There’s a lot of tabs, windows, panels. Panels within panels, within panels. Checkboxes. You have to learn C# if you’re serious ( though you can code in JavaScript if you really desire) . This isn’t a bad thing necessarily. If you’ve come from an Actionscript background, you’ll find the differences to be pretty minimal. MonoDevelop ( the coding IDE behind Unity ) has code completion to make things easier for you.
  • It’s proprietary technology. I was bitten pretty hard by the Apple/Adobe fallout, and Adobe’s perplexing reluctance to champion the amazing AIR technology has left me cold. Is there a chance Unity might pull a swift one on developers and , say, make their software exorbitantly expensive all of a sudden? Sure there is , but I don’t believe they would. In my opinion they are a company that is on the side of the developer, not against them.

As for Flash/AIR – don’t get me wrong. I love it, I will continue to love it and champion it. For building cross platform apps, I strongly believe it’s peerless. I hope it comes back into fashion. I’d love to be able to use my decade of experience in it for work.

I’ve only been using Unity for under a week now. I’ve tinkered around, followed a few tutorials. I have a little animated character running left, right, jumping. With physics. It’s fun. It’s exciting. I feel like a rookie, but I’m learning very rapidly. I’ve no doubt it will get infinitely more challenging and complex, but I welcome that. I encourage any and all game developers who are intimated by it or hesitant, to just jump in. The water is fine, if rather deep!

Unity_dummyProject

 

For the first time in a long time, I feel excited about game development again. And,at the heart of things, I feel I am where I want to be.

Cheers, Oliver Joyce

 3926 people have viewed this page.