Welcome Back Trailer Map Premise The machine Worlds Personal Interface Visual Systems Dev Decisions Method Review Proof Analytics Behavior Scope Commercial

Case study

Welcome Back

A 2000s family computer you can sit down at, holding five original browser games on its desktop.

Personal project. I wrote the brief, designed the games, directed the art, wrote every document and built the front end. Behind the screenshots below sit about 37,000 words of design writing, 127 TypeScript files, and 449 pieces of original art.

Role
Concept, game design, art direction, copywriting, front end build, QA
Format
Next.js site, statically exported, one URL
Stack
Next.js, React, TypeScript, Zustand, Tailwind, GitHub to Vercel
Scope
One desktop, five worlds, sixteen applications, a fake internet
Publishing
2027

The trailer

See it running

Nothing on this page shows the part that actually sells it, which is the machine in motion. The cut follows the same reveal the product does: a desk, a monitor warming up, a desktop, a browser, a town, an arcade, a document nobody told you to open.

Placeholder. The cut is not finished yet.

How it was made

The production map

Eight stages, each a real folder in the project. Open any node to read what happened there.

01The questionWhere the whole project starts, and the test every feature had to pass.

A single Next.js site dressed as a home computer from around 2004. You boot it, log in, and every game is an icon on the desktop. Not a museum piece. A machine you use.
Not the graphics. People remember having a house, checking the newspaper, saving up for a chair, and logging on after school. Every feature had to survive one test: would a resident actually do this?

02ResearchNine archived games studied, ten worlds scoped, five kept.

Club Penguin, Webkinz, Poptropica, OurWorld, Nicktropolis, Cartoon Orbit, Coolmath4Kids, Freddi Fish and iSpy. Collected to find the shape of the thing people remember, underneath the art style.
World one is not a recreation. It answers a different question: what would that town have become if it had kept evolving for twenty more years without losing its identity?
One brief covering ten possible experiences, each with the same goals: capture the emotional experience, support long term progression, hide things worth finding, and share the desktop and save system.
Ten became five: Maple Grove, iFind, Finn the Fish, a horse game and Penguin Cove. Three are built. Two are honest coming soon pages inside the browser rather than links that go nowhere.
A site that only trades on recognition is a shrine. It gets one visit. The research pushed the other way: build something people keep playing even if they never saw the originals.

03The machineThe desktop that holds everything else.

The site opens on a desk, not a home page. One painted image with clickable objects mapped onto it. Four of them open real content, and the monitor powers on.
Power on, boot text, a login screen that accepts anything you type, a slow zoom into the monitor. No tutorial and no instructions. Working out what to press is the first minute of play, and the password is the first thing the machine lets you think you solved.
Documents, Pictures, Notepad, a drawing app, Solitaire, Pinball, Minefield, a calculator, an email client, a messenger, a wall calendar, a typing tutor, system properties, the recycle bin and the browser. Windows drag, stack and resize. Deleted files really go to the bin.
A homepage, a search engine with saved history and favorites, a quiz site, a game portal, a free cursor site, a library and a pizza restaurant. Results resolve to real pages instead of dead ends.
Spelling lists, a book report, recipes, birthdays, a budget, a time capsule behind a password. One document is a letter from me, hidden in the folder rather than announced.
The calendar, the inbox, the messenger and the sticky note on the monitor all describe the same few weeks. The school notice lists the dates the calendar marks. A friend asks about the weekend already booked. None of it is pointed out, which is the point.
The search engine has a page where somebody can describe a game they half remember and send it straight to me. No account, no email, just the game. It is the only thing on the machine that leaves it, and it is there because other people remember things I never knew existed.
The fake internet has its own arcade: a maze, tank wars, burger time, stick fighter, a bubble game and a makeover studio. Small, finished and completely separate from the five worlds.

04DocumentationEvery world specified in writing before a line of it was built.

Vision, pillars, player fantasy, core loop, world structure, every system, save data, technical requirements, scope and expansion. Written once so worlds two to five start from a structure.
World one filled the template to about 21,700 words. Every world after it got the same treatment at the size it needed, which is why none of them drifted while they were being built.
Everyday life is the gameplay. Home is the heart of progression. The town is the main character. Small accomplishments matter. Discovery never ends. Comfort before challenge. Nostalgia is the foundation, not the feature.
One document holding the whole ecosystem: what each world is for, what it inherits from the desktop, and what counts as finished. It is the reason five games read as one product.
A written pillar is something you can hold a feature against. Without it, scope grows by mood. Most cuts here were easy because the document had already said what the game was for.
Four living documents that ship with the project: the authoritative architecture rules, per world build notes recording what is actually built and why, and a deployment checklist written after a launch went out with no analytics.

05Art directionOne hand, three distinct looks, held across every world.

Every location is a single painted scene rather than a tile map. The target was a bright, hand drawn browser game from the mid 2000s: bold outlines, warm light, nothing that reads as modern or three dimensional.
Players pick a finished character rather than assembling one, and the clothes shop sells whole looks. A separate set of residents gives every named person in town a face.
41 furniture and prize items, 36 stickers, 23 trading cards, 50 groceries and 6 fish, plus 14 wall treatments. Producing them as sheets kept lighting and line weight consistent across the catalog.
Exactly one character appears in each scene, and the player is never drawn into the world, only into the sidebar. It keeps the paintings composed and removes a whole class of rendering problems.
Standing rule: audit the existing assets before asking for a new one. It is why the final asset check came back with nothing outstanding rather than a wish list.
The operating system, the hardware, the messenger, the shops and every sender in the inbox. The shape of each thing is period accurate. The thing itself belongs to nobody, which keeps the whole machine an homage rather than a replica.
Flat bright cartoon for the town. Dark wood, brass and inscriptional capitals for the riddles. Warm, rounded and wet for the reef. Each world has to be recognizable at a glance, so the art direction holds the line between them rather than flattening them.

06EngineeringA shell, then a pattern every world plugs into.

The shell: boot, desktop, windows, taskbar, start menu, screensaver, a file system, a notepad and a drawing app. Enough to prove the computer was worth building worlds inside.
Playable desktop games, an inspect layer for objects on the desk, monitor controls, search, accounts and the scene calibration system. The site roughly doubled.
Growth slowed and the architecture held. From here the work moved into worlds rather than the shell, which is exactly what the structure was built to allow.
Each world owns its state store and save key with a version and a migration path, registered as a dynamic import. No world grows the bundle that everyone downloads on arrival.
Scenes, characters, items and puzzles are records in one content file. A new room needs no new component. One engine file is the only place requirements are checked and effects applied, so hotspots, dialogue, exits and gifts all behave the same way.
Maple Grove and iFind are session scoped and wipe when the computer shuts down, because they are an afternoon on a website. Finn keeps a save file, because a 2003 adventure on that machine would have. The shutdown screen deliberately spares it.
Every hotspot is measured in percentages against the painting, never in CSS percentages of the container, and always with offset sizes rather than the bounding rect, because the machine applies a zoom transform that the rect reports twice. Written into the build notes so it does not come back.
A cross world store for completion flags, tokens and clues. Built early and left empty on purpose, so the first thing linking two worlds did not require rewriting either of them.
The machine speaks in plain sine tones. The reef got two generators of its own, a bubble and a sweep of water, and every sound in that world is built from them. Sound design turned out to be the fastest way to make two games feel like different software.

07Five worldsThree built, two in design, all on one desktop.

Every world reuses the same template, the same save architecture, the same art rules and the same review process. The fifth took a fraction of the time the first did.
Nine districts, a house you decorate, shops, a bank, a school, a newspaper and a six game arcade. The largest world and the one that set every rule the others inherited.
A hidden object game. A cluttered photographic scene, a rhyming clue underneath, and every object it names is somewhere in the picture. Six scenes, 58 objects, stars instead of scores.
A point and click adventure with a real answer at the end. 25 painted scenes across seven regions, 16 characters, 12 puzzles, and a save file that survives shutting the computer down.
The first world built on frame animation rather than still scenes. It replaces a pet world that was scoped for this slot, and the animation pipeline is being built before the design document, because until a horse moves convincingly there is nothing to write about.
Snowy island locations, minigames, an igloo to furnish and seasonal parties. In design, and built last on purpose because it leans hardest on everything before it.

08Audit and releaseHow a world gets called finished, and what happens after.

Reviewed the way client work gets reviewed: numbered rounds, notes written against specific screens, screenshots with the problem circled. One round alone ran past 4,200 words.
Every id in the catalog matched to a real file. Every image path resolved. Type check and static export clean. Finn's own content audit runs at zero problems, and its last full playthrough completed 54 of 54 steps.
Statically exported, deployed from GitHub to Vercel, with analytics and a live visitor counter reading from a real endpoint rather than a decorative number.

01  Premise

Every tribute to the old internet is a museum

This started as a spec piece for this portfolio. One page, a good idea, a week of work. It became a year.

Millsberry closed in 2010. Club Penguin closed. Webkinz changed. What is left is screenshots, a few wiki pages, and a lot of people describing the same feeling to each other in comment sections.

There is a mechanical problem underneath the nostalgic one. Flash is gone, so a great deal of what people are actually picturing does not run anywhere any more. What survived mostly became a download, or an emulator, or something you need to already understand to get working. The web those games lived on was open and easy and the current version of it is neither.

Most attempts to bring that era back are archives. You look at them. You do not play them. Welcome Back started from the opposite instinct: build the machine, not the exhibit.

People do not remember the graphics. They remember having a house.The finding that set the scope

The feeling I was chasing is a specific one. Seeing a thing you had completely forgotten and hearing yourself say I remember that. It is rare on purpose, because most of what would trigger it has been switched off, and it is rarer still when the thing is from childhood. Everything in this project is aimed at that half second.

That distinction did most of the design work. It meant the art style mattered less than the daily routine, and it gave every feature a pass or fail test: if it did not make a world feel more lived in, it did not ship.

02  The container

A computer, not a website

The first decision was structural. Rather than build five game sites, I built one machine and made every game an application on it. The desktop is the navigation. The browser inside it is the content layer. The worlds are apps.

This is the choice the whole project rests on. It gives five unrelated games a reason to sit together, and every new world inherits an audience already sitting at the machine.

It also set the tone. No onboarding, no tooltip, no press start. You are handed a room and left to work out what is clickable.

My favorite thing in the whole project is also the smallest. The login screen asks for a password, and there is no correct one. Whatever you type opens the machine. Because you had to guess at it, getting in feels like getting in, and people reliably decide they worked it out. Nothing on screen ever admits otherwise, because explaining it is the only way to spend it.

There is no right password. That is the whole trick.The first thirty seconds
A painted 2000s desk scene with a CRT monitor, corkboard, a stack of CDs, a pen cup and a cereal bowl.
The opening frame. One painted room with mapped hotspots. Four objects open real content, and the monitor powers on.
A 2000s style desktop inside the CRT monitor with folder and game icons over a hillside wallpaper.
Eleven working applications and five world icons. Windows drag, stack and resize.
A period web portal page with a search bar, game links, word of the day and a visitor counter.
The browser homepage. Search history, favorites, a poll, and a live visitor counter wired to a real endpoint.
A simple paint application window with drawing tools.
The drawing app, given undo support after a review round pointed out that a child would expect it.

03  The worlds

Five games that share one spine

Each world answers a different childhood memory: a town, a picture riddle, an underwater mystery, a horse, an island. Three are built and playable. Two are honest coming soon pages inside the browser, because a dead bookmark would have broken the machine.

They look nothing alike on purpose, and underneath they are identical: the same 25 section design document, the same save architecture, the same measured hotspot rules, the same review process. That is what made three finished games possible instead of one, and it is the part of this project that would transfer to any product team.

Together they hold more than the desktop admits to. Someone who opens everything once is there for an afternoon. Someone playing properly is there for a week of evenings. Someone who wants all of it is there considerably longer.

1 to 3Hours · one visit that touches everything once
6 to 8Hours · playing properly, not hunting every detail
11 to 15Hours · finishing all of it

Estimated against what is built today, from the content itself rather than from watching anybody play. The first real numbers arrive with the first strangers.

World one

Maple Grove

A town you live in, where the progress you make is a nicer chair.

Pick a resident, move into a starter house, earn Maple Bucks, decorate rooms, shop, play the arcade and read the town paper. There is no plot and nothing to save.

Nine districts, each a painted scene. Fifteen residents with their own conversations, friendship, gift preferences and letters they mail you. A town hall, a bank, a post office, shops, a cafe, a school, a newspaper and a six cabinet arcade.

The progression is deliberately domestic. You are not leveling up. You are finishing a sticker set, fishing at Lakeville, sitting a class at the academy, eating something out of your own pantry, and noticing the shop stock has changed since yesterday. It resets when you shut the computer down, on purpose. It is a day at the family computer, not a save file.

Status
Complete and playable
Inspired by
Millsberry
Core loop
Earn, shop, decorate, discover
Scale
38 painted scenes, 15 residents, 165 collectibles, 6 arcade games
Design doc
About 21,700 words
An illustrated overhead town map with labelled districts, roads, lakes and a sidebar menu.
The town map. Nine districts, a daily allowance and a seasonal event banner.
An illustrated downtown street scene with shopfronts.
Downtown. Every location is one painted scene, never a tile grid.
An illustrated arcade interior with six cabinets, a prize counter and an air hockey table.
The arcade. Six playable cabinets, launched by clicking the machine.
An illustrated living room interior that the player decorates.
The house. Furniture is bought, placed and kept, and it is the main measure of progress.
An avatar selection screen showing a grid of finished character portraits.
Character select. Sixteen finished avatars instead of a parts based builder.
An in game newspaper page with town stories.
The town paper, which is how the world tells you it has been busy without you.
World two

iFind

A game of picture riddles. Everything the rhyme names is somewhere in the photograph.

A cluttered photographic scene, a rhyming clue on a strip below it, and every object named in the rhyme hidden somewhere in the picture. Click it and the words strike through. One round per scene, finished when the rhyme is empty.

The clock is sized to the work rather than fixed: twelve seconds to read the rhyme, plus a per object budget by difficulty, so a scene stays fair when it gains or loses an object. A wrong click costs two seconds. A hint costs five and rings the object. You finish on stars, not a score.

It looks nothing like the town on purpose. Dark stained wood, brass, parchment, and an inscriptional Roman serif.

Four of the six rooms are the house I grew up in. The bedroom, the kitchen, the office and the garage, rebuilt from photographs down to the wallpaper border, the tile, the bookshelves and the cat. Nothing in the game says so. The riddles never mention whose house it is and my name is nowhere in it. It is simply the most personal thing in the project, sitting in plain sight as a puzzle about noticing things.

The office is the one that closes the loop. There is a computer on that desk, and it is the computer this whole project is built inside.

The photographs sit inside a frame rather than filling the width, and that is a decision rather than a shortfall. Filling it would crop almost thirty percent off the height of every picture, and in a hidden object game that means losing objects outright. One scene hides a brass elephant low enough that it would have been cut in half. So the picture stays whole and the bars are dressed as what they are: wood, a vignette and a shadow.

Status
Complete and playable
Inspired by
iSpy
Core loop
Read, look, find, strike through
Scale
6 photographic scenes, 58 objects, 3 difficulty tiers
Source
Four rooms of a real house
Design doc
About 3,000 words
A photographic scene of a teal childhood bedroom with a plaid bed, a window, a closet of clothes and toys on the floor.
The Bedroom. Scenes letterbox rather than crop, so no object can ever end up off screen or under the interface.
A photographic scene of a warm wooden kitchen with a border of wallpaper, a stove, a pantry shelf and a dining table by the window.
The Kitchen, down to the wallpaper border and the cat asleep on the tile.
A photographic scene of a home office with a CRT computer on a wooden desk, bookshelves and a sliding door onto the garden.
The Office, and the computer on that desk is the one the whole project is about.
A photographic scene of a cluttered garage with tools, shelving and stored equipment.
The Garage. Adding a room means a picture, a record and one box per object. No new components, ever.
World three

Finn the Fish

The only world with a beginning, a middle and an end, and a mystery that has a real answer.

A point and click adventure under the water. Swim between rooms, talk to the people who live there, pick things up, and solve problems by carrying the right object to the right place. Five Moon Pearls are missing and the town has decided somebody took them.

Everything in it is a record rather than a component. A scene, a character, an item and a puzzle are all data, and a single engine file is the only place a requirement is ever checked or an effect ever applied, so a hotspot, a line of dialogue, an exit and a gift all behave identically. A new room needs no new code.

There is no modern quest interface. No objective markers, no map, no floating labels. The room name is captioned small in the corner, object names appear on hover, and a notebook page called Things I'm Wondering About is the entire quest system, with three escalating hints you have to choose to open.

It is also the one world that remembers you. The town and the riddles are an afternoon on a website and wipe when the computer shuts down. Finn is an adventure with a save file, the same exception a real adventure disc on that machine would have had.

Nothing in it beeps. The rest of the machine speaks in plain sine tones, which made the reef sound like a spreadsheet, so this world got two sound generators of its own: a bubble, which is a tone that jumps up in pitch very fast and dies just as fast, and a sweep of water moving past you. Every sound in the game is built from those two. Picking something up is three bubbles climbing. A wrong answer is two going down.

Stand still for ten seconds and fatter bubbles start up the edges of the frame with a quiet puff of sound. Any click resets it. The room notices you are there.

Status
Playable start to ending
Inspired by
Freddi Fish
Core loop
Explore, talk, collect, use, progress
Scale
25 scenes, 7 regions, 16 characters, 12 puzzles, 19 items
Length
About 35 to 45 minutes
The Finn the Fish title screen: a cartoon orange fish and a small green sidekick in front of a lit underwater palace, with painted shell buttons.
The title screen. The small green sidekick arrived in the finished art without ever being in the design document or the asset list, and was kept and named Kelp.
A painted underwater plaza with a giant glowing clam shell on a stone dais, lanterns strung between coral houses.
Moon Shell Plaza, where the game opens. Every hotspot here is measured against the real painting rather than guessed.
A painted underwater kelp forest with tall green fronds and shafts of light.
The Kelp Forest. Exits stay invisible until you hover, then a Finn icon fades in at the cursor with the name of where it leads.
A painted underwater chamber with a large ornate shell and glowing pearls.
The Moon Shell Chamber, the ending. The mystery resolves on nobody having taken anything, which is the joke the whole game is built around.
World four

The horse game

The first world that actually moves.

A hand drawn chestnut horse galloping in a loop across a pale field.

Eighteen frames, drawn as one pose set and cut apart, then timed until the gait reads as a horse rather than a slideshow.

Every other world on this computer is still art. A painted scene, invisible boxes measured over the top of it, characters that hang in place and lean in when they speak. It works because a browser game from 2004 mostly did not move either.

This one is the exception, and it changes the job. A horse has to walk, trot, canter, graze and stand, and it has to stay the same horse through every frame of all of it. That is a different production problem from anything else here: pose sets rather than single images, frames cut and aligned to a consistent baseline, cycles that loop without a visible seam, and timing tuned by eye until the weight looks right.

It replaces the pet world that was originally scoped for this slot. Same instinct, something small that needs you to come back, but built on animation rather than a static room, which is the part I want to learn to do properly.

No design document for it yet. The animation pipeline came first on purpose, because until a horse can move convincingly there is no point writing about what it does.

Status
In design, animation pipeline first
Subject
Horses, in the spirit of the ones everybody had on a CD
What is different
Frame animation rather than still scenes
Open
The game itself, and its name
World five

Penguin Cove

An island that feels busy even when nobody else is there.

Wander snowy locations, play minigames, furnish an igloo, and turn up to seasonal parties. The most social feeling world, built without a multiplayer server.

The trick is atmosphere: crowds in the paintings, a party calendar that actually changes, and locations that look like somewhere people just left.

Last on purpose. It leans on the minigame framework, the room system and the seasonal calendar that the worlds before it already paid for.

Status
In design
Inspired by
Club Penguin
Core loop
Wander, play, earn, furnish
Shares with earlier worlds
Minigames, rooms, seasonal events
(template)
The island map, and the locations that open from it.
(template)
A minigame in play, using the same framework as the Maple Grove arcade.
(template)
An igloo being furnished, and a seasonal party in the town square.

09  The personal layer

Everything in this house is real

The family whose computer this is has a calendar, an inbox, a buddy list, a grocery list and a standing argument about ground beef. None of it is invented. It is mine.

That was not the original plan. The plan was a period accurate family, written the way a set designer would write one. It turned out that inventing a convincing family is much harder than remembering a real one, and that the real one was better. So the machine quietly became a place to put things I did not want to lose, and almost none of it is announced.

Nothing below is labelled in the product. There is no about page, no author note in the calendar, no wink. You would have to already know.

My mom planted morning glories on a trellis on the side of the house. Before the bus we would go out and see whether any had opened.

Mom counts them for you in the messenger, most mornings. A typing passage tells you the blue ones open first.

My sister taught me to tie my shoes by giving me a cheese cube every time I got it right.

Sarah brings it up in the messenger and has never once let it go.

Sarah had a blue star nightlight.

She will lend it to you. For one night. She says do not get used to it.

Walking to the gas station for hot dogs and Funyuns, and almost missing the bus.

A conversation with Sarah that neither of us gets to win.

Halloween decorations went up with the windows open and ABBA on, every year.

Sarah, in the messenger. She already has the CD ready.

My mom made me chocolate milk in the middle of the night when my sister had friends over and I was too young for sleepovers.

Tell Mom you cannot sleep and she offers.

I could not eat ground beef. Once I threw up all over the kitchen table.

A grocery list in My Documents, and both parents mentioning the kitchen table without ever explaining it.

My dad's favorite was red velvet.

October 7 on the calendar. He will also tell you himself, and ask you to tell your mother.

He watched every NASCAR race.

Message him during one and he is not really available.

Farkle with him, which he never once let anybody win.

A typing passage, and he brings it up unprompted.

He coached my t ball team.

A typing passage about what a t ball coach actually needs, which is mostly patience.

He set up a treasure hunt every Valentine's Day.

February 14 on the calendar.

He made homemade fried donuts once and the oil burned me.

July 11 on the calendar, written as: Dad's donuts, stay away from the oil.

Craft days at the kitchen table with Mom.

February 21. Popsicle sticks.

Family bike rides, all four of us.

Four of them across the year, including one in November marked if no snow.

My grandma babysat us constantly.

She is on the buddy list, she types with one finger, and she is on the calendar more than anyone.

Block parties our parents threw, with a projector screen set up in the street.

On the calendar, and a typing passage about dragging lawn chairs out once it is dark enough for the movie.

Lemonade stands.

A typing passage with the pricing and the corner by the stop sign.

Sarah played piano growing up and hated it.

Every other week on the calendar, all year, without comment.

Power Rangers.

An answer in the quiz, and a shirt listed in a file somebody wrote.

I was obsessed with horses.

World four.

The house itself.

Four rooms of it are the scenes in iFind.

The fun plates, the plastic ones shaped like animals.

Not in yet.

One more thing

Why the buddy list is empty

Everybody on the messenger is offline when the machine boots. That is not a technical shortcut. It is the state the computer is actually in: nobody has signed on in years. A buddy only appears online once you message them and they answer.

My dad is on that list. He died when I was ten. He is the reason there is a red velvet birthday on October 7, a treasure hunt every February, donuts in July with a warning next to them, and a sticky note on the monitor telling whoever sits down not to install anything.

I did not build this to be sad about. Those are good memories and this is somewhere they can sit, in a machine that feels exactly like the one they happened around. If somebody plays it and never notices any of this, that is the correct outcome. It is a game about a family computer. It just happens to be a real family.

10  Interface

The interface has to belong to the world

A game that looks like 2004 and is wrapped in a modern interface is a costume. So there is no global design system across the worlds. Each one gets the interface its own software would have had, and the only thing they share is a set of rules about how clicking works.

The rules exist because the art is photographic or painted, which means nothing on screen is a real element. Everything clickable is a box measured against the picture, and every one of these rules is the answer to a bug that shipped once.

Onboarding

There is none, and that is the design

No tutorial, no tooltip, no press start. You are handed a room and left to work out what is clickable, because that is what using a family computer felt like. The login password is the first thing the machine lets you think you solved.

Hotspots

Measured against the art, never guessed

Every clickable area is a percentage box against the painting or photograph itself, using offset sizes rather than the bounding rectangle, because the machine applies a zoom transform that the rectangle reports twice. Found and fixed three times before it went into the build notes.

Framing

Letterbox rather than crop

A hidden object scene sits inside a frame instead of filling the width. Filling it would cut almost thirty percent off the height of every photograph, and in a game about finding things that means losing objects outright. The bars are dressed as wood, a vignette and a shadow.

Wayfinding

An exit announces itself, then gets out of the way

Exits are invisible until you hover, at which point a character icon fades in at the cursor with the name of where it leads. Objects and exits sit above characters in the layer order, so somebody standing near a thing can never swallow the click on it.

Quests

A notebook page and nothing else

No objective markers, no map, no floating labels. The room name is captioned small in a corner, object names appear on hover, and the entire quest system is a notebook page called Things I'm Wondering About, with three escalating hints you have to choose to open.

Feedback

Sound instead of interface

Picking something up, getting something wrong, finding something hidden: these are sounds rather than banners. One world gets its own two sound generators so it stops sharing a voice with the rest of the machine.

Windows

They behave like windows

Drag, stack, minimize, maximize, close. Deleted files really go to the recycle bin and can be read there. Nothing is a mockup of an application, which is why sixteen of them are independently usable.

First time

One card, once

The adventure world shows a single intro card for the conventions a first time player has no reason to know, once per save, and never again. Everything else is learned by clicking.

11  Visual system

One hand, three distinct looks

The temptation with a project holding several games is to unify them. That would be the wrong call here. Half the pleasure of a family computer is that the software on it did not match: one program is bright and flat, the next is dark and serious, and the mismatch is what makes it feel like a machine with things on it rather than a product with modes.

So each world is allowed its own look, and the discipline is in holding each one steady rather than blending them.

World one

Flat, bright, hand drawn

Bold outlines, warm light, saturated color, nothing that reads as modern or three dimensional. Painted scenes rather than tile maps, blue interface chrome, rounded yellow price plates. The target is a browser game somebody loved in 2006.

World two

Dark wood, brass, parchment

Stained wood, metal fittings, a vignette, and an inscriptional Roman serif for the titles and plates. It has to feel like a different piece of software entirely, because it is.

World three

Warm, rounded, underwater

Saturated coral and lantern light, soft edges, painted panels with ornate corners built as border images so they never stretch flat at another size.

The machine

Period accurate and entirely invented

The operating system chrome, the icons, the wallpaper, the manufacturer, the processor. Nothing is copied from a real product. The shape is accurate, the thing itself belongs to nobody.

Consistency

Contact sheets, not single requests

Icons are produced as sets rather than one at a time, which is the only way lighting and line weight stay consistent across hundreds of items. A furniture piece drawn alone always looks like it came from somewhere else.

Sprites

Cut by connected component

A two figure sheet split down the middle sliced a hand off. Cutting by connected component instead, then cropping tight to the artwork so the file aspect matches the drawing, fixed it and fixed the soft edges that came with it.

Drift

Thirteen scenes regenerated

A later batch came back photoreal while the first eighteen were painted. That is a style failure rather than a quality one. All thirteen were replaced until the set reads as one hand again.

Weight

24MB to 4MB

Converting backgrounds to progressive JPEG took one scene set from twenty four megabytes to four, with no visible loss. A world nobody can load is not a world.

12  Systems

What is actually running underneath

Three finished games with nothing in common on the surface, built on one set of mechanics that never changes. This is the part that made a second and third world affordable, and the part that would let somebody else add a fourth.

Shared

One store per world

Each world owns its own state, its own save key, its own version number and its own migration path, and is registered as a dynamic import. Nothing a world does can reach into another world, and nothing a world costs is paid by somebody who never opens it.

Shared

Content is data, not components

Scenes, characters, items and puzzles are records in one content file. A single engine file is the only place a requirement is ever checked or an effect ever applied, so a hotspot, a line of dialogue, an exit and a gift all behave identically. A new room needs no new code.

Shared

Two worlds forget, one remembers

The town and the riddles are session scoped and wipe at shutdown, because they are an afternoon on a website. The adventure keeps a save file, because a real adventure disc would have. The shutdown routine deliberately spares it.

World one

An economy with two currencies

Maple Bucks from jobs, classes, fishing and the arcade, plus arcade tickets that only buy prizes. Fifteen residents with friendship, gift preferences and letters they mail you. A house with three rooms, furniture you buy and place, and wallpaper. Collections across groceries, stickers, trading cards and fish, a pantry that moves five stats depending on what you eat, seasonal events, and a town paper that tells you the world moved without you.

World two

A timer sized to the work

Twelve seconds to read the rhyme, then a per object budget set by difficulty, so a scene stays fair when it gains or loses an object. A wrong click costs two seconds, a hint costs five and rings the object. It scores in stars, not points.

World three

Requirements and effects

An inventory, characters who want things, and twelve puzzles that resolve by carrying the right object to the right place. Sixteen notebook entries stand in for a quest log. Every item in the catalog is awarded by something, so nothing is unobtainable.

Elsewhere

Twelve more minigames

Six arcade cabinets inside the town and six browser games on the fake games portal, all built on the same small framework and all finished.

Waiting

A discovery layer with nothing in it

A cross world store for secrets, completion flags and clues. Built early and deliberately left empty, so the first thing that links two worlds does not require rewriting either of them.

13  Development

No backend, no accounts, no database

Next.js exported as a static site, React and TypeScript, Zustand for state, Tailwind for layout, deployed from a repository to a host. That is the whole stack, and the constraint is the point: everything in here has to work as files on a server, the same way the sites it is imitating did.

127 TypeScript files, about 23,600 lines, 83 components and seven state stores, grown across three archived build generations. The shell stopped growing at generation three, which is when the work moved into worlds, which is exactly what the architecture was built to allow.

Practice

The code explains itself

Around 220 documentation blocks sit at the top of files and functions, and almost none of them describe what the code does. They describe why it is like that, what was tried first, and what breaks if somebody changes it back.

Practice

Four documents ship with the project

An architecture file that is the authority when it and the readme disagree, per world build notes recording what is actually built, a deployment checklist, and a copyright notice. The prompt and audit documents are kept out of what gets published.

Trap

Measure with offset sizes

The machine applies a zoom transform, so the bounding rectangle reports a scaled number and every hotspot lands in the wrong place. This cost three separate debugging sessions before it was written down.

Trap

Transform only animation

Anything that animates does it with a CSS transform, because animating layout moves a measured hotspot out from under the thing it belongs to.

Trap

No random values at render

Positions that look random are hardcoded, because a value generated during render does not match between the server and the browser and the whole page throws.

Trap

Build time variables are baked in

Three public environment variables are compiled into a static export. Setting them after a deploy does nothing until a rebuild, which is how a launch once went out silently with no analytics and no counter and nothing warned anybody.

14  Decisions

Ten calls that shaped the build

A personal project has no deadline to force decisions, so the constraints had to be written down and then honored. Each of these closed a door on purpose.

Avatars

Sixteen finished characters

A parts based builder needs every hair and top drawn to work together, and it never stops growing. Presets cost one sheet of art, ship immediately, and let the clothes shop sell whole looks. The old builder code was deleted rather than left dormant.

Arcade

Frozen at six games

Minigames are the most fun thing to build and the easiest place to lose a year. One duplicate was cut and the set was closed. The painted cabinets that are not playable stay as set dressing, which makes the room feel bigger than the feature is.

Geography

Nine districts, locked

Fixed early and never renegotiated. A world that keeps being redrawn cannot accumulate small details, because every change invalidates the art, the routing and the writing at once.

Scenes

One resident per painting

A composition rule that turned into a technical simplification. It is also why a written character with no free slot got caught in the audit instead of shipping invisibly.

Architecture

Worlds load on demand

One state store per world, its own save key, its own version and migration, registered as a dynamic import. The cost of world five is paid by the people who open world five.

Saving

Two worlds forget, one remembers

The town and the riddles are session scoped and wipe when the computer shuts down, because they are an afternoon on a website. The adventure keeps a save file, because a real adventure disc on that machine would have. Shutdown deliberately spares it.

Content

A new room needs no new code

Scenes, characters, items and puzzles are records in one data file, and one engine file is the only place a requirement is checked or an effect applied. Everything behaves the same way because there is only one implementation of behaving.

Originality

Invent the brands, do not copy them

The operating system, the hardware, the messenger, every shop and every sender in the inbox are made up. What gets borrowed is the shape of the thing, never the thing itself. It keeps the machine an homage rather than a replica, and it lets the details be period plausible without pretending to be any one product.

Continuity

The apps have to agree

The calendar, the inbox and the sticky note on the monitor all reference the same few weeks of one family's June. None of it is signposted. A detail nobody notices is still the reason the whole thing feels real.

Placeholders

Coming soon beats a dead link

The two unbuilt worlds are real pages in the browser saying they are not ready. A bookmark that went nowhere would have broken the illusion that this is a working computer, which is the only thing the whole project is selling.

15  Method

Thirty seven thousand words before the fun part

The design writing is the part I would show first in an interview, because it is the part that made the rest finishable.

It starts with a template of 25 fixed sections, so every world begins from a structure rather than a blank page. World one filled it to about 21,700 words: every system specified before it was built, from the economy and inventory to the school, the careers and the town paper.

Seven design pillars sit at the front, written as tests rather than values. Would a resident actually do this. Does it give people a new way to improve their home. A feature that fails several of them does not get built, and that sentence is in the document so the answer is decided in advance instead of in the moment.

Alongside the design documents sit the build notes, which are the more useful half. They record what is actually built rather than what was planned, every decision and the reason for it, and the traps worth not repeating. One of them exists purely because a launch once went out with no analytics and no visitor counter, silently, because three build time variables were never set.

DocumentLengthWhat it does
GDD template25 sectionsThe reusable spine for every world
Maple Grove design document~21,700 wordsWorld one, specified system by system
Master world brief10 worldsScope and shared goals across the whole project
iFind design document~3,000 wordsWorld two, written before development
Finn the Fish design documentFull templateWorld three: the mystery, seven regions, the cast
ArchitectureLivingThe authoritative rules. When it and the README disagree, it wins
Per world build notesOne per worldWhat is actually built, what is not, and every decision behind it
Deployment checklistLivingWritten after a launch shipped silently with no analytics
AuditsOne per worldVerification that a world is genuinely finished

16  Review

I ran client review on myself

The most useful habit in this project was treating my own work like a client deliverable. Each build got a numbered review document: notes written against specific screens, screenshots with the problem marked, and a clear line between what was broken and what was a decision I wanted revisited.

One round was structural: the viewport was wrong, the icons were too large, two card games were unplayable, and the whole thing did not work on a tablet. Another was almost entirely copywriting, cutting written gags out of the family documents in favor of things a real family would actually have typed.

Written rounds do two things mental notes never do. They create a record, so nothing quietly stays broken across three builds. And they separate taste from defect, which is the difference between a list of complaints and a usable brief.

A real mother writing a grocery list is funnier than a written gag.Review round four

That note is a good example of the value. It is not a bug. It is a decision about voice that arrived halfway through, got written down once, and has applied to every string written since.

The most recent round is the clearest case for doing it at all. Two hint lines still told the player that part of the mystery was not built yet, months after the ending had been written. The game was finished and was still saying it had stopped. Nobody playing it would have reported that as a bug; they would just have quit. It got found by reading, not by testing, and the note now says to search for that exact phrase after any change to the content.

7Review rounds, world one
11,300Words of written feedback
43Annotated screenshots
3Archived build generations
7Zustand state stores

17  Proof

Finished, and checked against the data

Personal projects usually end by being abandoned. Each world here ended with an audit instead, because I wanted the word finished to mean something specific.

The check runs against the game data rather than by clicking around. Every id in the catalog is matched to a real file on disk, and every image path referenced anywhere in the code is resolved.

  • Every catalog id matched to a file on disk. Every image path in the code resolved.
  • Type check clean. Static export clean, with no warnings.
  • Every scene loaded in a real browser: no console errors, no failed requests.
  • Boot, login and all 16 desktop applications opening correctly.
  • The adventure's content audit at zero problems, and its last full playthrough completing 54 of 54 steps from new game to the ending card.
  • Every room in that world reachable, with the exit graph walked and all 25 scenes confirmed.
  • Analytics live, and a visitor counter reading from a real endpoint.
  • Open items logged honestly as decisions rather than quietly dropped.

The last line matters more than the clean ones. The audits record what is deliberately left undone as well as what is finished, with the reasoning attached, so the next world starts from a truthful picture instead of an optimistic one. The list shrinks as things get fixed: a batch of late scenes that had drifted toward photoreal has since been regenerated to match the rest, and every item in that world now has a puzzle that awards it, so nothing in its catalog is unobtainable.

449Pieces of original art
69Painted and photographic scenes
127TypeScript files
23,645Lines of code
12Playable minigames
0Missing assets at audit

18  Analytics

Instrumented, not yet reporting

Measuring things is the day job, so the temptation was to build a dashboard for a game nobody has played. What exists instead is the smallest honest setup: the page is instrumented, the counter is real, and the event layer is specified but not built, because events you designed before watching anybody are usually the wrong events.

There is also no conversion here. Nothing is sold, nothing is signed up for, there is no funnel. That makes it a cleaner measurement problem than most commercial work: the only question is whether somebody explores, and for how long, and how far in they get.

Live

Analytics on the exported build

Page level measurement is wired into the static export and switched on by a build time variable. It reports sessions, sources and pages, and nothing about what happens inside the machine yet.

Live

A visitor counter that is not decorative

The homepage of the fake internet shows a counter reading a real endpoint, offset by a fixed number so it starts where it should. It is the only number in the product that means anything, and it is period appropriate that it sits on a homepage.

Learned

A launch that shipped silently

A deploy went out with no analytics and no counter, because three build time variables were never set on the new host and nothing warns you they are missing. The site looked completely normal. That is now the first item on a written deployment checklist.

Deferred

Events, deliberately

The event layer is specified and not implemented. Instrumenting before watching anybody use it produces a dashboard full of numbers that measure the assumptions rather than the behavior.

The event plan

Eleven things worth counting

Written, not built. Each one exists to answer a question the design is currently guessing at.

  • Boot completed, and how many people quit at a black screen with a power button on it
  • Login completed, and how long somebody sat there deciding what to type
  • First application opened, and which one it was
  • Browser opened at all, since the fake internet is invisible from the desktop until you go looking
  • World entered, and whether anybody enters a second one
  • World finished, for the one world that can be finished
  • Minigame played, and which of the twelve
  • Hidden interaction found, which is the closest thing to a quality signal
  • Suggest a game submitted, which is the only inbound the project has
  • Session length, against the one to three hour estimate
  • Return visits, which is the number the whole retention argument rests on

19  Behavior

What the design is betting people will do

A product with no instructions is a product making a lot of assumptions. Every one of these is a bet, and the review rounds already lost a few of them.

The bet

People will click a painted room

The site opens on a desk with no interface at all. The whole product depends on somebody being curious enough to click an object in a photograph rather than waiting to be told.

The bet

People will try a password

There is no correct one and anything works. The bet is that a login screen is familiar enough that people type something instead of leaving.

The bet

People will find the browser

Most of the content is behind one icon on the desktop. A person who never opens it sees maybe a fifth of what is there, which is the single biggest risk in the whole layout.

The bet

People will enter a second world

The architecture, the retention argument and the entire commercial case assume somebody who finishes one thing goes looking for another. Nothing currently proves it.

The bet

Nobody needs the personal layer explained

A calendar full of one family's year reads as set dressing to everybody except the family. That is the intended experience and it is also unverified.

Already corrected

Behavior beat intention six times

Each of these was a design decision that somebody's actual behavior overruled, and every one of them was found by using the thing rather than by reading the specification.

  • The drawing app had no undo, because the original did not. A child would expect one. It has one.
  • Exits were invisible strips. Hunting for them is an obstacle, not a puzzle. They announce themselves on hover now.
  • A character standing near an object silently ate every click on it. Objects and exits now sit above people.
  • Two hidden object targets were ambiguous rather than hard. Removed, not made easier.
  • Objects were named what they are rather than what they look like. Renamed to what a player would call them.
  • The found markers were unreadable against a busy photograph. Retuned until they read at a glance.

The honest state of all of this is that it has been tested by one person who already knew the answers. The experiment that would actually settle it is in section 21.

20  Scope

Everything that went into it

People see a finished game and read it as one skill. It is not. Below is the actual work, grouped by the job it belonged to, across the machine, the fake internet and every world.

Nothing here was delegated. Every line was mine.

15Disciplines
260Kinds of work
1Person
01

Concept and game design

Game designer

11
  • Coming up with the overall concept
  • Defining the core fantasy of each game
  • Designing the core loop for every world
  • Designing the structure of each world
  • Building five games as one fictional world
  • Designing progression, unlocks and discoveries
  • Designing quests, mysteries and player objectives
  • Designing the reward structure
  • Designing pacing
  • Designing how information is revealed to the player
  • Building the experience around discovery rather than clicking through pages
02

World and location design

World builder

15
  • Mapping the areas of each world
  • Designing individual locations
  • Deciding which locations are explorable
  • Planning how the player moves between them
  • Designing the navigation system
  • Designing the information architecture
  • Designing outdoor environments
  • Designing interiors and individual rooms
  • Designing houses, storefronts and signage
  • Designing environmental storytelling
  • Designing things a player can find
  • Designing hidden details
  • Designing interactive objects
  • Placing props that make a location feel lived in
  • Choosing nostalgic objects true to the period
03

Reconstructing real places

Photographer, set designer

10
  • Reconstructing the layout of a real childhood house
  • Translating real architectural details into game environments
  • Recreating kitchens, pantries, bedrooms, offices and dining rooms
  • Recreating trim, windows, doors and flooring
  • Recreating built in shelving
  • Turning real photographs into environment references
  • Deciding which real details to preserve
  • Deciding which details to fictionalize
  • Hiding personal easter eggs
  • Deciding which personal references stay obvious and which stay quiet
04

Art direction and visual identity

Art director

9
  • Creating the visual identity for the site and all five games
  • Establishing the 2000s children's web game aesthetic
  • Establishing the painterly cartoon style
  • Establishing the color palette
  • Establishing typography
  • Establishing UI styling
  • Establishing iconography
  • Holding one art direction across five different worlds
  • Making every asset work together as a coherent visual system
05

Characters and writing

Copywriter, narrative designer

17
  • Designing the characters
  • Writing their personalities
  • Writing their dialogue
  • Designing conversations and conversation flows
  • Designing character states and behaviors
  • Designing what happens when a player talks to someone
  • Writing every piece of interface copy
  • Holding one voice across five games
  • Writing a family's inbox: the senders, the shops, the order numbers, the school
  • Writing a buddy list and the conversations sitting behind it
  • Keeping four separate applications agreeing about the same few weeks of one June
  • Writing furniture that does not make jokes, because furniture that winks breaks the illusion
  • Inventing an operating system, a manufacturer and a processor that belong to nobody
  • Writing a whole family into a messenger, one keyword bank at a time
  • Writing a year of one family's calendar, including the weeks nothing happened
  • Writing typing passages that carry real memories without ever explaining them
  • Deciding which personal things go in and which stay mine
06

Asset production

Illustrator, retoucher

22
  • Generating visual concepts
  • Writing detailed image prompts
  • Iterating until a generated asset matched the style
  • Correcting generated assets
  • Removing unwanted artifacts
  • Regenerating the ones that did not work
  • Cropping, resizing and cleaning up
  • Cutting transparent assets
  • Separating foreground from background
  • Getting everything to the right dimensions and formats
  • Creating asset variants
  • Creating character appearances and clothing combinations
  • Creating avatars, hair, eyes, tops, bottoms, shoes and accessories
  • Creating furniture, objects and decorative props
  • Creating environmental variations
  • Keeping hundreds of visual elements consistent with each other
  • Cutting two figure sprite sheets apart automatically without letting one bleed into the other
  • Using connected component labelling to separate a grid of small characters
  • Cropping sprites tight to the artwork so the file aspect matches the drawing
  • Converting backgrounds to progressive JPEG and taking a scene set from 24MB to 4MB
  • Catching style drift when a later batch of scenes came back photoreal instead of painted
  • Building painted panels as border images so ornate corners do not stretch flat
07

Asset management

Producer

10
  • Naming hundreds of assets consistently
  • Organizing them into folders
  • Building an asset inventory
  • Tracking what was finished, missing or needed revising
  • Deciding what had to be made and what could be reused
  • Managing asset paths and references
  • Managing image loading
  • Making sure every asset reached the right component
  • Connecting visual assets to game logic
  • Making sure interactive areas match the art behind them
08

UX and interface design

UX designer

25
  • Designing the first time experience
  • Designing onboarding, then deciding to have none
  • Designing how a player works out what to do
  • Designing affordances and clickable elements
  • Designing interaction feedback and navigation cues
  • Designing menus, buttons and tooltips
  • Designing dialogue boxes and character interaction UI
  • Designing location selection
  • Designing game state feedback
  • Designing visual hierarchy, spacing and type
  • Designing hover, active and disabled states
  • Designing transitions between screens
  • Making the interface feel like part of the world instead of a website
  • Placing real invisible buttons over buttons painted into the art
  • Keeping clickable things out of the band where the dialogue card sits
  • Keeping clickable things out of the corners where the floating interface sits
  • Making a floating bar ignore pointer events so the picture stays clickable underneath it
  • Deciding a scene should letterbox rather than crop so nothing is ever hidden
  • Designing a quest system that is one notebook page and nothing else
  • Making an exit announce itself on hover instead of sitting on the art as a box
  • Giving a lost player a character who always names the next place to go
  • Writing a one time intro card for conventions a first time player has no reason to know
  • Choosing to frame a photograph rather than crop it, because cropping loses the objects
  • Designing a typing test with no lessons, no levels and no mascot
  • Letting somebody describe a half remembered game without asking for a name or an email
09

Engineering

Front end developer

39
  • Setting up the project and structuring the codebase
  • Building the React application
  • Building reusable, page, location and UI components
  • Building navigation, dialogue, character and interactive object components
  • Building the game state logic
  • Managing player, location, conversation and interaction state
  • Writing event handlers, click interactions and hover states
  • Writing transitions and animations
  • Writing conditional rendering and dynamic content
  • Building the data structures that hold the game content
  • Connecting that data to the interface
  • Writing the logic for entering and leaving locations
  • Writing the logic for conversations
  • Writing the logic for unlocking content and tracking progression
  • Writing the logic for starting and resetting a game
  • Working out what a player has already discovered
  • Showing different content depending on game state
  • Building menus, overlays, modals and buttons
  • Building loading, error and empty states
  • Building the screen hierarchy
  • Handling different screen sizes and states
  • Building a data driven adventure engine where a scene is a record, not a component
  • Writing one effects shape and one requires shape that everything in the world uses
  • Building a hidden object engine that takes a photo, a rhyme and a box per object
  • Building a dynamic import per world so the shell bundle stays small
  • Writing versioned save stores with migrations so old saves survive changes
  • Deciding per world whether state should survive shutting the computer down
  • Building an explicit layer order so objects and exits can never be swallowed by a character
  • Building custom painted cursors with fallbacks for when a browser refuses them
  • Writing CSS transform only animation so it never moves a measured hotspot
  • Hardcoding animation positions because random values break server rendering
  • Writing two sound generators so one world could stop sounding like the rest of the machine
  • Building ambient behavior that starts after ten seconds of stillness and resets on any click
  • Writing a nutrition table keyed off an existing category so future items are handled automatically
  • Building a read state that lasts as long as the machine is on and forgets at shutdown
  • Building a messenger where every buddy is offline until they answer you
  • Making replies keyword matched and used once each, so nobody repeats themselves
  • Wiring one form on the fake internet to a real inbox without breaking the illusion
  • Keeping read state for a session and letting it go at shutdown
10

Debugging and refactoring

Developer

21
  • Debugging React behavior
  • Debugging state management
  • Debugging rendering
  • Debugging interactions and component behavior
  • Fixing TypeScript errors
  • Refactoring components
  • Moving logic between components
  • Separating presentation from functionality
  • Making functions pure where it mattered
  • Rebuilding the conversation architecture so it starts on purpose rather than by accident
  • Managing props and component relationships
  • Managing imports, dependencies and file structure
  • Finding the same coordinate bug three times and writing it into the notes to stop a fourth
  • Measuring with offset sizes instead of the bounding rect, because the screen is scaled
  • Tracking down why a character silently ate every click on the reply buttons
  • Working out that soft sprites were a padding problem, not a resolution problem
  • Fixing a browser tab crash caused by shipping sprites at native resolution
  • Splitting a framed scrolling panel into two elements so it stops sizing itself from content
  • Finding a win card stuck over the next round because a component kept its instance
  • Finding that trying a look on had been quietly granting it, leaving the shop nothing to sell
  • Recutting every sprite by connected component after a vertical split sliced a hand off
11

Web, version control and deployment

Web developer

17
  • Building the actual website around the games
  • Structuring routes and pages
  • Setting up the repository
  • Committing, pushing and managing versions
  • Keeping track of which versions worked
  • Connecting the project to hosting
  • Managing deployments
  • Testing production builds
  • Fixing bugs that only appeared in production
  • Reviewing every deployed version
  • Redeploying and maintaining the live site
  • Getting the whole thing from local files to a public address
  • Writing a deployment checklist after a launch shipped with no analytics and nobody was warned
  • Learning that build time variables are baked in and need a redeploy, not a save
  • Reconciling a live visitor counter against a real starting number
  • Deleting old hosting projects that quietly stay live on their own addresses
  • Keeping the handoff archive down to the documents that belong in it
12

QA and testing

QA tester

26
  • Clicking through every location in every world
  • Testing every interactive element
  • Testing navigation, menus and buttons
  • Testing character interactions and dialogue
  • Testing progression and unlock conditions
  • Testing every game state
  • Looking for broken interactions
  • Looking for missing or wrong assets
  • Looking for visual and layout bugs
  • Looking for console and React errors
  • Checking that conversations start correctly
  • Checking that state persists correctly
  • Checking that nothing fires by accident
  • Checking that everything fires when it should
  • Testing the production build
  • Keeping a review sheet of what was done
  • Tracking unfinished features and bugs
  • Prioritizing fixes, then doing them
  • Walking the exit graph to prove every room in a world is reachable
  • Playing a world start to finish and counting off every step
  • Running a content audit that checks the data rather than the screens
  • Checking that one world's save survives a shutdown while the others are wiped
  • Reading the content rather than playing it, and finding two hints still saying the game stops here
  • Removing puzzle targets that were ambiguous rather than hard
  • Renaming objects to what they actually look like instead of what they are called
  • Retuning found markers that were unreadable against a busy photograph
13

Project management

Project manager

14
  • Turning a concept into an actual project
  • Writing the design document for every world
  • Breaking the project into systems, features and tasks
  • Writing asset lists, location lists and screen lists
  • Tracking progress and keeping a backlog
  • Prioritizing features
  • Deciding what was essential and what was optional
  • Managing scope
  • Managing revisions and unfinished pieces
  • Trading visual quality against development time
  • Finding workarounds when something did not work
  • Rebuilding when the first approach was wrong
  • Keeping the art, the design and the code pointed at the same thing
  • Making sure the visual concept was actually buildable
14

Working with AI tools

The newest part of the job

18
  • Learning technologies I did not already know
  • Learning how React handles state
  • Learning how components talk to each other
  • Learning how deployment works
  • Learning how assets need to be structured
  • Working out how to brief an AI coding tool
  • Writing extremely specific instructions
  • Giving it context about the existing architecture
  • Stopping it from breaking features that already worked
  • Spotting when the generated code was wrong
  • Debugging and rewriting generated code
  • Iterating through dozens of implementation problems
  • Getting generated images into the exact style I wanted
  • Regenerating when something was almost right
  • Writing a style block precise enough that a later batch still matches the first
  • Regenerating a set rather than rewriting the prompt when output drifted
  • Keeping an asset prompt library so a replacement matches what it replaces
  • Deciding to keep something the tool invented, and naming it
15

The part nobody sees

All of the above, at once

6
  • Making creative decisions with no obvious answer
  • Balancing perfectionism against actually finishing
  • Switching between every role on this page, often in one afternoon
  • Doing the research, the writing, the design, the art, the build, the testing and the deploy
  • And doing it again when it was not good enough
  • Writing down why a decision was made, in the file where the next person will look

Roles switched between, often in one afternoon

Creative director UX designer Art director Photographer Copywriter Game designer Developer QA tester Project manager

21  The commercial case

The questions a publisher would ask

Walking a finished prototype into a publisher does not get you a check. It gets you about ten questions, and none of them are about the art.

These are the questions, with the answers I would actually give. I have marked which ones the build has already settled and which ones are still a hypothesis, because the fastest way to lose a room is to present an assumption as a proven thing.

Hypothesis

Who is the audience?

Adults roughly 25 to 40 who grew up on a family computer and a browser full of free games. The emotional target is narrower than that and the real market is wider: people who miss finding things on the internet before it was optimized, social and personalized for them. There is a second audience underneath it, younger players who never lived through any of this and read the whole aesthetic as novel, and that matters because nothing durable can rest on one generation remembering one thing.

The differentiator

Why this instead of the nostalgia games that already exist?

Most of them recreate a destination. This recreates the machine that connected you to all of the destinations. Build a town game and you compete with people's memories of that town. Build the computer and there is nothing to compare it against, because the product is the whole ecosystem: you sit down, explore a desktop, find applications, open a browser, find games, read documents nobody told you were there. The worlds inside it can then be completely different from each other, which is a far broader foundation than one genre.

Hypothesis

What is the retention loop?

There is no log in, daily quest, collect reward, come back tomorrow loop, and bolting one on would damage the thing that makes it worth opening. The model is discovery driven instead: explore the computer, find something, finish or advance in a world, uncover something else, go back out and keep looking. At the scale of months it becomes simpler than that. A new world ships and the people who already have the machine come back to find it. The computer is the persistent layer, not any one game inside it.

Partly open

What makes someone come back tomorrow?

This one is not fully answered and I would not pretend it is. The strongest honest answer is content discovery: with enough worlds, applications, hidden interactions, collectibles and documents there is always a reason to look further. The shape I would argue for is that the first visit runs on nostalgia, the second on curiosity, and every visit after that on new content. That tells you exactly what a finished version needs, which is a release schedule.

Proven by the build

How much content can actually be produced?

This is where the architecture stops being a technical detail. Worlds are modular, scenes and characters and puzzles are records rather than components, and a new room needs no new code. The claim is not that one person can make infinite games. It is that content can be added incrementally without rebuilding the product underneath it. There is a real ladder behind that: a full world takes months, a minigame weeks, a room days, a collectible set hours.

Strong fit

What is the acquisition strategy?

The product is the advertisement. A desk, a CRT warming up, a desktop, a browser, a town, an arcade, a strange document, a hidden interaction: that is already a reveal structure, and unlike a normal trailer the thing being shown is the hook rather than a summary of it. Short video, development diaries, nostalgia and indie communities, press and creators. The framing that works is somebody finding something on a childhood computer, not an ad about a game.

Unvalidated

Is the nostalgia broad enough on its own?

This is the biggest unknown and the honest answer is no. Nostalgia is the acquisition hook. The thing cannot depend on it to survive. The nostalgia gets somebody to click, the exploration gets them to play, the worlds give them something to do, and new content gives them a reason to return. The broader idea, exploring a strange personal computer that belongs to somebody else, is the part that can reach people who do not share the references. That is the hypothesis. It has not been tested.

Direction

What does it become once the novelty wears off?

Not a nostalgia game that keeps getting bigger. A living collection of small worlds housed inside a persistent fictional computer, where the computer is the platform and the worlds are the content. One year it holds a town, a game of picture riddles and an underwater mystery. Another year it holds a music game, a cooking game, a digital pet, something with other people in it. The computer accumulates history the whole time, and the proposition moves from remember this to what is on this computer, which is a far more durable thing to hold.

Sequenced

What would it take to go from a solo project to a real one?

Two honest shapes. A lean version is me plus a couple of developers and freelance art and audio, enough to polish what exists, harden the infrastructure, make more content and launch it properly. A studio version is a full team across engineering, art, design, UX, audio, QA, production, marketing, community and a content pipeline that never stops. I would not start with the second one. The order matters more than the size: finish it, put it in front of strangers, find out whether people want more, and only then build the thing that makes more.

The framing

Not a game with five games in it

Describing it as five games undersells the part that took the longest. The accurate description is a fictional family computer holding an expanding collection of playable worlds: I recreated the feeling of finding things on a 2000s family computer, then built an architecture that lets completely different games live inside the same machine.

Said that way, every piece of the project has a job.

NostalgiaAcquisition
The computerThe product
The worldsThe content
DiscoveryThe core interaction
New worldsRetention
Modular architectureScalable production
Community and creatorsDistribution

The next experiment

Put it in front of strangers and say nothing

Everything above is reasoning. The only thing that turns it into evidence is watching people who had nothing to do with making it try to use it, with no explanation first. That experiment is simple enough to run as soon as the thing is public, and the analytics and the visitor counter are already wired in so the first answers arrive as data rather than as a feeling.

What I would be watching for:

  • Do they understand what they are looking at?
  • Do they know what to click?
  • How long do they keep exploring?
  • Do they ever find the browser?
  • Do they open more than one application?
  • Do they enter more than one world?
  • Which world holds them longest?
  • Do they find anything hidden?
  • Do they come back without being asked?
  • Do they tell somebody else about it?
  • What do they ask for next?

The order matters. Finish it, show it, find out whether anybody wants more, and only then build the machinery to make more. The other way around is how a good idea turns into an expensive one.

Here is what I built. Here is why I built it this way. Here is what I have proven, and here is what I have not.The only pitch worth making

22  Why it is here

A game has no forgiving audience

Nobody has to play this. No contract, no captive user, no procurement process. That makes it a fair test of what a marketing and design role actually runs on: deciding what a thing is for, writing the specification, directing the art, building the front end, and verifying that what shipped matches what was promised.

The transferable part is not the pixel art. It is that a project this size stayed coherent because the thinking was written down, the scope was cut on purpose, review happened in rounds, and the finish line was an audit rather than exhaustion.

It is also the clearest example I have of designing for a feeling and then defending that feeling against every good idea that would have diluted it.