Why We Use Flash
Here at Wisdom of Jim Studios we use Adobe Flash as the platform for mmo game development for a number reasons. It might not be the #1 platform for creating a full website or creating banner advertisements for mobile phones, but in terms of 2D mmo browser games, Flash beats out the competition pretty easily. Here are some reasons why I see Adobe Flash as not just a viable option for this, but the best solution.
1) The Tools Are Awesome - The core programs in Adobe’s Creative Suite have been around for a while now, and they have gone through many, many versions. These programs have been perfected and improved over the years to the point where it’s such a pleasure to work in them (assuming you know how to actually use them). I can remember older versions of flash professional weould take forever to load up and would be crashing, corrupting files, and causing all kinds of problems. I'm happy to say I haven't experienced any of this in the new CC versions so be glad you are lucky enough to be getting started after these programs have matured to the point they are at now!
2) Incredible Reach - Flash player is so ubiquitous on the internet that you can be almost guaranteed people will be able to see and play your game with no effort after visiting the web page. According to Adobe, over 99% (more than 1 billion in total) of personal computers have flash player installed, and it's really easy for someone to just go to a website and play a game embedded in the browser. This is much preferred over of forms of distribution such as having the user download and install the game. It also allows you to embed the game into high traffic sites like Facebook and Kongregate. Although haters might say, "Yeah, but what about mobile browsers" and to that we say the same thing Adobe says, "What about them?". Sure they exists, but aren't mobile browsers more for looking up restaurant phone numbers than playing immersive games? At this point we are focused on desktop and laptop development, and for this Flash is #1.
3) Solid, OOP Programming Language - Another reason we use flash is because of the advanced Actionscript 3 programming language. This ECMA-standard, class-based language is powerful, structured, and much more manageable for large projects then something like HTML5. Adobe has really polished off this language and totally transformed it from the basic scripting language it once was to a performance powerhouse. Not only it is relatively bug-free and has had the kinks worked out, but it has really elegant syntax and API that just feels like you are writing poetry when it’s done right.
4) Powerful Animation & Graphics - The flash professional development tool started out as an animation program, and this comes through in the high-quality animations and effects you see in various flash games. Flash movie clips allow you to really add dynamic animations to your game that would be very hard to make without it. Part of the reason why flash is so great is that can really seamlessly integrate things from other Adobe programs such as graphics from Illustrator or Photoshop and more advanced animations from After Effects.
5) Excellent Documentation, API Reference, and Resources - The actionscript 3 Adobe documentation is on point, and I personally use the API a lot when learning a new library. Actionscript 3 is Adobe's baby, and they have put a ton of work into perfecting over the years with each new release of the flash player. At this point and Adobe finished threading, 3d, and other tough implementations, and now they are mainly working on improving the mobile API. To me this is great as I really don't like working on brand new, buggy and wonky development platforms. Actionscript 3 is pretty mature, and so your program should behave exactly how you expected to without many surprises if you are Krogland.
6) Vibrant Community - The vast amount of vast number of other flash developers out there in the world makes it easy to get help. There are tons and tons of other tutorials out on the internet. The vast number of developers using this platform means that you could post question or problem on forums (stack overflow, the official Adobe forum, etc), and there will be a pretty good chance someone will come along and give you the answer (or at least give you some direction).
7) Oodles of As3 Libraries - Not only are they there to help you with your problems, but other people are also helping you by providing you with libraries. Actionscript 3 is an extremely extensible language, and many if not all high-quality games use one or more external libraries. Some are open-source and some are require a license, but this freedom to build on top of the base flash platform has allowed people to really push the boundaries of what's possible on the internet. It allows you to incorporate a new set of API and functionality into your game or application in order to do needs to be done. Just imagine what our games would be like without the swc’s for Yahoo Games Network or Greensock tweening!
8) Yahoo Games Network - Formerly known as "Player.io", this platform is just awesome for building online mmo games. It's been proven to work quite well for many popular games, and it is just a blast to use. The api is so intuitive, and it's just a very well-made actionscript library. And the best part about all this is that they host the servers and NoSQL databases for you. For free! (well, until you have a ton of concurrent users). I really love YGN, and this is definitely a strong reason to consider building your game in actionscript.
1) The Tools Are Awesome - The core programs in Adobe’s Creative Suite have been around for a while now, and they have gone through many, many versions. These programs have been perfected and improved over the years to the point where it’s such a pleasure to work in them (assuming you know how to actually use them). I can remember older versions of flash professional weould take forever to load up and would be crashing, corrupting files, and causing all kinds of problems. I'm happy to say I haven't experienced any of this in the new CC versions so be glad you are lucky enough to be getting started after these programs have matured to the point they are at now!
2) Incredible Reach - Flash player is so ubiquitous on the internet that you can be almost guaranteed people will be able to see and play your game with no effort after visiting the web page. According to Adobe, over 99% (more than 1 billion in total) of personal computers have flash player installed, and it's really easy for someone to just go to a website and play a game embedded in the browser. This is much preferred over of forms of distribution such as having the user download and install the game. It also allows you to embed the game into high traffic sites like Facebook and Kongregate. Although haters might say, "Yeah, but what about mobile browsers" and to that we say the same thing Adobe says, "What about them?". Sure they exists, but aren't mobile browsers more for looking up restaurant phone numbers than playing immersive games? At this point we are focused on desktop and laptop development, and for this Flash is #1.
3) Solid, OOP Programming Language - Another reason we use flash is because of the advanced Actionscript 3 programming language. This ECMA-standard, class-based language is powerful, structured, and much more manageable for large projects then something like HTML5. Adobe has really polished off this language and totally transformed it from the basic scripting language it once was to a performance powerhouse. Not only it is relatively bug-free and has had the kinks worked out, but it has really elegant syntax and API that just feels like you are writing poetry when it’s done right.
4) Powerful Animation & Graphics - The flash professional development tool started out as an animation program, and this comes through in the high-quality animations and effects you see in various flash games. Flash movie clips allow you to really add dynamic animations to your game that would be very hard to make without it. Part of the reason why flash is so great is that can really seamlessly integrate things from other Adobe programs such as graphics from Illustrator or Photoshop and more advanced animations from After Effects.
5) Excellent Documentation, API Reference, and Resources - The actionscript 3 Adobe documentation is on point, and I personally use the API a lot when learning a new library. Actionscript 3 is Adobe's baby, and they have put a ton of work into perfecting over the years with each new release of the flash player. At this point and Adobe finished threading, 3d, and other tough implementations, and now they are mainly working on improving the mobile API. To me this is great as I really don't like working on brand new, buggy and wonky development platforms. Actionscript 3 is pretty mature, and so your program should behave exactly how you expected to without many surprises if you are Krogland.
6) Vibrant Community - The vast amount of vast number of other flash developers out there in the world makes it easy to get help. There are tons and tons of other tutorials out on the internet. The vast number of developers using this platform means that you could post question or problem on forums (stack overflow, the official Adobe forum, etc), and there will be a pretty good chance someone will come along and give you the answer (or at least give you some direction).
7) Oodles of As3 Libraries - Not only are they there to help you with your problems, but other people are also helping you by providing you with libraries. Actionscript 3 is an extremely extensible language, and many if not all high-quality games use one or more external libraries. Some are open-source and some are require a license, but this freedom to build on top of the base flash platform has allowed people to really push the boundaries of what's possible on the internet. It allows you to incorporate a new set of API and functionality into your game or application in order to do needs to be done. Just imagine what our games would be like without the swc’s for Yahoo Games Network or Greensock tweening!
8) Yahoo Games Network - Formerly known as "Player.io", this platform is just awesome for building online mmo games. It's been proven to work quite well for many popular games, and it is just a blast to use. The api is so intuitive, and it's just a very well-made actionscript library. And the best part about all this is that they host the servers and NoSQL databases for you. For free! (well, until you have a ton of concurrent users). I really love YGN, and this is definitely a strong reason to consider building your game in actionscript.
Notes from an Open Minded Developer
Well, now that you know I'm a giant Adobe fanboy it's only right that I acknowledge some other good development platforms and why I chose Flash over them for my current projects.
- Objective C / XCode
This is a great platform for creating apps. I have had a few opportunities to work with this platform, and it is really a nice platform. It has some interesting build in features like toggle buttons, date pickers, and everything has tthat native OS look and feel. There are also programs out there that can convert xcode projects to android apk although II have had less than successful experiences with this...
Being most experienced in browser game development, I decided not to go with xcode. since it is mobile only. Not only are phones a super weak gaming controller in my opinion, but you have extra barriers to deal with like varying screen sizes, different os's installed on users' phones, and rapidly changing systems and tools. Also, I am a bit of an anti-Apple guy. I realize they make great products (I still use my macbook pro that's like 4 years old) and have gone through a few Iphones, but as a company they are real assholes. They give very little support, overcharge for everything, and really try to suck money from anywhere and everywhere. They sometimes do things for their own self-interest at the expense of developers and user. Despite these negatives, the YGN server side platform is compatible with Objective-C, and I'd really like work with some other developers to put out an MMO IOS game sometime in the future.
- Unity
Unity is sometimes called the "3D Flash". Their API is actually eerily similar to actionscript 3, and I have only sparsely played around with it. I know some people who swear by Unity and like it even more than Flash. To be honest, I never really had any interest in 3D games. I really liked being able to just draw something in Flash Pro or Illustrator and use that right in a project. No offense, but many many Unity games are wacky, unfinished, and just look like polygon people walking around a polygon world. With that said, Unity is also compatible with the server side YGN platform, and I would surely be open to working on a Unity MMO game as long as I truly believe in it.
- C / C++
I felt that in any serious conversation of game development the C programming language at least deserves a mention. Although I have a lot of C# experience, control the display and user interface are things that I would not even know where to start. Like Unity, solid games require a ton of 3D modeling, something that takes hours and hours and hours to learn, let alone bust out tasks for a project plan. Unfortunately, the YGN server side code I love so much has no C or C++ implementation, and it doesn't seem like it's coming any time soon. So although I most likely won't be doing much development on this platform, I do respect it as a viable option for game development. Many blockbuster console games (and pc as well) were created with this, and I am sure there are API for TCP / UDP protocols for MMO games. There are usually teams of people working on these types of games though so I would not recommend and indie developer to start creating his next hit with it!
- Javascript
Javascript, aka the programming language that's "killing flash", has been really expanding it's reach across the internet. With the HTML5 specification certain things can be done "directly in the browser". In fact, many large sites like Soundcloud and Youtube that previously had a lot of the heavy lifting powered by actionscript have stripped out their flash components and replaced them with straight javascript. I personally have mixed feelings about javascript. I like that it works on ios devices, but it was originally created for much simpler things than it's being used for today. Many frameworks exist to try to give it some structure, but with things changing so often it's tough to stay on top of what people are actually using. A lack of strong typing, compile-time checking, and no intelli-sense features are all real turn-offs for developers trying to get into javascript.
- Typescript
This is a language that I am actually really excited about. It was created by microsoft, and it attempts to solve the issues that many OOP developers have with javascript. Typescript is basically strongly-typed javascript. You can even find typescript versions of popular js libraries on the definitely typed github repo (although this can make learning the api a bit confusing if you are going off of the js documentation). I have seen a few projects created successfully in typescript. It compiles down to javascript and runs just as expected in browsers. I've been experimenting a bit with Typescript on the side, and I'm definitely keeping my eye on this language.
- Objective C / XCode
This is a great platform for creating apps. I have had a few opportunities to work with this platform, and it is really a nice platform. It has some interesting build in features like toggle buttons, date pickers, and everything has tthat native OS look and feel. There are also programs out there that can convert xcode projects to android apk although II have had less than successful experiences with this...
Being most experienced in browser game development, I decided not to go with xcode. since it is mobile only. Not only are phones a super weak gaming controller in my opinion, but you have extra barriers to deal with like varying screen sizes, different os's installed on users' phones, and rapidly changing systems and tools. Also, I am a bit of an anti-Apple guy. I realize they make great products (I still use my macbook pro that's like 4 years old) and have gone through a few Iphones, but as a company they are real assholes. They give very little support, overcharge for everything, and really try to suck money from anywhere and everywhere. They sometimes do things for their own self-interest at the expense of developers and user. Despite these negatives, the YGN server side platform is compatible with Objective-C, and I'd really like work with some other developers to put out an MMO IOS game sometime in the future.
- Unity
Unity is sometimes called the "3D Flash". Their API is actually eerily similar to actionscript 3, and I have only sparsely played around with it. I know some people who swear by Unity and like it even more than Flash. To be honest, I never really had any interest in 3D games. I really liked being able to just draw something in Flash Pro or Illustrator and use that right in a project. No offense, but many many Unity games are wacky, unfinished, and just look like polygon people walking around a polygon world. With that said, Unity is also compatible with the server side YGN platform, and I would surely be open to working on a Unity MMO game as long as I truly believe in it.
- C / C++
I felt that in any serious conversation of game development the C programming language at least deserves a mention. Although I have a lot of C# experience, control the display and user interface are things that I would not even know where to start. Like Unity, solid games require a ton of 3D modeling, something that takes hours and hours and hours to learn, let alone bust out tasks for a project plan. Unfortunately, the YGN server side code I love so much has no C or C++ implementation, and it doesn't seem like it's coming any time soon. So although I most likely won't be doing much development on this platform, I do respect it as a viable option for game development. Many blockbuster console games (and pc as well) were created with this, and I am sure there are API for TCP / UDP protocols for MMO games. There are usually teams of people working on these types of games though so I would not recommend and indie developer to start creating his next hit with it!
- Javascript
Javascript, aka the programming language that's "killing flash", has been really expanding it's reach across the internet. With the HTML5 specification certain things can be done "directly in the browser". In fact, many large sites like Soundcloud and Youtube that previously had a lot of the heavy lifting powered by actionscript have stripped out their flash components and replaced them with straight javascript. I personally have mixed feelings about javascript. I like that it works on ios devices, but it was originally created for much simpler things than it's being used for today. Many frameworks exist to try to give it some structure, but with things changing so often it's tough to stay on top of what people are actually using. A lack of strong typing, compile-time checking, and no intelli-sense features are all real turn-offs for developers trying to get into javascript.
- Typescript
This is a language that I am actually really excited about. It was created by microsoft, and it attempts to solve the issues that many OOP developers have with javascript. Typescript is basically strongly-typed javascript. You can even find typescript versions of popular js libraries on the definitely typed github repo (although this can make learning the api a bit confusing if you are going off of the js documentation). I have seen a few projects created successfully in typescript. It compiles down to javascript and runs just as expected in browsers. I've been experimenting a bit with Typescript on the side, and I'm definitely keeping my eye on this language.