Christian Montoya

My first foray into Flash

Note: this is likely to be a long post, and will include some insights on the current state of Facebook apps, social games, indie development, and the future of my company. Please take the time to read the whole thing… grab some popcorn if you need to!

The word "foray" has the connotation of entering enemy territory, which makes it a perfect descriptor for my entry into Flash/AS3 programming over the past month. For years I've avoided Flash for a few reasons; I didn't like the closed nature of the platform, the expensive and visuals-focused IDE, and I thought I could accomplish more interesting and noteworthy things working in the areas of Javascript and CSS. I actually did try learning Flash at a past job, but I was dealing with so much stress during my time there that I couldn't make heads or tails of the platform. It wasn't until late last July that I found myself digging through online tutorials, exploring Flash game libraries and engines, and hacking away in FlashDevelop as a new AS3 developer. There were a lot of things that led up to my decision to pick up Flash, and considering how I have avoided it over the years, I'd like to explain myself now.

In January I started my company, Mappdev, with my first product being Pop Answers, a game I developed over a year ago in PHP/Javascript/CSS with a healthy serving of AJAX. This game was just starting to pick up steam at the time, and through the following months it continued to grow, and I enjoyed the cushy lifestyle of an indie game developer who makes an acceptable living from one game on one platform. During that time I was rather consumed between maintaining the community around Pop Answers, adding new features to promote growth, and developing other applications in the hopes that I could shift my dependence away from a single basket of eggs. These applications were all different; some were games, some were not, some had user-generated content, some did not, some were on Facebook, one was on its own domain and dealt with Twitter. They all involved a lot of work and I thought there were good applications, but apparently they were all worthless because to this day none have taken off like Pop Answers did. There might be many different reasons for why this happened; I'm convinced that it was a combination of three:

  • The Facebook app ecosystem is not as easy to capitalize on as it was when it came out. Many users have sworn off apps altogether, while others are much more skeptical about any of the viral channels that apps use to reach new users. There is a lot more work that goes into growing an application now, and for an independent developer who can't afford advertising, there aren't many options.
  • There is a lot more competition on the platform now from large companies that produce high-quality applications which sell themselves. If you look at the current portfolio of Facebook games from companies like Playfish, Zynga, MetroGames or Activate, it becomes pretty obvious that anyone would be better off spending all their time playing the high-quality games these companies offer instead of just about anything I've managed to produce in the past year. It's painful for me to put my own work into perspective like this, but I know that the only reason Pop Answers has been so successful is that it's an original and unique idea coupled with user-generated content that keeps people coming back for more.
  • Which brings me to my third reason: my other ideas for apps just haven't been viral or compelling enough. This has been crushing for me, because I have spent a lot of time on these apps; Battle City, for example, is a project I worked on for almost an entire year, and it currently fetches only a couple hundred players.

I have a long list of ideas for great games, but many are concepts that I have not been able to pursue because I wouldn't be able to do them with CSS/Javascript alone. I knew that I would have to learn Flash eventually if I wanted to make any progress on my big list of ideas, and that's what brought me to where I am today. My first Flash game, which I am very proud to present, is here:

Click on the image to play it, or click here: Survive! on Kongregate. Though it's my first game, and I built it primarily to learn everything, it's a finished product that I think you'll enjoy. Now let me tell you a bit about the hair-pulling experiences I had developing it.

First, I tried a lot of frameworks and libraries to get started. I knew that I didn't want to just try writing everything from scratch, because that's not what I learned in my other game development experiences. I looked at projects like PushButtonEngine and Flixel, among others, and even tried building my own projects with them, but my experience was always the same… without decent tutorials or examples of how to do basic things, I couldn't make the leap from "Hello World" to "Awesome Game X." I was always stuck on simple things like setting up levels or changing screens. It was very frustrating. It wasn't until I found cheezeworld.com and the accompanying cheezeworld repository that I had a decent library with decent code examples to work with. All I really needed to do this first game was have a smart way to change screens in-code, and once I had that I was able to make a lot of progress.

As for actually building my game, I used FlashDevelop almost entirely and did all my interface work in code. The Adobe docs for AS3 were very helpful, as I used a lot of classes in my work (think TextField, TextFormat, SimpleButton, Shape, Transform, etc). It took a while to get font embedding to work, but for the most part, the actual game development was the easiest part, and in the end I realized that AS3 is a great language (and Flash is a great platform) for learning game development, and probably even programming in general. Compared to what I've seen in other languages (think Java, C, C++), AS3 is easy street. As long as you can write code that runs fast and doesn't eat memory, you're golden. In short, writing AS3 was one of the more fun experiences that I've had with programming.

So then came integrating with APIs. Mochi Media provides some really cool services, including a leaderboard service that I was quick to integrate in my game. As for putting my game on Facebook, this was really hard to do, and I didn't even bother trying to use the AS3 API offered by Adobe for Facebook, because the only examples I could find were tailored to desktop applications built with Flex, and they usually involved embedding your secret key in your SWF. So the end result is that my game uses Javascript to communicate with the server, and that's that.

So now you know about as much as I can type on the subject of learning Flash. Let's talk about the future of Mappdev. The truth is, I wouldn't have taken this time to learn a new platform if Pop Answers were still enjoying the success it had 3 months ago. Back in May, it was pushing 250,000 monthly active users, an impressive number for a one-man project. Throughout the summer, however, it began to show a strong decline, which I think is related to a few things:

  • Facebook's platform has become incredibly unreliable over the past months. Currently, their methods for sanitizing Javascript create errors in Safari 4 that make my game unplayable for a large number of users.
  • College students use Facebook less over the summer because they travel, and a decent portion of my user base is college students.
  • Pop Answers is now more than a year old, and that's a long time for an online game on any platform. Many people are just tired of playing!

The decline of Pop Answers, which is now hovering around 150 monthly active users, is further compounded by the decline in advertising revenues on Facebook, which is entirely due to their own policies, which have crippled ad networks and even caused some, like VideoEgg, to pull out completely. There was a time when I was seeing $1 CPMs on Facebook; now I'm lucky to see $0.30. That's just the kind of spit-in-your-face model that Facebook has followed with their platform policies, and I think it shows that I have to find other platforms fast. With these developments, and the lack of any other successful products from my PHP/Javascript/CSS work, it was clear that I needed to pick up Flash and start developing a different thread of game ideas, games that are fun to play, addictive, and offer instant gratification. Survive! may be a very simple little Flash game, it may have even been done before, but I think it's a lot more fun than most of the other games I've done. And as I start exploring more complex game mechanics with my future ideas, I think things will only get better.

So this brings me to new opportunities. I've uploaded Survive! to FlashGameLicense for starters, to see if I might get a decent bid on it, and if that doesn't work out, I will definitely submit it to sites like Kongregate, Newgrounds, and some other portals to see how it fares. I've been reading a lot about Flash game monetization lately, and while the usual consensus is that it's not easy and it rarely leads to the big bucks, I can at least say that it looks to be a lot more stable and predictable than trying to deal with a fickle platform like Facebook. Plus, there's still room in the Flash ecosystem for independent developers, and with some hard work, I think I can make a name for myself.

That all being said, it doesn't necessarily mean that I'm tied down to my independent venture entirely. I want to move more towards the "Game Producer" role with my career, and lately I've been thinking that I need to join a larger team at a big publisher to do that. Being on the east coast shuts out a lot of options, but I have my eye on one company in New York City that I think would be a good fit for me. I've already applied there, but I haven't heard back. Please hope that I do, because I would like to at least be considered for their role. Until then, I'm going to continue doing everything I can to bring Mappdev into the spotlight, and continue releasing enjoyable experiences for everyone. With that, all I ask is that you check out Survive!, and share it with your friends if you like it. Thanks in advance!

Thank you for reading • Published on August 19th, 2009 • Please take a moment to share this with your friends