💡 Inspiration
My inspiration was to see if AI tools could truly empower a solo developer to create a short, cinematic, and atmospheric 3D game in a short time. I wanted to build an "Interactive Narrative" game where choices matter, using AI for the heavy lifting: generating unique voices for every character and composing an original, moody soundtrack.
⚙️ How It Was Built
POINTFALL is built from scratch using Three.js and Vite. My development pipeline was heavily integrated with AI tools:
- Narrative & Dialog: The scene and branching dialogue scripts were co-written and iterated on using Large Language Models (LLMs) like Google Gemini.
- 3D Assets & Animation: I used the Mixamo from Adobe library to source all character models and their complex animations.
- AI Audio Pipeline: The atmosphere part:
- Voice Acting: All character dialogue was generated using the AI Text-to-Speech tools within CapCut.
- Music: The tense, ambient background soundtrack was generated by Stable Audio.
- SFX: Key sound effects were sourced from the CapCut SFX library.
- Engine, 3D Pipeline & Optimization:
- All assets were assembled in a custom Three.js scene, where I wrote the entire state management system, interaction raycaster, and dialogue logic in JavaScript.
- My 3D pipeline involved converting some assets from
.fbxto the web-friendly.glbformat using tools like Blender and IMAGEtoSTL. - A major final step was optimization. I used gltf-compressor to compress all
.glbmodels (which contained 4K textures), reducing the total game size from 651MB to 33MB to make it playable in a browser.
🛡️ Challenges Faced
Asset Optimization: A key challenge was the initial 651MB build size, which was too large for a web game. This was caused by uncompressed 4K textures embedded in the
.glbmodels. The solution was to manually process every model ingltf-compressor, compressing all textures to 1K JPEGs. This successfully reduced the final build size to a web-friendly 33MB.Deployment: The initial deployment to itch.io resulted in
403 (Forbidden)errors when loading assets. I identified this as an issue with Vite's default absolute paths (/). This was resolved by changing thevite.config.jsto usebase: './'and refactoring all asset paths in the code to be relative (e.g.,models/model.glb).Audio State Management: A bug was identified where footstep audio would continue playing during dialogue scenes. To fix this, I refactored all audio logic out of
main.jsand into a dedicatedaudioManager.jsmodule. This allowed for proper state control to pause interface sounds (like footsteps) while in a dialogue or menu.
🎓 What I Learned
I learned how to build and deploy a complete 3D game from scratch. But most importantly, I learned how generative AI can act as a force multiplier for a solo developer. AI for voice and music didn't replace creativity; it enabled it, handling tasks that would normally require a full team.
What's next for P O I N T F A L L
POINTFALL was built in just a few days as a prototype to prove a concept, but its core systems were designed to be scalable. If development continues, the future roadmap would focus on expanding from a single scene into a full, polished chapter:
Expanded Narrative & Levels: Add new, fully explorable levels beyond the first car—the station platform, the dark tunnels, and other parts of the wreckage with new survivors.
Deeper Choices & Consequences: Introduce more complex moral choices. For example, using items on one survivor might lock you out of options for another, with consequences that ripple through the entire story.
Full 3D Positional Audio: Implement
PositionalAudiofor all voices and SFX. This would make dialogue and sounds come from their exact location in the 3D space, dramatically increasing immersion.Custom 3D Assets: Replace all placeholder geometry (like the concrete slab Martha sits on) with custom, high-quality, and pre-optimized 3D models to create a more unique and cohesive world.
Dynamic Asset Loading: Implement a proper loading screen that pre-loads all models, audio, and textures to ensure the game starts smoothly, with no assets "popping in."
Deeper AI Integration: Explore using LLMs to generate dynamic, non-scripted responses from survivors, making them feel less like pre-programmed bots and more like truly alive individuals reacting to the situation in real-time (lip-sync).
Built With
- adobe
- blender
- capcut
- gemini
- gltf-compressor
- google-cloud
- imagetostl
- javascript
- mixamo
- stable-audio
- three.js
- vite

Log in or sign up for Devpost to join the conversation.