asfarlab.fun On the plate

Forgotten Horizon

Journey to complete my first game for release.

Developer's diary · 270 commits, 5 September to 22 September 2026

In the evening I finished playing Act 10 and found no gameplay fault in it. But Gu offered me copies of the photographs in talk and nothing arrived in my belongings, so the copies are a carried item now, and I use them on Zhao's comparison table before the cloths come out. Then I answered the Act 11 assessment, and it needs nothing new from the engine, because the outing's objectives and the shadow show both fit contracts that already exist.

Later on I let a walkthrough end at an optional chapter's fixture, so a breathing-room act can be proved without being on the spine, and the optional puzzle proofs replay before they search. One run of the fast gate found two things. The seven photograph files had no owner in the registry. And my new test assumed a fresh search would reproduce a committed path, although a search may find another route that is just as valid, so now it checks that the recorded path still replays.

The reed landing by the river: a painted scenery cloth hangs drying on a line between two posts on a stone terrace, with a worktable, baskets and a bamboo rack beside it and the water behind.

Late at night Act 11 went in, A Little Light by the River. Two new spaces hang off the county routes, the reed landing and the drying terrace, and Gao Rui waits at the terrace with a rehearsal to prepare. There is a snagged scenery roll to bring down with a shaft and a fork, a screen with forty ways to hang it and only some of them right, and a shadow passage where the boat's sweep under the bridge depends on the real geometry of the light. Two new cues and a short shadow film went in with it, and Gu's mirror inspection stays apart from all of it.

Act 10 is still waiting for my playtest, but I did not want the evening to go idle, so I planned Act 11 as a breathing-room act, A Little Light by the River. It adds two outdoor spaces along the county river, a snagged scenery roll to retrieve, a screen that hangs badly, and a paper boat's shadow to send under a bridge by moving the light. The mirror's promised inspection with Gu stays separate from all that, and it proves nothing about the killer, because I think a filler act should give the player good problems and leave the case alone.

In the morning I finished playing Act 8 and accepted it, with a note that the screenplay still needs work, then the lane got its steps beyond the square and a low fence, and the crash when the cart finished was gone. I made the per-act walkthrough the standard check and kept the campaign run for the gate before release, because I think a check should cost what changed. Then I planned and built Act 9, The Space to Work, Liu's corrected route through the rinse court and Lan's cutting table, played it, fixed the counterfoil questions, the gateway and Liu's spinning walk, and accepted it before noon.

A frame from the Act 10 arrival film: Ding's foot in a worn canvas shoe steps down from the doorway of a rusted minibus onto a county street in low sun.

In the afternoon I sat with a number. I had planned this game as twelve or thirteen acts and about twenty hours, but nine acts played through in under ninety minutes, and ten would not reach two. So the Zhou family story becomes the practice case: Ding, Gu and the rest learn their craft on it, and I finish it with a supported ending. The real Forgotten Horizon case, the long one, I will write myself afterwards, because I think the main mystery has to come from me. Then I planned Act 10, Beyond the Market Road, a county excursion by minibus, with a travel film for the ride.

The county market street in the game: Ding stands beside the old minibus at its stop, and the earth road runs on past the edge of the scene.

In the evening the notebook got a Notes page that opens on this case and folds earlier chapters behind one line each. Then Act 10 went in: the county street and its minibus stop, the canal bank, the repair yard, a cloth inquiry and the water and mirror puzzles. The bus road that ended at the map edge now runs on out of the picture. Late at night the review cleared the drop for play, the story graph now replays the paths it has proved before it searches, so the checks halved, and I cut a gameplay reel of all ten acts with its own score.

Ning in a red qipao, seen close from the shoulders up, looking away across misty paddies at dusk with the sun low over the hills.

In the morning I made a second song for Ning, A Horizon of Your Own. The first one spoke to her father, so this one speaks to her sister, about the room kept for the daughter who left and the future put off for the one who stayed. I cut a lyric film for it from a close portrait and the kept room. Then I asked for an analogue finish, so it got washed colour, lifted shadows, a soft blur and warm halation, but no scanlines, and the lettering stays crisp because the grade goes on before the words. The main work resumes tonight, after I finish playtesting Act 8.

Late at night I went back to Act 8's family questions, because Ding asked the sisters about each other as if she did not know how they were related, although she had stood in the workroom when Wen apologised. Now she uses the family words, and the apology she saw is the ground under what she asks, so the questions about the past grow out of what she has actually heard in the present.

No update on the game today, because I spent the day learning something new: Jev, the model from TypeSafe AI. It turns plain language and the state of an app into typed judgments that code can combine. I will continue the game on Saturday.

In the evening I played into Act 8, and Lan's 1993 subject surprised me on arrival, and Ning's three topics were labelled with "you", "there" and "that meeting". So I went back through the chain. The saved Act 6 answer, that she met Wen once in 1993 at her workplace, does support the questions, but the labels and the spoken openings did not say so. Now the menu and the speech name Wen and the visit, the greetings work in either visit order, and the cart result points to a real follow-up, because I think a question should say what it is about, although the save already knows.

A promotional poster: Ning stands alone in a red qipao on the earthen edge of a rice field at dusk, mist over the hills behind her, with the game's title lettered at the bottom.

Later on I made a promo poster of Ning, standing at the edge of a rice field in 1993 in a red qipao, from the portrait as her identity. Then I wrote her a song, A Lamplight Away, in which she speaks to her father in that year, and had Lyria sing it as Mandarin pop-jazz with piano, upright bass and brushed drums. Then I cut a lyric film with the Chinese and the English burned in over a slow push across the field. It is a first cut for listening, because the transcription is still unsure of some syllables in the verses, so I have not called it done.

In the evening I went through the review of last night's work. It had three findings and all three were right. The recipe audit shared its visited states across groups, so a second group was skipped. The branch audit reached a member and then walked the spine greedily from the start, so a short route that spent a key condemned a branch a longer route could prove. A per-act walkthrough swept every act after its start. So I repaired them with the reviewer's counterexamples as tests, and answered the two Act 8 requests, the cart turn and the films, with a design and a cost each, but started neither.

The game's new icon: a weathered wooden window with a tiled hood and one shutter open, framing a sunset over hills and the roofs of a village.

Later on the content side came back with one more gap in the branch audit, because its fast entry still chose one route to the member. So when the fast way fails it now proves the branch whole: any route to the member, the member taken, every spine mark earned, the siblings still excluded. An exhausted budget now reads as unproven, in those words, because I think a check that runs out of budget should say so.

A walled delivery court seen from above: a loaded handcart with crates stands on the flagstones between a small side gate and the wide street gate, with a workbench under an awning along the far wall.

Late at night I authorized Act 8 and built it. The films came first, two chapter films that only present and hand back to a saved choice, then the cart: a loaded handcart that turns at stations and can be rolled back, with the actors settling around it. Then the environments, the cast and the historical media went in, and The Visit is ready for my own playtest. The engine look at the drop was green, with a few follow-ups noted. The rest of the week will be busy, so I am not sure I can keep the game moving at the usual pace until the nineteenth.

Du's packing yard: Ding stands beside the low sorting table where the recovered reuse tray of mixed paper now sits, with the hover label naming it.

In the evening I played Act 7 for the first time. Hu's rear exit worked with E but I could not hover it, so it has a direction board now. The racks in Du's shed did not respond, because their handles hid behind an unexplained permission, so the whole rack is selectable now. Then the tray: using it did nothing, although the save had given the reward, so the scene had not told me. The tray had never been built, so I made it, and taking it moves it to the sorting table. I think what the save knows has to be visible in the room.

Later on I went outside to the trial at the frontage. I could install the frame with E but not find it with the mouse, because the target had no visible prop and stacked chairs blocked both standing marks. So a small measuring diagram sits where the frame goes, and the chairs moved out of the lane. Then both targets worked but I could barely see the marks against the paving, so they became wide pale chalk brackets with dark edging. After that I played it through once more and it was right, so Act 7 is delivered, and I pushed the source to the remote.

Late at night I reviewed the engine side and found the fast gate red, because the spine check ignored plain item needs and an old save ran into the state cap. The review had taken most of an hour, in checks that grew with the campaign, and I want each check to cost what changed. So the graph remembers the paths it has proved, long proofs go one mark at a time, impossible targets are refused early, and each act gets its own walkthrough. Then I planned Act 8, The Visit, around a handcart that cannot turn in a delivery court, and two films with a younger Wen and Ning.

Inside the workshop, Ding and Wen push a cabinet on its dolly toward the doorway, where a wooden loading board bridges the sill under the timber frame, while Liu waits by the wall.

After midnight I fixed the workshop. Wen went quiet after the cabinet came out while Ning was somewhere else, so now he thanks Ding and asks her back inside, where Ning actually is. The loading board makes a small bridge over the sill so the dolly rolls over it, and Liu moved off the threshold, because his body was blocking the click on the door and the walk to Peng. Then I went over the flow of Acts 5 and 6 for the morning, so Liu remembers his own correction on a second visit and the guidance follows what has actually happened, and went to bed very late.

In the morning I played on to the end of Act 6, so the playtest of all six acts is done, although to my surprise it took me only about an hour to finish everything. On the way I found the household music stayed silent after Continue, the dusk alarm needed Peng's actual shout at the doorway, the town felt empty between conversations, and I wanted the act number under the location title so I knew where I was. So I fixed the music, gave Peng a voiced card, made the residents look up and work more often with real step turns, and put the chapter under the title.

In the afternoon I changed how I check things, because the checking had started to outweigh the making, so for a small change to how something looks or moves I now look at it myself in Play Latest first. In the evening I gave Ding a rest on her bed, but two lie-down versions felt floaty, so it ended as a plain seat at the edge, and I made a game icon, a weathered window with the horizon in it. Then Act 7 went in as The Unsent Page, the prototype came out, and the town's three departures got their own landmarks, because I kept mixing them up.

A corner of the town square: the wooden 周家巷 sign on the grocer's wall, a lane of small worn stones leading up beside it, and two people at a stall in front of the noodle shop.

In the evening I played the first two acts myself, and I could not find the way to the Zhou house without hovering, because the broad north paving pulled my eye toward the collection exit. So I gave the lane smaller worn flagstones, a brick seam, a wider mouth beside the grocer and an old wooden sign over it, because I want the scene itself to say where the lane is, although a marker would have been quicker. The probe turned up a separate fault at the county exit, where the click rays go through the noodle shop, so I wrote that down for the engine.

Later on I fixed bedtime, because turning in for the night with Dad left Ding in the courtyard while the card said she was inside. A confirmed choice can now travel through an existing door and save the arrival before the card, because I think a milestone saved in the yard would come apart the first time someone quits there. Then I went back to the supper talk, because I could not remember Ning ever saying she did not want Dad to collect her. Now Dad says Lan sent him a note, Ding asks whether Lan wanted him to go, and he says no, so the question is earned.

Late at night I kept playing and three more things came up. The school-day actions sat on an empty patch of floor, so now they hang on the real books on the desk. Think described Liu's cabinet problem while Ding was still at home, so the hints now follow what she has heard, because I think a hint that knows more than she does spoils the puzzle. The workshop's courtyard turn shared its click target with the way back inside, so it points at the door's upper timber now. Playing it myself finds what the checks cannot, because a check only looks for what I told it to look for.

00:00 06:00 12:00 18:00 24:00 Tue 22 Sep 19:55 · Answer the Act 11 assessment and record the Act 10 post-playtest look · 4 files 20:14 · Review Act 11 engine reply and identify optional endpoint guard · 1 files 20:57 · Allow fixture-backed optional chapter walkthrough endpoints · 5 files 21:50 · Replay optional puzzle proofs and recover missing walkthrough inputs · 4 files 19:34 · Make Act 10 photograph copies a carried item used at the comparison table · 122 files Photographs carried 22:07 · Build Act 11 riverside rehearsal and supervised mirror inspection · 997 files Act 11 built Mon 21 Sep 22:24 · Plan Act 11 riverside puzzles and independent mirror follow-up · 13 files Act 11 planned Sun 20 Sep 09:32 · Make receiving-court entrance lead out of town corner · 13 files 09:46 · Defer physical completion beyond animator signal lifetime · 4 files 09:53 · Remove outdated title-screen audio notices · 4 files 10:18 · Record Act 8 human acceptance and screenplay follow-up · 4 files 10:41 · Extend Zhou lane beyond town and add a low dividing fence · 10 files 11:22 · Review the accepted Act 8 source and repair the tooling it exposed · 8 files 11:40 · Make per-act bounded walkthroughs the standard and reserve the campaign run · 5 files 11:58 · Reuse reachability witnesses in the story-graph audits · 4 files 12:35 · Plan Act 9 around the promised route walk and Lan's workroom · 17 files 13:44 · fix(validation): scope participant clips to performance regions · 3 files 13:44 · fix(verification): bound unreachable optional-room return proofs · 3 files 13:45 · fix(walkthrough): visit physical puzzle handles before planning moves · 2 files 13:45 · fix(authoring): preserve later chapters when rebuilding Act 8 · 2 files 14:07 · Review the Act 9 drop before and during the playtest · 2 files 14:28 · fix(story): ground counterfoil questions and retire completed inquiry · 54 files 15:00 · fix(scene): give the rinse court a dedicated rear gateway · 15 files 15:25 · fix(animation): prevent Liu route turns from corrupting his gait · 8 files 15:45 · Admit portal visual_pos and prove recipe-audit boundaries once · 5 files 16:28 · docs: accept Act 9 and propose Act 10 for discussion · 15 files 17:18 · Answer the Act 10 engine request without building it · 2 files 17:35 · Build E10-1: a claimed journey may carry the film that replaces its arrival card · 10 files 17:53 · Open the Notes page on this case and collapse earlier chapters · 8 files 18:05 · Settle finished notes behind one line and add a notes search · 8 files 18:16 · fix(notes): retain inherited evidence until descendant topics finish · 4 files 18:44 · feat(act10): prepare county references, Zhao and original performances · 676 files 19:45 · fix(notes): handle inspect-only objects without a choice array · 3 files 20:25 · Fix film alignment, ambience ownership and scoped chapter verification · 14 files 21:21 · Review the Act 10 drop before the playtest · 2 files 21:27 · Prune retired Act 6–10 translation keys from owning generators · 13 files 22:06 · Replay proven paths before searching: named graph proofs and committed checkpoint paths · 8 files 22:06 · Remove a leftover editing marker from the verification model · 1 files 22:54 · Add Acts 1-10 gameplay promo reel and original Lyria score · 29 files 13:54 · feat(act9): stage the route inquiry and Lan's working-space chapter · 1013 files Act 9 built 17:13 · docs: plan Act 10 county excursion and user-authored main story boundary · 17 files Practice case 20:40 · Build Act 10 county journey, cloth inquiry and practical puzzles · 599 files Act 10 built Sat 19 Sep 09:05 · Add scanline-free analogue finish to Ning promo film · 9 files 08:48 · Add second Ning promo song and cinematic lyric film · 51 files Second song 22:03 · Ground Act 8 family questions in Ding's witnessed apology · 91 files Family questions Thu 17 Sep Wed 16 Sep 18:58 · Ground Act 8 conversations in remembered subjects and earned visits · 112 files Links grounded 19:33 · Add Ning promo poster and bilingual Lyria lyric film · 48 files Ning's song Tue 15 Sep 17:45 · Refine Act 8 engine scope and record remaining branch-entry review · 7 files 20:12 · Record Act 8 construction authorization and source handoff scope · 2 files 20:23 · Add presentation-only chapter films with safe saved-choice handoff · 17 files 21:36 · Add reversible cart rotation and safe actor settling · 21 files 21:37 · Support guarded destination menus and preserve their checkpoint routes · 14 files 21:42 · Create Act 8 environments, cast, cart performances and historical media · 954 files 21:55 · Guide checkpoint proofs toward required puzzle observations · 3 files 22:11 · Keep destination menus in required and return route proofs · 3 files 22:29 · Review the Act 8 drop before the connected playtest · 2 files 17:36 · Repair the three review findings on 1484027 and answer the Act 8 engine requests · 10 files Findings repaired 17:53 · Prove an exclusive branch whole before condemning it · 4 files Branch proved whole 22:12 · Deliver Act 8 The Visit for connected human playtest · 302 files Act 8 built Mon 14 Sep 19:17 · Show the recovered paper tray and make its surfaces clickable · 39 files 19:53 · Make Du's folding frame visible and selectable on the workbench · 21 files 20:28 · Give the outside trial visible mouse targets and clear standing marks · 35 files 20:43 · Make the trial standing marks clearer against the paving · 8 files 23:06 · Review Act 7 and make verification scale with the number of acts · 17 files 18:57 · Make Du's passage and rack surfaces accessible by mouse · 18 files Racks by mouse 20:49 · Record human acceptance of Act 7 and source checkpoint · 7 files Act 7 accepted 23:37 · Plan Act 8 investigations and cinematics with bounded engine requests · 13 files Act 8 planned Sun 13 Sep 01:07 · Repair Act 5 knowledge flow and Act 6 state-aware guidance · 197 files 07:02 · Review the playtest repair batch: accept claimed choice travel, move the county stop clear of the noodle shop, align the Gu opening check with the Act 5 change · 6 files 09:05 · Fix selected gameplay music staying silent after Continue · 4 files 09:20 · Give town residents more frequent attention and work cycles · 39 files 09:22 · Record scoped alarm audio and town motion review · 4 files 10:24 · Align county arrival fixture with moved town exit · 1 files 10:24 · Keep shared conversations focused on their live speakers · 8 files 10:25 · Clarify shared dialogue addressees and the P-17 comparison · 18 files 11:43 · Show the current chapter beneath cinematic location titles · 5 files 11:52 · Give town residents visible step turns with safe conversation contact · 98 files 11:57 · Allow early human previews for small refinements · 6 files 15:54 · Animate a shallow flowing pour through the water-path board · 4 files 16:35 · Review the 13 September refinement batch: adopt the human-preview rule, accept six delegated engine changes, one integration run on the final tree · 2 files 16:51 · Ease static residents back to their authored work orientation after a conversation · 5 files 17:22 · Add Ding Ding's cosmetic bedside rest performance without changing accepted gait · 5 files 17:22 · Play cosmetic bed rest through the shared response lifecycle with safe Continue · 5 files 17:22 · Give Forgotten Horizon a Sunburst window and horizon game icon · 11 files 17:22 · Record human playtime and the bed and icon preview handoff · 5 files 17:34 · Ground the bed transition with planted steps and supported leg swings · 6 files 17:42 · Simplify cosmetic bed rest to an upright seated pause · 8 files 18:06 · Correct seated elbow motion and record human acceptance · 7 files 19:20 · Add reversible station translation with safe rack approaches · 17 files 19:25 · Stabilize authored decimal navigation boundaries · 3 files 19:36 · Keep synthetic story fixtures independent of chapter workspaces · 6 files 19:39 · Register Act 7 catalogue and preserve reused performance ownership · 3 files 19:48 · Reject provably unavailable episode targets before story search · 3 files 20:00 · Guide bounded puzzle witnesses through guarded configurations · 5 files 20:07 · Earn setup before ranking a target puzzle pose · 3 files 20:26 · Retire standalone Act 7 prototype and launcher · 180 files 21:00 · Give town departures distinct gateways and a minibus stop · 15 files 00:26 · Fix workshop family handoff, sill bridge and Peng access · 242 files Workshop repairs 09:19 · Ground the dusk alarm in Peng's voiced shout · 82 files Peng's shout 20:12 · Build Act 7 paper and sightline investigation for human playtest · 1360 files Act 7 built Sat 12 Sep 22:11 · Support guarded choice travel with saved arrival and owned facing · 13 files 22:44 · Test preservation of selected Act 3 performances during regeneration · 2 files 23:13 · Anchor school-day transitions to the visible bedroom books · 20 files 23:38 · Gate Think and objectives on Ding's earned conversation knowledge · 44 files 23:52 · Separate workshop courtyard trial hotspot from the return exit · 5 files 21:15 · Make the Zhou household lane visible from the town square · 12 files Lane made visible 22:11 · Bring Ding inside after saying goodnight to Dad · 100 files Bedtime inside 22:45 · Ground Dad's pickup question in Lan's message and record the exchange · 114 files Question earned

One row per day, newest at the top, left to right through the day. Larger dots changed more files. The peach dots are the steps I would point at.