Last week Palm let the first paid apps for webOS out from behind closed doors. As luck would have it, our Air Hockey was the first app for sale in Palm’s App Catalog. The first 24 hours yielded an amazing amount of press for Palm with Air Hockey riding on the coat tails. Engadget, Tech Crunch, PC Magazine, and piles of others reported on the beginning of Palm’s paid App Catalog & all talked about Air Hockey. As Engadget reported, Air Hockey was the only paid app for a little bit – 100% market share isn’t a bad place to start.
There have been lots of questions fired our way over the last couple weeks. We can now spill the beans.
Why webOS?
We’re in the business of creating and selling great software. Opportunities in nearly every platform are kicked around. When Palm first announced their Mojo SDK, we applied to be a developer. Palm has a long history of popular hardware (you had a Palm Pilot back in the day, right?) and the Pre was hardware worthy of some good apps. They were only picking a handful of participants, so it seemed like a long shot. As part of that application process, the questionnaire asked what app we would be developing. We figured the best bet would be an established application instead of something new. “Air Hockey” went in the app name section. In the comments section (i.e. the “beg for approval” section), Air Hockey’s previous #1 paid game ranking in the iPhone App Store found it’s way onto our makeshift resume. Couldn’t hurt.
While development was underway for Occurro! (for the iPhone), we got accepted into the beta developer program at Palm. After all the signup was done, we realized that Palm had only announced plans for free applications. Our development efforts were going full steam towards Occurro!‘s release but without the option to actually sell apps, spending resources developing for webOS didn’t help our company grow. Sure, free apps help build the brand. Sure, apps could be supported by ads. We looked at it. It didn’t make sense.
Occurro! launched and was featured by Apple. Starting a new iPhone project made sense. Then they called. Palm knew Air Hockey for webOS was at least somewhere in someone’s mind. They asked how close the app was for release. There wasn’t much to say besides “Ummmm…”
After dancing around a real status on the release date of Air Hockey for webOS, we talked for a while about why there wasn’t any progress. There were several concerns, but #1 on the list was the lack of ability to recoup the cost of developing for webOS. With roughly 300,000 Pres in circulation at the time (our best guesstimate), it would take multiple ad impressions per day from every Pre user to add up to much over the relatively short life of software. To put food on the table, we had to be able to sell our apps. Plain & simple.
“Uhhhh, we’ll call you back.” After a few days, a non-disclosure agreement showed up. I sent it back & we set up a meeting. There was going to be a paid section App Catalog soon. Oh yeah, and there’s a new device coming soon. Palm wanted Air Hockey as a demo for the announcement of the new device. It didn’t have a releasable name. Just “new device.” Things changed.
After meetings with product managers, engineers, vices of this, and chiefs of that, a demo of Air Hockey for webOS became #1 on the to-do list at Acceleroto. We got to work with a very inside team to make the Air Hockey demo happen on time. There wasn’t a “real” fast-motion game on the Pre yet, so there were a few hurdles. We were invited to Palm to finish the development, but decided that timeline was so tight that the travel time to & from would actually impact the progress. We had a Pre to test on & the SDK tools were in place to check for differences on the Pixi. The demo for the Pixi launch was ready on time. Next up, the paid version.
The demo version was very specific. It was a technology demonstration to be used as part of the Pixi announcement. The paid version needed more polish, more options, more features, etc. The first 90% was done, but there was still 90% to go. Through help straight from Palm and lots of sleepless nights, Air Hockey for webOS was ready the day Palm’s back end developer portal was ready to accept apps.
Did they pay you?
No. No money made it our way from Palm for the development of Air Hockey (we didn’t ask though). Palm keeps 30% of the sales. We’ll get the other 70%.
How did you decide on that price? It’s more than the iPhone version!?!
Economics 101. It’s no secret that the iPhone version of Air Hockey has been $0.99 since it launched in July 2008. When it launched, there were approximately 10 million iPhones & iPod touches that could run it. At the launch of Air Hockey for webOS, there are something on the order of 1 million Pres that can run it (another guesstimate). There’s more though. There were about 3000 apps available when Air Hockey launched a couple weeks after the App Store opened. At the time of writing, there are 125 apps available in Palm’s App Catalog.
No matter what the price, we don’t expect Air Hockey for webOS to bring in as many sales as the iPhone version. Since we still need to make back our development resources, we have to charge a little more. Economy of scale. $1.99 made sense as our best guess for the sweet spot for Air Hockey.
Some people will think that’s too much. Some people will not be able to afford it. We know. Some people will be very happy get Air Hockey for less than the cost of their morning cup of coffee.
How many sales do you have?
We’re still holding our breath. After 24 hours, there were about 100 reviews for Air Hockey in the App Catalog. Since you can write a review on your phone (instead of having to go back to a computer), we’re guessing the ratio of reviewers to purchasers is higher than it is on the iPhone. We’re guessing sales are somewhere higher the number of reviews. After that, we just don’t know. Remember that the Palm developer program is still in beta? They’re still finalizing the app sales stats stuff for us developers. We’ll know soon.
How is webOS development compared to iPhone development?
Different. The actual hardware is remarkably similar between the iPhone & Pre. The biggest difference is in the programming language & SDK. iPhone development is centered around Objective-C. WebOS development revolves around JavaScript, HTML & CSS.
The coding effort for the webOS & iPhone Air Hockey versions was tackled by Bryan Duke. He knew C, C++, Objective-C, BASIC, FORTRAN, and even some ADA – but not a lick of JavaScript. Thankfully JavaScript borrows from other languages so the nuts & bolts were quick to learn. Objective-C (iPhone) programs are compiled to an executable binary. JavaScript programs (webOS) are, well, scripts that are interpreted real time. There’s an inherent difference in the execution speed of a given chunk of code. Games require speed, so this’ll be a primary development concern for all you webOS devs out there.
Besides the language is the development environment. The iPhone uses Xcode & webOS uses the Mojo SDK along with the Eclipse IDE. Both work, but they’re different. Intially getting your code onto a Pre is actually a whole day’s work easier than it was on the iPhone. Bonus. Debugging, however, is 1000x easier in Xcode. Tradeoff.
What were the hurdles in development?
Speed. We told Palm that we wouldn’t publish a game unless it ran at least 30 frames per second. Our webOS code is skinnied up from the iPhone version quite a bit to keep things fast. After things were optimized, the single biggest time user is actually drawing everything to the screen.
Memory management (aka Garbage Collection). WebOS is allows users to run multiple apps at once. Users beg for multitasking. You think it impacts game performance? Absolutely. Even if every app behaves nicely, they all consume memory. Memory management is handled by the OS without any direct say of the individual applications. Whenever the OS decides, it does a Garbage Collection. Currently, this takes about 300ms (about a third of a second). Air Hockey contains specific code to lessen the impact of these pauses, but developers can’t turn them off. A lot of time was spent making sure objects weren’t needlessly allocated to minimize the frequency of the Garbage Collections, but you’ll see the pauses. That may change in the future – we don’t know.
Touch handling. WebOS runs apps basically as web pages. So, touches are handled like mouse clicks in web pages. Long story, but there are some specifics that equate to “touch neutral zones” in the OS. If you look closely, you can tell that the touch response (drag your finger across the screen) isn’t as smooth as the background physics engine, puck & opponent movement. We know & we’re working with Palm to make it better.
Sound. The programming for sound is done, but there’s no sound currently in Air Hockey. “WHY!?!?!” you’ve asked. It’s not ready for this type of application. The sounds work, but the ability to perfectly time them isn’t quite there. If we included sounds, you’d be upset with them. They’ll be included as soon as it makes sense to.
Timeline. It happened quickly, but it was all-consuming. Meeting the demo & paid timelines wasn’t trivial. People are waiting on Occurro! and Air Hockey updates for the iPhone. It’s time to get on that. Oh yeah…and there’s another secret project starting soon.
Questions?
Leave a comment. We look forward to hearing from you.
Thanks for the posting. Please continue to work with Palm so that Palm continues to improve WebOS.
Definitely. It's in all of our best interest to keep pushing for improvements to the OS & SDK to make the webOS a better gaming platform.
How did you deal with the fact that source code is exposed in webOS apps? Any attempt to protect or obfuscate it? (Though, technically people can still get at the code through a debugger even with obfuscation, so there may be no point to it).
That's certainly another concern. There are several obfuscation tools out there. Palm didn't have one to recommend, so I tried several. You're right though, as with any web page-type app you can't really hide anything. That's another trade off of developing for webOS.
Thanks for the reply. This is the biggest thing holding me back from webOS development right now.
It is scary. There's really no way at all to hide or protect your code. The argument you'll hear from some is that a good programmer can reproduce your code just by observing it in use. While that's true, having your code easily viewable is another thing entirely. Lots can be learned from looking at what online game sites do with their code.
Even basic compression/obfuscation tools will discourage many people from stealing your code. Those who are determined can get it no matter what you do.
Fascinating post, thanks for sharing your experience working with Palm and developing under Mojo.
You're welcome, I hope it helps!
Great information! Just purchased the app after this article. I wish you good luck! Keep those apps coming…
Thanks Brad, I really appreciate it!
Pingback: Acceleroto on Developing Air Hockey for the iPhone vs. Palm Pre « Everything iPhone
Hey, thanks for sharing. I have a pre and just bought the game and I love it. The slight lag is a little annoying though, I hope Palm can help you guys with that. I love the Pre and hope the software matures to handle games well.
So everything on the Pre needs to be coded in Javascript, CSS, and HTML ? I was under the impression that this was just an “at first” kind of thing and that they'd release native tools (Java, C++, whatever) soon enough. Is that wrong?
Yup, it's all JavaScript, CSS & HTML. The SDK is still in beta, si we're still in the “at first” stage. Hopefully they'll announce a compiled code SDK in the future.
Pingback: Weekly Update #18 « Retro Dreamer Blog
Great post, I always wondered what impact the decision to first make a JS/HTML/CSS based SDK available to the public would have on companies doing game development for webOS. Of course the native apps on iPhone will have much better performance than anything done based on Mojo. Still the decision to have an open standards based SDK was a good one, really appreciate that.
Will there be plans for 2 player mode? Does the Pre's multi touch support two fingers on the screen at once in a way that would allow a 2 player mode?
Once the SDK supports getting the raw locations of two touches on the screen at once and the touch response improves, I'll add the local two player mode of the game.
I've also asked Palm for bluetooth peer-to-peer connectivity. If they add that, then I'll be able to add a play-anywhere 2-player mode where you can play against another webOS device. This would be a big step for the SDK for game developers. All any developer can do is request a feature though…I have no idea if they'll do this.
For now, I don't know when either will be.
After few days in the App catalog, could you please release your sales numbers? Does Palm show daily sales reports in any form? We are currently submitting our paid apps to Palm. We would like to get an idea how Air Hockey performs.
Currently, they don't provide developers any daily sales information. We actually don't have any idea how many sales we've had.
Pingback: GPU support and much more - Page 11 - PreCentral Forums
Please add sound into your air hockey app for the Palm Pre. The app is currently .99 cents and people are buying it!!!!!!
I'm currently waiting on another OS update from Palm before enabling sound. The code is actually already in there, but the sounds are disabled because the current version of webOS doesn't allow developers to precisely time custom sounds. I've been working with Palm on this. Once they make it better, I'll turn the sounds on ASAP!
Pingback: GPU support and much more - Page 17 - PreCentral Forums
Hi! I'm happy that I found your blog.. There's not much of developers that share their work in a blog.. By reading your post it gives me lost of new information regarding working with webOS 🙂
Hi! I'm happy that I found your blog.. There's not much of developers that share their work in a blog.. By reading your post it gives me lost of new information regarding working with webOS 🙂
I was wondering when your going to update this app. I really liked it, but after playing it on the iPhone, I'm a bit dissappointed with this version. I know the Pre is capable of running the game, just as well as the iPhone. It would be great to know if or when you're going to update this app.
Hi Mark. When Air Hockey came out, the Pre & Pixi were actually not capable of running games as well as iPhone games. The restriction of html, css & JavaScript really holds down fast-paced games. Great games really need compiled code & access to accelerated graphics & sound hardware. You can't get that through webOS' html apps.
I worked directly with folks as high up as Vice Presidents at Palm to make sure they knew what game developers needed to really support their device. I have early access to each new OS version & have worked with Palm on important improvements in their sound, graphics & touch response. We had all hoped that webOS would be able to provide what games needed through the html app hooks. Unfortunately, the html app capabilities in webOS don't provide what games like Air Hockey need to really shine.
That has changed however. I also worked with Palm very early in their SDK evolution sharing my ideas about how developers need to access OpenGL & OpenAL hardware. Palm has now made their PDK (Plug In Development Kit) available to developers. PDK allows developers access to exactly the hardware I've been looking for on Palm devices. You can see PDK's great capabilities in games from EA.
The down side is that getting Air Hockey to support PDK (and all the OpenGL/OpenAL awesomeness) requires a complete rewrite of the existing game. Getting this right requires time & resources. So, in short, I'm guessing it's not just an update that you want. It's a complete rewrite. I want that too. It's on the way, but it'll take some time.
Pingback: Acceleroto on Developing Air Hockey for the iPhone vs. Palm Pre | TiPb