Dora SSR's First 3D DuckAugust 16, 2026 · 12 min readLi JinDora SSR developerDora did not avoid 3D simply because a few APIs were missing To explain why Dora SSR did not support 3D in the past, the answer cannot be found in technical implementation alone. It was not because we had never considered it, nor merely because model, camera, and lighting APIs are difficult to implement. What truly made me hesitate was that 3D has never been only a feature problem.
The Last Mile on A10miniAugust 16, 2026 · 7 min readLi JinDora SSR developerFor several days, my good buddy and I tinkered with an A10mini together. The handheld stayed in my hands. I pressed the buttons, watched the screen, and told him what had just happened. He helped analyze the cause, searched for information, and prepared another version for me to test. After several rounds of ordinary pair debugging, Dora finally appeared in the A10mini's Ports menu one day. I selected it and pressed A. The menu disappeared, and the engine started.
Letting an Agent Compose Game MusicAugust 16, 2026 · 15 min readLi JinDora SSR developer From a community member's pure-Lua pull request to the first Jazz Hiphop track from Dora Agent that genuinely matched my taste. When making games in the past, I often found searching for sound effects frustrating. For a work with high musical ambitions, the answer is actually clear: find a professional musician whose style you love and who truly understands the work. Music is not something used to fill a blank in a game; it is part of the work's expression. The awkward cases are small games, experimental prototypes, and ideas that appear suddenly.
Talk Through Requirements with the Agent FirstAugust 16, 2026 · 10 min readLi JinDora SSR developer An Agent can help press the accelerator, but humans still need to hold the steering wheel for requirements, architecture, and technology choices. I am still discussing the requirement, and it already wants to edit files Before asking an Agent to perform a long task, I have a habit: I do not let it code immediately. I ask it to act as a product manager for a while. I begin with an idea that may still be vague. Together, we split requirements, add boundaries, and compare implementations. What is essential and what merely sounds attractive? Which route is convenient now and which will remain maintainable? What observable result will prove completion?
When Agents Test Other AgentsAugust 16, 2026 · 12 min readLi JinDora SSR developerI recently ran an experiment that sounds unnecessarily circular. Codex acted as a user: it proposed games, sent multi-turn requests, inspected the results, and asked for changes. Dora Agent acted as the developer. Across dozens of games, the work became more than a gallery. Codex summarized repeated failures and used them to improve Dora Agent itself. The games changed, and so did the software making them.
Why Open-Source Software Fails to Reach UsersAugust 16, 2026 · 7 min readLi JinDora SSR developerI once had a wonderfully simple picture of open source: put the code on GitHub, choose a license, and the software has reached the public. Maintaining Dora SSR taught me otherwise. Publishing source code is closer to hanging a recipe on the door and announcing that dinner has been delivered.
Why Agents Need a CLIAugust 16, 2026 · 6 min readLi JinDora SSR developerI wanted external Agents such as Codex and OpenCode to continue developing a Dora game while I stepped away from the computer. They could read and edit code. Then the workflow stopped at the browser door. A person still had to open the Web IDE, click Run, copy the output, and explain what happened. An Agent that can write code but cannot start the project or read the result has not really taken over a development task.
DoraX: Writing Game UI in TSXAugust 16, 2026 · 6 min readLi JinDora SSR developerIn the ancient age of UI development, general-purpose code created controls one by one, assigned properties, attached children, and connected events. The industry gradually extracted interface structure into XML-shaped domain languages. Data synchronization moved through MVC and MVVM. Later, JSX and React made a different compromise mainstream: keep a declarative tree, but place it back inside a programming language with components and data-driven rendering. Dora carries a small record of the same cultural journey.
TypeScript as Dora's SignpostAugust 16, 2026 · 6 min readLi JinDora SSR developerProgramming used to give me the pleasure of building with blocks. Different languages had different rhythms, shortcuts, and communities. Dora still keeps many of those doors open: Lua, YueScript, Teal, TypeScript, Rust, and Wa all serve different kinds of creators and extensions. Then code gained a new reader. Agents do not experience syntax culture exactly as people do. That changed the role of the language placed at the entrance.
Game Text at Any ScaleAugust 16, 2026 · 6 min readLi JinDora SSR developerText in a document usually stays at the size it was designed for. Text in a game refuses to behave. A title scales into the scene, a button bounces, damage numbers grow above a character, and an entire UI may be transformed with its parent node. The real problem is not merely “small Chinese text.” It is preserving vector-like quality across arbitrary font sizes and scene scaling.