Time for some Atmosphere love!
Here is a description of Atmosphere’s drawing stack. And here is a description of what can go into an Atmosphere theme.
This is some seriously dry reading, as these are development specifications, not marketing materials. So unless you’re really interested in minutia, skip ‘em and just read the rest of this post instead.
Design Goals
There are a couple of design goals that dictated both of these documents:
- It should be very, very easy to create an Atmosphere theme that accomplishes the basics.
- The theme designer should be able to customize things very very deeply if desired.
- The Atmosphere desktop should be variable enough that the user will never be positive if she has seen everything that there is to see.
The first goal is easy - you can create a basic Atmosphere theme by just taking an image and masking things in Photoshop. Reasonable defaults will do the rest of the magic.
The second goal is met by the design docs - an Atmosphere theme is crazily customizable if the theme designer feels like going beyond the basics. And I do mean crazily customizable.
The last goal follows from the second goal - the more interesting possibilities the theme designer puts in the theme, the more there will be to discover. But even with a basic Atmosphere theme, the combination of reasonable defaults, season, time of day, and weather makes for a lot of variability in what the user will see on her desktop.
Animal Crossing
My wife and ex-girlfriend are both heavily addicted to the game Animal Crossing, which means I’ve spent countless hours watching them slap-fight over who gets to play. And as a result of me being forced to watch that boring game, Atmosphere has already been heavily influenced by the idea of the changing environment in Animal Crossing. I especially like the idea of special events, so the above specification includes the possibility for stuff like Santa flying across the screen on Christmas Eve, or pumpkins appearing around Halloween. It’s all up to the theme designer - I made it very easy to add stuff like that.
Anyway, as I said, these are initial specifications, and it’s quite possible that I screwed something up, missed something important, did something inconsistent, or just generally did something dumb. If you catch something like this, please post here and let me know!
And finally, these specs are most definitely subject to change once I’m actually in the code. I still don’t know whether the animation stuff can be implemented with a low enough resource hit to remain feasible, so those are first on the chopping block. Everything else is pretty straight-forward, but time pressures might cause things to get cut.
Enjoy, and please leave feedback!




























Jason Harris
ShapeShifter/Chicken of the VNCJason Harris has been coding up spiffiness and silliness for about ten years, working on such diverse projects as a solid-state quantum computing simulator for electron waves in GaAs semiconductors and a Monte Carlo simulator for electron transport in nanostructure devices. He also wrote insane, down-to-the-metal microcontroller assembly language code for Octofungi, a robotic sculpture. In the Mac world, he's the primary author of ShapeShifter, Mighty Mouse, ThemePark, and heads the open-source Chicken of the VNC and Paranoid Android projects. He digs mountain biking, skateboarding, art, martinis, loud music, and creating oddly euphonious phrases. He never wears shoes if he can help it and can dance like a mofo!
View Jason Harris's Comments →