Halloween DealsAmazon USHalloween week deals: useful picks before month-endAmazon US: current deals, useful picks and tech finds.Check DealsWindows FixRecommendedWindows errors stealing your time? Find the fix fastScan stability, cleanup and performance issues.Fix NowHalloween DealsAmazon USOctober picks are moving - compare before checkoutAmazon US: current deals, useful picks and tech finds.See Picks×
FREEDOM251

Freedom251 › Blog › 3D development

I Tried to Prompt a 3D DEV Library Into Existence. Then I Built an In-World Level Editor

By Freedom251 Team · · 5 min read

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Mika Flowers’s Oniria began as an attempt to turn DEV articles into a walkable 3D library. The hardest part was not describing a scene to a coding model; it was placing objects precisely and seeing whether the result matched the visual intention. Flowers’s answer was an in-world, development-only editor: place a marker while walking through the Three.js environment, save its spatial data to Sanity, and let the renderer use it.

That shift—from prompting coordinates to authoring layout in context—is the central lesson of Flowers’s September 27, 2026 account. It is a personal build retrospective, not an independently audited evaluation of coding agents or a measured performance study.

As an Amazon Associate I earn from qualifying purchases.

What Oniria is—and what it is not

Oniria: The Living DEV Library is an experiment in presenting live DEV content as a walkable library, not a general-purpose 3D website editor. Flowers describes a project with six destinations: Featured, New Arrivals, Topics, Creators, Search, and Archive. The project’s reported stack includes Next.js 16, React 19, TypeScript, Three.js, Sanity, next-sanity, the DEV/Forem API, Vercel, and GLB environment and architectural assets. Flowers’s account on DEV describes the project and its development, but the project and demo links in the article are marked TBA; this account does not independently verify a working public demo.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Three systems, three jobs

The design separates the live articles from the structure of the library. DEV supplies content data; Sanity stores world configuration and editorial choices; Three.js renders the environment and interactions. In Flowers’s description, Sanity holds room definitions, layout markers, curator selections, guided journeys, and shelf state. Sanity’s documentation describes Studio as an open-source, real-time collaborative content workbench with developer-defined content models and a customizable editing environment, a useful context for the structured documents in this design: Sanity Studio documentation.

From a dream journal to six rooms

Flowers says the project started as a Sanity-backed dream journal, then grew into a 3D environment and relationship map. DEV content offered useful connections among articles, authors, tags, recency, popularity, and search. But the abstract spatial graph became visually crowded, so the concept moved toward recognizable destinations. The six-room arrangement gives those different ways of finding content a place in the world.

Why prompting stopped being enough

Precise layout instructions became cumbersome when they had to pass through prompts, configuration, coordinates, and screenshots. Flowers’s example captures the mismatch: “Put this shelf against that wall, slightly left of the pavilion, rotated toward the center of the room.” A model might satisfy the literal description while still producing a composition that looks wrong in context. As Flowers puts it, “A model can satisfy the semantic meaning of a request while completely missing the visual intention.”

The practical conclusion was blunt: “The solution wasn’t a better prompt. It was a better tool.” Instead of describing placement from outside the scene, Flowers added a way to author it from inside the running environment.

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Rank #2
Level 10 Card Game | 8-Bit Themed Puzzle Game | Strategy Game | Cooperative Game | Fun Family Game for Kids and Adults | Ages 8+ | 1-5 Players | Average Playtime 20 Minutes | Made by Matagot
  • 8-BIT STRATEGY CARD GAME: In this cooperative card game with 8-bit video game graphics, help Izzy jump, fly and fight his way through the 5 worlds of Woz Land. Will he reach Level 10 with your help?
  • PUZZLE GAME: Play cards one by one to a 5x10 grid. Each world Izzy visits is represented by different rows of cards. Successfully place all 50 cards in the deck in ten columns. Players' hands are kept secret and only slight suggestions can be made.
  • COOPERATIVE GAME: Players are not competing against one another, but working together as a team to help Izzy play through all 10 levels in each of the 5 worlds.
  • FUN FAMILY GAME: Players of all ages will enjoy the fun and nostalgic artwork featuring 8-bit graphics! Several difficulty levels offer even more challenges and variability.
  • NUMBER OF PLAYERS AND AVERAGE PLAYTIME: This fun card game for kids and adults is made for 1 to 5 players and is suitable for ages 8 and older. Average playtime is approximately 20 minutes.

How the in-world marker editor works

The development-only workflow lets Flowers walk through the live Three.js environment and place markers where objects or zones belong. Each libraryLayoutMarker document records a label, room slot, district identifier, x/y/z position, yaw, width, and depth. Sanity stores the document, and the renderer consumes it as layout data.

One example marker in Flowers’s account is labeled R1-P04, in room slot 1 and district latest, at x 13.687, y 0, z 11.998, with yaw 0, width 4.5, and depth 0.72. Those are the values of one authored marker, not recommended defaults or performance measurements.

This workflow changes the placement loop: the author can judge position and orientation against the walls, pavilion, and other objects while standing in the space, rather than trying to reconstruct that relationship in text. It also makes layout persistent and editable as structured data instead of leaving the final arrangement implicit in a prompt. The account does not describe Oniria as a general-purpose editor for arbitrary 3D projects.

What the build taught Flowers about visual correctness

Keep authored assets as the visible source of truth

Flowers says a model generated procedural wall geometry despite being asked to use supplied wall assets. The later approach kept authored GLB walls visible, while retaining primitive geometry for invisible collisions and structural helpers. Flowers’s memorable constraint was: “DO NOT GENERATE YOUR OWN ASSET FOR THE WALL.” The lesson from this example is not that procedural geometry is inherently wrong; it is that a technically plausible substitute can violate an asset requirement and change the look of the scene.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Inspect the rendered scene before diagnosing it

A washed-out result initially seemed to Flowers like a problem with overlapping lights and bright materials. Continued investigation pointed instead to UnrealBloomPass and its threshold as a larger contributor. This is Flowers’s account of debugging this particular scene, not a general diagnosis of Three.js lighting or bloom problems. The broader practical point is to inspect the actual rendered output before committing to a cause based on how the scene is configured.

Match visual detail to interaction distance

Flowers describes early large fields of shelves and remote cover textures as contributing to flicker, unnecessary texture work, excess geometry, lower GPU performance, visual clutter, and difficult navigation. No frame rates, GPU models, benchmark figures, or controlled before-and-after results are reported, so the performance impact is qualitative.

The response was to vary detail with distance and purpose:

  • Nearby shelves: keep book covers, readable metadata, and interactions where people can use them.
  • Mid-distance shelves: simplify the representation.
  • Distant structures: reduce them to architectural mass rather than detailed individual objects.

Flowers summarizes the rule as: “Full fidelity only where interaction matters.” In this project, that means visual detail is allocated according to what a visitor can meaningfully inspect or use, rather than applied uniformly across the whole environment.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Inspect existing architecture before refactoring

In a Living Shelves example, Flowers says an agent inspected the existing architecture and found that a capacity restriction—not the absence of a reusable architecture—was the actual obstacle. The story supports a narrow lesson: investigate the system and its constraints before redesigning it. It does not establish how often coding agents do this successfully.

Discarded prototypes can still teach you something

Flowers describes trying and abandoning project directions, arguing that inexpensive exploration made it easier to learn from and discard ideas. That is a personal conclusion about this process, not a measured productivity result. The useful distinction is between a prototype’s value as a finished feature and its value as a way to discover that a direction does not serve the project.

Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

What Oniria’s approach demonstrates

Flowers’s account illustrates a gap between a valid implementation and a visually convincing result. Prompts can describe goals, but spatial relationships are difficult to judge without seeing the objects in the room. An in-context marker workflow made the layout easier for this author to position, inspect, and preserve as data.

The underlying separation also matters: live DEV content is not the same thing as the spatial structure that presents it. Keeping content and world layout in distinct systems gives the project separate places to manage incoming articles and the library’s arrangement. The account describes one project-specific solution; it does not establish that this architecture, or an in-world editor, is the right choice for every 3D site.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Flowers also offers one compact reminder of user-centered design: “Please do not make me walk across a room to change my password.” In a library metaphor, navigation can be playful, but ordinary tasks should not become inconvenient simply because the interface is spatial.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

3D developmentAI codingDEV CommunitySanityThree.jsWeb development

Leave a Reply

Your email address will not be published. Required fields are marked *

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Recommended PC Tool
Recommended PC Tool
Windows Errors? Fix Them Before They SpreadFree repair scan
Outdated Drivers Are Slowing You DownFree scan - exact matches

Two free Windows tools

One Free Minute Could Fix That PC

Before you go - each of these free tools takes about a minute and tackles what quietly slows a Windows PC down.

Special offer. View Outbyte info, uninstall instructions, EULA, and Privacy Policy.