Thursday, June 28, 2012

This is primarily a maintenance update with a few extras -- folks on ICS devices get the prettier UI skin on the settings screen now, for one thing. For another there's a couple nice new background images, check the list for White Dwarf and Neon Lines!

This update is primarily driven by customer feedback, as the #1 item was definitely being able to view your images by category/folder, and being able to select all of them easily. To that end we now determine a list of categories, have you select one (or all) then allow you to individually modify the list or select all/none within that category. It works well in my testing so I'm hoping everybody's getting what they were looking for. :)

In addition, we've moved the project forward to SDK 14, so it'll use the Holo style UI on supported devices now.

Sunday, June 24, 2012

The product formerly known as Wavescape has been renamed, due to a trademark collision. The new title is Lightscape, but aside from that it's still the same shifting patterns of light rays and general coolness. :)

As a bonus, anybody with an ICS device gets the Holo theme in their settings now!

Thursday, June 21, 2012

This is pretty awesome. At long last you can now reply to comments on the Google Play listings! This doesn't sound like much, but it's not uncommon to see people mention bugs or other issues in the comments, without actually sending you an e-mail. This makes it effectively impossible to follow up, ask questions, inform them their issues is fixed, etc. Especially if it's a recently posted product, this is kind of nerve wracking.

No more! If you log into your Play Publisher account, and head to the comments section on a product listing, you now see a "reply" prompt that does exactly what it says. The reply is displayed on the listing inside Play, and in addition the user receives a notice that a reply has been posted.

We just tested this, and the user does indeed receive an e-mail. The text of the reply isn't contained, rather they receive an e-mail from "nobody" (oddly enough) notifying them that one of their comments was replied to by the developer. A link is provided underneath that. Clicking the link takes them to their comment and its reply (which worked). I'm happy to see the message also encourages them to use e-mail for reporting further problems.

Tuesday, June 19, 2012

Gallery Live Wallpaper allows you to display your favorite images on your home screen! You can select from any image on your device, and can customize which transitions and camera behavior you get, how fast the images cycle, and plenty more!

If you don't want to take your own pictures, then you can point it at Reddit or Flickr and it'll download images in the background periodically, so you'll always have something new. You can provide your own subreddit selections or Flickr search terms to customize what kind of results you get, and can set how frequently checks happen and how much storage will be used.

Additionally, unlike the similar products I've seen on the market, Gallery is fully OpenGL accelerated, so slow pans and zooms don't have any single-pixel jumps going on that mess up the smooth motion. It also performs very well, like a slideshow should.

I'm really happy with how this project turned out. The initial idea was to make something that could emulate the Ken Burns Effect, and it went way further than that over time. :)

Making this one was something of an educational experience, simply because while most of our projects are using pre-made art, this one doesn't. It's completely reliant on whatever it is the user provides, so we ran into a few different hurdles making sure there were no visible limitations:

Modern camera phones take images much bigger than is necessary for the screen, so you have to get their size and reduce it appropriately before you try to do any loading. Otherwise you'll end up allocating 30 meg to read in a 8 megapixel image, to display on a 1 megapixel screen.

Reducing at load time generally means reducing by an integer divisor - half size, quarter size, etc. You don't get a lot of fine control there.

Despite that, careful not to reduce it too far, otherwise the quality on-screen will suffer.

Non-power-of-two textures work, but using odd numbers crashes some devices' OpenGL drivers. Make sure you resize to a even number in both dimensions. This means you may end up resizing it twice, given the integer resizing issue.

Some images have EXIF tags to rotate/mirror them. This is really annoying to deal with, but otherwise you'll end up with a lot of sideways images.

Saturday, June 9, 2012

It took a while to get through the process, but Canabalt HD is now available for purchase on Blackberry App World! This is taking advantage of RIM's Dalvik compatibility, and runs extremely well on the Playbook. I'm thrilled to finally have this out there. :)

Friday, June 8, 2012

We spent most of an afternoon trying to figure out a problem we were having with Android in-app purchases. We'd try to buy something, it would fail, and in the log output we'd get IAB_PERMISSION_ERROR, something that you'll find almost no hits on if you do a Google search.

After a lot of pounding our heads on the wall, we figured out the source of the problem, at least in our case -- the item we were trying to buy existed but hadn't yet been published. Sounds obvious I know, but it wasn't our Market account we were testing against so we didn't have any way to double-check it ourselves, and were told everything was good to go.

If you got here because you had this error happen and this is the only link in English, I suggest that you confirm the in-app product has actually been published, not just saved. We also did some tests trying to access an in-app product from an account that wasn't in the test list, you'll see the same error in that case.

Sunday, June 3, 2012

I was just reading this TechCrunch article and thought I'd write a quick explanation of the philosophy we've generally tried to take here, which is somewhat different than any of the ones listed. Our work is almost exclusively in 3D rendering (with minimal UI, even) and has informed the way we've handled things as a result.

Basically, we've taken the tack that there are two directions to check: Hardware and Drivers. This means we want representatives of all the OS versions, and representatives of all the hardware chipsets. On the OS side that's 2.1, 2.2, 2.3.3, 3.2, and 4.0. On the hardware side that's Qualcomm Adreno, nVidia Tegra, PowerVR, and Samsung Mali.

This means minimum we end up with around 20 devices, in order to get each OS version represented with each chipset. In practice it's not quite so neat and tidy -- there aren't any 2.1 or 2.2 Tegra devices, for example. When in doubt, we get variations of hardware before variations of OS, as experience thus far is that while the OS may change the drivers appear to stay the same.

Generally, if we're doing a major update of some kind we'll make a point of running it on a variety of these devices and make sure everything behaves correctly. For minor updates where nothing risky has changed, we'll generally run through it on the devices on the desk of the individual developer. Generally these represent the hardware axis of the grid, given the aforementioned driver point.