Sunday, February 16, 2014

Chrome Store Manifest

  1. {
  2. "app": {
  3. "launch": {
  4. "local_path": "TetrahedronTwister.html"
  5. }
  6. },
  7. "icons": { "16": "logo16.png",
  8. "128": "logo128.png" },
  9. "manifest_version": 2,
  10. "minimum_chrome_version": "23",
  11. "name": "Name of Your App or Game Here",
  12. "offline_enabled": true,
  13. "permissions": [ "storage" ],
  14. "version": "1.0.3"
  15. }
 So here's an example of what the manifest will look like. You'll save it as manifest.json and its just a simple text file.  So what do we have going here?

Declare what to open:

1  {
2     "app": {
3        "launch": {
4           "local_path": "NameOfYourWebUsually____index.html"
5        }
6     },

or if you want one of those "desktop" looking apps:

1  {
2     "app": {
3        "background": {
4           "scripts": "main.js"
5        }
6     },

main.js:

  1. /**
  2. * Listens for the app launching then creates the window
  3. *
  4. * @see http://developer.chrome.com/trunk/apps/app.runtime.html
  5. * @see http://developer.chrome.com/trunk/apps/app.window.html
  6. */
  7. chrome.app.runtime.onLaunched.addListener(function() {
  8. // Center window on screen.
  9. var screenWidth = screen.availWidth;
  10. var screenHeight = screen.availHeight;
  11. var width = 1280; //Size of your game's screen resolution's width, add space for ads
  12. var height = 720; //Size of your game's screen resolution's height, add space for ads
  13. chrome.app.window.create('NameOfYourWebUsually____index.html', {
  14. bounds: {
  15. width: width,
  16. height: height,
  17. left: Math.round((screenWidth-width)/2),
  18. top: Math.round((screenHeight-height)/2)
  19. }
  20. });
  21. });
Next is the icons. This is simply letting it know the name of the png files you are using. Make two of them. One will be 16x16 and the other will be 128x128. Keep manifest version and chrome version as is unless you need a newer version of chrome. Manifest needs to be 2 to use the main.js example. Name is as self explanatory as possible.

Offline enabled doesn't need to be there if you are pointing to a page on your server, but if you are submitting the whole thing to the app store to be stored on their servers, then you do this so that the game will download to their computer and they won't have to connect online to play the game unless it does connection tests etc.

Permissions has a long list on their website, but I used "storage" for the ability to save in the future.

Finally version is your current version and should be updated each and every time.

Monday, February 10, 2014

What I learned about releasing my first game for FREE

I released my first officially done game (not counting school work and games I made for friends) to the Chrome Web Store on January 27th. The game was meant to be a variant on a Rubik's Cube style puzzle game that I played on the Atari as a child, called Atari Cube. I used that game as quick inspiration when I created the game in Perlenspiel for class over a year ago.

I liked the game so much, and I felt the scope of it was small enough, that I decided to tackle it as my first game. This turned out to be an good choice, and I made rapid progress in getting the game set up. I hit a snag for about 6 months though, when I couldn't figure out how to get a system to work and between my job and real life, I was unable to focus enough to really give it a try.

So I thought of solutions, and eventually I did some flow charts in pen and paper while on the bus between work and home. These flow charts eventually led me to writing out pseudo-code for the system. After working on it, I finally had it figured out, and in one week, I had it implemented and was running full bore into finishing the rest of the game.

Two weeks after solving the system, I had almost everything ready, and I felt confident enough to set myself with a release date for the game. Before deciding that though, I did a "link only" upload of the game on Chrome as a test. I figured even if it was "released" 2 weeks earlier, I'd just not advertise it, and finish the other bits of it before I started doing so. With all this in mind, the journey led to some insights that I didn't have before releasing the game on Chrome.

The Bad

1) Not everyone has Chrome installed

Friends and Coworkers who did not already use Chrome would promise to install and end up not following through. Too many steps to getting to the game can severely limit your prospects. Though some did, overall I'd say most did not even bother.

2) There's extra work involved to get the game on Chrome that has nothing to do with the game

This means setting up 3 different sized banners, two different sized icons and creating a manifest. You are also encouraged to do a link to a youtube video as well as screenshots. This wasn't the worst possible thing, but I wasn't ready for it, and you kinda need some of it to get your stuff set up.

Banners (or "Tiles") are 440x280, 920x680 and 1400x560. Icons are 64x64 and 128x128. Screenshots are 1280x800! All these weird and different sizes! At least I know to think about what the main eye draw for the game should be.

3) Selling the game requires an external service

I haven't set this up yet, but I'm going to have to figure it out for my first game that I put up for sale. For now, because of how unclear the Chrome store was about setting things up, I skipped this to give myself more time for research.

4) Protecting yourself with an LLC can get expensive (especially if you hire out for extra services)

Went to Legal Zoom and I will tell you, that if you are like me, and want to reduce the amount of effort you have to put into the legal/business side of things, then the cost goes up from $99 to over $400 with some yearly recurring costs further down the line! Either that or do it yourself and risk messing something up or pay for it.

5) Tutorials are hard

Getting the game to set up a separate tutorial ended up with me rewriting a ton of code. Not only that, but guiding without handholding is very difficult to pull off elegantly. 

The Good

1) Pushing new updates is easy

Actually, Chrome will autoupdate everyone's download, but it does take some time for it to distribute. Take that with a grain of salt, upload a day early and announce two days later for safety (So update Saturday to announce for Monday, though people should notice by Sunday depending when you updated on Saturday)

2) Chrome has a way of making the game look like a "native app"

Though I was unable to set this up on this pass (it requires pointing to a .js file to begin with and pointing to an html file at first will negate your ability to do this.

3) HTML5 can easily have ads added to it (though I haven't done that yet)

If you don't take the native app road, you end up with the game inside a webpage. You can left it left aligned, and depending on the size of the game, you can easily set up some ads around the game by going into the html file and adding in the correct codes.

4) Though exit doesn't work,  you can link to your websites

I replaced the exit button on my game with a link to my twitter. You can link to your shopify webpage, or any other things you want.

5) I can finish a game

This is by far the most important thing I learned. All these things has convinced me to move on to my second game, and doing certain release things "right" (the way I want them done). Thankfully I won't have to pay another $5 for Chrome, and I'll be ready to upload the manifest correctly the first time to get the results I want.

I'll be posting more info on the manifest on the next post, coming soon.