The Ballad of Engine 115

Many parents of young railfans know (all too much) about Thomas and Friends, a TV show and toy/media empire in which some immature trains bicker endlessly. Fewer are familiar with the original Railway Series books by Reverend “W.” (Wilbert) Awdry, which are full of beautifully illustrated, oddly moralistic tales of the terrible things that can happen to a locomotive that doesn’t — so to speak — pull its weight. “You’ve been naughty so we’ll just leave you stuck in this tunnel forever.” That sort of thing. (Many of the “Thomas stories” available these days have been rewritten a few times since then, to tone things down and throw in a few girl characters. The TV show, faithful at first, eventually diverged from the books. Can’t exactly blame them, but the originals have more character.)

Still with me? So it turns out that most (all?) of those original tales were based on actual railway news items. Whatever happened to Thomas or one of his friends had really happened to a real locomotive somewhere, in some form.

Well, once I found out that there was a real incident behind each Railway Series story, I suddenly got much more interested in one of them in particular: “Down the Mine”. Sure enough, the inspiration for Awdry’s story is a rather spooky true tale of railway weirdness.

Still with me? The bottom line is, I wrote a spooky song for Halloween 2015. Enjoy! (I set it to ‘Ghost Riders in the Sky’, my favorite spooky tune. That song has been recorded many times but I strongly recommend Vaughn Monroe’s classic rendition. My song has more verses so I left out some choruses, and of course the words are all new.)

The Ballad of Engine 115

(Lyrics by Dan Efran; sing to the tune of ‘Ghost Riders in the Sky’ by Stan Jones.)

A locomotive steamed along a cold and winding track;
It had a lot to do that day but it ain’t coming back.
The railyard was subsiding due to mining down below;
The miners and the railmen knew, but Thomas didn’t know….

Never coming back.

The weather was improving and the signals read ‘all clear’.
The rails had been inspected by the station engineer.
The driver knew that engine well and drove it pretty hard,
Shunting cars to make a train at Lindal Bank Top Yard.

The fireman had gone to lunch; the driver was alone.
He felt the engine shudder and he heard an awful groan.
He looked around the train and saw the ground begin to crack.
At once he tried reversing but the engine jumped the track.

Never coming back.

The driver broke his shoulder in his haste to leap aside;
He left his jacket and his gold long-service watch inside.
He scrambled back to firmer ground, and not a bit too soon;
A crater opened up, just like the surface of the moon.

The engine fell in boiler-first, the tender in the rear;
The driver watched his locomotive almost disappear.
The hole was ten yards deep or more; he knew just what to do:
He handed off the problem to the station’s breakdown crew.

It was the strangest wreck a breakdown crew has ever seen:
The Earth had opened up and swallowed Engine One Fifteen.
They brought a little crane and pulled the tender out all right,
But to rescue that big engine looked to take about all night.

The cab was mostly buried and the fire was still lit;
They’d have to dig a ramp down to the bottom of the pit.
They’d almost reached the engine when they stopped to take a break.
Just then that railyard rippled like a stone thrown in a lake.

The chasm opened wider; swallowed half a dozen tracks.
The men said to each other, “That train’s never coming back!”
As it sank beneath the ballast, they heard that engine scream:
It whistled as it fell, and fell, and fell, still raising steam.

Never coming back!

They heard it falling hours after it had last been seen,
Till finally they heard the last of Engine One Fifteen.
Now railmen say the Devil drove that engine down to Hell,
And miners say they still can hear the clanging of its bell.

The rails of Lindal Bank Top Yard are now in Lowfield Pit!
This tale is mostly true, though I exaggerate a bit.
And if you don’t believe me, look it up; I hope you do:
September twenty-second of Eighteen ninety-two.

The driver, Thomas Postlethwaite, escaped a gruesome fame;
If he had not jumped clear that day we all might know his name.
Like Casey Jones and Davy Jones combined in one grim yarn,
He’d drive that train forever, shunting cars beneath the tarn!

Never coming back.

Clickety-clack… clickety-clack….

Deflectus postmortem.

After experimenting with various control schemes for Deflectus, I decided it just wasn’t working. I mean, the code is fine, the controls are smooth, I could probably turn it into a playable game eventually. It was an interesting and basically successful experiment, and I may re-use ideas from it elsewhere. The visual style is kind of cool.

But I envisioned Deflectus as a cross between Pong and Tempest, both games that are designed around knob-style controllers. A traditional Pong paddle controller is like a big volume knob. A tempest spinner is similar, but loose and heavy so it really spins. These days, most of us do not own any knob controllers, except maybe the scroll wheel on a mouse, which is too stiff for Pong. (I tried it first, for Deflectus.) None of our standard modern controllers really come close to the experience of these vintage control schemes.

Since I intended Deflectus to be just as much of a visceral knob-based game as Pong or Tempest, in practice it would always have been a compromise. I’m not such a huge fan of Pong that I wanted to keep struggling to fit this round Pong into a square hole. Good game design involves many quick experiments that teach the designer something but don’t turn into games, and Deflectus is one of those.


…is the name of my latest game. It’s a little action-puzzle game implemented in just 1024 bytes of JavaScript code.



That’s not a lot of code. This is my entry in JS1k 2015: The JS1k hype train is real!, a JavaScript code golfing competition. The challenge is to create a demo (as in “demoscene”…basically like a screen-saver) in just 1k of JavaScript or less. I figured that was just enough to make a complete game. Yep.

So go play my game, and check out the rest of the entries too.

Ludum Dare 31 is on….

Ludum Dare, the popular game-making challenge, is running this weekend. Coincidentally, I need to break in a new software-development computer. So I’ll see if I can make a game this weekend. Wish me luck.

I’ll post occasional updates on the Ludum Dare multi-blog, starting with this one: OK, I’m in.

The game will go here when it’s done, or even sooner if there’s interesting progress to show:

The Mystery of Crystal Crater

For Halloween 2014, I’ve created this thrill-packed virtual roller coaster for your enjoyment.

The Mystery of Crystal Crater
The Mystery of Crystal CraterFor a long time, there were no giant crystals available as RollerCoaster Tycoon 3 scenery. Now there are! JimmyG’s Crystal Set came out this summer and I just love it. These virtual crystals are so pretty I just want to roll around in big piles of them.

…Hence this ride.

Ever since my first ride on Space Mountain as a child, I’ve been fascinated by the entertainment potential of strongly themed roller coasters. Zooming through vivid imagineered environments, dodging faux dangers? Awesome. Ridefilms like Star Tours are similar – the zooming and dodging is simulated, but the imagineering can be far more spectacular when the scenery doesn’t really have to be physically built around the ride.

The Mystery of Crystal CraterThese days, software like RCT3 makes it possible to explore this art form without a theme park’s budget. Which is pretty amazing, really. I can’t tilt your chair for you (alas!) but I can create a POV video from the front seat of a ride that, a month ago, existed only in my daydreams.

…So I have. Enjoy!

(Rider caution: this virtual ride experience includes flashing lights, very loud noises, high speeds and high G’s. And we shoot fireworks right into your face. For best viewing, prefer a dark room, full-screen view, stereo sound – not too loud – and a smooth frame rate even if that requires switching to a lower video resolution.)