Characters finally cast shadows + a fully standalone editor
This was a day of enormous output. The hero finally casts a real shadow underfoot — behind it a whole day of grinding; the editor was rewritten into a self-contained shell that runs fully standalone; the whole codebase gained an automated quality gate for the first time; and the engine formally ingested professional modeling formats, made animations blend smoothly, and landed a complete 2D tile-map system.
A high-volume day: filling details and setting rules
This day's output was large, spanning "filling details" and "setting rules." The detail-filling side was the work that directly shapes a product's look and feel: making a character cast a real ground shadow, making animations blend smoothly, making the engine ingest models from professional tools, and completing the whole 2D tile-map category. The rule-setting side was infrastructure, unseen yet far-reaching: rewriting the editor into a fully standalone module, fitting the whole codebase with its first automated quality gate, and hardening cross-platform deployment. The former makes "what's built now" better; the latter makes "the process of building later" steadier. For a project to go far, both hands must be strong: continually polishing the visible experience while quietly setting, one by one, the rules that guarantee long-term health. This day was a textbook case of both advancing together.
The character finally casts a shadow: a whole day of grinding
The dark-fantasy ARPG sample from the day before had an at-a-glance flaw: the witch hero cast no shadow underfoot, the whole figure like a texture floating in midair, with no sense of "standing on the ground." This day grinded against that shadow for a whole day, a winding process: first trying to write a dedicated shadow-casting shader for the rigged character, then using an invisible proxy geometry to cast the shadow in its place, then falling back to an oval "fake shadow" pinned under the feet as a backstop; while repeatedly tuning the parameters shadow casting needs — adding a casting pass to scene materials, tilting the directional light to lengthen shadows, adjusting cascaded-shadow precision, lowering sky-light intensity so the directional light's contrast shows, tuning the moonlight's intensity and angle. After all that trial, the real crux was finally pinned down: the shadow's cascade count had to change from 4 to 1 to cast reliably — which actually surfaced a deeper engine bug (the 4-cascade directional-shadow path misbehaves in play mode), organized into a detailed report for the engine team. Night atmosphere was tuned to match: dim moonlight plus a few torches around the camp, evoking the dark-fantasy mood of "clearing monsters around a fire at night." A whole day's persistence bought a seemingly tiny yet crucial effect: the character finally "landed."
The editor runs fully standalone
The editor's standalone entry was rewritten this day into a truly self-contained shell. It had been working toward "standalone" for a while, but that standalone entry was still entangled with the main chat interface — it had to run inside the main interface, not truly independent. This day it was fully separated and rewritten: it brings its own dockable multi-panel layout, renders and organizes all nine panels the editor needs itself, depending not at all on the main interface's setup. A one-click bootstrap script was added that, on a fresh machine, automatically prepares the various build artifacts needed to run — including the binary pieces low-level rendering needs — so it's ready to edit out of the box. The significance is turning the editor from "an embedded part of the main Studio" fully into "a complete application you can open and use on its own." It's both a thorough fulfillment of modular design and a paving of the way to later embed the editor in other products or distribute it as a standalone tool.
The whole codebase gets its first CI gate
This day fitted the whole codebase with its first automated quality gate. A CI (continuous integration) gate means that whenever someone submits a change, the system automatically runs a check — this initial check has three parts: type checking (confirming the interfaces between code parts line up), build (confirming the code actually compiles), and smoke testing (a run confirming basic functionality didn't break). Only if all three pass is the change allowed into the mainline. The gate, once up, immediately surfaced over twenty type inconsistencies that had been "quietly drifting" in a few sub-projects — they didn't error in normal use but had already planted hazards; they were cleaned up in batches that same day. The far-reaching significance: from this day, no new change can quietly carry such problems into the mainline — the machine automatically stops them at the door. For a codebase changed at high frequency in parallel by many AI agents, this automated "gatekeeper" is especially crucial: a person can't watch every change, but a gate can, and it never tires and never plays favorites. Handing the floor of quality to automation to guard is exactly the mark of a project moving from "fast growth" to "sustainable growth."
Professional model formats + smooth animation blending
The engine added two solid capabilities on characters and assets this day. One: it formally ingests the model formats that professional modeling tools output directly. This format fully carries animation, skeleton and even physics parameters, whereas using it before required converting to another web-common format first, inevitably losing detail; now the engine reads it directly, so assets flowing from professional tools come into the game faithfully. Two: it makes character actions cross-fade smoothly: where switching from "walk" to "run" or "idle" to "attack" used to be a hard instant cut that looked jumpy, now several clips can blend proportionally and transition smoothly, making a character's motion far more coherent and natural — crucial to the feel of action games. An immediate debug-draw tool was also added, drawing helper lines and bounding boxes right on the picture, what-you-see-is-what-you-get for diagnosis, far more intuitive than guessing from numbers. Together these complete another stretch of the toolchain for "making a character that moves, and moves naturally."
A complete 2D tile-map system lands in the engine
The engine also systematically completed and landed the whole 2D tile-map category this day. Tile maps are the most classic way to build 2D games — paving the world into a grid of square cells, each holding a small picture, assembled into a whole level. What landed this day isn't just "can display" but a complete set of mechanisms: tileset assets, tile layers, efficient chunk-based extraction and rendering, horizontal/vertical flipping and anchor handling for tiles, correct sprite culling and sorting, and a string of strict data validations that fail fast on error. It came with runnable demos and automated tests backing it the whole way. This pushes the platform's 2D capability from the preliminary basics of recent days to the level of "you can seriously make a 2D game." The first game in many creators' minds is precisely a 2D one — a side-scroller, a top-down view, a pixel-art world; paving the 2D road solidly throws open a door to that large body of creators. With both 3D and 2D legs strong, the range of game types the platform can carry is wide enough.
What this day means
This day, with enormous output, answered both "is it well-made" and "is the path steady." The process of grinding a whole day over one shadow best represents this team's attitude: a character without a shadow may seem an inconsequential flaw to many, but it directly decides whether the image is believable — and fully solving it required not fudging past it but trying layer by layer, ruling out layer by layer, until finding the true crux hidden deep in the engine, and honestly recording it. Meanwhile, the editor's full independence, the establishment of the first CI gate, and the hardening of cross-platform deployment provide sustainable soil for this kind of diligence — when the floor of quality is guarded by automation and modules can evolve independently, the team is freed to polish every shadow. Doing the immediate experience to the utmost while setting the long-term foundation firm — this day achieved both.