Build1 distinct publisher3 min readPublished
Following the platform's own mobile guidance put a database write underneath the jump button. The fix was not a better percentage; it was deleting the bottom of the screen.
The Engineer · Build desk

Compiled by The EngineerSomething wrong?How this is made
There is a unit mismatch under this collision. Decentraland's mobile client lays out its joystick and jump button in device pixels, against a safe area that varies by phone, while a scene's UI band is a percentage of a canvas whose pixel size the creator never sees [10]. Two coordinate systems, no conversion factor, and the platform withholds the one input that would produce one: where its own controls sit [1]. That is why the search for a clearing height is not a measurement. It is a guess that one handset happens to ratify [11].
The developer, writing up the Mochi project on dev.to, tried that guess twice, and both attempts read as clear in the desktop preview and still collided on the device [9]. Counting the original layout, that is three percentage-based versions built against a number that cannot exist [2]. The preview is the culprit worth naming: desktop has nothing at the bottom of the screen, so it will approve any bottom band [s1-anchor]. The check a creator runs most often is the one that structurally cannot catch this.
The bill lands somewhere other than the layout. Half the thumb drags meant for walking hit FEED [5], which is annoying and self-evident. The quiet one was jump landing on TEACH, and TEACH appends a move to the creature's dance chain [6]. That chain is append-only at the schema level: `chain_move.teacher_name` is NOT NULL and the server has no delete verb at all [7]. Three consecutive clap moves entered the live chain that nobody chose to teach [8]. Because nothing in the server can remove them, no client-side fix reverses that write [3]. A pixel-geometry problem became a permanent data problem.
The internal control group is right there in the same scene. PET was a hold on the creature's body and STAMP a tap on a totem, so neither ever needed screen furniture, and neither ever broke [16]. FEED and TEACH became buttons precisely because the guidance says to put actions in the bottom thumb arc at large size [2]. The two verbs that followed the documentation are the two that failed. That is a fair summary of what the guidance is worth on mobile when it stops short of coordinates.
The resolution is priced accordingly. FEED moved to a bowl of berries in front of the creature, TEACH to a pale stage beside it, joining the two verbs that were world-space taps from the start [12]. The scene now draws nothing below the top 12% of the screen [13], which means it has conceded 88% of the vertical canvas to a client whose layout it cannot read [1]. That is the going rate for not knowing a number.
A warning without geometry transfers the measurement to the person who has no instrument. For a scene where the only cost is a misplaced tap, that transfer is survivable. For anything that writes an immutable row, the guess is settled in the database, and the schema that makes the project honest is the same schema that makes the misfire permanent [7]. The code is MIT on GitHub, SDK7 and TypeScript against a small authoritative Node server, built for phones from the first commit [15], which is to say the developer did the mobile-first thing and the documentation still could not be followed.
Ranked by verification strength, evidence, and original report placement.
By the time the developer noticed, the live chain carried three consecutive clap moves that nobody chose to teach.
Decentraland's mobile documentation warns that scene UI "will clash with the system controls" but does not state anywhere the developer could find where those controls are located.
Following guidance to put actions in the bottom thumb arc, sized large, with no small targets, the developer placed FEED and TEACH as two buttons in a full-width strip occupying the bottom 14% of the screen.
The Decentraland mobile client draws its own controls over the scene: a movement joystick on the left, a jump button on the right, and emote buttons either side of it.
The developer's 14% bottom strip sat directly on top of the client's joystick, jump and emote controls.
With the strip in place, walking broke because roughly half of the player's thumb drags landed on the FEED button instead of the movement joystick.
Follow any of these and your For You feed starts watching them — no settings page required.
Evidence-backed comparisons of source perspectives and observed adoption signals. Read the methodology
Which Builder, Operator, and Investor concerns the observed source mix emphasized—not a truth score.
Evidence, demonstrated adoption, hype gap, incentives, and confidence are assessed independently, each on its own current evidence. How these are measured.
Detailed first-person account, single unverified source
The mechanical core is unusually well specified for a single article: the offending layout code is reproduced, the replacement world-space entity code is shown, the schema constraint (teacher_name NOT NULL, no delete verb) is named, and the failure was reproduced three times on a physical device. What is missing is independent verification: only one publisher, one author, one phone, no documentation link or platform response, and the pivotal claim that the control coordinates are unpublished is a hedged self-reported absence.
One live hobby scene, no usage figures
There is genuine deployment evidence — a live scene with an authoritative server, real visitor interactions and an MIT repository — but the scale is a single creature scene by a single developer, tested on one phone, with no visitor counts, download figures, contributor or reuse signals. Nothing indicates other creators have adopted the world-space-taps pattern the article recommends.
Slightly overstated framing over solid mechanics
The technical body is if anything understated — a plain postmortem that shows its code and admits two wasted revisions. The framing runs ahead of it: the title's charge that the platform 'withholds the coordinates' generalises one developer's hedged failure to find documentation into deliberate omission, and 'wrote a permanent row every time somebody tried to jump' is illustrated by three rows on one device. The unit-mismatch argument itself is sound and does not depend on the documentation claim.
Self-published project write-up, no commercial ask
The author is writing about his own project on a developer blogging platform, so there is a visibility incentive and an interest in framing a self-inflicted layout mistake as a platform documentation failure. Countervailing factors: the piece is self-critical (two admitted failed revisions, permanent data corruption in his own live scene), the code is MIT-licensed and the diff is net-negative, and there is no product, pricing, token or funding being promoted.
Moderate: mechanics credible, platform charge unverified
Confidence is moderate because the reproducible, code-backed portions of the account are internally consistent and specific, while the cluster has no second publisher, no device matrix and no verification of the central documentation-omission claim. Adoption is confidently small rather than uncertain, which stabilises that dimension.
build
A GitHub graph in 21 requests: what PR metadata already knows about your files1 distinct publisher
build
A GAN beauty filter is a device budget allocation, not a feature toggle1 distinct publisher
build
The 2-4 seconds you pay per file: batch tsc once per agent session, not once per edit1 distinct publisher
build
The third answer: a dead-code tool allowed to say "not traced yet"1 distinct publisher
Distinct publishers with included, body-backed reporting in this cluster.
dev.to
1 article · August 26, 2026