Screenpeace - Saving the Screens with Cinder
Posted by Tom on 2010-08-01 18:12
Every now and then I dabble with making my own screensavers. I was one of the 5 people who were shaking their fists in the direction of Redmond when it became apparent that the version of ScrnSave.dll packaged with Visual Studio 2008 depended on Vista. As is so often the case the last round when belly-up when I got distracted, magpie-like, by some other glittering object. I had quite a decent piece of boilerplate code I could use to reduce the spool-up time and get straight to the fun bit. I was considering tidying it up and opening the source. But then I stumbled across Cinder. I spent a few hours prodding around it, then promptly threw out all of my code because it's just so, so bad by comparison.
Curse you Cinder, you Magnificent Bastard
Cinder sell itself as library for 'creative coding' and it delivers in spades. It provides code for window creation, management and tedium, input, sound, loaders for a healthy selection of image formats and a wrapper for OpenGL which goes a decent way to alleviating the, uh, idiosyncrasies of the library. And it makes writing screensavers a breeze. It's even cross-platform enough to work on a Mac if you're that way inclined.
As such I was able to knock off the following fairly quickly.
FillrateNomNomNom - a simple particle system
Churn - avoid when drunk
TimeForBedSaidZebedee - hierarchically organised spinning circles
Cubesplosion - Cubes that subdivide and scatter
But yeah, I'm pretty happy with how it came out. They're all very much work in progress and I'm not finished yet. This kind of thing is like code doodling for me. I love it. Expect more in the future.
Due to the aforementioned VS2008 ScrnSave.dll SNAFU, there are different binaries for XP and Vista/Win7. Likewise if you download the source you'll find several different build targets: standalone app, XP screensaver and Win7 screensaver, with debug and release for each. Build configurations galore.
And as a passing thought: I wonder how it would work as a game library? It removes a lot of the bullshit (windowing, input, sound, resource loading, message pump) that can be a hindrance when starting out, while still allowing you to get low-level with the fun bits (graphics, game logic, physics). I'd have a crack myself if I wasn't working on my own game library already (STOP TAKING MY LUNCH MONEY, CINDER).