Files
UnrealPrototyping/Tools/Orogen/V1_REVIEW.md
T
2026-09-25 17:02:24 +03:00

8.8 KiB

World Buildr — V1 Product Review

What's Good (Strengths)

Technical Foundation is Impressive

  • The geology pipeline is genuinely sophisticated — tectonic plates, collision detection, stress propagation, distance fields, island arcs, hotspot volcanism, rift valleys, back-arc basins. This isn't a noise-on-a-sphere generator; it's a real tectonic simulation. That's the differentiator and it's strong.
  • Deterministic planet codes with URL sharing is a killer feature for virality. Compact 11-char codes that fully reproduce a planet (including manual edits) is smart product thinking.
  • Zero build step, no install, CDN-loaded deps. The lowest possible friction to get it running.

UI is Clean and Focused

  • The sidebar panel is well-organized with collapsible sections. Slider hints ("Coarse / Fine", "Supercontinent / Archipelago") are excellent — they tell users what the slider means, not just what it does.
  • The ? tooltip system on each slider is unobtrusive but available.
  • The stale indicator (button turns orange "Rebuild" when sliders change) communicates state without words.
  • Hover-to-highlight-plate with contextual info is discoverable and satisfying.
  • The tutorial is lightweight (4 steps) and dismissable. Correct approach for a tool like this.

Artistic Appeal is Solid

  • Atmosphere rim shader, translucent water sphere, starfield — the globe looks like a planet, not a texture demo. The color ramp produces believable earth tones with good contrast between ocean/land/mountain/snow.

What Needs Work for Market-Ready V1

1. Performance & Perceived Speed (High Priority)

Generation blocks the main thread. The setTimeout(..., 16) in generate.js lets the button state repaint, but the actual work is synchronous — at 200K+ cells, the browser locks for multiple seconds. Users will think the app is frozen.

  • Move generation to a Web Worker. This is the single biggest UX improvement possible. It unblocks the UI, lets you show a progress bar, and prevents the browser's "page unresponsive" warning at high detail levels.
  • At minimum, add a visible progress indicator (spinner, progress bar, or pulsing animation on the button) beyond just the text changing to "Building...".

2. Mobile & Responsive (High Priority)

  • The UI panel is absolutely positioned at top: 16px; left: 16px with a fixed min-width: 270px. On mobile screens this will cover most of the viewport. There's no way to collapse or dismiss it.
  • No @media queries anywhere in CSS. No touch gesture handling. Ctrl-click is impossible on mobile.
  • For V1: At minimum, make the sidebar collapsible/toggleable on small screens. Consider touch-to-select as the mobile equivalent of Ctrl-click.

3. First Impression & Empty State (High Priority)

  • When the page loads, it immediately starts generating a planet. That's fine — but there's no loading state visible before JS loads and executes. On slower connections, users see a black screen.
  • Add a lightweight loading indicator in pure HTML/CSS (no JS dependency) that gets replaced when the app initializes.

4. Export & Practical Utility (Medium-High Priority)

Right now users can look at planets and share codes. But what can they do with what they've made? For a tool going to market, you need at least one export path:

  • Image export — "Save as PNG" for the current view (globe or map). This is trivial with renderer.domElement.toDataURL() and immediately makes the tool useful for worldbuilding, RPGs, wallpapers.
  • Heightmap export — a grayscale equirectangular PNG of the elevation data. This makes the tool usable in Unity, Unreal, Blender, and other 3D tools. This is the bridge from "cool demo" to "useful tool."
  • Consider STL/OBJ export for 3D printing enthusiasts (lower priority but high wow-factor).

5. Color Map & Biome Richness (Medium Priority)

The current color map (color-map.js) is a single elevation-to-color function with 8 linear interpolation bands. It works, but:

  • No latitude-based variation — polar regions look the same as the equator. Adding even a simple latitude tint (white toward poles, warmer at equator) would dramatically increase visual appeal.
  • No biome differentiation — deserts, forests, tundra, ice caps are all absent. Even a simple noise-modulated biome layer on top of the elevation coloring would make planets feel more alive and give users something to discover as they rotate.
  • The ocean coloring is uniform depth-based blue. Real oceans have color variation from coastal shallows (teal/cyan) to deep abyssal (near-black). The data is already there in dist_coast.

6. Accessibility & Discoverability (Medium Priority)

  • Ctrl-click is not discoverable. It's mentioned in the tutorial and in small text at the bottom, but there's no visual affordance. Users who dismiss the tutorial will never find this feature. Consider a mode toggle button ("Edit Plates" on/off) that makes regular clicks toggle plates.
  • Keyboard shortcuts are absent. Space to generate, R to toggle rotation, W for wireframe, etc. — these are cheap to add and power users will expect them.
  • No undo for plate edits. Ctrl-click is destructive (triggers a full recompute). A simple undo stack (even just "undo last edit") would make editing feel safe.

7. Branding & Polish (Medium Priority)

  • Favicon is data:, (empty). Add a real favicon — even a simple colored globe emoji rendered to a canvas.
  • No Open Graph / social meta tags. When someone shares a planet URL on Twitter/Discord/Slack, it will show nothing. Add og:title, og:description, og:image (a static preview image) at minimum.
  • The title bar just says "World Buildr." Consider dynamically updating it: "World Buildr — #a7f3kq9xp2b" when a planet is loaded, so browser tabs are identifiable.
  • No 404/error handling for bad hash codes. If someone visits a URL with a corrupted hash, the error is silent. Show a brief toast message.

8. Code Architecture for Future Growth (Low-Medium Priority)

  • elevation.js is 970 lines doing collision detection, stress propagation, distance fields, rift BFS, ridge BFS, fracture BFS, back-arc BFS, coastal roughening, island arcs, hotspot volcanism, and final elevation assembly — all in a single function. This will become unmaintainable. Even a basic extraction of each geological feature into its own function/file would help.
  • buildDriftArrows has an early return on line 373 of planet-mesh.js — the entire function is dead code after it. Either remove it or finish it.

9. Map View Quality (Low-Medium Priority)

  • The equirectangular map projection works but has visible triangle seams near the poles and antimeridian. For a market product, these artifacts reduce confidence in quality.
  • Map view has no grid lines, labels, or legend. Even a simple lat/lon grid overlay would make it feel like a proper map.

10. Documentation & Landing (Low Priority for MVP, High for Marketing)

  • The README is thorough for developers but there's no landing page, no screenshots, no GIF/video showing the tool in action. For a product going to market, the first thing someone sees should be a compelling visual, not a markdown file.
  • Consider a simple landing section or splash that shows off the best-looking generated planet before asking users to interact.

Priority Summary

Priority Item Effort Status
Must Have Web Worker for generation (no UI freeze) Medium
Must Have Mobile-responsive sidebar (collapsible) Low-Medium Done
Must Have Loading state before JS initializes Low Done
Must Have Image export (PNG screenshot) Low
Should Have Heightmap export (grayscale PNG) Medium
Should Have Latitude-based color variation / basic biomes Medium
Should Have OG/social meta tags for link previews Low
Should Have Real favicon Low
Should Have Edit mode toggle (not just Ctrl-click) Low
Should Have Undo for plate edits Low-Medium
Nice to Have Keyboard shortcuts Low
Nice to Have Elevation.js refactor Medium
Nice to Have Map view polish (grid lines, pole fixes) Medium Done
Nice to Have Landing page / hero visual Medium

Bottom Line

The core of this product is genuinely strong — the tectonic simulation, the planet codes, and the clean UI put it well ahead of most procedural planet generators. What's missing for V1-to-market is mostly in the "last mile" category: making the output usable beyond just looking at it (exports), making it work everywhere (mobile), and making it feel polished (favicon, social previews, loading states, no UI freezes). The geology engine is the hard part, and that's already done. The rest is packaging.