A friend came by last Thursday and handed me a mug she had brought from Bulgaria. On the mug was a Kama Sutra position so acrobatic that gravity itself seemed ready to file a complaint. "So that there would be love," she said. It felt strangely appropriate: the thing on my desk that week was a half-asleep HTML5 game engine, and it was going to need exactly that kind of stubborn love to wake up.
I already own a hackathon mug. It says: "I participated in the world's largest hackathon and all I got was this mug." And what is written there is the honest truth.
That mug is my main one now. Every day I brew Assam in it, plus a soluble chicory-and-barley drink, and I sit with it through work and through my own projects. The project I received it for last summer no longer exists. I chose not to develop it, for reasons that deserve their own separate silence. But the mug stayed — as a reminder of what I was able to build once, and as a quiet, stubborn motivation to do it again.
The new mug won for pure practicality. Six hundred milliliters. When you spend your days holding other people's infrastructure together and your evenings turning a vision into prompts, you are always drinking something, and 600 ml is the right amount of continuity.
Projects die. Mugs survive. Objects outlive the work that made them. I keep thinking about that while I build a game about keeping records after everything else has burned.
By the morning of August 16th, the plan had quietly eaten steps 49 through 86. Let me explain.
The Audio Phase: ElevenLabs Sound Effects
The second devlog ended on a promise: the audio phase, then the engine. The audio came together first. I wrote the key voiceover lines and generated the voice — and then, without planning to, made a discovery: ElevenLabs also generates sound effects astonishingly well. The ambient layers and the small diegetic motifs of the game were born there too. I did not expect a voice tool to hand me wind, hum, and a door that creaks without moving. I normalized everything on my Xiaomi, committed, and backed the folder up before I allowed myself to feel satisfaction.
Vibe Coding Tools 2026: OpenCode vs Antigravity CLI
The engine needed a different kind of help. Until recently I vibe coded with Antigravity CLI, and it was extremely convenient — exactly as long as my paid Google subscription lasted. The moment the subscription ended, the limits became laughable. Less than thirty minutes of vibe coding, and the tank was empty. So I switched to OpenCode. Even unpaid, its limits are enough to actually work, and OpenCode vibe coding quickly became my default rhythm: open the terminal, describe the intent, review the diff, commit. On Saturday I opened it, and something clicked.
If you are compiling your own shortlist of the best vibe coding tools 2026, here is my field data from one weekend: Antigravity CLI is brilliant while the quota lasts, and OpenCode is the tool that keeps a solo dev walking when the quota dies. The winner of any comparison is not the smartest model — it is the one whose limits let you finish an evening session.
The Engine Wakes Up
What followed is hard to describe as a sequence, because it stopped being one. The plan's steps blurred into a single long evening and then another. A state manager that reads the frozen JSON and loads its initial truths from it. A persistence layer — autosave after every meaningful event, because a mobile game that loses your guilt when the OS kills the process is not a game, it's a scam. A renderer for the day screen. A pipeline that resolves choices and their delayed consequences. A parser that reads condition strings and picks an ending from the data. Transitions between narrative layers. A UI that slowly decays after the finale, the way the design document always promised it should.
Then the wiring: backgrounds, portraits, audio — everything the art pipeline had produced, connected to the machine. Every subsystem arrived with a checklist and at least one test scenario, because on a weak PC with a weak margin for error, "it seems to work" is not a status. Commits landed before 23:00. The 23:00 rule from the first devlog is still alive; some rules survive precisely because they are boring.
Thirty-eight game development milestones closed in one weekend. Three of them had to be closed twice. That ratio is the honest metric of solo development.
The Black Screen
Because here is what happened the first time I wired the art: the game launched and showed me a header, two buttons, and a black void where the narrative was supposed to be.
Diagnosis first, guess-fix never. The render pipeline was interrupting itself the moment an asset manifest request failed. And the manifest was a lie I had written: it expected file names I had invented, while the disk held file names the generator had invented. Two fictions that had never met.
The fix became a contract. The narrative renders even if every optional subsystem dies. Every fetch gets a catch. And the manifest is no longer written by hand — it is regenerated from the disk, because the disk is the only source of truth; anything the script can't recognize goes to a quarantine list, never into the game by guesswork. When I reloaded and heard the knock — cautious, irregular, exactly as designed — I sat still for a while. The JSON was no longer a document. It was a place.
Monday Is Coming
On Monday, rehabilitation begins. Three to four hours a day, including the road. I don't yet know the exact slot, which means the schedule has to absorb an unknown shape — again. My sessions with the psychologist are also coming to an end; one is left, and I caught myself grieving in advance for a structure that taught me to stand without structures.
This is what the war years do to a plan. Not always with sirens. Sometimes just with the slow accumulation of appointments, procedures, endings, and beginnings, while the city stays hot and the air stays loud enough to be a baseline. You don't get heroic days. You get days. The antifragile plan from the first devlog was written for exactly this: the schedule bends, it does not break. Rehabilitation goes into the calendar. The 23:00 rule stays. The mug travels to every desk I sit at.
The Tester Wall: Google Play 20 Testers, Almost Down
Since the second devlog, the tester form has grown to 14 emails. I need 6 more. That's it. That is the whole distance between me and the Google Play production track.
If you are reading this, have an Android device, and two minutes to spare:
👉 https://forms.gle/4hJkWsmuyKp3Tgtr8
Accept the invite later, install the app, keep it for 14 days. No deep QA. Just your presence to satisfy the algorithm.
What Comes Next
The engine breathes. Next is money and time: the RevenueCat SDK and the paywall, the push-notification architecture — the diegetic knocks that arrive hours after a choice — the demo video under two minutes, and a Codemagic build my testers can hold.
NICHLYST is coming. And now it remembers.
Follow this devlog for the #BuildInPublic journey.




Top comments (0)