Preorder Estimated Availability Date. Your credit card will not be charged until the product is shipped. Estimated availability date is subject to change.Preorder Estimated Availability Date. Your credit card will not be charged until the product is ready to download. Estimated availability date is subject to change.

User level

Required products

Note: The primary target audience for this article is Flash designers, people new to the Flash runtimes, and business decision makers evaluating the Flash runtimes for game development. This article also includes useful information for experienced ActionScript developers looking to get into Flash game development. However, for game-specific advanced ActionScript programming techniques, I recommend Gary Rosenzweig's book ActionScript 3.0 Game Programming University.

Flash games—games created with or for the Adobe Flash runtimes—are everywhere. You can find them on game arcade sites such as Newgrounds.com, AddictingGames.com, and numerous others. There are dozens of game genres to choose from, including action, adventure, casino, puzzle, and role-playing, among others. The games are interactive, cross-browser, and cross-platform; users can play them on personal computers as well as mobile devices. They work great as standalone destinations, they make excellent additions to larger sites, and they can be embedded into the most popular social networks such as Facebook. Many people still do not know that using Adobe AIR technology, Flash games can be deployed on iOS devices through the Apple App Store. Top performers such as Alien Hominid and Line Rider have grown so popular that they have been ported from the Flash runtimes to consoles such as Nintendo Wii and Microsoft Xbox 360. Online casual games are booming in popularity and Adobe Flash technologies offer tools to create and deploy this great content.

For more than a decade, I have been designing and developing online games. I have collaborated on massive worlds with thousands of simultaneous users. At my start, there were many viable development platforms, including the powerful but difficult-to-use C++ platform. Over the years, the Flash technologies tools became easier to use and Adobe Flash Player evolved as well. Now Flash technology is the de facto environment for creating online 2D games. With the release of Adobe Creative Suite 5.5, the Flash community is moving compelling content to mobile phones, tablets, and Internet-enabled televisions. And with the release of Stage3D (formerly known as the Molehill APIs), the Flash runtimes may be the leading choice for online and mobile 3D gaming as well.

In this article, I will provide an overview of the potential in online gaming, showcase the capabilities of the Flash runtimes, and review the challenges and solutions for end-to-end game development.

Why Flash gaming?

The game industry has grown steadily for decades, and it has a very brighter future. But with so many gaming technologies, you may be wondering if Flash technologies are the right choice.

Games are serious business

Online gaming became popular in the 1990s. As computers have become more powerful and Internet access speeds have increased, the industry has grown significantly (see Figure 1).

Figure 1. Annual online game revenue in billions of U.S. dollars from 2006–2011. DFC Intelligence.

The online gaming market research company DFC Intelligence predicts even more increases for casual games in 2011:

30% of revenue will be casual games (as opposed to so-called hard-core games)

Approximately $3–5 billion of 2011 revenue will target online computer games, such as projects created with Flash technologies. Americans spent more than $3 billion in video game subscription fees last year. A report by market research firm Pike & Fischer estimates that Americans will spend $5 billion annually by 2015.

According to the Gartner research firm, global mobile gaming revenue from end-users increased by 19 percent from 2009 to surpass $5.6 billion in 2010. Juniper Research says mobile game revenues will surpass $11 billion globally by 2015 as in-game purchase overtakes pay-per-download monetization.

The mobile gaming trend also ushers in a return to the simple, addictive gameplay of 1980s Atari games. This is enabling lower-budget games created by individuals and small teams to be financially successful.

The business potential within computer and mobile game development is vast and growing dramatically.

Flash Player history

Flash Player is everywhere, but it's not the only game in town. Historically, when high performance was needed, online games were created with powerful technologies, including C++, Java, and Shockwave 3D—as well as Torque and Unity.

While game developers who target other plug-ins have to hope their users have the patience to download the necessary player, Flash runtimes developers can count on their users already having Flash Player. Adobe Flash Player is the world's most pervasive software, reaching 99% of Internet-enabled desktops in mature markets as well as a wide range of devices. More than 3 million developers and designers use Flash technologies to create, distribute, and monetize rich Internet applications and content across leading web and mobile platforms. With Adobe Creative Suite, developers can also count on smooth integration of art, sound, and code within one environment.

Flash Player 10 has more features than ever, and so too do the development environments, Flash Builder and Flash Professional. With each new release, they become more useful and easier to use. The versatility of the software has contributed to its speedy adoption in interactive agencies since the early 2000s. An artist illustrates game menus and background art using Flash Professional. An animator animates walk cycles, explosions, and whatever else is needed. A developer can code an entire project using Flash Builder or Flash Professional as well, easily integrating the native assets from colleagues. Of course, Photoshop, Illustrator, and other specialized tools are available for many roles as well, and because they are all part of Adobe Creative Suite, asset integration continues to be a snap.

Once only a playground for single-player experiences, Flash technology can now be used to create robust worlds with thousands of users. Since Flash Player 6, Flash has featured the socket connection required for persistent connections to the server. This type of connection allowed for few-on-few multiplayer gaming. The latest version of Flash Player has the needed power for massive multiplayer games; there is no longer a bottleneck on the client side. Flash Player 10 introduced peer to peer communication, which also opens up possibilities for multiplayer games.

Industry leader views

Michael Gold, CEO of the multiplayer game studio Electrotank, says, "With the ubiquity and performance of Flash Player, Flash is the de facto standard for browser-based games."

Omar Gonzalez, software architect at Almer/Blank, adds, "The Flash Platform makes gaming even easier because of the clean separation of the logic and the easily updatable audio/visual assets. It's unlike any other game development toolset."

Game fundamentals

This section covers the nuts and bolts of Flash technologies for games and the basics of video game theory.

Tools and runtimes

Before building a Flash game, you need to understand the options available for building it. Specifically, you'll want to have a firm grasp of which IDE, runtime, and server (if any) is right for each of your projects. The most straightforward way to get started is to use Flash Builder or Flash Professional to develop a single-player game (that is, one that does not need a real-time multiplayer server) that is published in the SWF file format and runs in Flash Player (the runtime) in your web browser.

As development teams mature, they may continue to use Adobe Flash Professional for asset creation and also use team-friendly tools such as Adobe Flash Builder that is optimized to enable you to publish content across desktops and a variety of devices.

Key components

Creating your first game is relatively straightforward. Armed with just Flash Builder or Flash Professional you can create a great game. The following are a few key components of a basic game:

Input: Input refers to how the user controls the game. Casual games are typically controlled with the mouse, the keyboard arrow keys, or both. On mobile devices, touch gestures are the most common input method, and Adobe AIR has robust touch support.

Sprites: These are the visual elements on screen, such as a MovieClip of a spaceship or a biplane in a flying game. Note that while flash.display.Sprite is indeed a Flash class, here sprite refers to the general video game concept of sprite.

Sounds: Authentic sounds accent important game play events (such as when a spaceship moves) to enhance the game play experience.

Collision detection: This is the code that senses when any two sprites touch on screen, which is crucial for most action-oriented games.

Game loop: This is a term sometimes used by game developers to describe the programming logic that controls the game experience. ActionScript is the programming language you use to execute the game loop in Flash games. In ActionScript 3.0, there are two ways of calling a function at specific intervals. The first approach is to use the Event.ENTER_FRAME event dispatched by interactive objects (InteractiveObject). The second approach is to use a timer. The ENTER_FRAME event approach is more common, and is best used for very frequently updates such as animation, other rendering updates, and artificial intelligence (AI) routines. A timer can behave in a similar way to an ENTER_FRAME event, but an event can be dispatched without being tied to the frame rate. Timer is best for periods of time that are several seconds or more in duration. Like other programming languages, ActionScript also provides numerous other techniques to accomplish the game loop, such as for and while loops. If you want to develop Flash games, you will need to learn ActionScript. See the Step 2: Develop section below to learn more about how to get started learning ActionScript.

Game development workflow

Individual developers and small teams proceed through the same basic steps when developing a new game:

Brainstorm. Back to the drawing board. Develop an idea for your game.

Develop. The bulk of your time is spent here. Combine your visual and audio assets with ActionScript 3.0.

Test and optimize. Review your progress. Test your game to be sure it's bug-free and fun to play. Improve the performance through optimization.

Distribute and monetize. Get your game into the hands of players, and make some money.

Use analytics. Study the results of user feedback and metrics such as game plays, duration of game play, and more. Improve on the game's weak points.

Update. Revisit steps 1, 2, 3, and 5 continually to polish your game and provide a better experience to the game players.

The following sections examine each of these topics in more depth.

Step 1: Brainstorm

A completed video game–polished in presentation and enjoyable to play–is more complex than it appears on the surface. Clever designers and developers hide the details and present a clear path between you and the fun. A successful game is a marriage between a great idea and great execution, or, put differently, between the creativity of the designers and solid technical skills of the developers. But where do these great ideas come from? How do you get started?

Each team may work differently to develop new ideas, but the basic process is as follows:

Come up with a game idea

Create a storyboard and the game world

Define your game in a game design document

Develop the idea

Sometimes I sit down to make a game and start brainstorming entirely new ideas, but much of the time I already have many ideas floating around in my head.

My game ideas come from everywhere and anywhere: big-budget console games, simple mobile games, real-world games and sports, movies, cartoons, books, conversations with friends, dreams, and nightmares. Since I'm in the business of making games I jot down ideas all the time. I recommend keeping a journal or notebook to capture new game concepts as they come to mind.

If you are like me, you have too many ideas for games! So the process becomes one of narrowing down the list and selecting one winning idea.

I find the most practical ideas for good games are those that mix something new and something borrowed. Perhaps you imagine a new look for a world and create a new character, but use game mechanics of a classic game such as Space Invaders, Frogger, or Pac-Man. I find that game players respond well to controlled surprise–part new and part familiar and comfortable.

How do you know the game will be fun? It's hard to know, but that intuition will come with experience. And even then it's not a perfect science. If you are new at the game-making process, start with something similar to a game you already know is fun to play. Then change the idea as you go to make it more personal and to give something fresh to game players.

Create a storyboard

During the storyboard process you begin to sketch out characters, game screens, game mechanics, and more. Game mechanics are the core set of rules that define what makes a game unique. A game features a variety of cooperating game mechanics (for example turns, keyboard input, risk and reward, limited player health, and so on).

During this stage, the idea is not to make pretty art yet (see Figure 2), it's just to visually communicate your ideas. This will be helpful to spawn new ideas and refine existing ones. It's OK during this stage for your idea to evolve and get bigger. Considering alternatives, options, multiple solutions, and various aspects of your game are all acceptable. Storyboards are also invaluable for team communication. Everyone should have a stake in this process of sharing ideas, not just the artists.

When creating the storyboard, it is a good idea to think about your game-playing audience. Sometimes your audience defines your game, and sometimes your game defines your audience. For me it's a bit of both. I am open to compromising aspects of my original game idea if I feel it will make the game more appealing or easier to play. It is important not to try to please everyone, but it's probably also important to you that your game is popular. So think carefully about each aspect of the game's art and gameplay.

As your game concept takes shape, add details to the game world too. Describe the challenges to the game player. Describe the rewards. Does your game have characters? What is the plot or story? What motivates the character to do what he does? Does the game player view the action from above or from the side? Does gravity exist in the game? Can the character(s) be injured and die? If so, how? It is not important that the game world be realistic but it should be causal; it should have a clear and consistent cause and effect that your audience can understand. The user will quickly build a conceptual vocabulary as they play your game and learn about the game world. They will begin to make assumptions. Embrace these assumptions to build a compelling experience.

Write the design document

The design document is like a movie script. This is the point in the process at which you begin to put restrictions on new ideas and decide definitively what the game will be. This is also a good time to make some hard decisions that may (for better or worse) affect the game.

Who is your target audience? Will they want that bright colored background or will they want something dark and moody? Are they experienced gamers with patience for difficult gameplay or casual gamers who want something easier?

What devices will you target? A big browser window or a small phone screen? Don't just replicate the experience across these devices. Consider the unique characteristics of each and customize the game experience.

What spoken languages will be included? How will the translation of the game be organized? What logos, art, menus, and other text will be affected? If the game will be localized into more than one language, what is your plan to accommodate them? Tackling this after the game has already been developed will be very difficult, so include this consideration in the design phase.

In a team development environment, the design document is especially important. Because it clearly lists all the final decisions regarding the game's visuals, game mechanics, and menus, it helps ensure all team members are on the same page during production. Some teams do not allow changes to the design document once it is complete, and others welcome change at key milestones during development.

During the planning and development process it's important to check back with your core concept. Is it fun? Does it appeal to the target audience? Does it fit the target device or devices? Be sure to solicit feedback on your idea from others, especially members of your target audience.

Considerations for developing successful Flash games

Regardless of how and why you are creating your game, it's likely that you will want your game to be fun to play and to be played by many gamers. A core consideration is to make a game that is easy to pick up and play. Users should be able to play your game immediately without a long and complicated setup. Consider having an interactive tutorial instead of a screen of text that tells users how to play the game.

According to Ira Willey, creator of the popular game portal AddictingGames.com, you'll attract players that are more likely to play your game repeatedly if you provide immersive game content and excellent performance while following these guidelines:

Choose a name that is immediately attractive and easy to remember.

Be original. Differentiate your game from other offerings to make it memorable.

Include social functionality to enable multiplayer gaming and remote interaction.

Find the balance between too easy and too frustrating to make the game challenging.

Include good sounds and effects; always include mute and volume control buttons.

Optimize games to reduce their file size and make them easy to download.

If your game includes registration functionality, include an option to play as a guest.

Consider enabling users to create and share levels to increase the breadth of your game.

Step 2: Develop

During production, an organic, iterative process will be really helpful. Often you won't know all the details of the game during the design phase. You may not know the final size of the art until some coding is done. You may learn that 10 enemies on screen are too many, so you will use 8. You won't know the difficulty settings until you play the game quite a bit. And you might realize that a sound effect you used is really annoying and needs to be changed. Be flexible and tweak the game concept as you go so you can make the best game possible.

The following are the basic steps to develop a game with Flash technology:

Start with a complete game design document. Include the game screen layouts and rules of play, and don't forget to make it fun.

Break up the game engine. Plan your game in small parts to make it more manageable.

Make small standalone demo projects. Prove out trickier parts separately such as input controls, physics, and trigonometry.

Create and gather assets. Art can be created in Flash Professional or other Creative Suite products, and sounds can be found online for little or no cost.

Construct the menus. Games often feature screens outside of the game itself such as the introduction, instructions, and Game Over screen.

Play. Test the game as you go to be sure it's enjoyable and challenging.

A critical part of the game development process is the actual coding. As I mentioned earlier, ActionScript is the language you use to code your Flash game. ActionScript as a programming language has evolved over time, and is now in its third incarnation. To be a Flash game developer, you will need to learn ActionScript 3.0 (not ActionScript version 1 or 2). Different people learn in different ways, and you will want to find the strategy that works best for you. With that said, here are some recommendations for getting started.

Learning ActionScript 3. Programmers of all levels—beginner, intermediate, and advanced—will find useful content on this page. Explore the language's object-oriented programming model and its fundamental building blocks.

ActionScript Cookbook. This book includes code examples and solutions of some of the most common programming tasks in ActionScript.

Once you are familiar with ActionScript, you will want to learn how to apply your knowledge to Flash game development and will want to pick up one of the many Flash game development books. Some of these books include an overview of the ActionScript language. Others assume you already know ActionScript and dive right into the code.

After you have developed a few games using ActionScript, you may want explore using one of the many Flash game engines that can help you with some of the common programming tasks and provide a framework for your game code. You can learn about Flash game engines on the Game Development Center's game engines page.

Team dynamics and organization

So who is creating games? To help answer that question, Mochi Media, a company that provides tools to help game developers monetize their own games, recently completed an exhaustive Flash Games Market Survey. The results provide an interesting perspective on who is making games and how they are doing it.

Here are some of the highlights of the survey's findings:

New talent is pouring into the Flash gaming market. Almost two-thirds of responding developers started making games within the last two years.

Developers are generally independent, with only 8% working at a studio or other game development company. The majority work on their games alone (60%), and a significant but smaller number work in independent teams (29%).

Approximately 35% of developers work full-time making games.

20% of all respondents report making more than $1,000 per month. Just 5% make more than $5,000 per month.

Game development cycles are short—about 50% of developers in the survey built games in a period of one to three months.

The vast majority of respondents work exclusively with Flash technologies.

It's interesting to note that 70% of Flash game developers are creating games as a hobby or secondary business; it is not their primary means of income. While the survey shows that 60% of Flash game developers work alone, I strongly recommend getting help with your game. It's a rare person who can do a great job at design, development, and the business end of making money.

Developing for a gaming company

Many developers in the Flash game industry work as contract-based or full-time employees. These include the creators of the game ideas, the artists who draw and animate game assets, sound designers, and of course the Flash game developers who bring it all together with their programming skills. There is also work to be had as a business development professional working to market and promote games.

Work for hire is a stable way to earn a living and can be very rewarding and fun. But to maintain more creative control and to generate more potential income, I believe it is worth taking the risk of creating the game and monetizing it yourself.

Creative production

When it comes to Flash game art production, Autumn Rain Turkel of TangledDreams.com has much to say. With his years of experience, he offers two key tips for artists:

Be involved from the beginning. The abstract creativity of an artist is helpful during game concept brainstorming, and balances well with the analytical approach common to developers.

Keep in mind the limitations of the target platforms while you work.

The patience and teamwork of artists like Autumn are appreciated by developers. Developers too must do their best to integrate assets in a way that preserves the quality of the original assets and maintains the vision of the overall project.

Integration of creative and technical workflows

The flexibility of the Flash runtimes and Adobe Creative Suite allows for many possible workflows to integrate art into your project. Flash Professional accepts many popular formats for images, animation, sounds, and video. Flash Professional can also import Photoshop and Illustrator files.

While not required, it is more efficient for artists to work directly in Flash Professional. Even if the development is later done in Flash Builder, the developer will be able to import the artist's SWF files that were created in Flash Professional. This way you can roundtrip the art assets easily during production, and scale or rotate the assets with ease at runtime.

Once the art is complete there are two major strategies for loading it into your game. First, the assets can be embedded in the Flash library. This is the easiest workflow, but increases the SWF file's size requiring a more lengthy initial download time for your users. Alternatively, the assets can be loaded at runtime, between levels or whenever more are needed. The best solution will depend on your project, the amount of assets, and your target device.

Game development applied with Flash Builder and Flash Professional

In my article, An introduction to developing games in the Adobe Flash Runtimes, I describe how the game theory applies to a real game. For the purpose of that article, I created a simple game called Flyer. The game play is similar to the 1980s arcade game Frogger. The user's spaceship starts at on the bottom of the screen. The four arrow keys move the flyer. The goal is to reach the top of the screen to win. Colliding with the enemies (biplanes and blimps) before reaching the top will result in a loss.

Step 3: Test and optimize

Throughout production, and especially upon project completion, it is important to test your game and make improvements and optimizations.

Testing

Depending on the size of your project and the size of your team, testing can take many different forms. If you are an individual developer, perhaps the testing process is just you and a few friends playing the game. It is tough to be objective when you review your own work. Try to have open eyes and an open mind, so you can see new problems and new solutions. User testing often uncovers problems and issues you didn't foresee or consider.

Larger game development teams often have a dedicated quality assurance (QA) team of game testers. This group will play the game and build a list of changes and suggestions. If you have the budget for it, another option is to hire one of the companies that offer Flash game testing services.

Regardless of the team size, a good testing process will answer these fundamental questions:

Is the game fun to play?

Is the game free of known bugs?

Does the game perform as desired on all the target platforms (browser, desktop, mobile, and so on)?

If you answer "Yes" to all questions, then great, you are done. The game is ready to be deployed. However, you'll typically need to take a step back and change art, programming, rendering, and game mechanics to make improvements.

For web games, test the game on a variety of computers and web browsers. Ensure it works well in all cases. Even when the game works great on your personal machine, it is important to also keep in mind the computers and devices of your audience.

For mobile phones and tablets, testing can be more difficult. Differences between devices (for example, screen size, screen density, and input schemes) and the sheer number of devices out there can complicate the process. Flash Builder and Flash Professional ship with a debug version of Flash Player that provides additional information (such as output tracing and redraw regions) as you develop and test. Although is very helpful, you should also test on the physical devices if possible.

One company that helps you do just that is DeviceAnywhere. They have thousands of physical devices available for you to test remotely. They also provide testing services to handle some or all of the QA process for you.

Beginning with Flash Builder 4.5 you can connect your device to the computer on which Flash Builder is running via USB, and test on the device while you are developing the game.

Optimization

Developer Ted Patrick has worked with Flash since the early days. He understands the internals of Flash Player. On his blog, Ted explained that he thinks about Flash Player as a racetrack (see Figure 3). There are two distinct sections of the racetrack, one for executing ActionScript (with a subsection for event processing) and one for rendering content to the screen. While running, Flash Player loops around this racetrack at a preset speed designated as frames per second (FPS) in the SWF file. At all times Flash Player will attempt to maintain the set speed regardless of what it is asked to do. The designated FPS is the maximum speed of the racetrack; processing can never go faster than this limit but it can go slower.

Figure 3. Illustration of the Flash Player code execution and rendering routine from ted.onflash.org

The key point is that there is no built-in way to defer code execution and there is no built-in way to defer rendering execution. Flash Player is lossless. It will process everything that it is asked to process in a given frame loop, even if that takes longer than the time between frames specified by the current framerate setting. So, simply put, to avoid problems do not ask Flash Player to do more than it can.

How will you know if there is a problem? During heavy code execution or heavy rendering the Flash Player framerate will temporarily drop (or even freeze) as Flash Player tries to process its instructions. The game's animations may become obviously choppy and the game may become generally sluggish and unresponsive. Optimization is an art unto itself, but those are the basic clues that some optimization is needed.

Even before a problem arises it is best to think about possible bottlenecks. If you have any computationally intensive code (physics, AI, data parsing) or heavy rendering (3D, pixel-level manipulation, dozens of moving sprites) you can allocate more time and attention to optimizing those areas.

Here are some techniques for optimizing code execution:

Benchmarking. Experiment with two or more ways to solve a given problem and compare the performance of each. Find the most efficient solution to minimize CPU usage and improve performance.

Conserving Memory. Instantiate the smallest object possible to get the job done. Remove event listeners and delete objects when not in use.

Improve AS3 Performance. Use if , break , continue , and other constructs to avoid executing unnecessary code. Follow the links later in this section for a deep dive into this topic.

Here are some techniques for optimizing rendering:

Display list. The display list in Flash Player is a native tree-like hierarchy of all DisplayObject instances on the screen. All visible objects will be rendered, so remove objects that are not needed to improve performance. For more information on the display list, see Display list programming in ActionScript 3.

CacheAsBitmap. Each DisplayObject is re-rendered each frame resulting in some redundant calculations. In some circumstances setting the DisplayObject.cacheAsBitmap property to true will save and reuse the results of these calculations and improve performance.

CacheAsBitmapMatrix. Available only on some devices, this may perform even better than CacheAsBitmap.

Blitting. Blitting is an alternative to using the Flash Player display list. The process manually paints your objects to just one image and adds just that one image on the screen. In some circumstances this may dramatically improve performance. See Rendering animated models in mobile games for information on blitting techniques.

Stage3D. Stage3D is a set of low-level, GPU-accelerated 3D APIs that will enable advanced 3D experiences across screens via the Adobe Flash runtimes. For more information, see Using Stage3D.

Step 4: Distribute and Monetize

Revenue models for casual games vary dramatically. Online games are usually free to play, but they often run on pages that feature banner advertising. Site owners earn money by driving traffic to third-party sites. Other games are free to play but incorporate product branding within the game. These advergames are basically one big ad, and use a technique analogous to product placement. Theatrical movie websites and toy websites often incorporate advergames as part of a promotional campaign. For an example of this watch this video about the Green Hornet game that was developed to promote the movie.

Another way makers of casual games earn money is through the freemium business model. In this scenario, users can play the trial version for free but pay for the full premium experience. Other revenue methods include subscriptions and microtransactions.

The distribution and monetization strategy for your game is best defined during the brainstorming stage. The distribution strategy will affect your game because screen sizes and input styles will vary depending on the target device. Depending on the monetization strategy you choose, the content of your game (or at least your menus) will also be affected. You may need to implement advertisement integration, links or buttons to sponsors, virtual item sales, and more.

Distribution

Distribution defines your strategy to get your game in the hands of players. Larger projects will likely have well defined marketing campaigns to bring the game to new users.

Web-based users are able to play a game in the browser or download a standalone game from any available site. The market is relatively open compared to apps for mobile platforms.

On many mobile platforms, the users must enter the walled garden of the devices' application marketplaces. Here the device manufacturer or mobile carrier company controls the market in which apps can be purchased and downloaded.

According to Mobile Games report author Daniel Ashdown, "Discoverability of your game can be a chicken-and-egg problem: high downloads lead to prominence, but achieving a high number of downloads is largely dependent on already being prominent. Consequently, a small minority of games achieve very high downloads, whilst the vast majority achieve very small download figures."

The politics of getting your game into the marketplace varies greatly by device, but the general idea is to make your best impression upfront–popular games stay popular. Others games immediately fall off the radar of the potential game player.

There are many challenges to distributing your game successfully. Luckily, there are companies that can help. For more information, see the companies listed on the Game Development Center's Distribute, measure, and monetize page. Your distribution strategy should include a well-defined target audience, which is likely using multiple devices. The Flash runtimes offers a wealth of deployment options to reach your intended audience.

Promotions

Some monetization strategies, such as licensing your game, include a distribution strategy. But if you chose a model that doesn't, then how do you get the finished product into the hands of game players?

The larger social game companies (such as Zynga, EA, and Playdom) are proven machines of self-promotion and viral marketing. Inside and outside the Flash game experience, users are encouraged to socialize their game activities and accomplishments, and invite their friends to play. Heyzap, a newer startup in the Flash gaming space, helps game developers distribute games. But you can do your own promotion, too.

You can promote your projects by creating a website and by using social networks (such as Twitter and Facebook) to generate traffic. Companies such as GamerSafe, Heyzap, and Mochi Media can help you build and maintain community around your game too. Each offers an API and services with tons of great features, including universal saved games, trophy systems, high scores, microtransactions, viral promotions, security, and more. For more information on integrating social networks into your game see Distribute, measure, and monetize.

It's also helpful to add videos of your game to YouTube or Vimeo. This can help the game generate its own momentum by word of mouth.

Newgrounds.com is a game portal with an especially clean setup for posting Flash games and collecting player evaluations. By posting your game before integrating ads, you can get valuable feedback, including player-based ratings, reviews, informal bug reports, and statistics on performance. Even if you only offer a game for a short time, you can compile a list of things to fix and improve. Consider addressing this feedback before pitching the product to licensors because a more polished game will fetch a higher price and generate more game play.

Monetization

To monetize completed game projects, there are two major strategies: Offer games that are free to play or offer premium games that cost money to play.

There are several ways to monetize free games:

Advertisements. Place banner advertising on the HTML page surrounding the game or within the game itself. Advertising deals are typically paid to game developers based on the number of ads shown (impressions) or the quantity of traffic generated (clicks).

Sponsorship. Place advertising, links, logos, and marketing messages within your game for a paying sponsor company.

Licensing. Place the (often more subtle) advertising, links, logos, and marketing messages within your game for a paying sponsor company and restrict the game's availability to a single website. For example, a big game portal, such as Kongregate.com, may license your game as their exclusive content.

There are also several ways you can make money by selling a premium Flash game directly to the video game community.

Straight sale. Sell the complete game for one upfront cost.

Freemium. Offer a trial or incomplete game experience for free, and then let users upgrade to get the complete game for a flat fee.

Microtransactions. Encourage users to convert real-world money into virtual game currency to unlock characters, abilities, levels, or other content. Microtransactions and freemium games are sometimes used together.

Subscriptions. Players can continue playing if they make regular payments (usually on a monthly basis).

Step 5: Use analytics

When your project finds an audience, you will begin to receive valuable feedback. Many game portals allow game players to comment and rate your game. Analyze this information carefully as some of it can help you to improve your game.

Measuring who sees, plays, and replays your game is a good first step. Learning from these results, however, will help you create more popular content in less time. Some portals will maintain statistics for you, but it's best that you integrate your own statistics. There are companies that can help. Mochi Media provides an ActionScript 3 API, which offers analytics in addition to a host of other services. PlayTomic can measure standard game events (game start, game stop, level completed, and so on) as well as custom in-game events that you can define. Custom analytic measurements for games can be particularly helpful when you need to tweak a game's difficulty. If you learn, for example, that most users can't beat the boss on level 10 of your game, you can update the game so it's a bit easier to play.

Step 6: Update

No matter which distribution scheme you choose, ensure you have the control to update your content. All major game portals allow for updates as do the many mobile marketplaces where your game may be offered.

Whether fixing bugs, improving the game based on analytics, or adding new content such as levels and characters, updating your game after its initial launch will ensure it has the longest life possible. A subscription-based monetization strategy often relies on the release of episodic content to keep subscribers happy.

Frameworks and other third-party libraries

The Flash runtimes provides a foundation on which you can develop and render sophisticated games. The Flash community is very generous and provides a great complement to the platform. Online you will find many free and inexpensive tools, ActionScript 3.0 libraries, and other resources that can help you with your projects.

Design patterns. Patterns are not code libraries per se. They are more like the recipe (generalized solution) with which you cook (program) your own meal (code).

Frameworks. Frameworks provide a skeleton on which you add the meat of your code. In many cases, following a framework will lead to a more readable, maintainable, and extensible project (especially for new developers).

Real-time multiplayer. Real-time multiplayer games enable two or more players on separate computers or devices to play together cooperatively or competitively. Socket servers, services such as Electrotank, LiveCycle Data Services, Flash Media Server, or another server-side technology are commonly used in building real-time multiplayer games.

Multiscreen design and mobile development

Interactive development with the Flash runtimes started with targeting the web browser. While the content continues to live in the browser, the Flash runtimes are capable of much more. With Adobe AIR, developers can target the standalone applications for the desktop that can read and write to the local machine and run content full-screen. In 2009 Adobe, together with major mobile carriers and device manufacturers, put Flash Player 10 and Adobe AIR technology on many devices, unlocking the potential of the Flash runtimes on mobile phones, mobile tablets, Internet-TVs and more.

Now with Flash Professional and Flash Builder, developers can use ActionScript 3.0 to target many devices with their projects. However, designing and developing for multiple devices raises some new challenges.

Reach and productivity

Traditionally, for each device or platform, development teams had to reinvent the wheel, starting with new code, new APIs, and often a new programming language. The convenience of a platform that enables code from a single code base to be published to many devices has long been a dream developers. With Creative Suite 5.5 and Flash Builder 4.5, the Flash Runtimes bring game developers closer to this dream.

Designing for multiple screen sizes

The obstacles you will encounter when creating an application that targets multiple screen sizes can seem daunting. Simply scaling content fit the total available area will likely not serve the needs of your game. It's important for text to be readable, even on small devices. And buttons must be sized properly for activation with fingers not mouse pointers. Even within a single device, users have the option to view in landscape (wide) or portrait (tall) mode. If and how you will support that is another decision. For more information see Allen Ellison's fantastic article Flash sizing Zen: Making Flash fit on mobile devices.

Designing for mobile

The Flash runtimes facilitate redeploying your project from one platform to another. However, simply porting the project may not be ideal. To create the most compelling experience, it's best to treat each target platform uniquely, embracing each device's input schemes and other capabilities. At the very least, you should plan to test your game on target devices and form factors (phones, tablets, and computer monitors have different form factors).

Input methods

Input methods have evolved. While content targeting the computer browser and desktop focuses on just keyboard and mouse input, other devices vary greatly. Early mobile devices had smaller keypads that required new input solutions. In 2007, the iPhone ushered in the era of touch-screen input–using your fingers as input devices. Mobile tablet devices are also full of challenges and possibilities. Some devices feature a dedicated Back button and volume controls, some do not. While there are certainly commonalities between the input styles on many popular devices, I recommend considering the best input solution for each device and customizing your game as needed. The Flash runtimes currently support multitouch and gestures in Flash Player 10.1 or higher in the browser, SWF content published for the iPhone or iPod touch, and in AIR 2 or higher. For more on this topic, see Christian Cantrell's article Multitouch and gesture support in the Flash Runtimes and Mike Jones's series on Virtual Controllers for Touch-based Devices.

Other capabilities

In addition to innovative input styles, many devices have other features that can be used for gaming. Here are some of the major ones and some considerations for each.

Accelerometer. Some devices sense their angle of rotation using an accelerometer. You can use this as an input device. See this video for how you can take advantage of accelerometers in your Flash games.

Application multitasking. How will your game behave when minimized and maximized? If it's a mobile game, does it automatically pause when the phone rings?

Casual connectivity. Users are not always connected to the Internet. Does your game require constant connectivity? Will it have an offline mode and an online mode?

GPS/Geolocation. Devices with geolocation know where they are in the world. You can use this to change the game experience, unlock content, or introduce game players who are close to each other.

Library of photos, video, and music. You can use libraries to import media for character customization, augment your game soundtrack with the player's favorite tracks, and more.

Persistence. Many mobile users play games in short bursts, starting and stopping the game when they have free time for fun. If your game saves its progress this will help users jump back into the action quickly.

Sleep-mode. Some devices sleep when not in use. How will your game react? If the user becomes distracted and sets down the device, will the game pause or will it continue to consume battery life?

Video recording. Use video as an input device like Sony's EyeToy or Microsoft Kinect.

Video output. Some devices can connect to monitors or HDTV displays.

Other considerations

Depending on the devices you choose to target, you may need special permission to make your game available to users. Typically you must apply as a developer (individual or company) online, and get a security certificate that assures the content submitted came from you. In some cases you may need to pay a fee. This is a one-time setup per device. It is not required for every game you make. Ultimately this creates a more trusted environment for the game player who will shop for and enjoy your game. This process may take some time, so it's a good idea to apply early in your development process.

Optimizing for mobile

Because mobile devices have less processing power than full computers, it is especially important to optimize projects that target mobile devices. To maximize the performance of the game, perform benchmarks on the target device and optimize the code and rendering routines. For more information, see Step 3: Test and Optimize.

Flash game security

The term security in this section refers to protecting your intellectual property and keeping people from cheating at your games. When creating games, security is a hot topic, both for your compiled code and for your game during the user experience.

Compiled-code security

A Flash game is typically compiled into SWF format, so it is more difficult to get than viewing and copying an HTML page's source code. However, there are decompilers that make getting at your code possible. Like most client-side technologies, Flash is vulnerable to reverse engineering and hacking. By looking at your source code, malicious players can find ways to cheat at your games. Depending on your business model, this may not be a concern. But for many larger companies with a social community, high-score tracking, or virtual currency, security is important. Keeping game data on the server side is a leading solution as it is more protected there. Also there are tools that can help you lock the SWF file down. Created by companies such as Amayeta, such tools thwart, but do not wholly stop, hackers. Combining technologies can make client content more secure. Elliot Mebane, Principal at Roguish, says "We have distributed SWF games wrapped in C++ shells, which perform on-par with our games developed natively in C++, and feature security benefits such as rights management."

Run-time security

Malicious players can use sniffers and other tools to monitor the network traffic to and from your game. This may enable them to spoof a legitimate call with their own call, opening the door to fake high-score submissions, prematurely unlocked content, and more. One prevention technique is to encrypt any transferred data.

RAM hacking with tools such as Cheat Engine and Quick Memory Editor is popular as well. Users can employ this type of tool during their Flash game playing experience. The tool analyzes the computer's RAM and locates their current score, number of lives, or other important information. To do this the user must know what the current value is (which is easy if the score is displayed on screen) and that value must change over time. Then the user can manually change their score, without actually earning it from within the game. To make this harder to do, encrypt the value of any variables that you display on the screen or are otherwise easily known to the user.

Where to go from here

This article has covered a great deal of ground, but there is still much more. Following the many links reference in the sections above is a great way to continue your learning.

Adobe Developer Connection's Game Development Center is the place to find articles, tutorials, and other content of interest to web game developers of all skill levels. If you're just getting started, it's a great place to learn and get inspired. Even if you're an experienced developer, you'll likely find a new resource that will help you develop even more impressive games—and you can take the opportunity to write an article and contribute back to the community.

There is no substitute for practical experience. It can be daunting to start your first game, but the important thing is just to get started. Pick a small project, like the Flyer game discussed above, and have fun making your first game running in Flash Player or AIR!

I'll conclude with a quote from John Say, CEO of Say Design, "Since Flash first introduced ActionScript in the late '90s, it has slowly matured from banner ads to much, much more. Now, a decade later, I'm convinced that Flash will change the landscape of online and cross-platform games dramatically as it continues to level up in both performance and capabilities."

Games created with Adobe Flash technology are indeed everywhere, and the future for the casual gaming industry looks bright. Flash Professional and Flash Player 10 are better than ever, fulfilling most (but not quite all) requests on developers' wish lists. By understanding the fundamental theory behind these casual interactive games and how to apply it, you see how easy it is to get started. So get out there and play.

Acknowledgements

I want to offer my thanks to all the community leaders who provided valuable insight and expertise for this article, and a special thanks to all the game designers and developers who entertain and inspire me every day.