Two browser games grew out of our wedding website. Both started as invitations; both became places to poke around and get a little lost.
I wanted to make a fun, wholesome experience for our wedding website. Before long, it had turned into Loft Day: a point-and-click browser game with ten rooms, a party, a road trip, and a lot of smaller games, apps, and hidden interactions.
Loft Day is a visit to an illustrated version of our one-storey loft, rearranged across two floors to fit the game. Wander room by room, follow the day from a quiet morning into a crowded party and a drive west, or ignore the story for a while and poke at everything. The guided path is short; most of the games, music, guests, messages, apps, and odd details are optional.
The ten connected rooms include a kitchen and bar, garden, office, cinema, dungeon, bedroom, and more. 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. English and Czech are available, and no adventure-game experience is required.
Most of the game lives in one 8.8 MB HTML file—roughly 138,000 lines of HTML, SVG, CSS, and JavaScript, with no framework or build step. The rooms and their objects are drawn as inline SVG; the browser receives the document and runs it directly.
That single page also hosts a few real runtimes. Python runs through Pyodide, and a small Linux system runs through v86. The loft also runs Doom through Chocolate Doom, Duke Nukem 3D through EDuke32, Quake III Arena through ioquake3/OpenArena, Prince of Persia through PrinceJS, and DOS Nibbles through js-dos/DOSBox—alongside other classic games reimplemented directly inside Loft Day. The office computer includes an AI assistant agent and a JavaScript/Python IDE with AI help. Both languages connect to an extensive loft.* programming API, so the rooms, party, weather, and other systems can be explored and changed with code.
Around that are the less visible parts of making the loft feel like a place: persistent progress; real-world weather, air-quality index, and aurora index data reflected in the game’s environment; animation and generated sound; pointer and keyboard controls; touch-friendly driving with automatic and manual gearbox modes; English and Czech text; and a reduced-motion mode. It is intentionally overbuilt for a wedding invitation.
I developed Loft Day over about a month and 5,700 commits, working with Claude and Codex while directing, testing, and repeatedly changing my mind. I did the product, art, and sound direction, review, and play-testing; AI agents wrote and maintained the implementation.
All of the SVG artwork was generated as code by AI agents from real photographs I provided. I did not hand-edit the SVGs: I gave the agents detailed visual feedback over many iterations, asking for more detail, closer likenesses, and better shading until the rooms and people felt specific to our world. The sound design followed the same direction-and-implementation loop: I described and reviewed the desired feel while the agents implemented and tuned the music, room ambience, interface feedback, and effects.
The rapid loop made it possible to keep following ideas long after a sensible wedding website would have stopped: a room became ten, an interaction became a game, and the game eventually acquired operating systems, programming interfaces, a party, a highway, and a campsite. My partner-in-crime, Markéta Jakešová, co-designed Loft Day and provided the Czech translation; my 10-year-old niece Irene co-designed it; and a lot of friends patiently tested the growing loft.
The project is open source because it is public and hobbyist-friendly. It is a personal project made with love, rather than a template or a product. Technical questions, browser reports, and optimization ideas are welcome in the issue tracker.
Follow the captions if you want direction, or just click around and get lost. It plays best in landscape or on a larger screen. But first and foremost: wander.
Before Loft Day, our save-the-date became Egg Hunt: ten hidden things scattered across two illustrated scenes, one in our Edmonton loft and the other in a Prague garden. Click or tap around to uncover small animations, jokes, music, and a few stranger detours. The hunt remembers what you have found and celebrates when you find everything.
It is a much smaller companion to Loft Day—around 3,500 lines in one self-contained HTML file—but it established the same playful approach: original inline SVG artwork, CSS and JavaScript with no framework or build step, English and Czech, and more interactions than an invitation strictly needs.
There is a cheatsheet if you get stuck, but looking closely is half the fun.