Behdad Esfahbod Games

Behdad Esfahbod holding pistachio ice cream

Curiosity, company, and the pleasure of getting a little lost.

These began as invitations to our wedding. Then I got carried away.

My niblings and godchildren are my inspiration and my audience, along with curious adults.

In about a month, Loft Day became the largest codebase I’ve ever developed—bigger than HarfBuzz, 20 years in the making. It’s also the most fun I’ve had in 35 years of developing software.

The best part: I didn’t write a line of it.

Illustrated Loft Day kitchen and espresso bar
Loft Day Explore → Party → Road Trip A sprawling point-and-click day in ten connected rooms, with games inside the game.
Markéta and Behdad in an illustrated Edmonton loft Markéta and Behdad in an illustrated Prague garden
Egg Hunt Two scenes · Ten hidden things An illustrated hunt through our Edmonton loft and a Prague garden.

∞ Loft Day

Spend a day in an illustrated version of our Edmonton loft, from a quiet morning to a crowded party and a drive west. There’s a story to follow and plenty of reasons to get sidetracked.

∞ Practice the art of aimless wandering

Follow the captions for direction, or explore at your own pace. Available in English and Czech; best played in landscape or on a larger screen.

∞ The game

The ten connected rooms include a kitchen and bar, garden, office, cinema, dungeon, and bedroom. The guided path is short; most of what you can discover is optional.

There are toys hidden inside toys: arcade and puzzle games, a working office computer, cameras and messages, two DJs who take requests, classic shooters, and a car you actually drive. No adventure-game experience is needed—just curiosity and a willingness to poke at things.

The office computer has an AI assistant and an AI-enabled coding IDE for JavaScript and Python. You can explore and change the rooms, party, weather, and other systems with code. There’s even a running Linux kernel.

Progress is saved between visits, and real weather, air-quality, and aurora data feed into the environment. There are keyboard, pointer, and touch controls, automatic and manual driving modes, and an option to reduce motion. It is intentionally overbuilt for a wedding invitation.


∞ Egg Hunt

Our save-the-date became Egg Hunt, the smaller game that came first. Find ten hidden things across two illustrated scenes: our Edmonton loft and a Prague garden. Click or tap to uncover animations, jokes, music, and a few stranger detours. The game saves your progress and celebrates when you finish.

∞ Find all ten

Available in English and Czech, with a cheatsheet if you get stuck. Looking closely is half the fun.

Around 3,500 lines of HTML, SVG, CSS, and JavaScript, all in one file. It set the pattern for Loft Day: draw our world, fill it with surprises, and keep finding excuses to add one more.


∞ Development

I lead the concepts, game design, and art and sound direction; Claude and Codex write and maintain the code. I test, give feedback, and keep asking for changes.

Most of Loft Day lives in a single HTML file, with no framework or build step. Rooms and objects are drawn as inline SVG and animated with CSS and the Web Animations API (WAAPI). State management is spread across the DOM and JavaScript closures.

9 MB
main HTML file
140,000
lines in that file
5,800
commits in a month

The artwork is generated as code from real photographs I supply. I work with the agents on the details until the rooms and people feel like ours. We shape the music, room ambience, interface sounds, and effects through the same back-and-forth.

My partner-in-crime, Markéta Jakešová, and my 10-year-old niece Irene co-designed Loft Day. Markéta also provided the Czech translation, and a lot of friends patiently tested the growing loft.

These are open-source personal projects, made to be played with and taken apart. Technical questions, browser reports, and ideas for improvement are welcome in the issue tracker.