I'm James Hague, a recovering programmer who has been designing video games since the 1980s. Programming Without Being Obsessed With Programming and Organizational Skills Beat Algorithmic Wizardry are good starting points. For the older stuff, try the 2012 Retrospective.
Where are the comments?
Popular iOS Games That Could Have Been Designed for 8-Bit Systems
Amid all the Flappy Bird hoopla, it struck me that I could have brought that game to life thirty years ago on an 8-bit home computer--if only I had thought of the idea. And then of course someone confirmed this hypothesis by writing a Commodore 64 version. That made me wonder what other popular iOS titles meet the same criteria.
"Implementable on an 8-bit computer" can't simply be equated with pixelated graphics. When I designed 8-bit games, I spent a lot of time up front making sure my idea was a good match for the hardware. Rendering a dozen (or even half that) sprites in arbitrary positions wasn't possible. Ditto for any kind of scaling, rotation, or translucency. Flappy Bird undershoots the hardware of the Atari 800 I learned to program on, with a sparse, scrolling background and one tiny sprite. What other iOS games would work?
Jetpack Joyride. If you've never seen it, take Flappy Bird and change the controls so that a touch-and-hold moves you upward and you drop when released. Make the scrolling world more interesting than pipes. Add floating coins to collect. That's the gist of it, anyway. Other niceties would translate, too, like semi-procedural environments and mission-like objectives ("fly 1000m without collecting any coins"). Most of the special vehicles you can commandeer would need to be dropped, but they're icing and not core gameplay.
Ridiculous Fishing. At first glance there's a lot going on visually, as you drop a line through many layers of fish. In a design move that looks like a concession for 8-bit hardware, the fish swim in horizontal bands. On most systems with hardware sprites, there's a limit to how many can be displayed on the same scan line. But those sprites can be modified and repositioned as the screen draws from top to bottom, so four sprites can be repurposed to eight or twelve or twenty, as long as they're in separate strips. That's a good match for the fishing portion of the game, but less so for the bonus shooting segment (which would need a rethink).
Super Hexagon. This one looks impossible, being based around hardware-accelerated polygons, but it could have been designed by a bold 8-bit coder. The key is that the polygons are flat in the graphic design sense: no textures, no gradients. How do you move a huge, flat triangle across the screen on a retro machine? Draw a line on one side of the triangle in the background color, then draw a new line on the other side. Repeat. Writing a line clipper will take some work, but it's doable. The "don't collide with the shapes" part of the design is easy. Math-heavy polygon collision routines can be replaced by checking a single "does sprite overlap a non-background pixel" register.
Threes! Here's a straightforward one, with no technical trickery or major omissions necessary. A retro four-way joystick is the perfect input device.
All of these designs could have been discovered thirty years ago, but they weren't. Think about that; someone could have come up with Jetpack Joyride's objective system in 1984, but they didn't. Ten years later, they still hadn't. It's a pleasant reminder that good design isn't all about the technology, and that there's a thoughtful, human side to development which doesn't need to move at the breakneck pace we've come to associate with the computing world.
(If you liked this you might enjoy Trapped by Exposure to Pre-Existing Ideas.)
permalink February 16, 2014
previouslyYou Don't Want to Think Like a Programmer
A Worst Case for Functional Programming?
Success Beyond the Barrier of Full Understanding
Optimization in the Twenty-First Century