I made a Mario Galaxy game with Claude Code and Three.js in 53 days
Get picks like this daily. Today's launch numbers, the top launches, AI and tech news, and a daily opportunity pick, straight to your inbox.
Want to reach these readers? Sponsor an issue.
I'm the developer. Happy to share the process and learnings.Architecture:- Custom SoA ECS for cache-friendly iteration, zero allocations in hot loops. Benchmarked against bitECS/miniplex.- Process manager inspired by Game Code Complete's but data-oriented so processes are pure data, systems contain the logic.- Multi-field gravity with 5 types (point, parallel, segment, cylinder, convex hull) with spring-damped transitions between fields.- Rapier3D WASM with SIMD. Gravity-aware fake shadow system for playability.- WebGL 2 shared context between Three.js and Pixi.js.- Debug editor for placing objects, configuring settings, visualizing colliders, etc (Tweakpane + Three.js helpers)76K lines of TypeScript. 735 commits. Runs on mobile. Plays best with gamepads.The AI Process:Claude Code (Opus) wrote ~95% of the code. I provided architecture, constraints, and direction; looked at some but not much of what it wrote.My process for every feature: braindump what I want, relevant technical details, and "does this make sense?" into the chat. Largely unorganized. I built custom Claude Code skills like /lets-build:plan that spawns sub-agents to research the codebase first, then asks me clarifying questions. We go back and forth until it sounds right, then Claude writes plan documents split into phases so the app stays runnable after each one.As we got closer to ship date, I started having Claude review its own plans. This mostly catches the main issues. Built dedicated skills for that too: /review-plan, /code-review, /retrospective, /ecs-review.Where Claude struggled:- It defaulted to OOP in TypeScript even though the project is data-oriented ECS. Took a lot of steering to overcome. Built /ecs-plan and /ecs-review skills specifically to catch and fix this.- Level design failed completely. I tried making a CLI tool so Claude could help place objects in 3D space where "down" could be anywhere. Tried elevation maps, architectural diagrams; didn't help.- At one point it had an index.ts that was thousands of lines long so ensuring a fast first paint was a disaster. I started refactoring manually but then felt it was a giant waste of my time to do it. So I had Claude map the dependency tree and do the refactor which was a piece of cake for it.The hardest problems were the camera and the gravity shadows. Both work but still have edge cases. Galaxy's camera also has problems; part of that might be inherent to arbitrary gravity directions. The shadows are all fake, cast based on gravity field type, and the letter shapes (M, R) create concave, irregular geometry that Galaxy didn't have for planetoids.87 plans total, averaging 2-3 pages each. The CLAUDE.md project file is 164 lines of hard constraints learned from debugging sessions. Every constraint has a token massacre behind it.One of the biggest "wins" is having Claude create tools that you would probably never do for a project with a deadline in ~50 days. That time tradeoff (or even impossibility) is no longer valid and this likely compounds even more for longer projects.
HN · launched Apr 1, 2026 · 7 upvotes (top 61%) · 0 views
Niche: browser-based video games · 380 launches, 21 in the last 7 days ▼ -28% · Explore this niche →
Category and tags
- Media & entertainment
- B2C
- Not AI
- Hobby / open-source project
Visit website ↗ Source listing ↗
More like this: all 380 launches in browser-based video games →
Could you build this?
Partial As noted by the author, 95% of the codebase was vibe-coded, but building a custom Structure of Arrays (SoA) ECS with per-face arbitrary gravity physics and hit-stop game loop architecture requires game engine systems engineering.
What it would actually take: The stack uses Three.js, TypeScript, Rapier3D physics, and a hand-crafted Structure-of-Arrays (SoA) Entity Component System designed to eliminate GC allocations in hot loops. The difficult components are the non-standard spherical/polyhedral gravity calculations across complex geometry meshes and camera controllers that handle smooth spherical gimbal rotations without gimbal lock. Achieving solid 60 FPS in the browser demands solid understanding of 3D math (quaternions, vector projections) and data-oriented design.
Discussion
14 comments analyzed.
Competitors mentioned: Claude Opus, Hello Mario Framework
Concerns raised: Claude defaults to OOP regardless of constraints, hard to override, Model context window grows unmanageable, Claude skips parts of constraints, Fine-tuning maintenance overhead vs. just adding prompts, High API costs for large projects, Prompting alone may not solve certain architectural requirements
Feature requests: Better support for data-oriented/ECS architecture patterns, Dynamic jump height instead of fixed values, Models with more data-oriented world view
Competitors
Other products that read as similar to this one : 949 launches clear the similarity bar, closest 8 shown.
Attention rank: #578 of 950 (itself plus its competitors, highest first, normalized so YC and Product Hunt are compared fairly).
Launched 152 days after the earliest competitor.
- I vibe-coded a custom WebGPU engine for my MMO · hn · 2026-02-23 · 5 upvotes · similarity 0.58
- Claude Code skills that build complete Godot games · hn · 2026-03-16 · 337 upvotes · similarity 0.54
- Gamekit-CLI · hn · 2026-01-23 · 13 upvotes · similarity 0.54
- Sx · hn · 2026-01-12 · 5 upvotes · similarity 0.54
- Cockpit for you Claude Code agents in Rust · hn · 2026-08-01 · 13 upvotes · similarity 0.53
- I built a game on my old phone without knowing what I was building · hn · 2026-01-15 · 11 upvotes · similarity 0.52
- 1Code · hn · 2026-01-15 · 75 upvotes · similarity 0.51
- Long term, data only eSIMs · hn · 2025-12-15 · 6 upvotes · similarity 0.51
The niche, labels, vibe code rating and competitor comparison on this page are analysis by Nicheloom. If you use them, please credit nicheloom.com. How you may use our data.