Monetizing Your Web Game Part 2

Monetizing Your Web Game Part 2

Currently there are many choices when it comes to monetizing a web game.  It can be daunting to decide which model is best for a developer.  On top of this, there are conflicting reports as to which ones are truly lucrative.  The hope of this series of articles is to shine a light on many of the monetization methods to choose from by presenting hard facts based on case studies from a number of developers as well as statistics we have been tracking at FlashGameLicense.com and GamerSafe.com.

Part 2: Advertising

In part 1 of this series we covered sponsorships and licensing.  Since that article was dedicated to explaining how sponsorships and licensing works I won’t repeat that information except to say that most sponsorships and licenses are used as a sort of advertising.  It can be confusing for someone unfamiliar with the web game market when they hear the term “advertising” since, really, it could mean any branding in a game, yet the term is never used in such an encompassing manner.

First, I will point out a few of the big distinctions between Advertising and Sponsorships.

-        Advertising usually consists of rotating ads that are dynamically loaded into the game.  The most effective way of handling this is by using a 3rd party ad platform like CPMStar or MochiAds.

-        Sponsorships usually consist of static branding put in the game by the developer.

-        Due to the dynamic nature of Advertising, and the need to support hundreds or thousands of advertisers, there are limitations to how Advertising can be implemented.

-        For an advertiser, a couple big advantages of Advertising are the ability to geo-target and change up campaigns.  Whereas the advantages of Sponsorships are associating your brand with a great game and not being limited to campaigns.  Sponsorships last forever.

-        Note that neither one is better than the other, they just have different benefits.

Another confusing aspect of Advertising is the fact that it can reside both inside and outside of the game.   Usually, these are referred to as “in-game” and “around-game” advertising.  I will split this article up into two sections to handle each, but most of the focus will be on the in-game advertising.

Finally, before getting to the nitty-gritty, I want to define what “eCPM” (which is commonly merely called “CPM”) means.  This is the standard measurement for how ads perform.  It stands or “Effective Cost Per 1,000 impressions” which basically means how much money you make per 1000 viewers.  Some advertisers also factor in how many clicks an ad gets and how many actions are performed (registrations, etc…) but covering the entire realm of advertising is beyond the scope of this article and, really, you can still always boil things down to CPM anyway.

Ok, with that out of the way we can start talking about how Advertising usually performs for a Flash game and how to get the most out of Advertising.

In-game advertising

In-game advertising consists of all advertising… well, in the game.  As stated above, what this usually means, in the web-game space anyway, is that advertising is dynamically injected into your game.  The two main ways of doing this is by running a “pre-roll” ad or an “interstitial” ad.

Pre-roll ads

Pre-roll, or “stinger”, or “pre-loader” ads are ads that run sometime before a game starts.  A popular method of implementation is to have the ads run as the game is loading.  It has been proven that gamers don’t mind waiting a short period of time to play a game and are ok with watching an ad before a game.  Global CPMs of $.20 – $2 are usually what you can expect with pre-roll ads.  To achieve the higher end of this spectrum there are a couple of standards a developer will need to follow:

-        “Tasteful” integration – this may seem very general, but the reality is it will depend on the game.  Some developers just slap up ads and hope for the best.  The games that have the highest eCPMs integrate the ads in a clever way.  I’ve seen ads that are framed by art assets that have done well.

-        Require interaction to move past the ad – most of the time this merely means putting a “start game” button under the ad to let the player continue to the game.  The reason this is important is because a variety of factors can make it so that the ad is never seen by the player. For example, if a site is running a javascript pre-loader that runs over your game, players may never see your ad since it runs underneath then continues to the game automatically before the Player sees it.  The act of requiring interaction to move on, alone, will increase ad clickthrough rates by as high as 10%.  I have seen games go from $.10 CPMs to $1 CPMs by making this simple change.

Interstitial Ads

Interstitial ads are ads that play sometime during the game; usually at points where a game has a stoppage or pause in gameplay such as a game over screen or next level screen.  Much more care needs to be taken when implementing interstitial ads than with pre-roll ads because gamers are not as tolerant of ads within a game.  Especially if they perceive the ads are interrupting the gameplay. However, an upside to this type of ad is that the developer can be more creative with the implementation.  There is the possibility to integrate ads seamlessly into the game.  Standards for implementing interstitial ads are the same as with pre-roll ads.

Around game

As explained, around game ads are ads that reside on the site that host the game.  These usually consist of banner ads around the game and in various other locations on the site. It also includes, though, a pseudo-pre-roll ad that is run over the game or before the game is loaded (usually using javascript) that some sites use. Usually the revenue from these ads goes to the site owner, and not the developer.  This symbiotic relationship of developer providing the content and monetizing within the game and portal taking the content and monetizing around it is the most often encountered situation.  However, there are sites that will also share the site revenue with the developer, allowing the developer to benefit from both sides.

There’s also no reason that a developer shouldn’t create their own developer site to showcase their games and use around game advertising to monetize that site.  In fact, I highly encourage it.  Even if you get a sponsorship, having your own links to your developer site is usually not an issue.  Fans who love your game will most likely be interested in your other games.  You might as well monetize that. Just be careful not to turn your developer site into a full blown portal if you plan to use sponsorships in the future.  Sponsors may see your site as competition and not allow your links in the games they sponsor.

This is merely an introduction to the world of advertising web games, and is not meant to be all encompassing or definitive.  I invite all readers to visit our site: FlashGameLicense.com to find out more.  FGL is also THE place to buy or sell web games, so be sure to visit if you are hoping to do either or both.

As a final note I want to stress that the Advertising model and all of the models that will be covered in future articles in this series are not mutually exclusive of each other.  Developers can, and should, take advantage of all of them. I am merely presenting them individually as to make them less confusing to understand. The final article in this series will cover the best ways to combine as many of these monetization models as possible to maximize the revenue generated by your game.

 

 

Monetizing Your Web Game Part 1

Monetizing Your Web Game Part 1

Currently there are many choices when it comes to monetizing a web game. It can be daunting to decide which model is best for a developer. On top of this, there are conflicting reports as to which ones are truly lucrative. The hope of this series of articles is to shine a light on many of the monetization methods to choose from by presenting hard facts based on case studies from a number of developers as well as statistics we have been tracking at FlashGameLicense.com and GamerSafe.com.

Part 1: Sponsorship and Licensing

Before I get into the ins and outs of licensing a web game, let me define some terms:

Sponsorship

  • A deal made between an entity (the sponsor) and a developer in which the sponsor pays to have their branding/ads in one of the developer’s games. The terms Sponsorship and License are used interchangeably in most cases (and in all cases for the purposes of this article).

Primary License/Sponsorship

· A sponsorship where the Sponsor has their branding in every copy of the game on the web except where the developer has explicitly sold a Secondary License (defined below) to another entity. The developer has complete freedom to remove the primary sponsor’s branding and make any other changes to the game as long as it is licensed and locked to the other entity’s domain.

Non-Exclusive License/Sponsorship

· A Sponsorship where the license of the game is not exclusive to the buyer. The buyer is purchasing one custom version of the game.

Secondary License (aka Non-Exclusive Site-Locked License)

· A Sponsorship where the license of the game is not exclusive to the buyer. The buyer is purchasing one custom version of the game, and this version must be “locked” to the buyer’s domain. This is the most common type of non-exclusive license and it is compatible with the primary license.

Performance Bonus

· A bonus paid by the Sponsor to the Developer based on pre-defined performance milestones. Bonus structures take many forms. A couple of examples are: a lump sum payout if a game gets a certain number of plays, or a CPC (cost per click) deal where the Developer is paid for each unique user sent back to the Sponsor’s site.

There are many more licensing types, but these are the most popular and most important for this article. You can find a longer list of licensing types and terms here: http://www.flashgamelicense.com/view_library.php?page=license-terms

At its core, the Primary Sponsorship model is simple: A Sponsor is interested in getting his or her branding into a game that will potentially be viewed and played by millions of people. In most cases, the ultimate goal is to get those users to click back to the Sponsor’s site via the links in the game.

So, this is why your game is worth money to sponsors, but how do you get the most money out of the deal as possible? The trap many developers fall into is assuming that their game has a set worth to a sponsor, and that if the sponsor pays $x for the game, then they must surely be making more than $x from the game. This isn’t entirely accurate. Sponsors make money by licensing games in two main ways. One, is they plan on the long term funnel of new users a game will bring them. And two, they sponsor many games in hopes that a handful will be successful. So, what this means is that they are investing in your game so that they can make their money back long term or, if that doesn’t happen, that your payment will be absorbed by another – more successful – game. Of course, it is slightly more complex than that in the sense that they are getting brand association with your game and other perks like having high quality content for their site, but when thinking about how to get the most out of a deal the two main factors of long term earnings and uncertain returns should be considered the most. In short, if you can convince a sponsor that your game will have massive, long term, appeal and that their investment is well spent, you can make more money.

Easier said than done, right? Maybe not. Having a great game is definitely most of the battle when it comes to sponsorships, but there is a lot you can add to a game to increase its worth to a sponsor (as an aside I want to mention that you should NOT release your game before you seek a sponsorship. Once a game is released “into the wild” it is virtually worthless to a sponsor). The easiest way to do this is to give players a strong incentive to click back to a Sponsor’s site. This can be done by adding bonus content that is only playable on a Sponsor’s site, or linking to walkthroughs on the Sponsor’s site, or any number of other things. Take note, however, that you have to be extremely careful in how you execute, and present, this sort of tactic. You need to make sure that the game, on any site, is fully playable and not limited in any way. If players perceive the game as being nothing more than an advertisement, or that it is trying to trick them in some way, the game will undoubtedly be rated down and hidden on sites.

Before I continue I think it is important to point out something that will be a reoccurring theme in this series. It is important that you choose a monetization model for your games that you are comfortable with and that suites you. There are pros and cons to any path you choose. Some may have high risk, high reward. Others may be low risk low reward. Some may provide you with the creative freedom you desire, but limit you in how you can monetize the game, and so on. So, with this next bit of advice I caution you to decide what model you are most comfortable with. Based on what has been discussed this far, my recommendation is to strive to invest in the success of your game. This is usually a little bit more risky, but ultimately it drives everyone involved to push for the game’s success. The reason it is more risky is because it usually means you take less up front in the deal. Here are a few examples of how you can invest in your game’s success:

- Aim for a performance bonus (preferably based on CPC to the Sponsor’s site).

- Include links in your game to your own, Developer, site where you have site ads.

- Aim to include Ads in the game and Microtransactions if appropriate. Implementing either or both tastefully is key.

Notice that none of these investments harms the sponsor. In fact, they should increase the value to the Sponsor as well. Services like GamerSafe and CPMStar have built in mechanics to share revenue with Sponsors. And since you make more money by making the game more successful, the Sponsor is benefiting from a very motivated developer wanting to make sure the game does as well as it can.

Another great thing about Sponsorships is that you get to benefit from the Sponsor his/herself. Sponsors want the game to do well, and in most cases they know what players like. A Sponsor’s advice can be invaluable. Of course, you should never feel forced to make changes you feel will hurt the game, but you should be open to any suggestions a Sponsor may have.

Once you have accomplished these steps, the real fun starts. This is the point where you are actually pitching your game to sponsors. The easiest way to do this is at FlashGameLicense.com where we have an entire system built to assist you in this exact situation. The easiest and fastest way to find out your game’s worth in Sponsors’ eyes is to get them to bid on your game. Bidding wars often get heated and in the end the most motivated Sponsor ends up on top. And who else would you rather have investing in your game?

And once your Primary Sponsorship deal is complete you can start to sell non-exclusive licenses. This has proven to be a great secondary source of income for the Developer, but also a harmless condition for the Sponsor to allow. The point of a non-exclusive license, for the buyer, is not to drive traffic but instead to retain traffic and acquire quality content. Most sites who buy non-exclusive licenses would never take the distributed version of the game anyway since they do not allow branding other than their own on their site. What this means is a sponsor is not losing any traffic, but the developer is able to resell their game indefinitely. Oftentimes a sponsor will ask for a short period of time after the Primary Sponsorship deal is done before you can sell non-exclusive licenses, however.

This is merely an introduction to the world of sponsorships and licenses with web games, and is not meant to be all encompassing or definitive. I invite all readers to visit our site: FlashGameLicense.com to find out more. FGL is also THE place to buy or sell web games, so be sure to visit if you are hoping to do either or both.

To summarize what has been covered here:

- Make a great game (or have it nearly finished)

- Don’t release your game!

- Give players an incentive to click to the Sponsor’s site

- Invest in the success of your game (if it is right for you)

- Be open to Sponsor’s suggestions

- Get your game in front of as many Sponsors’ eyes as possible and have them compete to get you the best deal

- Sell non-exclusive licenses

As a final note I want to stress that the Sponsorship model and all of the models that will be covered in future articles in this series are not mutually exclusive of each other. Developers can, and should, take advantage of all of them. I am merely presenting them individually as to make them less confusing to understand. The final article in this series will cover the best ways to combine as many of these monetization models as possible to maximize the revenue generated by your game.

<html xmlns:v="urn:schemas-microsoft-com:vml"
xmlns:o="urn:schemas-microsoft-com:office:office"
xmlns:w="urn:schemas-microsoft-com:office:word"
xmlns:m="http://schemas.microsoft.com/office/2004/12/omml"
xmlns="http://www.w3.org/TR/REC-html40">

<head>
<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
<meta name=ProgId content=Word.Document>
<meta name=Generator content="Microsoft Word 12">
<meta name=Originator content="Microsoft Word 12">
<link rel=File-List href="Monetizing%20your%20web%20game_1b_files/filelist.xml">
<!--[if gte mso 9]><xml>
 <o:DocumentProperties>
  <o:Author>cahughes</o:Author>
  <o:LastAuthor>cahughes</o:LastAuthor>
  <o:Revision>2</o:Revision>
  <o:TotalTime>5</o:TotalTime>
  <o:Created>2011-01-05T00:19:00Z</o:Created>
  <o:LastSaved>2011-01-05T00:19:00Z</o:LastSaved>
  <o:Pages>4</o:Pages>
  <o:Words>1448</o:Words>
  <o:Characters>8259</o:Characters>
  <o:Company>UC Davis Financial Aid Office</o:Company>
  <o:Lines>68</o:Lines>
  <o:Paragraphs>19</o:Paragraphs>
  <o:CharactersWithSpaces>9688</o:CharactersWithSpaces>
  <o:Version>12.00</o:Version>
 </o:DocumentProperties>
</xml><![endif]-->
<link rel=themeData
href="Monetizing%20your%20web%20game_1b_files/themedata.thmx">
<link rel=colorSchemeMapping
href="Monetizing%20your%20web%20game_1b_files/colorschememapping.xml">
<!--[if gte mso 9]><xml>
 <w:WordDocument>
  <w:SpellingState>Clean</w:SpellingState>
  <w:GrammarState>Clean</w:GrammarState>
  <w:TrackMoves>false</w:TrackMoves>
  <w:TrackFormatting/>
  <w:PunctuationKerning/>
  <w:ValidateAgainstSchemas/>
  <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
  <w:IgnoreMixedContent>false</w:IgnoreMixedContent>
  <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
  <w:DoNotPromoteQF/>
  <w:LidThemeOther>EN-US</w:LidThemeOther>
  <w:LidThemeAsian>X-NONE</w:LidThemeAsian>
  <w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
  <w:Compatibility>
   <w:BreakWrappedTables/>
   <w:SnapToGridInCell/>
   <w:WrapTextWithPunct/>
   <w:UseAsianBreakRules/>
   <w:DontGrowAutofit/>
   <w:DontUseIndentAsNumberingTabStop/>
   <w:FELineBreak11/>
   <w:WW11IndentRules/>
   <w:DontAutofitConstrainedTables/>
   <w:AutofitLikeWW11/>
   <w:HangulWidthLikeWW11/>
   <w:UseNormalStyleForList/>
  </w:Compatibility>
  <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel>
  <m:mathPr>
   <m:mathFont m:val="Cambria Math"/>
   <m:brkBin m:val="before"/>
   <m:brkBinSub m:val="&#45;-"/>
   <m:smallFrac m:val="off"/>
   <m:dispDef/>
   <m:lMargin m:val="0"/>
   <m:rMargin m:val="0"/>
   <m:defJc m:val="centerGroup"/>
   <m:wrapIndent m:val="1440"/>
   <m:intLim m:val="subSup"/>
   <m:naryLim m:val="undOvr"/>
  </m:mathPr></w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
 <w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"
  DefSemiHidden="true" DefQFormat="false" DefPriority="99"
  LatentStyleCount="267">
  <w:LsdException Locked="false" Priority="0" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Normal"/>
  <w:LsdException Locked="false" Priority="9" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="heading 1"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 1"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 2"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 3"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 4"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 5"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 6"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 7"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 8"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 9"/>
  <w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/>
  <w:LsdException Locked="false" Priority="10" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Title"/>
  <w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/>
  <w:LsdException Locked="false" Priority="11" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/>
  <w:LsdException Locked="false" Priority="22" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Strong"/>
  <w:LsdException Locked="false" Priority="20" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/>
  <w:LsdException Locked="false" Priority="59" SemiHidden="false"
   UnhideWhenUsed="false" Name="Table Grid"/>
  <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/>
  <w:LsdException Locked="false" Priority="1" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 1"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 1"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 1"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/>
  <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/>
  <w:LsdException Locked="false" Priority="34" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/>
  <w:LsdException Locked="false" Priority="29" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Quote"/>
  <w:LsdException Locked="false" Priority="30" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 1"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 1"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 2"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 2"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 2"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 2"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 2"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 3"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 3"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 3"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 3"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 3"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 4"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 4"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 4"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 4"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 4"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 5"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 5"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 5"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 5"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 5"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 6"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 6"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 6"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 6"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 6"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/>
  <w:LsdException Locked="false" Priority="19" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/>
  <w:LsdException Locked="false" Priority="21" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/>
  <w:LsdException Locked="false" Priority="31" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/>
  <w:LsdException Locked="false" Priority="32" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/>
  <w:LsdException Locked="false" Priority="33" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Book Title"/>
  <w:LsdException Locked="false" Priority="37" Name="Bibliography"/>
  <w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/>
 </w:LatentStyles>
</xml><![endif]-->
<style>
<!--
 /* Font Definitions */
 @font-face
	{font-family:Wingdings;
	panose-1:5 0 0 0 0 0 0 0 0 0;
	mso-font-charset:2;
	mso-generic-font-family:auto;
	mso-font-pitch:variable;
	mso-font-signature:0 268435456 0 0 -2147483648 0;}
@font-face
	{font-family:"Cambria Math";
	panose-1:2 4 5 3 5 4 6 3 2 4;
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-pitch:variable;
	mso-font-signature:-1610611985 1107304683 0 0 159 0;}
@font-face
	{font-family:Calibri;
	panose-1:2 15 5 2 2 2 4 3 2 4;
	mso-font-charset:0;
	mso-generic-font-family:swiss;
	mso-font-pitch:variable;
	mso-font-signature:-1610611985 1073750139 0 0 159 0;}
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
	{mso-style-unhide:no;
	mso-style-qformat:yes;
	mso-style-parent:"";
	margin-top:0in;
	margin-right:0in;
	margin-bottom:10.0pt;
	margin-left:0in;
	line-height:115%;
	mso-pagination:widow-orphan;
	font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-fareast-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";}
h2
	{mso-style-priority:9;
	mso-style-unhide:no;
	mso-style-qformat:yes;
	mso-style-link:"Heading 2 Char";
	mso-margin-top-alt:auto;
	margin-right:0in;
	mso-margin-bottom-alt:auto;
	margin-left:0in;
	mso-pagination:widow-orphan;
	mso-outline-level:2;
	font-size:18.0pt;
	font-family:"Times New Roman","serif";
	mso-fareast-font-family:"Times New Roman";
	font-weight:bold;}
a:link, span.MsoHyperlink
	{mso-style-priority:99;
	color:blue;
	text-decoration:underline;
	text-underline:single;}
a:visited, span.MsoHyperlinkFollowed
	{mso-style-noshow:yes;
	mso-style-priority:99;
	color:purple;
	mso-themecolor:followedhyperlink;
	text-decoration:underline;
	text-underline:single;}
p
	{mso-style-noshow:yes;
	mso-style-priority:99;
	mso-margin-top-alt:auto;
	margin-right:0in;
	mso-margin-bottom-alt:auto;
	margin-left:0in;
	mso-pagination:widow-orphan;
	font-size:12.0pt;
	font-family:"Times New Roman","serif";
	mso-fareast-font-family:"Times New Roman";}
span.Heading2Char
	{mso-style-name:"Heading 2 Char";
	mso-style-priority:9;
	mso-style-unhide:no;
	mso-style-locked:yes;
	mso-style-link:"Heading 2";
	mso-ansi-font-size:18.0pt;
	mso-bidi-font-size:18.0pt;
	font-family:"Times New Roman","serif";
	mso-ascii-font-family:"Times New Roman";
	mso-fareast-font-family:"Times New Roman";
	mso-hansi-font-family:"Times New Roman";
	font-weight:bold;}
span.SpellE
	{mso-style-name:"";
	mso-spl-e:yes;}
span.GramE
	{mso-style-name:"";
	mso-gram-e:yes;}
.MsoChpDefault
	{mso-style-type:export-only;
	mso-default-props:yes;
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;}
@page WordSection1
	{size:8.5in 11.0in;
	margin:1.0in 1.0in 1.0in 1.0in;
	mso-header-margin:.5in;
	mso-footer-margin:.5in;
	mso-paper-source:0;}
div.WordSection1
	{page:WordSection1;}
 /* List Definitions */
 @list l0
	{mso-list-id:285281490;
	mso-list-type:hybrid;
	mso-list-template-ids:654729524 67698689 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
@list l0:level1
	{mso-level-number-format:bullet;
	mso-level-text:\F0B7;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;
	font-family:Symbol;}
@list l1
	{mso-list-id:801927238;
	mso-list-type:hybrid;
	mso-list-template-ids:-1691822192 67698689 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
@list l1:level1
	{mso-level-number-format:bullet;
	mso-level-text:\F0B7;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;
	font-family:Symbol;}
@list l2
	{mso-list-id:1635333280;
	mso-list-type:hybrid;
	mso-list-template-ids:-780790826 199371012 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
@list l2:level1
	{mso-level-start-at:0;
	mso-level-number-format:bullet;
	mso-level-text:-;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;
	font-family:"Calibri","sans-serif";
	mso-fareast-font-family:"Times New Roman";
	mso-bidi-font-family:"Times New Roman";}
ol
	{margin-bottom:0in;}
ul
	{margin-bottom:0in;}
-->
</style>
<!--[if gte mso 10]>
<style>
 /* Style Definitions */
 table.MsoNormalTable
	{mso-style-name:"Table Normal";
	mso-tstyle-rowband-size:0;
	mso-tstyle-colband-size:0;
	mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-qformat:yes;
	mso-style-parent:"";
	mso-padding-alt:0in 5.4pt 0in 5.4pt;
	mso-para-margin:0in;
	mso-para-margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:10.0pt;
	font-family:"Calibri","sans-serif";}
</style>
<![endif]--><!--[if gte mso 9]><xml>
 <o:shapedefaults v:ext="edit" spidmax="2050"/>
</xml><![endif]--><!--[if gte mso 9]><xml>
 <o:shapelayout v:ext="edit">
  <o:idmap v:ext="edit" data="1"/>
 </o:shapelayout></xml><![endif]-->
</head>
<body lang=EN-US link=blue vlink=purple style='tab-interval:.5in'>

<div class=WordSection1>

<p class=MsoNormal>Monetizing Your Web Game Part 1</p>

<p class=MsoNormal>Currently there are many choices when it comes to monetizing
a web game.<span style='mso-spacerun:yes'>  </span>It can be daunting to decide
which model is best for a developer.<span style='mso-spacerun:yes'>  </span>On
top of this, there are conflicting reports as to which ones are truly
lucrative.<span style='mso-spacerun:yes'>  </span>The hope of this series of
articles is to shine a light on many of the monetization methods to choose from
by presenting hard facts based on case studies from a number of developers as
well as statistics we have been tracking at FlashGameLicense.com and GamerSafe.com.<span
style='mso-spacerun:yes'>  </span></p>
<p class=MsoNormal>Part 1: Sponsorship and Licensing</p>

<p class=MsoNormal>Before I get into the ins and outs of licensing a web game,
let me define some terms:</p>

<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
line-height:normal;mso-outline-level:2'><b><span style='mso-fareast-font-family:
"Times New Roman"'>Sponsorship<o:p></o:p></span></b></p>

<ul type=disc>
 <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
     line-height:normal;mso-outline-level:2;mso-list:l1 level1 lfo2'><span
     style='mso-fareast-font-family:"Times New Roman"'>A deal made between an
     entity (the sponsor) and a developer in which the sponsor pays to have
     their branding/ads in one of the developer's games. The terms Sponsorship
     and License are used interchangeably in most cases (and in all cases for
     the purposes of this article).<b><o:p></o:p></b></span></li>
</ul>

<h2><span style='font-size:11.0pt;font-family:"Calibri","sans-serif"'>Primary
License/Sponsorship<o:p></o:p></span></h2>
<p style='margin-left:.5in;text-indent:-.25in;mso-list:l1 level1 lfo2'><![if !supportLists]><span
style='font-size:11.0pt;font-family:Symbol;mso-fareast-font-family:Symbol;
mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span></span><![endif]><span style='font-size:11.0pt;font-family:"Calibri","sans-serif"'>A
sponsorship where the Sponsor has their branding in every copy of the game on
the web except where the developer has explicitly sold a Secondary License (defined
below) to another entity. The developer has complete freedom to remove the
primary sponsor's branding and make any other changes to the game as long as it
is licensed and locked to the other entity's domain. <o:p></o:p></span></p>

<h2><span style='font-size:11.0pt;font-family:"Calibri","sans-serif"'>Non-Exclusive
License/Sponsorship<o:p></o:p></span></h2>

<p style='margin-left:.5in;text-indent:-.25in;mso-list:l1 level1 lfo2'><![if !supportLists]><span
style='font-size:11.0pt;font-family:Symbol;mso-fareast-font-family:Symbol;
mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span></span><![endif]><span style='font-size:11.0pt;font-family:"Calibri","sans-serif"'>A
Sponsorship where the license of the game is not exclusive to the buyer.<span
style='mso-spacerun:yes'>  </span>The buyer is purchasing one custom version of
the game.<o:p></o:p></span></p>

<h2><span style='font-size:11.0pt;font-family:"Calibri","sans-serif"'>Secondary
License (aka Non-Exclusive Site-Locked License)<o:p></o:p></span></h2>
<p style='margin-left:.5in;text-indent:-.25in;mso-list:l1 level1 lfo2'><![if !supportLists]><span
style='font-size:11.0pt;font-family:Symbol;mso-fareast-font-family:Symbol;
mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span></span><![endif]><span style='font-size:11.0pt;font-family:"Calibri","sans-serif"'>A
Sponsorship where the license of the game is not exclusive to the buyer.<span
style='mso-spacerun:yes'>  </span>The buyer is purchasing one custom version of
the game, and this version must be “locked” to the buyer’s domain. This is the
most common type of non-exclusive license and it is compatible with the primary
license. <o:p></o:p></span></p>

<h2><span style='font-size:11.0pt;font-family:"Calibri","sans-serif"'>Performance
Bonus<o:p></o:p></span></h2>

<p style='margin-left:.5in;text-indent:-.25in;mso-list:l1 level1 lfo2'><![if !supportLists]><span
style='font-size:11.0pt;font-family:Symbol;mso-fareast-font-family:Symbol;
mso-bidi-font-family:Symbol'><span style='mso-list:Ignore'>·<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span></span><![endif]><span style='font-size:11.0pt;font-family:"Calibri","sans-serif"'>A
bonus paid by the Sponsor to the Developer based on pre-defined performance
milestones. Bonus structures take many forms.<span style='mso-spacerun:yes'> 
</span>A couple of examples are: a lump sum payout if a game gets a certain
number of plays, or a CPC (cost per click) deal where the Developer is paid for
each unique user sent back to the Sponsor’s site.<o:p></o:p></span></p>
<p><span style='font-size:11.0pt;font-family:"Calibri","sans-serif"'><o:p>&nbsp;</o:p></span></p>

<p><span style='font-size:11.0pt;font-family:"Calibri","sans-serif"'>There are
many more licensing types, but these are the most popular and most important
for this article.<span style='mso-spacerun:yes'>  </span>You can find a longer
list of licensing types and terms here: <a
href="http://www.flashgamelicense.com/view_library.php?page=license-terms">http://www.flashgamelicense.com/view_library.php?page=license-terms</a><o:p></o:p></span></p>

<p><span style='font-size:11.0pt;font-family:"Calibri","sans-serif"'>At its
core, the Primary Sponsorship model is simple:<span style='mso-spacerun:yes'> 
</span>A Sponsor is interested in getting his or her branding into a game that
will potentially be viewed and played by millions of people. In most cases, the
ultimate goal is to get those users to click back to the Sponsor’s site via the
links in the game.<o:p></o:p></span></p>

<p><span style='font-size:11.0pt;font-family:"Calibri","sans-serif"'>So, this
is why your game is worth money to sponsors, but how do you get the most money
out of the deal as possible?<span style='mso-spacerun:yes'>  </span>The trap
many developers fall into is assuming that their game has a set worth to a
sponsor, and that if the sponsor pays $x for the game, then they must surely be
making more than $x from the game.<span style='mso-spacerun:yes'>  </span>This
isn’t entirely accurate.<span style='mso-spacerun:yes'>  </span>Sponsors make
money by licensing games in two main ways.<span style='mso-spacerun:yes'>
</span>One, is they plan on the long term funnel of new users a game will bring
them.<span style='mso-spacerun:yes'>  </span>And two, they sponsor many games
in hopes that a handful will be successful.<span style='mso-spacerun:yes'>  
</span>So, what this means is that they are investing in your game so that they
can make their money back long term or, if that doesn’t happen, that your payment
will be absorbed by another – more successful – game.<span
style='mso-spacerun:yes'>  </span>Of course, it is slightly more complex than
that in the sense that they are getting brand association with your game and
other perks like having high quality content for their site, but when thinking
about how to get the most out of a deal the two main factors of long term
earnings and uncertain returns should be considered the most. In short, if you
can convince a sponsor that your game will have massive, long term, appeal and
that their investment is well spent, you can make more money.<o:p></o:p></span></p>

<p><span style='font-size:11.0pt;font-family:"Calibri","sans-serif"'>Easier said
than done, right?<span style='mso-spacerun:yes'>  </span><span class=GramE>Maybe
not.</span> Having a great game is definitely most of the battle when it comes
to sponsorships, but there is a lot you can add to a game to increase its worth
to a sponsor (as an aside I want to mention that you should NOT release your
game before you seek a sponsorship.<span style='mso-spacerun:yes'>  </span>Once
a game is released “into the wild” it is virtually worthless to a sponsor).<span
style='mso-spacerun:yes'>  </span>The easiest way to do this is to give players
a strong incentive to click back to a Sponsor’s site.<span
style='mso-spacerun:yes'>  </span>This can be done by adding bonus content that
is only playable on a Sponsor’s site, or linking to walkthroughs on the
Sponsor’s site, or any number of other things.<span style='mso-spacerun:yes'>
</span>Take note, however, that you have to be extremely careful in how you
execute, and present, this sort of tactic.<span style='mso-spacerun:yes'> 
</span>You need to make sure that the game, on any site, is fully playable and
not limited in any way.<span style='mso-spacerun:yes'>  </span>If players
perceive the game as being nothing more than an advertisement, or that it is
trying to trick them in some way, the game will undoubtedly be rated down and
hidden on sites. <o:p></o:p></span></p>

<p><span style='font-size:11.0pt;font-family:"Calibri","sans-serif"'>Before I
continue I think it is important to point out something that will be a
reoccurring theme in this series.<span style='mso-spacerun:yes'>  </span>It is
important that you choose a monetization model for your games that you are
comfortable with and that suites you.<span style='mso-spacerun:yes'> 
</span>There are pros and cons to any path you choose.<span
style='mso-spacerun:yes'>  </span>Some may have high risk, high reward.<span
style='mso-spacerun:yes'>  </span>Others may be low risk low reward.<span
style='mso-spacerun:yes'>  </span>Some may provide you with the creative
freedom you desire, but limit you in how you can monetize the game, and so
on.<span style='mso-spacerun:yes'>  </span>So, with this next bit of advice I
caution you to decide what model you are most comfortable with.<span
style='mso-spacerun:yes'>  </span>Based on what has been discussed this far, my
recommendation is to strive to invest in the success of your game.<span
style='mso-spacerun:yes'>  </span>This is usually a little bit more risky, but
ultimately it drives everyone involved to push for the game’s success.<span
style='mso-spacerun:yes'>  </span>The reason it is more risky is because it
usually means you take less up front in the deal.<span
style='mso-spacerun:yes'>  </span>Here are a few examples of how you can invest
in your game’s success:<o:p></o:p></span></p>
<p style='margin-left:.5in;text-indent:-.25in;mso-list:l2 level1 lfo3'><![if !supportLists]><span
style='font-size:11.0pt;font-family:"Calibri","sans-serif";mso-fareast-font-family:
Calibri;mso-bidi-font-family:Calibri'><span style='mso-list:Ignore'>-<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span></span><![endif]><span style='font-size:11.0pt;font-family:"Calibri","sans-serif"'>Aim
for a performance bonus (preferably based on CPC to the Sponsor’s site).<o:p></o:p></span></p>

<p style='margin-left:.5in;text-indent:-.25in;mso-list:l2 level1 lfo3'><![if !supportLists]><span
style='font-size:11.0pt;font-family:"Calibri","sans-serif";mso-fareast-font-family:
Calibri;mso-bidi-font-family:Calibri'><span style='mso-list:Ignore'>-<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span></span><![endif]><span style='font-size:11.0pt;font-family:"Calibri","sans-serif"'>Include
links in your game to your own, Developer, site where you have site ads.<o:p></o:p></span></p>

<p style='margin-left:.5in;text-indent:-.25in;mso-list:l2 level1 lfo3'><![if !supportLists]><span
style='font-size:11.0pt;font-family:"Calibri","sans-serif";mso-fareast-font-family:
Calibri;mso-bidi-font-family:Calibri'><span style='mso-list:Ignore'>-<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span></span><![endif]><span style='font-size:11.0pt;font-family:"Calibri","sans-serif"'>Aim
to include Ads in the game and <span class=SpellE>Microtransactions</span> if
appropriate.<span style='mso-spacerun:yes'>  </span>Implementing either or both
tastefully is <span class=GramE>key</span>.<o:p></o:p></span></p>
<p><span style='font-size:11.0pt;font-family:"Calibri","sans-serif"'>Notice
that none of these investments harms the sponsor.<span
style='mso-spacerun:yes'>  </span>In fact, they should increase the value to
the Sponsor as well. Services like <span class=SpellE>GamerSafe</span> and <span
class=SpellE>CPMStar</span> have built in mechanics to share revenue with
Sponsors.<span style='mso-spacerun:yes'>  </span>And since you make more money
by making the game more successful, the Sponsor is benefiting from a very
motivated developer wanting to make sure the game does as well as it can.<o:p></o:p></span></p>

<p><span style='font-size:11.0pt;font-family:"Calibri","sans-serif"'>Another
great thing about Sponsorships is that you get to benefit from the Sponsor
his/herself.<span style='mso-spacerun:yes'>  </span>Sponsors want the game to
do well, and in most cases they know what players like.<span
style='mso-spacerun:yes'>  </span>A Sponsor’s advice can be invaluable.<span
style='mso-spacerun:yes'>  </span>Of course, you should never feel forced to
make changes you feel will hurt the game, but you should be open to any
suggestions a Sponsor may have.<o:p></o:p></span></p>
<p><span style='font-size:11.0pt;font-family:"Calibri","sans-serif"'>Once you
have accomplished these steps, the real fun starts.<span
style='mso-spacerun:yes'>  </span>This is the point where you are actually
pitching your game to sponsors.<span style='mso-spacerun:yes'>  </span>The
easiest way to do this is at FlashGameLicense.com where we have an entire
system built to assist you in this exact situation.<span
style='mso-spacerun:yes'>  </span>The easiest and fastest way to find out your
game’s worth in Sponsors’ eyes is to get them to bid on your game.<span
style='mso-spacerun:yes'>  </span>Bidding wars often get heated and in the end
the most motivated Sponsor ends up on top.<span style='mso-spacerun:yes'> 
</span>And who else would you rather have investing in your game?<o:p></o:p></span></p>

<p><span style='font-size:11.0pt;font-family:"Calibri","sans-serif"'>And once
your Primary Sponsorship deal is complete you can start to sell non-exclusive
licenses.<span style='mso-spacerun:yes'>  </span>This has proven to be a great
secondary source of income for the Developer, but also a harmless condition for
the Sponsor to allow.<span style='mso-spacerun:yes'>  </span>The point of a
non-exclusive license, for the buyer, is not to drive traffic but instead to
retain traffic and acquire quality content.<span style='mso-spacerun:yes'>
</span>Most sites who buy non-exclusive licenses would never take the
distributed version of the game anyway since they do not allow branding other
than their own on their site.<span style='mso-spacerun:yes'>  </span>What this
means is a sponsor is not losing any traffic, but the developer is able to
resell their game indefinitely.<span style='mso-spacerun:yes'> 
</span>Oftentimes a sponsor will ask for a short period of time after the
Primary Sponsorship deal is done before you can sell non-exclusive licenses,
however.<o:p></o:p></span></p>

<p><span style='font-size:11.0pt;font-family:"Calibri","sans-serif"'>This is
merely an introduction to the world of sponsorships and licenses with web
games, and is not meant to be all encompassing or definitive.<span
style='mso-spacerun:yes'>  </span>I invite all readers to visit our site:
FlashGameLicense.com to find out more.<span style='mso-spacerun:yes'>  </span>FGL
is also THE place to buy or sell web games, so be sure to visit if you are
hoping to do either or both.<span style='mso-spacerun:yes'>  </span><o:p></o:p></span></p>

<p><span style='font-size:11.0pt;font-family:"Calibri","sans-serif"'>To
summarize what has been covered here:<o:p></o:p></span></p>
<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l2 level1 lfo3'><![if !supportLists]><span
style='mso-bidi-font-family:Calibri'><span style='mso-list:Ignore'>-<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span></span><![endif]>Make a great game (or have it nearly finished)</p>

<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l2 level1 lfo3'><![if !supportLists]><span
style='mso-bidi-font-family:Calibri'><span style='mso-list:Ignore'>-<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span></span><![endif]>Don’t release your game!</p>

<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l2 level1 lfo3'><![if !supportLists]><span
style='mso-bidi-font-family:Calibri'><span style='mso-list:Ignore'>-<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span></span><![endif]><span style='mso-fareast-font-family:"Times New Roman"'>Give
players an incentive to click to the Sponsor’s site</span></p>

<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l2 level1 lfo3'><![if !supportLists]><span
style='mso-bidi-font-family:Calibri'><span style='mso-list:Ignore'>-<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span></span><![endif]><span style='mso-fareast-font-family:"Times New Roman"'>Invest
in the success of your game (if it is right for you)</span></p>

<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l2 level1 lfo3'><![if !supportLists]><span
style='mso-bidi-font-family:Calibri'><span style='mso-list:Ignore'>-<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span></span><![endif]><span style='mso-fareast-font-family:"Times New Roman"'>Be
open to Sponsor’s suggestions</span></p>

<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l2 level1 lfo3'><![if !supportLists]><span
style='mso-bidi-font-family:Calibri'><span style='mso-list:Ignore'>-<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span></span><![endif]>Get your game in front of as many Sponsors’ eyes
as possible and have them compete to get you the best deal</p>

<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l2 level1 lfo3'><![if !supportLists]><span
style='mso-bidi-font-family:Calibri'><span style='mso-list:Ignore'>-<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span></span><![endif]><span style='mso-fareast-font-family:"Times New Roman"'>Sell
non-exclusive licenses</span></p>
<p class=MsoNormal><o:p>&nbsp;</o:p></p>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

<p class=MsoNormal>As a final note I want to stress that the Sponsorship model
and all of the models that will be covered in future articles in this series
are not mutually exclusive of each other.<span style='mso-spacerun:yes'> 
</span>Developers can, and should, take advantage of all of them. I am merely
presenting them individually as to make them less confusing to understand. The
final article in this series will cover the best ways to combine as many of
these monetization models as possible to maximize the revenue generated by your
game.</p>

</div>

</body>
Monetizing Your Web Game Part 1

Currently there are many choices when it comes to monetizing a web game.  It can be daunting to decide which model is best for a developer.  On top of this, there are conflicting reports as to which ones are truly lucrative.  The hope of this series of articles is to shine a light on many of the monetization methods to choose from by presenting hard facts based on case studies from a number of developers as well as statistics we have been tracking at FlashGameLicense.com and GamerSafe.com.

Part 1: Sponsorship and Licensing

Before I get into the ins and outs of licensing a web game, let me define some terms:

Sponsorship
  • A deal made between an entity (the sponsor) and a developer in which the sponsor pays to have their branding/ads in one of the developer's games. The terms Sponsorship and License are used interchangeably in most cases (and in all cases for the purposes of this article).

Primary License/Sponsorship

  • A sponsorship where the Sponsor has their branding in every copy of the game on the web except where the developer has explicitly sold a Secondary License (defined below) to another entity. The developer has complete freedom to remove the primary sponsor's branding and make any other changes to the game as long as it is licensed and locked to the other entity's domain.
  • A Sponsorship where the license of the game is not exclusive to the buyer.  The buyer is purchasing one custom version of the game.
  • A Sponsorship where the license of the game is not exclusive to the buyer.  The buyer is purchasing one custom version of the game, and this version must be “locked” to the buyer’s domain. This is the most common type of non-exclusive license and it is compatible with the primary license.
  • A bonus paid by the Sponsor to the Developer based on pre-defined performance milestones. Bonus structures take many forms.  A couple of examples are: a lump sum payout if a game gets a certain number of plays, or a CPC (cost per click) deal where the Developer is paid for each unique user sent back to the Sponsor’s site.

Non-Exclusive License/Sponsorship

Secondary License (aka Non-Exclusive Site-Locked License)

Performance Bonus

There are many more licensing types, but these are the most popular and most important for this article.  You can find a longer list of licensing types and terms here: http://www.flashgamelicense.com/view_library.php?page=license-terms At its core, the Primary Sponsorship model is simple:  A Sponsor is interested in getting his or her branding into a game that will potentially be viewed and played by millions of people. In most cases, the ultimate goal is to get those users to click back to the Sponsor’s site via the links in the game. So, this is why your game is worth money to sponsors, but how do you get the most money out of the deal as possible?  The trap many developers fall into is assuming that their game has a set worth to a sponsor, and that if the sponsor pays $x for the game, then they must surely be making more than $x from the game.  This isn’t entirely accurate.  Sponsors make money by licensing games in two main ways.  One, is they plan on the long term funnel of new users a game will bring them.  And two, they sponsor many games in hopes that a handful will be successful.   So, what this means is that they are investing in your game so that they can make their money back long term or, if that doesn’t happen, that your payment will be absorbed by another – more successful – game.  Of course, it is slightly more complex than that in the sense that they are getting brand association with your game and other perks like having high quality content for their site, but when thinking about how to get the most out of a deal the two main factors of long term earnings and uncertain returns should be considered the most. In short, if you can convince a sponsor that your game will have massive, long term, appeal and that their investment is well spent, you can make more money. Easier said than done, right?  Maybe not. Having a great game is definitely most of the battle when it comes to sponsorships, but there is a lot you can add to a game to increase its worth to a sponsor (as an aside I want to mention that you should NOT release your game before you seek a sponsorship.  Once a game is released “into the wild” it is virtually worthless to a sponsor).  The easiest way to do this is to give players a strong incentive to click back to a Sponsor’s site.  This can be done by adding bonus content that is only playable on a Sponsor’s site, or linking to walkthroughs on the Sponsor’s site, or any number of other things.  Take note, however, that you have to be extremely careful in how you execute, and present, this sort of tactic.  You need to make sure that the game, on any site, is fully playable and not limited in any way.  If players perceive the game as being nothing more than an advertisement, or that it is trying to trick them in some way, the game will undoubtedly be rated down and hidden on sites. Before I continue I think it is important to point out something that will be a reoccurring theme in this series.  It is important that you choose a monetization model for your games that you are comfortable with and that suites you.  There are pros and cons to any path you choose.  Some may have high risk, high reward.  Others may be low risk low reward.  Some may provide you with the creative freedom you desire, but limit you in how you can monetize the game, and so on.  So, with this next bit of advice I caution you to decide what model you are most comfortable with.  Based on what has been discussed this far, my recommendation is to strive to invest in the success of your game.  This is usually a little bit more risky, but ultimately it drives everyone involved to push for the game’s success.  The reason it is more risky is because it usually means you take less up front in the deal.  Here are a few examples of how you can invest in your game’s success: -          Aim for a performance bonus (preferably based on CPC to the Sponsor’s site). -          Include links in your game to your own, Developer, site where you have site ads. -          Aim to include Ads in the game and Microtransactions if appropriate.  Implementing either or both tastefully is key. Notice that none of these investments harms the sponsor.  In fact, they should increase the value to the Sponsor as well. Services like GamerSafe and CPMStar have built in mechanics to share revenue with Sponsors.  And since you make more money by making the game more successful, the Sponsor is benefiting from a very motivated developer wanting to make sure the game does as well as it can. Another great thing about Sponsorships is that you get to benefit from the Sponsor his/herself.  Sponsors want the game to do well, and in most cases they know what players like.  A Sponsor’s advice can be invaluable.  Of course, you should never feel forced to make changes you feel will hurt the game, but you should be open to any suggestions a Sponsor may have. Once you have accomplished these steps, the real fun starts.  This is the point where you are actually pitching your game to sponsors.  The easiest way to do this is at FlashGameLicense.com where we have an entire system built to assist you in this exact situation.  The easiest and fastest way to find out your game’s worth in Sponsors’ eyes is to get them to bid on your game.  Bidding wars often get heated and in the end the most motivated Sponsor ends up on top.  And who else would you rather have investing in your game? And once your Primary Sponsorship deal is complete you can start to sell non-exclusive licenses.  This has proven to be a great secondary source of income for the Developer, but also a harmless condition for the Sponsor to allow.  The point of a non-exclusive license, for the buyer, is not to drive traffic but instead to retain traffic and acquire quality content.  Most sites who buy non-exclusive licenses would never take the distributed version of the game anyway since they do not allow branding other than their own on their site.  What this means is a sponsor is not losing any traffic, but the developer is able to resell their game indefinitely.  Oftentimes a sponsor will ask for a short period of time after the Primary Sponsorship deal is done before you can sell non-exclusive licenses, however. This is merely an introduction to the world of sponsorships and licenses with web games, and is not meant to be all encompassing or definitive.  I invite all readers to visit our site: FlashGameLicense.com to find out more.  FGL is also THE place to buy or sell web games, so be sure to visit if you are hoping to do either or both. To summarize what has been covered here: -          Make a great game (or have it nearly finished) -          Don’t release your game! -          Give players an incentive to click to the Sponsor’s site -          Invest in the success of your game (if it is right for you) -          Be open to Sponsor’s suggestions -          Get your game in front of as many Sponsors’ eyes as possible and have them compete to get you the best deal -          Sell non-exclusive licenses As a final note I want to stress that the Sponsorship model and all of the models that will be covered in future articles in this series are not mutually exclusive of each other.  Developers can, and should, take advantage of all of them. I am merely presenting them individually as to make them less confusing to understand. The final article in this series will cover the best ways to combine as many of these monetization models as possible to maximize the revenue generated by your game. </html>

How To Protect Your Game From Being Rebranded

We’ve been hearing a lot of complaints recently about game “rebranding theft” — where unscrupulous websites hack your newly-released game and change your sponsor splash screen, logo, and other identifying assets. This practice is mostly confined to a few countries, especially Chinese portals, and has been happening for years, but it seems to be growing more common.

This amounts to game theft, of course, and it goes completely against the sponsorship model. It’s also quite illegal to modify and redistribute a copyrighted game like this… which is why it is less common in the US, where a sponsor could easily sue another portal for such behavior. But for portals operated in other countries, it can be difficult to take legal action against them.

But you, the developer, can take action! It is actually pretty easy to protect your game from being rebranded. First, you need to know a bit about SWF files.

SWF Format Makes Image Changing Easy

The SWF file format is an open format, well documented by Adobe itself [pdf]. SWF files are made up of little individual chunks, kind of like how a .ZIP file is made up of lots of files. Your pictures are each stored as separate chunks in the file.

Much as you can unzip a .zip file, you can unzip a SWF into its parts. Then you can change some parts (such as the images) and zip it all back into a SWF again. (I’m simplifying a lot, of course — it’s more complicated than the .ZIP file format, but the idea is very much the same!) Your images, your sounds, your shapes, and your code are all stored as separate little units inside the file.

This isn’t a flaw in the SWF format — it’s a feature! Adobe has made the format quite easy to use so that it can be read and manipulated by anybody. The convenience of this format is why there are so many great tools and languages for Flash. But it has a down side, too… it means it’s easy for somebody to replace your images with their own. There are tons of very good tools that can break your SWF down into parts and then put it back together again, with new images included.

Encryption Tools Protect Source Code, Not Images…

You may be wondering, “Well then, what do the various SWF encryptors do?” These don’t encrypt your images. They encrypt your code. If we use the zip-file analogy again, your compiled AS2 or AS3 source code is stored in the SWF file as separate chunks, completely isolated from the images and sounds and so on. What encryptors like Kindisoft do is munge those particular “code” chunks so that they are much harder for human beings to figure out.

But they don’t protect your images… since those are just stored directly as JPEGs, there isn’t much that can be “encrypted” about them. If an encryptor changed the image data, the Flash player wouldn’t know how to read the file!

… So Use Your Code To Protect Your Images

So if only code is protected, how do you protect your images? You write code that verifies your images are what you expect! Then you take advantage of Kindisoft or another code-encryptor to make sure that malicious users can’t remove your code checks.

But how does your code know if the image is right? What we need are “checksums” — a small value that mathematically represents a larger data unit. You may have heard of MD5 or SHA1 checksums… same idea. But there are actually tons of ways to checksum something. Here’s the simplest (and hence, fastest-to-calculate) checksum:

function checksum_Basic(bmp:BitmapData):uint
{
var bounds:Rectangle = new Rectangle(0, 0, bmp.width, bmp.height);
var bytes:ByteArray = bmp.getPixels(bounds);
var total:uint = 0;
for (var loop:uint = 0; loop < bytes.length; ++loop)
{
total += bytes[loop];
}
return total;
}

This function just loops over every pixel in your image, and adds all the RGB values of every pixel together. This results in a number. If the image changes, the number will change, too. Tada! Now your game just needs to check your images at runtime to make sure that it calculates the same number that you calculated originally. If the number’s not what you expected, the image was changed.

First, write a little throw-away program to find out the checksum numbers for the image(s) you want to protect. Assuming you have a DisplayObject or Image control named “picture”, this is how you call the above function on it:

var bitmapData:BitmapData = new BitmapData(picture.width, picture.height);
bitmapData.draw(picture, new Matrix());
trace("This image's checksum is " + checksum_Basic(bitmapData));

Now you should see something like this in your trace output window: “This image’s checksum is 4921452″. Collect these numbers for each image you want to protect, and then copy them into your actual game. In your game, you call the same function and just check against those numbers:

var bitmapData:BitmapData = new BitmapData(picture.width, picture.height);
bitmapData.draw(picture, new Matrix());
if (checksum_Basic(bitmapData) != 4921452)
{
// do something, we've been hacked!
}

Repeat this process for each image. (Make sure the images are fully loaded before you do this!)

If your game detects that it’s been hacked, it should display a polite message and then shut down. Warning: Always be polite in these sorts of messages; never do anything unprofessional. Remember that anything you do on the internet will eventually be taken out of context! It may sound funny to show a picture of the goatse guy when you’re hacked, but somehow, somewhere, that gag is going to backfire on you. Just show a polite message and make the game stop working.

Be Double Secure – Use Two Checksums Together

The above method is all you need to protect your game from having other images stuck into it. But the checksum function I used above is mathematically pretty weak. If a hacker was willing to try enough different pictures, they would find one that has the same number as your picture. It’s probably not worth their trouble, but you never know how determined they’re going to be.

So since we’re feeling paranoid, let’s double it up with a second checksum! We’ll use the well-known SHA256 algorithm. Why? Because it’s very secure… and also because it’s easy to get ahold of! No math is required on our part. If you’re using Flex, then it’s built right in:

import mx.utils.SHA256;
function checksum_Flex(bmp:BitmapData):String
{
var bounds:Rectangle = new Rectangle(0, 0, bmp.width, bmp.height);
var bytes:ByteArray = bmp.getPixels(bounds);
return SHA256.computeDigest(bytes);
}

Or if you aren’t using Flex, you can download the source of the AS3 Core Lib, drop that into your project folder, and use the SHA256 function that comes with that, instead:

import com.adobe.crypto.SHA256;
function checksum_AS3CoreLib(bmp:BitmapData):String
{
var bounds:Rectangle = new Rectangle(0, 0, bmp.width, bmp.height);
var bytes:ByteArray = bmp.getPixels(bounds);
return SHA256.hashBytes(bytes);
}

These functions work exactly like checksum_Basic above, except they return a string like “ce68f9ebff02e8019702a3b4bc8d93535ffcf6b4844f24c0cf37e93bb871b97b” instead of a number. So you just collect those strings and then plug them into your program, same as above. If a picture has a different string at runtime, then it’s obviously changed!

You may wonder, why use both? Why not just use the string function, since it’s harder to trick? The answer is very pragmatic: it turns out that the SWF file format stores all the strings in your game together in little bundles, separate from the code. So even if your code is encrypted, a hacker can sometimes still see and change your string literals! (Kindisoft’s encryptor has a mode that encrypts strings as well as code, but other encryptors don’t.) So a savvy hacker could look for any string that looks like a checksum value, and replace it with the checksum of their own new image, fooling your code. It would be tedious, especially if you have a bunch of images with different checksums — they’d have to experiment to figure out which checksum went with which picture. But it doesn’t pay to underestimate the patience of game thieves.

It’s much harder to track down integer values, especially if you use a lot of constants in your program. Using both a string and an integer at the same time makes it quite difficult to trick your app.

That is, unless you don’t use an encryptor! Remember, this only works if you encrypt your code. If you don’t, then all of this was a waste of time, because thieves can just view your code, see exactly what you did, and remove all those if-statements! If you still haven’t bought an encryptor, do so — it’s a necessary investment. FGL’s encryptor of choice is Kindisoft’s secureSwf product — in our tests, this is much more effective than the other encryptors we tested. It’s also quite reasonably priced for FGL members, as Kindisoft has provided us with a special coupon code for FGL users.

Finally, Beware The Cheap Trick of Moving Your Image Off-Screen!

The way the SWF file format works is both a blessing and a curse. Well, for game devs trying to keep their games safe, it’s mostly a curse. Case in point: even if you protect your images as described above, hackers may still be able to remove your branding! How? By moving it off the screen! If you use the Flash development IDE and place the image on a MovieClip frame, then that frame data gets stored separately from your code. As explained above, only your code is encrypted… so a clever hacker can simply change the x,y coordinates of your image so they’re off the screen, or shrink the width and height to be 1 pixel in size!

If you’ve placed your logo and splash screen on frames in Flash, you should write code that makes sure the images are where you intended them to be. If the picture’s supposed to be at 0, 0, and 640×480 wide (or whatever), your game code should make sure it’s where it’s supposed to be!

If you code directly in pure AS3, or if you use Flex Builder, Alchemy, or haXe, you aren’t susceptible to this problem because your code is what positions the images. The only games that are susceptible to having their images moved off-screen are the ones written directly in Flash player, when the image is placed directly onto a frame.

EDIT: pjbaron pointed out that there are more variables that can be adjusted: alpha should be 1.0, visible should be true, and scaleX and scaleY should be the values you expect them to be. Hmm, this is a lot of variables to validate!

EDIT #2: Rocketman had another approach: use checksums on your fully-rendered splash screens, instead of just the splash screen images. This is easy to do — just dump the entire stage to a BitmapData, get the checksum of it, and use that checksum as described above. If your stage’s checksum changes from what you expected, then something on the stage has gotten moved around somehow.

EDIT #3: But that idea doesn’t work too great because if your game gets resized on some portal, the fully-rendered splash screen checksum will come out wrong. So I don’t recommend that plan after all.

EDIT #4: My current “best recommendation” is to simply not put important branding like splash screens on a movieclip frame at all… in other words, don’t place them on the screen in the Flash IDE. Instead, write some ActionScript code on that frame that creates the image and adds it to the stage or movieclip via addChild(). That way you bypass all of the nonsense about the variables getting manipulated, and it’s much harder to screw up unintentionally.

AS2 Users… All Of This Applies To You, Too!

Unfortunately, I don’t know how to code in AS2… at least, not well enough to make blog examples for it! But the same ideas described here apply for you, too.

AS2 has a BitmapData object also, but it doesn’t have a way to dump all of its pixels at once, so you’ll need to use BitmapData.getPixel() to get each pixel out of your image and add it to your checksum. This method will be much slower than the AS3 version, so you may not be able to do it to all the images in a large game — it might be noticeably slow — so just pick the ones that really matter!

Hopefully a savvier AS2 blogger will pick this up and provide good examples for you to work from.

So there you have it! You can protect your games from being illegally rebranded with less than an hour’s work. Definitely worth the effort to keep your sponsor logo and game branding visible.