E-ink Kindle GamesPublished 2018 May 16
In April 2011 I contacted Amazon about implementing mathematical typesetting algorithms for their Kindle e-reader. This didn’t end up working out (third party developers were forbidden from making “generic reader apps”), but I did end up making two games, which were released in March 2012.
Designing for one frame per second, grayscale
Designing for the second generation Kindle was a wonderful challenge. The screen was 600x800 grayscale pixels with a refresh rate of about one frame per second. The screen was not a touch screen — the controls included a hard-button keyboard below the screen and four page-turning buttons along the side of the device.
The Kindle also included rear speakers and a headphone jack, although I never used these.
(As an aside: The Kindle is a remarkable product, in that successive generations continually remove features and functionality. The Wikipedia article shows the progression. The current, 8th generation Kindle has no speakers, no headphone jack, and no physical buttons besides power.)
Due to the refresh rate, any kind of game mechanic that relied on motion or animation was out. I tried to think about who owned Kindles, and what sorts of games or apps they might enjoy.
An early concept I explored was a cruise ship timetable app. Looking through my email archives, I’m actually quite pleased with 23 year-old Kevin’s pitch to the leading iOS app in that space:
Consider the following:
1) Who goes on cruises?
2) What’s the largest demographic of Kindle owners?
That’s right: old folks =)
The Kindle has a very different market than other mobile devices, and right now the space is wide-open—the Kindle developer program is still in beta and we’re one of the small handful of firms that have access to the Kindle SDK.
They were interested, but it turned out that there wasn’t a feasible way to get cruise ship maps and timetables under Amazon’s app size limit (~3 MB, if I recall correctly — Amazon was footing the cellular costs, and wanted to keep books/apps small).
Another app concept that a friend suggested was “medication reminder”, but I wasn’t touching that with a ten foot, lawyer-covered pole.
So I decided to make a card game, Collexions:
This worked well with the limitations of the device, as well as the (substantial) limitations of the Kevin Lynagh illustration and visual design departments. The menus were all thrown together in Adobe Illustrator, using whatever free-to-use graphics and typefaces I could find, and rendered out as bitmaps:
The cards themselves were drawn programmatically, using the Java AWT library that was available on the device. I wisely stuck with circles, triangles, and rectangles:
Early development builds included a two-player mode, where each player could select cards using the 4x3 grid of keys on their side of the keyboard.
However, Amazon kept pushing back against this feature for inexplicable reasons. (Which became clear when the next-generation Kindle was released without the keyboard.)
Having overcome the technical and administrative hurdles to publishing Kindle apps, I decided to quickly throw together a second one. I decided to build a spaced repetition vocabulary building game.
My reasoning was that the underlying engine could be easily reused to build a variety of content-specific apps — different languages, medical jargon, etc. This first app used Webster’s 1913 dictionary, since it was available in the public domain (i.e., no longer under copyright).
The app would prompt you with a word, then you’d press a button to see the definition:
You’d select whether the definition you remembered was correct, close, or completely off, and the app would schedule to show you that word/definition some period of time later.
The main menu was basically identical to that of Collexions:
and to fill it out with a third screen I added a “statistics” screen:
(Please forgive my young, clueless self for those doughnut charts.)
Tech details + Overall experience
Aside from the challenge of designing for a black and white, 1 FPS screen, the device itself had limited technical capabilities: A 532 MHz CPU and 32 MB of RAM.
Although the official developer kit only supported Java, I developed both games using Mirah, an experimental Ruby-like project that compiled directly into Java bytecode.
(Clojure was out of the question, since it required at several megabyte runtime to support dynamic compilation and immutable collections.)
I actually ran into no performance issues, but the platform itself was sometimes glitchy.
Amazon made up for it with extensive quality assurance. For example, this is one of the concerns from the revision 12 of the QA test results for Vocab trainer:
Inserting and removing the USB cable while loading the active content failed on Kindle 2nd and 3rd Generation DX:
Steps to reproduce:
1) Open the active content.
2) While loading the active content, insert the USB cable to connect the device to a computer.
3) Safely eject the device from the computer and remove the USB cable.
The screen is loaded with blank spaces where the menus are displayed normally.
The active content should properly resume loading.
I mean, I appreciate knowing about this bug, but the idea of USB doesn’t even exist in the app sandbox, so I’m not sure what I can do about it…
(To contrast, I don’t recall that a human from Apple ever contacted me about The Weathertron, much less went through 30+ email exchanges.)
All-in-all, the apps were a smashing success, with a 4.5 star average review and $495.67 of total revenue to date.
Honestly, I’m surprised that at least three hundred people discovered that interactive apps existed on the e-ink Kindle at all — everyone I’ve mentioned this story to has responded “wait, the black and white ones have games?”
Yes. Yes, they do.