Friday, August 20, 2010

Thunderstorm Live Wallpaper v1.0

Update: YouTube video!
Update: Marketplace link!

This one actually went pretty quick, thanks to some artistic help from Joel Mejia and several hours trapped at an airport. :)

The most time consuming aspect of Thunderstorm was the clouds, which I guess is obvious in retrospect. The number of them needs to be minimized as these phones are very fill-rate limited, but at the same time you need several layers to get any kind of good motion.  I ended up defaulting to 9, spacing them out evenly along the Z plane (Z = up), and randomizing their depth between the camera and background layer.  The image distribution is random.

A lot of time went into tweaking the color ranges and nature of the alpha to allow them to blend together somewhat and create an amorphous shape when possible, as having sharp edges didn't play well in practice.  The phones I have access to also tend to knock the alpha channel to 4-bit (it looks like), which really hurts here.  It creates some pretty visible banding, so it was necessary to keep a fairly busy color channel to help hide that.  There's still a few artifacts here and there on a couple of the images, but for the most part the remaining banding isn't too bad.

To minimize fill-rate cost, both the lightning and clouds all have custom models that cut out the empty space so we're not rendering unnecessary invisible pixels... it's still a little expensive at times but it's about as minimal as is possible, I think.  The models themselves have normals forced outwards on the edges, so the clouds will directionally shade smoothly based on the light source in the scene.  The light direction very slowly orbits the periphery, but blips to the X origin of the lightning bolt when a bolt is spawned, then lerps back to its correct position.  The flash is accomplished by keeping the diffuse light as-is and spiking the specular light to the bolt's user-defined color, then fading that back down as the bolt fades out.

All this worked out pretty well.  There's still the occasional spot where the clouds kind of stand out as a cut-out sprite... that's really hard to eliminate completely without more layers of blending, but as updates happen I'll probably reduce it further.  As a whole the results here turned out really cool, and I'm happy to be able to release it.

I'm trying a different sort of approach to the free version with this one... the free version doesn't have an app icon, instead the settings button links to a pop-up dialog that explains the range of settings available in the full version, with a marketplace and web page link.  I'm hoping this is unobtrusive while still letting people know the full version's available if they want it.


  1. when will this be available for purchase/donate download?

  2. It's up now, search for 'thunderstorm' on the market, or click the link I added to the top of the article. :)

  3. hi I really want to try your live wallpaper but it is not in the Market and the link above does not work. There is one in the Market called "Amazing Lightning" is this it? Also any link to this on does not work as well.

  4. Hi,

    Thanks for the cool wallpaper. Now to me I think there is one last thing you should include as an option in the settings section. Sound, yes sound and based on the distance in the z plane the sound should be weaker or stronger.

    Thanks again for a great app and look forward to the day when you do add down.


  5. I just downloaded the wallpaper and must say after using it for half a day I love it. I recommended it to a coworker and when he went back to the market it was gone. Why is it no longer available?!?

  6. I haven't been able to find the app since it went live in the marketplace, im assuming it has something to do with android market/Google and not the developer. So for now I guess I will just check periodically to see if its available.

  7. Bought the app! Bloody fantastic...
    Is it possible to add an interactive component?
    So when you press it generates a lightning bolt there?!

    Also black lightning does not seem to work?

    I would pay extra to get the interactive element!!! Everyone I've shown always asks if they can interact with it.

  8. Or perhaps even thunder sound when you click!

    Lightning and thunder at the point you click!

  9. For thunder an option to have it make a sound and/or vibrate!

  10. This app looks amazing, but it's not in the market and the link doesn't work. I would sure like to try it out :D

  11. It looks great and I enjoyed it on my phone for several days. Unfortunately it has been causing my phone to lock up about once per day. Switching to another live wallpaper fixed it. Hopefully there will be a fix soon.

  12. I would buy full version if it came with sound.... that would be awesome... i will check back periodically. Ps if i could show that off it would sell like hotcakes

  13. Hey quick programming question. Looking at your Thunderstorm wallpaper, it seems to use about 18 megs of VM heap. When bringing up other graphically intensive apps, like the web browser, my app has most of it's heap cut down (maybe my bitmaps are getting thrown out by the system). Your live wallpaper though, doesn't have it's heap cut down. How did you do this? I've set all my bitmaps to be non purgeable, but it looks like my app still stutters as it loads stuff back into the heap after doing something like browsing the web.

  14. Please provide paypal link so I can "buy" the donate version. Policy prevents adding gmail to phone so no android market