Developer Console
Appstore Blogs

Appstore Blogs

Want the latest?

appstore topics

Recent Posts


Showing posts by jesse freeman

April 29, 2015

Jesse Freeman

We are excited to announce that Amazon Fire TV will now support the use of USB-connected external storage such as flash drives. This will enable customers to expand the built-in storage on the device so that they can install even more apps and games! For developers, this now allows you to specify if your app or game should be installed to the external drive or internally which was originally the default option. This is also a great opportunity for game developers who may have had concerns that their game would be too big for the Fire TV’s built-in 8 gigs of storage.

How to Modify your Android Manifest

Making the switch from storing your App or game to external storage is a simple process that will require a small change to the manifest file. To enable your app to be installed on USB storage, modify your Android manifest (AndroidManifest.xml) to include the installLocation attribute of the <manifest> element:

<manifest xmlns:android=""

android:installLocation="preferExternal" ... >



The value of installLocation must be one of the following three values:




(Recommended for most Apps) Install your App on external USB storage when available.


Fire TV chooses where to install your App.


(For Apps that play DRM-protected media) Install your App on internal device storage.

 If you are using a 3rd party framework or IDE, check with their documentation on how to enable this. In Unity for example, you can change this in the publishing settings when you have Android selected as the target platform.

While we strongly suggest enabling this behavior for most games, be aware that Apps, which play DRM-protected media, should use the ‘internalOnly’ flag, to maintain stability if USB storage becomes unavailable while your App is running. Also, you’ll need to decide if you are going to give you App or game write access to internal or external storage.

A New Interface for External USB Storage

The Fire TV platform will provide the user interface to manage USB storage, to fail gracefully if that storage is disconnected or becomes unavailable, and to enable the user to manage the space on both device and USB storage. Please note that external USB storage is not available for Fire TV Stick.

Ready to Publish Your App or Game to Fire TV?

Check out the following links below to learn more:

- Jesse Freeman (@jessefreeman)


April 14, 2015

Jesse Freeman

Welcome to the final part of our series on learning JavaScript for game developers. At this point you should already have made it through part one (Variables), two (Objects and Functions), three (Conditions) and four (Math). As we wrap up this series we’ll cover loops which allow us to iterate over variables as well as perform repetitive tasks easily in code.


Loops are critical for any game. All game engines consist of single loop called the game loop which runs each frame updating everything in the game then drawing it to the display. Let’s look over the basic concept of a loop and how it works. There are several types of loops, we will just focus on a for loop:

for (var i=0; i < 100; i++){
    // do stuff

This may look confusing but here is the basic concept. We are going to do something 100 times. To start we declare that this will be a for loop. In essence what we are telling JavaScript is that it should loop for as long as 'i', a variable we set to equal zero, is less than 100. We do the test of i in the middle of the for loop statement by checking to see if i is less than 100. The final part of the statement simply says to increment 'i' by 1. You’ll remember back to the math section that you can quickly increase a value by 1 with two plus signs. Now every time this loop runs it will call its contents and then increase i by 1.

This is very useful for getting access to the contents of an array. Let’s look through how to get all of the items the player may have:

for(var i=0; i < player.inventory.length; i++){
    var item = player.inventory[i];

Here we are setting up a for loop based on the length of the inventory array. Arrays return the current number of items, in this case it would be 3 and since we are starting our loop at 0 we are able to iterate through all the contents of the array. We can also nest loops which gets a bit more complicated but is useful for displaying the contents of a 2d array:

for(var i=0; i < map.length; i++){
    // get the row’s content
var row = map[i];
    for (var j=0; j < row[i].length; j++){
        // get the column’s content
var column = map[i][j];

If you think back to our 2d array example you will remember that if we access the first index of the map array we get the row and the second index will return the column. You should also pay attention to the fact that I am using two different variable names for each loop. If you used the same variable name it would corrupt the parent loop variable.

Loops can easily grow out of control, especially when you start learning game programming. One thing I want to point out is that loops are process blocking so nothing else can execute until the loop is completed. That means if you use lots of for loops or nested for loops you will start to experience performance issues. Be mindful of your loops and how much you try to execute within the scope of a single frame in your game.

Programming can seem overwhelming but like any other skill you learn, it only gets better with practice. Learning how to code by making a game is a great way to motivate yourself to pick up a new language or just get started from scratch. Hopefully some of these examples help point you in the right direction of how these basic programming concepts can be applied to making games. If you are ready for the next level, check out the related links at the bottom for my post on how to build a simple game HTML5 with Phaser.

Related links

- Jesse Freeman (@jessefreeman)


April 09, 2015

Jesse Freeman

Welcome to part four of our five part series on learning JavaScript for game developers. In the previous parts we covered Variables, Objects and Functions as well as Conditionals. In this post, we dig a little deeper into how to perform math equations in JavaScript.

Performing Math Equations

I am just going to go over some simple math concepts here. I actually plan on doing a more in-depth post on math for games at a later point. Let’s cover some basics since everything in programming revolves around math. You can add two values together with a plus sign:

var total = 1 + 1;

Likewise you can subtract them with a minus sign:

var total = 5 – 3;

Multiplication uses an asterisk symbol:

var total = 2 * 1; 

And division uses a forward slash

var total = 4/2;

All of the same math rules you used in school will apply here. There are also some shorthand ways to add values together or increment them. Let’s take addition and subtraction for example:

var total = 0;
total ++;

This will increase total by 1. You can do the same with subtraction:

var total = 2;
total --;

Also you can add two variables together quickly like this:

var valueA = 10;
var valueB = 10;
var valueC = valueA + valueB;

If you want to simplify adding a new value to an existing variable you can do something like this:

var valueA = 10;
valueA += 100;

This will take the current value of valueA and add 100 to it. You can also do the same with subtraction, multiplication and division, simply substitute the plus sign for the correct math operator you want to use.

The last thing I wanted to cover is that addition and multiplication are going to be the fastest math operators you can do. Division is "expensive" meaning it will always be slower than multiplication. Because of this it’s best to use multiplication where possible. We can achieve similar results to what we would get out of division by using fractions. Here is an example of getting half of a value:

var half = 4/2;

We can optimize this by doing the following:

var half = 4 * .5;

This is also incredibly useful for things like displaying a life bar. You may have something like this: = 5;
player.maxLife = 10;

Here we can get a fraction of the player’s life:

var lifePercent =;

Now if we have a health bar that we know is 100 pixels wide we can simply set its size to the percent of the player’s life:

var lifeBarWidth = 100;
lifeBar.width = lifeBarWidth * lifePercent;

This will cut the width of the lifeBar in half. I use this a lot in any UI that has a meter or changes size on the fly based on a current and max value. Now that we have a foundation in JavaScript let’s talk about something a little more complex, loops.

Ready to Submit Your App or Game?

- Jesse Freeman (@jessefreeman)



April 03, 2015

Jesse Freeman

Welcome to part three of our five part series on learning JavaScript for game developers. In part one we talked about Variables and in part two we covered Objects and Functions. In this part we’ll walk through how conditionals work in JavaScript to add more complex logic into your code.


ames are made up of states and we are constantly trying to determine what happens based on that state. Is the game running? Is the player alive? Does the player have a weapon? If the player has a weapon can they can shoot? In order to test these states we will need to use conditionals. There are three main types of conditionals I’ll go over here. The most basic is an if/else statement:

if(player.isAlive == true){
    // do something

Here we are testing to see if the player is alive. By using the double equal sign with are making sure the player’s isAlive property value is equal to true. If the player is alive we can run some code. But what happens if the player is not alive. For this we can make use of an else statement.

if(player.isAlive == true){
    // do something
    // do something else

Here you can see we are still testing if the player is alive. Now we can execute different code such as end the game if the player is not alive. Likewise you can add as many if statements as you like this:

f(player.isAlive == true){
    // do something
}else if(player.isAlive == false{
    // do something else
    // do nothing 

Another interesting way to take advantage of conditionals is by using something called a switch statement. It’s similar to an if/then statement but allows you to test a variety of values without the need for adding operators such as equals, less than, etc. Here is how you create a simple switch statement:

    case "g":
        //do something
        // do something

As you can see the switch statement is designed to test a single value against a case. If we were to pass in a string "g" it would pass the first case. We always add a break at the end of a case to keep other cases from executing. Finally we can use a default case to run something if no value is matched. Switches are very common in games and a great example would be getting the value of a letter in a game of scrabble:

getLetterValue(letter) {
    switch (letter) {
        case "g": case "d":
        return 2;
        case "m": case "b": case "c": case "p":
        return 3;
        case "y": case "f": case "v": case "w": case "h":
        return 4;
        case "k":
            return 5;
        case "j": case "x":
        return 8;
        case "q": case "z":
        return 10;
            return 1;

Here you can see that I am assigning values to different letters. The most common value is always going to be 1 so that becomes my default return value. From there I set up cases for each letter going in order of value. You can add additional cases to a single test as you can see from each one of these score tests I wrote.

There is one additional conditional I want to go over quickly called a ternary operator. It’s similar to an if/then statement but all on one line. Here is an example:

var playerState = (player.isAlive == true) ? "Alive" : "Dead";

In this example we simply test to see if the player’s isAlive property is set to true. We do this test on the left hand side of the question mark. If the statement is true than playerState’s value will be set to "Alive" which is on the left hand side of the colon. If the value was false, the statement would return "Dead" which is on the right hand side of the colon. Here is a quick cheat sheet for how to write ternary operators:

condition ? value if true : value if false;

These are very useful when you don’t need to write out full if statements or are trying to clean up values into strings and need to do it inline of a variable.

Ready to Submit Your App or Game?

- Jesse Freeman (@jessefreeman)



March 18, 2015

Jesse Freeman

Welcome to part two of our five part series on learning JavaScript for game developers. In part one we talked about Variables. In this part we’ll cover Objects and Functions. Previously we simply stored variables in the global scope. This is not the best way to do that. In order to build more complex data structures we rely on something called Objects.


Think of an Object as a container that can hold other Variables, Arrays and even block of code called Functions. Here is an example of how to create an Object:

var player = {};

This is similar to how we created an Array but unlike an Array, values we attach to Objects are not ordered. Here is an example of how we would put a name variable on the player: = "Jesse Freeman";

When we attach a variable to an object it is called a property of that object. To access its value we simply call it by name like so:;

This would return "Jesse Freeman". We can also attach Arrays to Objects just like we do variables:

player.inventory = ["item0", "item1", "item2"];

To get the value of something from the player object’s inventory simply access it just like you would a normal array:


This would return "item 1" from the inventory array. Objects are incredibly powerful in JavaScript and should be used to store and organize data such as player info, game settings, level details and even game logic. As you continue to build out a game you will eventually need a place to store instructions of code. For this we use something called functions.


Functions allow us to create containers of reusable instructions. It also allows us to control when a block of code will get executed. Take the following example:

var firstName = "Jesse";
var lastName = "Freeman";
var fullName = firstName + " " + lastName;

Believe it or not this is a common process where you would want to combine two variables together such as a first and last name. If you run this code in JavaScript it would execute immediately. Also, we would have no way to rerun it. Functions allow us to control when and how this action would take place. Here is the basic template for writing a function:

function getFullName(){
    //code goes here

Just like we declare a variable with var we denote a function with the function identifier. Next is the name of the function and then the block of code that will make up the function is contained in the curly brackets. Here is an example of the above function but with some logic inside of it:

function getFullName(){
    return firstName + " " + lastName;

Here you will see that we moved the code that combines the first and last name into the function. We are using a new statement called return which will give us back a value when you call the function. In order to execute this you can call the function by name:


Even better, we can assign the value we get back to a variable:

var fullName = getFullName();

But this will only get us so far. Since the function has a scope of its own, meaning it doesn’t have access to anything outside of the curly brackets, it has no way of getting access to the first and last name variables. Luckily you can pass these into the function via parameters. It looks something like this:

function getFullName(firstName, lastName){
    return firstName + " " + lastName;

Now when we call the function we can pass in our first and last name and the function will return the full name back.

var fullName = getFullName("Jesse", "Freeman");

Functions can have any number of arguments and you can pass in Strings, Numbers, Booleans, Arrays, Objects and even references to other functions. As you learn more about coding you will make extensive use out of functions and eventually you will learn how to attach them to Objects so you can reuse them throughout your games. Next, we’ll talk about how to build conditionals in JavaScript to help you build out logic blocks in you own games.

Ready to Submit Your App or Game?

- Jesse Freeman (@jessefreeman)


March 13, 2015

Jesse Freeman

I have been teaching programming for a long time now and I work with a lot of people who have never coded before but want to make a game. I put together the following 5 part series to help teach people the fundamentals of game programming. In the past, this course has been a great success and figured I would share it again to help you get started learning the fundamentals of programming. Over the next few posts we’ll go over JavaScript.

It is easy to create something with JavaScript right in the browser, there are lots of resources on how to build JavaScript games and JavaScript can be written with a simple text editor. I highly suggest using a resource such as Code Academy’s online JavaScript course to get you started. I designed this to be a cheat sheet of sorts for those still learning JavaScript and want to start making HTML5 games. With that in mind, these examples all revolve around use cases you would find in games and are designed to help you think about how this code is applicable to game development.


The first thing you will ever hear in programming is that "a variable is a container". We use variables to store data. In JavaScript we use var to denote a variable. Here is an example:

var playerName = "Jesse Freeman";

There are 3 basic types of "primitive" variables:

  • Strings – this is text and is always put into quotes
  • Numbers – these are numbers and can be positive, negative, whole number or fractions
  • Booleans – this is a true or false statement. Also you can use the value 0 for false or 1 for true as well. 

The most common thing you would probably want to store in a game would be things like the player's name, their score and whether the player is alive or not. Here are some examples:

var playerName = "Jesse Freeman";
var score = 0;
var isAlive = true;

In addition to these 3 simple examples you can actually store anything inside of a variable. Let’s look at some more complex data structures.


Arrays are similar to variables but they can contain more than one value. Think of Arrays as lists. In games we could use Arrays to keep track of items in the player’s inventory. Here is how you set up an empty array:

var inventory = []; 

Likewise you can also create an Array with items inside of it like so:

var inventory = ["item0", "item1", "item2"]; 

In this example we have 3 Strings inside of the inventory array but we could also have Numbers or Booleans as well. In order to get the value of an array we have to access its index. This is a unique ID related to the position of the item in the Array. In JavaScript Arrays are 0 based so the first item is always index 0. Here is an example of how we would get the value of the first item:


As you can see, we simply reference the Array itself and use brackets to supply the index we want to access. Arrays also have special functions (we’ll learn about functions later) that allow you to add and remove items from the Array. Here is a quick example of how we can add something to the array:


You can also get the total number of items in an Array like this:


This would return 3 but remember if you wanted to use this to find out the last value of the Array you would need to subtract 1 from it since the starting index is 0. Here is how you get the last item in the Array:


Arrays are incredibly versatile and are used to holds lots of different kinds of data structures. One of the most common is a table like structure with rows and columns of values. This is the basic structure we would use for tile maps and would use something called a 2d Array to store the data. A 2d Array is an Array containing other Arrays. Here is an example:

var map = [[1,1,1,1,1],

This simple map example uses two tile values: zero for empty and one for solid. If we were to visualize this map it would be a square room with a solid block of wall right in the middle. Accessing the value of these tiles is similar to how we did with our inventory Array. Let’s say that we want to get the center wall in our room, here is how we would access it:


One way to help you think of this is that the first index is the row and the second index is the column like this:


Remember that arrays can contain anything so the nested Arrays don’t have to necessarily store numbers, they could be Strings or even Booleans.

Variables and Arrays are the cornerstone of programing and one you get your head around how they work you can begin building event more complex structures in your own games. In the next post we’ll cover how to create Objects and Functions so you can begin to build out more complex logic.

Ready to Submit Your App or Game?

- Jesse Freeman (@jessefreeman)


March 11, 2015

Jesse Freeman

If you are looking to build your first game or just interested in trying a new platform we have a great collection of tutorials on our blog. Each of these posts are designed to not only help you release your game on the Amazon Appstore but also cover the basics of programming, game design, marketing and of course publishing. To get started, checkout our series on game design 101:

Next up, if you are looking to get started with Unity we have a two part series on how to use Unity’s IDE as well as a primer on C#:

Interested in making a game in HTML5? We have an in depth series on building your first game with Phaser:

If you are looking for something a little more advanced, make sure to check out these posts on building a splash screen for your game and also adding dynamic perspective. We have one in Unity and the other in HTML5 so you can see what the processes is like for both platforms:

Finally if you are already a seasoned game developer and just looking to learn more about why you should publish your game to the Amazon Appstore, check out this post on Making the Amazon Appstore Your Game's Home. We also cover more advanced game design on how to support multiple resolutions across each of our devices (Fire TV, Fire Tablet and Fire Phone) in the Responsive Game Design post.

Ready to publish? Here are some important links to help you out:

- Jesse Freeman (@jessefreeman)


February 13, 2015

Jesse Freeman

Crossy Road is an incredibly popular game that recently launched on the Amazon Appstore. The best way to describe the game is a mix between frogger and flappy bird. It’s super addictive with a unique art style and rock solid gameplay. We sat down with the creators and asked them how they created it, what their plans are for the game, and where they see it going next.

Can you give as a little background about yourself and the company?

Hipster Whale was formed midway through the development of Crossy Road. Once Matt and I (Andy) realized that the game had potential we decided to form the company.

Left to Right: Ben Weatherall, Andy Sum, Matt Hall.

Matt and I first started talking about game ideas after GCAP 2013, an Australian game developer conference. We kept bouncing ideas backwards and forwards online and eventually found something that we both really liked. Matt and I live about 90 minutes away from one another and so we did all of the development remotely, only meeting up once during the entire 12 weeks of development.

How long have you been making games for?

Matt: Andy and I have both been creating games since we were just kids.  For my 8th birthday I was given a Commodore 64 and I played and made games with it for 10 years.  It’s the one hobby I could never quit.  I became an independent developer in 2008 making games for PC first and then for mobile.

Andy: I've been making games since I was about 10. I started with some basic visual tools, making free games as a hobby and for competitions. I began making games for PC commercially in 2008 and now Crossy Road is my first mobile game.

What language/framework are you using to build Crossy Road?

Crossy Road is built with Unity3D and C#.  The art was created with a brilliant tool called Qubicle.  I discovered it a few years back.

Crossy Road has some clear inspirations from arcade games like Frogger; can you talk about other influences?

The crazy success of Flappy Bird earlier this year was one of the key catalysts for creating the game and the alliteration in ‘Crossy Road’ was a wink toward Dong’s game.  While others aped the design of the game we just wanted to carry on that same spirit.  The idea of combining Flappy Bird with Frogger popped into my head and Andy thought it was a great idea.  There are lots of other influences including Skylanders, DOTA 2, Disco Zoo, Temple Run, Subway Surfers, FEZ and Tiny Wings.

How does the procedural generation work in your game?

The procedural generation in Crossy Road is something we spent a lot of time tuning to get the right balance of difficulty and fun. We wanted a system that would allow new players to enjoy the game, while giving experienced veterans a worthy challenge. The game gets harder and harder the higher your score goes, as cars, trains and logs all move at a faster rate. After about 150 hops forward you'll start to see more difficult world configurations, such as ten lanes of traffic in a row or alternating rivers and railroads.

In future updates we’ll add even more hazards, but we won’t spoil those just yet.

What do you think is the reason behind Crossy Road's current success?

There’s no one reason other than we set out to try to make the stickiest and most viral game we possibly could.  Every feature added was carefully considered to make the game fun to play and share with friends.  It was important to us that nothing got in the way of the “play again” button.

We are excited to have Crossy Road launch in the Amazon Appstore and Fire TV. What are your thoughts of micro console and Android powered streaming boxes that play games?

I’ve been excited for years with the possibility of really easy to access video games on the TV.  Mobile gaming is so popular because it’s right there in your pocket and the touch interface is perfect.  But there’s so many types of games that would benefit from a physical controller.  That the Fire TV has done so well is fantastic!.

Now that Crossy Road is growing in popularity, what do you plan on doing to help keep retention and continue to grow your audience?

We have a long list of ideas for things that we want to add to the game, including adding more depth and unique elements to existing characters.

We're going to keep adding new characters every month, which will hopefully keep players interested for a long time. There has been very positive feedback from players about the current secret characters and we're thinking up exciting new ways for players to unlock more.

If you could do one thing over again for Crossy Road, what would it be?

It’s been really frustrating to have so many players want to play the game, but couldn’t.  Our team is really tiny and so we have had to slowly stagger our rollout so that it wouldn’t overwhelm us.  If we knew it was going to be this popular we would have gotten some more developers onboard to help ensure the game is available everywhere as close as possible to launch.

What advice do you have for devs trying to launch an indie game on mobile and tv?

If you're really interested in making a game for the Fire TV then make sure you spend a lot of time designing how it will work with controllers. The best games on TV have carefully thought out control schemes and make navigating around menus feel very natural.

For mobile games and game development in general it's important to watch other people play. Take note of what they struggle with and think about what you can do to help them understand concepts better.

Wrapping Up

We are glad that Hipster Whale took the time to talk about how they made their game and also release it on the Amazon Appstore. Make sure you check it out and if you are looking for additional resources to bring your own game to the Amazon Appstore and Fire TV be sure to check out the following links:

- Jesse Freeman (@jessefreeman)


February 10, 2015

Jesse Freeman

Welcome to the final part of this five part series on making games for the Amazon Appstore. Part one, two, three and four helped you build the foundation for your game’s design and in this final post we will talk about how to actually market your game.

So you have finally finished your game and are ready to release it to the world. While there is a lot you can do after you have completed your game to help make it a success, you should always be thinking about marketing your game from the very beginning. The following section will help you with everything from naming your game to how to help it stick out in an overcrowded mobile store. While marketing a game is not an exact science, and its success has a lot to do with the quality of your game and pure luck, you can still take the necessary steps to ensure it gets the most attention possible out of the gate.

Naming Your Game

The name of your game is going to be the single most important decision you make. Companies spend huge amounts of money doing market research to come up with product names, and what you come up with for your game has lasting effects. The most basic thing you can do to help your game be more successful is to simply give it a descriptive name. Look at other games and how they came up with their names:

  • “Mario” – Named after the main character. While it doesn’t describe what you will be doing in the game, it helps establish the lead and his name defines the brand.
  • “Legend of Zelda” – The word legend implies a deep story told a long time ago, and saving Princess Zelda is the main objective of the game.
  • “Grand Theft Auto” – The name alone implies stealing cars and breaking the law. It clearly describes the main gameplay mechanic the player is going to expect to be doing.
  • “Angry Birds” – Doesn’t get any more basic than this. You play as a bunch of angry birds.

Naming a game isn’t always an easy task, but make sure your game’s name is clear, descriptive, and easy to remember. Also, make sure your game’s name makes sense for sequels and continuations if you find yourself with a hit on your hands.

Getting People to Play Your Game

This topic really goes back to the beginning section on what platform to build your game in. The key to success is really getting your game in the hands of as many players as possible. To do that, you will need to pick a platform with the most reach possible. While HTML5 has the incredible advantage of being published to the Web, you will find that it is more difficult to publish to a native store. Frameworks like GameMaker and Unity will allow you to publish to multiple platforms, but they charge extra for that service. Some features are free, and while GameMaker allows you to export an HTML5 version for the Web and Unity has a Web Player for its game, you really need to do your research and pick the right tool from the beginning.

The ideal scenario is that you are able to release your game on all of the major platforms: Web, iOS, Android, FireOS and desktop. From there, you have some granular options to decide on, like what devices to support on each mobile platform, and even what version of the OS you can support. Don’t forget Web stores, such as Chrome Market and Firefox’s new Web-based Phone OS. Also, there are online game portals that do revenue sharing based on ads around your game. While mobile is all the rage, don’t forget how many people still use Web browsers, and every modern mobile device also supports playing Web games, so you get even more bang for your buck. I am now working on having all of my games as Web-playable demos pointing to the app store versions to help broaden my audience, since being found on the Web is much easier than in an app store.

If the Web isn’t your thing, also keep in mind cross-platform desktop publishing. A lot of indies have had success with Steam Greenlight, as well as bundle deals like Humble Bundle. Both of these distribution solutions leverage desktop compiling and usually want games that support Windows, Mac, and Linux. If you intend to ever get your game on Steam, make sure you are able to offer a desktop installer.

Charging for Your Game

With all of this talk about distribution, you are probably thinking through all of your monetization options. Let’s take a look at the three most common options out there now:

  • Flat rate – Your first instinct is probably to charge a flat rate for your game, like 99 cents or more. Some games can command a very high premium on the mobile market, but gone are the days of charging $5, $10, or more, especially if you are just starting out. When it comes to pricing your game, you should do a lot of research on your game’s genre, its competition, and what it costs. If you see a lot of high quality free games similar to yours, it’s probably best to consider an alternative option.
  • Free with ads – This was popular for a long time before in-app purchases were introduced. Basically, you make the game free and use ads to help generate money. While there are clear advantages to making your game free, which allows anyone to download it, it is also incredibly hard to monetize from ads. As an example, my most successful game on Android with almost 50k downloads (roughly 1-2k players a day) only generates $1 or less each day. In order to really make money with ads, you will need at least 100k players a day or more, and show larger, more obtrusive ads that tend to slow down the game’s flow or frustrate players.
  • IAP (in-app purchases) – The final approach, which has gained considerable popularity lately, is relying on IAP (or in-app purchases). Usually, the game is free and you try to upsell so users buy more levels, items in the game, or even ways to speed up their in-game character’s development. What’s good about this approach is that your game is completely free, so you get my people playing your game, and if they like it or you have compelling IAP, they end up paying more than they normally would had your game been sold at a flat rate. This model is extremely hard to pull off successfully, and it’s a fine line between adding additional value to your game and trying to exploit the player’s compulsion loop.

The reality is that, if this is your first game, chances are high that you will not make a lot of money off of it. Having a successful game is kind of like winning the lottery. I am not telling you this to discourage you; I want first-time game developers to have a clear idea of what they are in for. Even seasoned game developers have a difficult time monetizing their games without help from marketing firms. Even getting good reviews on game sites, which is hard to do, doesn’t always translate into lots of sales. The best thing you can do is get featured on the app store itself, but once that promotion is over, unless you have a real hit on your hands, you will see a natural drop off in your game’s sales or downloads.

The last thing I want to talk about, which leads into our next topic, is that making games is a learning experience. The more games you make the better you become as a game developer and grow your chances of making a hit game. While it’s very frustrating for first-time game developers to work hard on something and not see people download it or buy it, you shouldn’t give up. One of the best things your game can be is a promotional tool for you and even your next game. Always be sure to have links to your other games inside of your game to help promote everything you are doing. You may be surprised to realize that, over time, you actually end up building up a following of people more willing to pay for your next game if they continue to play and like the ones you are releasing now.

The More Games You Make the Better

I talk to a lot of game developers each day, and they all have the same story: the more games they have in the store the better their sales are. This happens for two reasons. The first is that, when you make more than one game, they are all featured on your game’s download page under a section that highlights other games made by the same author. That means that each additional game you make basically gives you free advertising for your other games. The second thing that happens is that, when a person likes your game, they naturally want to play more games you have made. This means they will look at anything else you have created, which is the basis for building your own fan base. So each successive game you release will naturally help drive downloads and sales of your past games as well. This is another reason why you should not give up if your first game isn’t an instant success and just keep making as many games as you can!


The good news is that publishing to the Amazon Appstore is free and easy, especially if you are already building Android games. Simply sign up for a developer account at the developer portal to get started today. Here are some additional links to help you gets started:

- Jesse Freeman (@jessefreeman)


February 06, 2015

Jesse Freeman

We are now 4 topics into this series on how to make games for the Amazon Appstore. If you missed the original posts, make sure to check out part one, part two and part three to get caught up.

Once you have your game up and running, and you begin to approach being able to release it, you are going to want to go over all the details and make sure it’s polished. Sure, you can put a game out there just to see how it does, but in today’s saturated market of mobile games, you need to make sure you put your best foot forward when releasing your game. Here are a few things you should do in your own game before you release it.

Consistent Design

One of the most important things you should do in your game is make sure your art style is consistent throughout the game. Your in-game graphics and your UI, and even the splash screen, should all look and feel like they belong together. The best example I have of this is Mega Man 2.

As you can see the box art for “Mega Man 2”, on the left, is completely different than what the actual game looked like, on the right. While there is a time and place for being creative with your game’s art style, just make sure you don’t set the wrong expectations for your perspective players. This is especially important when it comes to creating screen shots to entice people to pay for or download your game. In the end, keeping everything consistent will help make the overall game feel more polished.

Supporting Multiple Resolutions

How to support multiple resolutions is probably one of the most common questions I get asked at all of my game design talks. Outside of supporting mobile resolutions, which are all over the place, desktop monitors have been driving game developers crazy for years. When it comes to designing for multiple resolutions, you just need to understand how aspect ratio works and decide whether your game will attempt to maintain it. To help myself out, I always start with a comp of the three main resolutions I want to support.

Here you can see that the native resolution of my game is 800 X 480. This is a 5:3 aspect ratio. From there, I can easily scale my game to 1024 X 768, which is a similar aspect ratio of 4:3. My game will also support 1366 X 768, which is a 16:9 aspect ratio. The key to this system is that my game camera simply shows more of the game screen as I change aspect ratios, and the UI moves based on the resolution as well. Here is an example of the game at two different resolutions.

Here is the game at 800 X 480. As you can see, the camera shows less of the action, but I make sure the UI scales down nicely to support the lower resolution without any overlapping.

And here is the game at 1366 X 768. As you can see, both versions of the game are fully playable, but you end up with a little extra screen real estate at the higher aspect ratio.

Perceived Performance Optimizations

The last thing I want to talk about when polishing your game is perceived performance. A lot of the time, developers spend days upon days trying to optimize their code when they end up forgetting that a few minor tweaks to the way their game runs will help give the impression of better performance to players. Sure, optimizing artwork is a key part of any performance optimization, but why not make your loading screen look more interesting while people wait, or work on making the transitions from screen to screen more seamless. Even tricks like lowering the FPS could actually help out if your game is struggling to maintain 60 FPS. Most games can easily get away with 30 FPS. Also, having more animation transitions and frames can help remove the feeling of slowness or unresponsiveness in gameplay.


The hardest thing to really understand is how to support multiple resolutions. Once you understand that you will be on your way to being able to make games across multiple platforms and screen sizes. To help get you started here are some resources to help you better understand our Fire Phone, Fire Tablet and Fire TV resolutions and tips for optimizing:

- Jesse Freeman (@jessefreeman)




January 28, 2015

Jesse Freeman

As we continue our game design series we’ll focus on one of the most important aspects for any game, adding artwork and sounds. Don’t forget to check out part one for picking a game framework and part two for game design 101.

If you don’t come from an art or music background, you might find this part of the game creation process the most stressful. Building a game for the first time will stretch all of your skills, like programming, creativity, design, and more. It’s easy to get bogged down in the details and forget the most valuable part of making a game, which is building something fun to play. In this section, I will talk about some approaches to adding artwork and sounds into your game.

Working Without Art and Sound

The first thing I tell people just starting out is to use placeholder art and sound while building a game. It may be hard to believe, but you can always get artwork later, and sound is just as easy to find online or get help making. To be honest, if you build a compelling enough game, you may even be able to convince an artist or musician to work for you and share the profit from the game. But none of that will happen if you don’t have a fun game to begin with. It also helps to take a look at other games that use minimalistic or dynamically generated art as inspiration as well. The following are a few very successful indie games that do that.

“Thomas Was Alone”

While “Thomas Was Alone” looks deceptively simple from the screen shots, there are a lot of subtle visual effects that add depth to the art style. But, at the end of the day, the game is really about a set of primitive shapes and basic geometric levels.

“Super Hexagon”

“Super Hexagon” was a hit as soon as it was released. It revolves around the simple concept of not touching the walls that rotate and move to the music. As you can see, the levels appear to be dynamically generated, and while its creator uses a really great soundtrack to move the levels along, all of the visuals can be sorted out once you have the basic gameplay mechanics down.

Let’s talk about how to make art and some ways to package it up into your game.

Working with Artwork

I love pixel art. It’s super easy to make, and most of the games I build are based on old Nintendo games I used to play as a kid. While pixel art isn’t for everyone, here is a list of some design tools to get you started:

  • Photoshop – This is one of the most popular and expensive art tools out there, but with Adobe’s new Creative Cloud plan, you can pay for it monthly. Photoshop is great for creating rasterized artwork, and you can do vector art as well. I use Photoshop for all of my game design and layout work.
  • Illustrator – Just like Photoshop, this is the most popular vector-based art tool out there. I suggest using a vector-based editor if you are going for a cartoony look or want to make sure your game’s artwork can scale to any resolution. Not a lot of game engines support vector artwork like Flash did, so that’s something to keep in mind.
  • Aseprite – If you are doing pixel art, this is one of the best editors out there. Not only is it free and open source, it’s just great for making pixel animation and even supports importing and exporting sprite sheets.
  • GIMP – If you are looking for a Photoshop alternative, I suggest checking out GIMP. I was never able to get into it, because I’ve been using Photoshop since version one, but GIMP is free and a lot of game developers and artists I know use it.

I could probably write an entire book on tools for making artwork for games, but you should take a look at other online tools I may have missed or that you might already own. At the end of the day, it’s all about doing the best you can when it comes to making artwork, and if your game is good enough, you will eventually find someone to help clean it all up. I actually outsource all of my artwork even though I have a background in art because I want to focus on the game and let someone else carry the burden of making good game art. You can find my own collection of open source art work at

Working with Sounds

Just like artwork, creating sound effects can be a daunting process. I suck at sound design, and it’s another thing I try to outsource as much as possible. I do have a secret weapon, though, called Bfxr, which you can use online or install on your computer as an AIR app from

This app is perfect for generating simple 8-bit sound effects for your game. It may look intimidating at first, but as you can see on the left-hand side, there are a bunch of pre-defined sound templates, such as pickup, laser, explosion, and jump sounds. But the most important button is Randomize. I use this all the time to come up with new sound effects, and you can use the Synth option in the middle to modify it. I use these as placeholder sound effects in most of my games, and over time, I have built up a nice little collection of sound effects I can use from game to game to help speed up my development. You can download my collection at

Once you have some sound effects, you are going to need a way to convert them. Bfxr likes to generate .wav files, but you’ll be hard pressed to find a game frameworks that still use that file format. That is why I use a program called Audacity, which you can get at

For example, when it comes to HTML5 games, you are going to need to output .mp3 and .ogg files, since each browser supports a different file format.


While this is just a small part of what you will need to produce artwork and sound effects, I have a few links below to open-source artwork and additional resources to help you get started:

- Jesse Freeman (@jessefreeman)


January 22, 2015

Jesse Freeman

As we continue this multi-part series on how to make your first game for the Amazon Appstore we’ll dig into the fundamentals of game design. If you are just finding this post, make sure you check out part one which covers picking a game framework that supports exporting to the Amazon Appstore.

For most people, it usually starts the same exact way. You have a game idea and just want to start building. Making a game is more than just having a good idea and the skill to code it; you have to think through the gameplay, the target audience, and map out what it is you are going to build.  I love this tweet by Sean James McKenzie of @baconandgames about your first game idea:

To help you simplify your idea to something manageable you should start by getting it down on paper. No one builds a house without a blueprint, and you shouldn’t make a game without a solid plan either. This could be something as simple as a task list with everything you need to do or something more specific, such as a document outlining all the details. Either way, your game design process is going to start with a blank page. Let’s talk about how to fill it in.

Document Your Idea

In traditional game development, you are encouraged to make a game design document. This is usually a large document outlining every aspect of a game. It’s the blueprint that the rest of the team must follow when building out the game. If you are a single developer, this is overkill. You can easily boil down a GDD into a single list of tasks with a few introduction paragraphs and any collateral or references, such as screen shots and links to other games or game mechanics you like.

It’s up to you to find the best way to document your idea, but the more you work through the details the better the project will end up. It’s very “cheap” to work out your ideas on paper or in your head before you start coding. Once you begin the coding process and need to go back, you amass what we call technical debt that can make your code unmanageable or, even worse, kill your productivity altogether by forcing you to constantly hack together new solutions or refactor code you’ve already written.

If you are having trouble getting started I highly suggest checking out the 1 Page GDD by Javi Cepa (@JaviCepa).

Getting Feedback

The most important part of this documentation process is sharing your idea with others and getting their feedback. I know you want to protect your idea with your life, but the reality is that most people starting out making games need feedback from others. We all start out with the lofty goal of “making a game I want to play,” but the reality is that you are just one person and, in order to be successful, you need to appeal to larger markets. I’m not saying you should post your game ideas online for all to see, but find a select group of trusted friends and run it by them. You’ll find that some feedback is hard to take, but being able to filter out what will actually make your game better is a valuable skill to have.

Play More Games

Perhaps the most important thing outside of documenting your own ideas is to start playing games … a lot of games. As a game maker, your hobby should be playing games, taking them apart, and figuring out what makes them tick. You should keep a notebook of all the games that you play, and even the ones you don’t play but see online. Use something like OneNote, or any note-taking app. The idea is to write down what you like about the game, what you don’t like, and some of your big takeaways from playing it. There should be screen shots if you like the art style and links to any collateral information on the game that will help you with your own ideas later. Since you never know how a game will inspire you, it’s important to be as detailed as you can. It sounds like a lot of work, but it’s honestly the most valuable tool you will ever have when it comes to finding inspiration and avoiding common pitfalls.


Once you have mastered these three steps for writing down your ideas, vetting them out and finding new inspiration you will be on your way to making your own game. To help get you started, here are a few games I suggest trying out on the Amazon Appstore which inspire me:

Ready to Submit Your Game?

  • Click here to register for free as an Amazon Developer. 
  • Click here to download the Amazon Mobile SDK. 
  • Click here to submit your app

- Jesse Freeman (@jessefreeman)


January 12, 2015

Jesse Freeman

In this five part series you will get the basic foundation you will need to get started. In part one we’ll cover picking a framework and why you should use one designed specifically for game development.

Whether you are a seasoned game developer or just getting started making your own game, chances are you are going to need a good game framework to build upon. A game framework could be as simple as a collection of code packed up into a library in a specific language, like JavaScript, or a more complex system of scripts, tools, and workflow built on a specific platform. Both types are designed to help speed up your game’s development. The last thing you want to be doing, especially when getting started, is reinventing the wheel. Here is a quick rundown of things to look for in a good game framework:

  • Speeds up development by including collision and physics, and handles input
  • Has good documentation and an active community to help answer questions
  • Is easy to pick up and matches your skill level (drag and drop for non-coders and low-level access for seasoned developers)
  • Easy multi-platform distribution, allowing you to get your new game on as many devices as possible

To help you pick the right game framework, I have highlighted a few of the most popular ones which work great on Fire OS devices and are perfect for people getting started making their first game. I have arranged these from easy to hard based on the above criteria.

Construct 2 (Beginner)

Construct 2 is as easy as it gets for making a game. It employs a drag-and-drop behavior system, where you build up game logic from pre-made scripts that are attached to your game’s elements.

Construct 2 games are built in HTML5 (although you never have to touch the code itself) and, because of this, it’s ideal for publishing your game on the Web. Construct 2 games also run on a number of different platforms too The only down side to Construct 2 is that you are removed from the coding aspect of making the game, so you are fully dependent on what Scirra has provided. And, while you can add additional functionality via plugins, it’s not ideal if you come from a coding background and want to manually tweak things yourself.

GameMaker (Beginner to Intermediate)

GameMaker is a great tool for making 2D games. It’s incredibly powerful, and a lot of well-known indie success stories got their start in GameMaker (“Spelunky,” “Hotline Miami,” etc.).

GameMaker is similar to Construct 2 in ease of use since you can perform drag-and-drop, event-based coding, and more advanced users can take advantage of its built-in scripting language called GML (GameMaker Language). GML is C based, so if you know C, JavaScript, Java, or C#, it will be familiar. But the language does have limitations, such as limited data structures and no classes. While the UI of GameMaker takes some getting used to, it’s still an excellent tool for 2D games, and its support for publishing to desktop, mobile, and HTML5 shouldn’t be overlooked.

Unity (Intermediate to Advanced)

Right now, Unity is a very popular game framework. Similar to GameMaker it also has it’s own IDE and you can drag and drop behaviors but Unity requires a baseline of coding skills to get up and running.

The IDE is very polished and easy to use, but being a 3D tool means that there is a certain level of knowledge you will need before getting started. Unity supports three languages: UnityScript (which is similar to JS), C#, and Boo. Unity now has a free version that supports exporting to desktop and mobile that displays the Unity logo on startup. The pro version gets incredibly pricey but adds lots of must-have features for more advanced game developers. Also, Unity released a new Sprite workflow for anyone interested in making 2D games.

HTML5 (Intermediate to Advanced)

Sometimes you want to control every aspect of your code. HTML5 is a great place to do that, and it’s one of the only game platforms that allows you to target multiple platforms with the same code base, and include the browser on desktop and mobile as well.

There are a lot of really great HTML5 frameworks out there, but the two most popular are Impact ($100 license) and Phaser (free). The one thing to keep in mind is that you will have to manage browser compatibility across desktop and mobile, and native app distribution is still an issue. Also, in many cases you will need to bring your own tools, but seeing a game work perfectly in a mobile browser without a plugin opens up a lot of doors you would not get in a native mobile app store. On the flip side, we make it incredibly easy to test and publish HTML5 games on our devices via our Web App Tester.

Godot (Advanced)

Godot is a new and completely open source game engine that just caught my attention.

While I’ve not used it, it looks incredibly promising and one I wanted to put on other developers radars. It uses a scripting langue similar to Phython and promises to export to multiple platforms. It’s one that I hope to dig into a little more in the new year plus being completely open source means you can tinker with how the engine works under the hood.

While I could probably write an entire book on different game frameworks and platforms, I don’t want to overwhelm you. The good news is that, if you are just starting out, there is guaranteed to be a framework that is right for your skill level or game idea. If you are looking for some more resources on how to get started, we have a few blog posts to covering Phaser and Unity, which you may want to check out:

- Jesse Freeman (@jessefreeman)


January 06, 2015

Jesse Freeman

Working on a Fire TV or Fire TV Stick app/game? Let us know at @AmazonAppDev with the following hashtag #MadeForFireTV

In April, Amazon introduced Amazon Fire TV, and it quickly became the best-selling streaming media box on Amazon.  Amazon Fire TV, made it easier for customers to watch Netflix, Prime Instant Video, Hulu Plus, WatchESPN, and more on their big-screen TV, and brought photos, music, and games to the living room.  In October, we brought the same experience customers love about Amazon Fire TV—ease of use, great performance, and vast selection—to a smaller and even more affordable device - Fire TV Stick.

For developers, one of the most exciting prospects of publishing your game on Amazon Fire TV is that you can run Android games directly on the TV. If you are already building games for Android, you can use the same codebase you currently have, and make that game playable on Amazon Fire TV.

While you may be familiar with targeting Android tablets and phones, there are a few things you need to consider for your app to run correctly on Amazon Fire TV.  Below is a quick round-up of some of the great content we created in 2014 to help make the transition easy.

Responsive Game Design: Making Games that Scale Across Desktop, Mobile & TV

Gone are the days where you can make a game and publish it to a single platform and expect to be successful. Like any business that sells consumer products, you need to go where the people are. That means the games you make should run on a multitude of different platforms and accept any number of different input types. With that in mind I have outlined what I call “responsive game design,” which is modeled loosely after some of the core concepts of responsive web design. It’s also a framework that will help you think about enabling your games to scale across multiple platforms.  Click here to learn more.

10 Tips for Remote & Controller

If you’re porting an existing Android app to Fire TV, you have to add support for user input from the Amazon Fire TV remote and maybe the Amazon Fire game controller. Luckily, basic controller support is already built into Android.  You can leverage the Android input device APIs and the game controller API from the Amazon Fire TV SDK to get your game ready to publish in no time. Here are the top ten things you should do in order to get your game ready for Amazon Fire TV customers.

Tips for Getting Your Android Apps Looking Good on Fire TV

While you may be familiar with targeting Android tablets and phones, there are a few things you need to consider for your app to run correctly on Amazon Fire TV. This includes understanding the layout, dimensions and orientation of Amazon Fire TV views, changes to the user experience when interacting with a TV (10’ away on average), UI and navigation patterns, as well as some other TV-specific gotchas such as overscan and color reproduction.  Here are some practical tips to help you get your Android apps looking good on Fire TV.

Building Apps & Casual Games for Fire TV Stick

Fire TV Stick is one of the most affordable devices on the market for creating apps and casual games intended for the big screen. The best part is if you are already building for Android, Fire TV stick is another great platform to help grow your audience.  In this post we cover how to get started, optimizing for Fire TV Stick as well as the hardware/software differences between the Fire TV Stick and Fire TV to help make your apps and games run great on both devices.

Reaching New Android Customers with Xamarin & Amazon Fire TV

Xamarin is a cross platform development environment that leverages the power of the C# programming language and takes full advantage of native hardware acceleration. Xamarin includes a suite of tools that allow you to test, build, and analyze your apps across all of the major mobile platforms. Utilizing Xamarin you can now publish your own apps and games to all Amazon Fire devices. This includes Amazon Fire tablets, Amazon Fire phone, Amazon Fire TV and the recently announced Amazon Fire TV Stick.  Click here to learn how to get your app or game running on Fire TV using Xamarin.

Introducing the Web App Starter Kit for Fire TV

Fire TV and Fire TV Stick both support HTML5 web apps. The Web App Starter Kit for Fire TV is a new open source project intended to help developers get up to speed quickly creating a simple media-oriented app for this exciting new web platform. Features of the project include an example user interface designed for the 10-foot user experience, support for the Fire TV remote control, and sample components to create and customize a media app. You can learn more about the Web App Starter Kit for Fire TV here.

- Jesse Freeman (@jessefreeman)


December 10, 2014

Jesse Freeman

Today we are announcing full support for publishing HTML5 apps to  Amazon Fire TV and Fire TV Stick as part of our existing HTML5 web app publishing toolset. This now opens up a new opportunity for web developers to publish HTML5 powered apps to the living room. In addition, developers with web apps already published to Fire tablets and Fire phone will now be able to release their existing hosted web apps on the Fire TV family of devices using the same workflow they are already using. To help support web apps on Fire TV devices we have made additions to the Amazon WebView, which powers web apps on our platform, to give developers access to the following features:

  • Support for the Amazon Fire TV and Fire TV Stick Remotes
  • Support for analog input from the Amazon Fire TV Game Controller and other gamepads.
  • Access to our In App Purchase (IAP) API via JavaScript
  • A new starter template app optimized for 10 foot experience for creating Fire TV HTML5 media apps

By adding full support for Fire TV devices, developers can publish the same web app across all of our Fire devices and take advantage of the great performance enhancements the Amazon WebView offers.

Powered by the Amazon WebView

The Amazon WebView supports everything you have come to expect from the mobile version of Chromium. This includes WebGL, GPU optimized CSS3 Transition and fast JavaScript code executionWeb developers can now sell their web apps at a premium price, use IAP (via our JavaScript API), and have their app distributed right alongside native Android apps and games.

HTML5 Apps on the TV

In addition to our launch partners, we are excited to see what developers come up with to help push HTML5 forward onto the big screen. Through the Amazon Appstore on Fire TV devices developers can now deploy web apps and games to a whole new audience. HTML5 is a great cross platform choice for developers and we are now enabling them to reach even more customers than before. While traditional media apps make sense on the Fire TV, we are also looking forward to seeing HTML5 games and media apps evolve on this new platform. With support for WebGL, Gamepad API and accelerated canvas, high quality web games can now run on the TV. This opens up an entirely new world to HTML5 game developers hoping to build console quality games with the tools and frameworks they currently use to reach millions of web and mobile web gamers every day.

Getting Started

Bringing your web app to Fire TV is easy.  If you already have an app optimized for the 10-foot experience, you can get started by downloading the Web App Tester from the Amazon Appstore on your Fire TV or Fire TV Stick. Once installed, you simply enter in the name of your app and its URL online.

Likewise, you can also supply a .zip file to package up your app by following these instructions. After all the details are supplied, you can see how your web app will run on the Fire TV via the preview option.

If you are looking to get started building Web Apps for Fire TV or Fire TV stick, we have also provided an open source template on GitHub. Make sure to check out the online documentation that will walk you through everything you need to know about publishing HTML5 apps to the Fire TV family of devices.

Related Links

- Jesse Freeman (@jessefreeman)


Want the latest?

appstore topics

Recent Posts