A few years ago, I published an Android game, mostly as a hobby. I actually fell into making the game, it was originally planned to be a demo for a talk I was considering giving at a conference. The plans few through, but I kept on tinkering with the game. It was also a good source of material for earlier posts on this blog.
The result was Sedition for Android.
About a about ago, I got the crazy idea to port the game to run inside a browser. I have done some work with the Google Web Toolkit in the past, and I've been very impressed with the way in which it can make developing a rich client side application feel like you're developing a traditional desktop application. GWT compiles Java language code into very efficient complied Javascript. With the advent of HTML 5's media support and WebGl, I had everything I needed to take the Android source and port it.
Originally, I called it "Sedition 4 Chrome", since I was planning to make it a Chrome packaged app and put it in the Chrome app market. I may still do that. Writing a Chrome app gives you access to more features that you can do with lowest common denominator general web apps.
It has numerous quirks, and the rendering especially is not quite right in several ways, but that actually matches the last released version of the Android version. I do plan to fix both eventually. Some of the rendering oddities, especially "sprite parallax" are much more noticeable on large screens than the small mobile screens the game used to run on.
I also have a few ideas for the general engine I developed while working on that game that might come in handy for some of my other projects.
It's a fun project to work on, and in part I wanted it to server a sort of a portfolio of what types of applications I can develop.
Play it yourself at
http://anibit.com/sedition/
--P
Showing posts with label Sedition. Show all posts
Showing posts with label Sedition. Show all posts
Monday, February 22, 2016
Wednesday, July 20, 2011
Sedition
After many months, and even a good deal of schedule slippage, I uploaded my game, Sedition, to the Android market. You can find it here:
Sedition Ad-Supported and Sedition Ad Free
I also have a Blog dedicated to my software endeavors, DigitalPopcorn
Sedition Ad-Supported and Sedition Ad Free
I also have a Blog dedicated to my software endeavors, DigitalPopcorn
| My baby |
(Apologies to anyone reading this who might not be able to access it in the Android Market, I plan to expand offer to additional countries soon, as well as other distribution channels.)
Anyways, it is still in "Beta", but here is a run down of some of the technical/design details of it:
Android Library Management for publishing multiple editions of an android app
[UPDATE 12/30/11: This post is a little out of date, I recently updated to r16 of the ADK, and eclipse 'Indigo' (3.7). I had to play around with the library settings to make the dex process happy, and the settings actually make a little more sense now. I'll make a new post]
Sorry for the long title, but I spent a frustratingly long time( hours ) doing something that should have been achievable in seconds. My hopes are that I am able to document the steps needed here well enough that someone can save themselves some time.
As a last step before publishing, I needed to be able to quickly make two versions of Sedition, an Ad-supported version, and an Ad-free, paid version. In the Android market applications are distinguished from one another by the "package" property in your AndroidManifest.xml file. So simple, change your manifest name and re-build. Not so fast, the resources in your application, eg the files that get assigned an id in the infamous "R" class, are built to live in that class. So when you change your package, any code that references anything in your R class will break. For me this resulted in over 100 errors. I have some final static variables in that help me define code behavior for any given flavor of build. This was the closest I ever got to a #ifdef type mechanism that I mentioned a few months ago. Unfortunately, there is no solution for changing manifest files in a similar manner.
The conventional wisdom of the Web suggests moving your application into an android library, then make two new "Applications" that then link to the library, like so:
This is what I did. It should, by all accounts, have been quick. It wasn't, there were a ton of booby traps, and unless you have innate knowedge of the inner workings of the android build tools, it's a little bit of a mysterious beast. Here's what I did:
Sorry for the long title, but I spent a frustratingly long time( hours ) doing something that should have been achievable in seconds. My hopes are that I am able to document the steps needed here well enough that someone can save themselves some time.
As a last step before publishing, I needed to be able to quickly make two versions of Sedition, an Ad-supported version, and an Ad-free, paid version. In the Android market applications are distinguished from one another by the "package" property in your AndroidManifest.xml file. So simple, change your manifest name and re-build. Not so fast, the resources in your application, eg the files that get assigned an id in the infamous "R" class, are built to live in that class. So when you change your package, any code that references anything in your R class will break. For me this resulted in over 100 errors. I have some final static variables in that help me define code behavior for any given flavor of build. This was the closest I ever got to a #ifdef type mechanism that I mentioned a few months ago. Unfortunately, there is no solution for changing manifest files in a similar manner.
The conventional wisdom of the Web suggests moving your application into an android library, then make two new "Applications" that then link to the library, like so:
Friday, July 15, 2011
Almost Live
My game, unless something goes wrong at the last minute, will get submitted to the Android Market this weekend. It's far from "done", but I think it is a solid "Beta" level app. All the planned features are mostly working.
I figured it was about time I opened up a little more about it....
Without any fanfare, here is:
I figured it was about time I opened up a little more about it....
Without any fanfare, here is:
Subscribe to:
Posts (Atom)
