← All projectsPersonal · Solo project

Heisei Days

In progressA dev log, updated as I build

A cozy life sim set in late-90s Tokyo, and my first game. I design the systems and the world, and direct AI agents that build in Unity and Blender from the command line, with tests and performance budgets behind every playtest.

RoleSolo: game design, systems, world layout and art direction
TeamJust me, directing AI agents
WhenOctober 2026 to now
StackUnity 6 · C# · URP · Blender · UniVRM · Yarn Spinner
Golden hour · bedroom
Golden hour · shopping arcade
From the balcony
Dusk · the lanterns come on
Night · shopping arcade
Night · living room
01 · Why it exists
The starting point

A browser prototype with a ceiling.

The first version ran in a browser tab. It proved the core loop: stats, daily schedules, relationships, a phone UI and about 400 dialogue nodes. But it drew everything on the CPU into a 267 × 150 pixel buffer, with no real lighting and no room for a whole walkable city.

The move

A real engine, with AI agents on the tools.

I rebuilt it in Unity 6 and connected Claude to the editor through the Unity CLI and to Blender through its MCP server. It can build, play the game frame by frame, take screenshots and check its own work, so every playtest note turns into a tested fix.

The browser prototype: a pixelated character drawn on the CPUBefore
The browser prototype’s CPU renderer.
The bedroom in Unity at golden hour, with light through the windowAfter
The same character in Unity, at the end of day one.
02 · How it’s built

An agent pipeline, from Blender to a playable build.

MeDesign and playtestsSystems, the city plan, and notes from every playtest.
ClaudePlans and buildsWrites the C#, briefs the art agent, reviews screenshots.
Blender MCPModels and layoutsA Blender agent builds each asset and exports FBX plus layout data.
Unity CLIImports, tests, playsBuilds the scenes, runs the tests, steps play mode and captures shots.
  1. Game logic in plain C#

    Stats, calendar, schedules, relationships and saving live outside Unity, so 85 automated tests run from the command line.

  2. A data-driven world

    Every lot in the city plan has an ID that becomes a marker in its scene. Content refers to places, not geometry, so a building can change without breaking anything.

  3. Fixes at import time

    Every model passes through an importer that recesses coplanar faces so nothing flickers. The scene builder then adds colliders for furniture baked into room meshes.

  4. Playtests in the running game

    The agent steps play mode frame by frame, walks routes with the real character controller and takes screenshots, so each fix is checked where players will see it.

03 · Dev log

Day one: thirteen hours, from graybox to golden hour.

  1. 9:51 AMProject and plan

    A Unity 6 URP project and a written plan, then the C# core with 81 tests before there was a single graphic.

  2. 11:03 AMFirst playable

    Additive scene loading, the player controller, camera zones, dialogue, the phone UI and a time-of-day system.

  3. 11:51 AMA world from Blender

    A 55-piece modular shopping-arcade kit on a 0.5 m grid, sharing a few texture atlases. Every brand is fictional.

  4. 12:40 PMVertical slice

    Title screen to bedroom to street to shop, with save and load, reviewed from screenshots.

  5. 5:45 PMPlaytest fixes

    An eye-level camera with a first-person toggle, distance blur, a cozier UI, and characters no longer glowing in the sun.

  6. 6:25 PMA procedural walk

    The prototype’s procedural walk and run, ported to Unity and tuned to feel relaxed.

  7. 7:53 PMA multi-room home

    Living room, kitchen, bedrooms and bath in one scene, each with its own doors, camera and activities.

  8. 10:49 PMA lived-in house

    Clutter, high-poly cloth, and the real street placed outside every window through a street-to-house coordinate transform.

The first street: gray boxes, with the character and the HUD
11:00 AM. The first street, in gray boxes.
The shopping arcade seen in first person
5:45 PM. The arcade in first person.
The balcony view with a flat painted backdropBefore
The balcony view, before.
The balcony view of the real shopping arcade with lanterns and a covered roofAfter
After: the real arcade, placed through a coordinate transform.
Top-down view of the multi-room home
The home from above: every room fits inside the buildings you see from the street.
The view from the bedroom window over the back lane
Out of the bedroom window: the back lane, wires and skyline.
The character walking in the locomotion test scene
The procedural walk, in its test scene.
04 · Performance

Measure first, then build more.

I want high-poly props, lots of clutter and a full cast, all on a MacBook Air. So before building the next district, I measured every location against a starting budget.

Family homeOver budget
309,500 triangles · budget 120,000 · Two thirds of it is the view out of the windows.
Shopping arcadeWithin budget
193,000 triangles · budget 250,000
Convenience storeWithin budget
52,900 triangles · budget 120,000
Measured in the Unity editor. The dark marker is the budget.
  1. 01Stand-ins for distant viewsLow-detail models out of the windows: the home goes from about 310k to about 130k triangles.
  2. 02Bake the detailModel high, bake into textures on a lighter mesh, and keep true high-poly for close-up hero props.
  3. 03Detail that drops with distanceLODs on buildings and clutter.
  4. 04Texture disciplineCompression, size caps, and streaming only the resolution the camera needs.
  5. 05Chunked districtsBig districts load and unload in blocks as you walk, and free their memory when you leave.
  6. 06A cap on active charactersAnimation and hair physics pause off-screen, and distant characters use simpler meshes.
05 · What was hard

What I ran into.

The screen went black, twice.

A screenshot tool left one UI setting switched on, and it painted over the whole game. It’s fixed at the source, the game resets the setting on every start, and a test guards the asset.

One doorway fix broke another.

Auto-collision sealed the doorway, then the sliding door moved into the wall, then into the middle of the bedroom. Now, after every change, a check walks from where you arrive in each room to every door in it.

Characters glowed in the sun.

The anime shader multiplied the sun’s full intensity, and the hair had a little emission built in. Shading is now balanced against the scene’s exposure, with the emission off.

Flicker everywhere.

Two surfaces in exactly the same place fight over which one is drawn. An import-time pass finds coplanar faces on every model and recesses one of them by about a millimeter.

The editor stopped listening.

Three times, the connection that drives Unity froze until a restart. The cause was starting tests while the game was in play mode, so tests now only run from an idle editor.

Running out of memory.

One art round pushed a 16 GB laptop to 15 GB, with the whole house and 125 street models open in Blender beside Unity. The pipeline now works one asset at a time, in small rounds, with light previews.

06 · Looking back
What I learnedCheck it in the running game.

Most of day one’s bugs only showed up in play: a doorway that looked open but wasn’t, a door prompt reaching into the next room. Walking every route after every change, and measuring scenes before adding more, mattered more than any single feature.

What’s nextThe next district, on a budget.

Stand-ins for distant views, LODs and texture settings first, then the next district of streets and interiors, built on the same shop-house floor plan and the new performance budgets.

Next projectSalon scheduler