💡 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:

  1. Narrative & Dialog: The scene and branching dialogue scripts were co-written and iterated on using Large Language Models (LLMs) like Google Gemini.
  2. 3D Assets & Animation: I used the Mixamo from Adobe library to source all character models and their complex animations.
  3. 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.
  4. 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 .fbx to the web-friendly .glb format using tools like Blender and IMAGEtoSTL.
    • A major final step was optimization. I used gltf-compressor to compress all .glb models (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 .glb models. The solution was to manually process every model in gltf-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 the vite.config.js to use base: './' 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.js and into a dedicated audioManager.js module. 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 PositionalAudio for 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

Share this project:

Updates