What the Water Keeps – Reverse-engineered Three.js source of the Fable 5.2
Developer dill-lk reverse-engineered Kevin Ngo's WebGL game What the Water Keeps into a modular, offline Three.js repository with zero-build local execution.
By Dillip Chowdary • Nov 15, 2026 • Source: github.com
In this post
Independent developer dill-lk released a modular reverse-engineered reconstruction of What the Water Keeps, converting the closed-source WebGL title into a readable Three.js repository. According to github.com's report, the project extracted all minified production assets, shaders, and client scripts from Kevin Ngo's original web build. The restored codebase removes remote hosting dependencies, allowing developers to execute the game offline or via a public mirror.
This report examines how the unpacked codebase organizes rendering modules, restores static assets, and provides a zero-build workflow for local WebGL inspection and modding. Graphics engineers, web developers, and game preservationists can inspect the architecture to study production Three.js optimization and client-side design. The release also offers builders an accessible foundation to customize scene shaders, audio triggers, and physics parameters.
01What shipped in Water Keeps – Reverse-engineered Three.js
The reconstruction repository unpacks Kevin Ngo's original release, which previously existed only as an obfuscated production bundle without public source maps at what-the-water-keeps.vercel.app. Developer dill-lk extracted every script, shader, audio file, and texture, organizing them into clean modules under the src and js directories. The project also deployed an operational mirror at echoes-beneath-the-tide.vercel.app to demonstrate the restored client functionality.
Rather than relying on remote networks, the release bundles a self-contained Three.js rendering library inside a local vendor directory. The scene initialization routines, animation loops, and camera controllers are decoupled into standalone files, replacing the minified bundle with readable JavaScript. Every asset path resolves locally, ensuring the rendering engine mounts correctly without requiring proprietary backend services.
02What improved in Water Keeps – Reverse-engineered Three.js
The reverse-engineered project transforms an obfuscated web deployment into an auditable multi-directory software architecture. Developers who previously inspected the original build encountered minified variable names and inlined asset data that prevented meaningful code audits. The modular reconstruction establishes isolated functional boundaries between scene logic, third-party libraries, interface styling, and sound effects.
| Metric / Feature | Original Production Release | Reverse-Engineered Source |
|---|---|---|
| Source Repositories | 0 public codebases | 1 modular GitHub repository |
| Source Map Availability | 0 maps provided | 100% de-bundled readable source |
| Local Build Step | Proprietary bundler | 0 build commands required |
| Offline Execution | 0% (cloud host dependent) | 100% verified local execution |
| Three.js Dependencies | Inlined remote bundle | Isolated local vendor directory |
| PWA Manifest Support | Missing manifest file | Validated site.webmanifest included |
| Access Cost | $0 web deployment | $0 open educational repository |
By isolating Three.js within vendor storage, the reconstructed build eliminates version conflicts and network latency during initial page loads. The structured asset hierarchy allows browsers to cache individual texture maps, font files, and audio resources independently rather than repacking them on every code modification. This modular structure significantly reduces debugging time for developers profiling WebGL draw calls and GPU memory consumption.
03What you gain from Water Keeps – Reverse-engineered Three.js

Developers working with the reconstructed repository gain immediate zero-build local execution, bypassing complex bundler configurations and transpilation pipelines. Modifying a vertex shader, tweaking water surface displacement, or updating camera bounds requires only editing a source file and refreshing the browser tab. This design removes compilation friction, making the engine practical for rapid mechanical prototyping and graphics education.
The repository structure separates visual assets into distinct folders, including dedicated directories for audio files, custom fonts, textures, and interface CSS. Developers studying interactive audio implementation can examine how sound cues trigger alongside specific player movements and scene transitions. Similarly, the HUD layout in the css directory provides a clean reference for layering HTML interfaces over canvas viewports.
Advertisement
Tech Pulse Daily
Get tomorrow's pulse first
Join engineers who read Tech Pulse before stand-up. Free, weekday mornings.
The inclusion of a complete site.webmanifest allows developers to package the game as a standalone desktop or mobile web application. Offline caching rules ensure that game assets, typography, and rendering scripts load reliably even when disconnected from network interfaces. This self-containment safeguards the experience against link rot and hosting discontinuation that often affects browser-based creative experiments.
04How to get Water Keeps – Reverse-engineered Three.js
Getting the project running locally requires cloning the repository and launching a lightweight HTTP server, because modern browsers restrict ES modules on file protocols. Developers can download the source tree using git and serve the directory using Node.js without installing project-specific dependencies.
git clone https://github.com/dill-lk/What-the-Water-Keeps.git
cd What-the-Water-Keeps
npx serve .Alternatively, developers working in environments without Node.js can use standard Python tooling to start a local static server on port 8000. Navigating to the local host address in any modern browser immediately boots the Three.js scene, renders the water shaders, and loads the offline audio tracks. This lightweight workflow eliminates complex package installations while ensuring all local modules resolve properly.
python -m http.server 8000Engineers using coding agents to inspect or refactor the WebGL source can launch Claude Code with the specialized Fable model. Updating the command line interface ensures support for recent context windows, while model flags pin the session to the preferred model variant for automated Three.js code generation and shader testing.
npm install -g @anthropic-ai/claude-code
claude update/model fableclaude --model fable
claude config set model fable05What to watch after Water Keeps – Reverse-engineered Three.js
Community members can track ongoing developments through the project's GitHub repository, where developer dill-lk accepts pull requests, bug fixes, and mod submissions. Builders interested in creative modifications can fork the codebase to introduce alternative camera mechanics, custom ocean wave shaders, or additional gameplay objectives. The maintainer encourages developers to open issues to discuss architecture refinements and experimental physics integrations.
Attribution remains a primary focus of the repository, which credits Kevin Ngo for the original game direction, audio design, and conceptual design. The reverse-engineered release is distributed strictly for educational study, Three.js architectural research, and digital game preservation rather than commercial distribution. The project maintainer has pledged to address creator concerns directly through GitHub communication channels if intellectual property questions arise.
Water Keeps – Reverse-engineered Three.js FAQ
Who originally created What the Water Keeps?
Kevin Ngo developed the original WebGL browser game, creating its artistic direction, gameplay concept, and web production build at what-the-water-keeps.vercel.app.
Who reverse-engineered the source code?
Developer dill-lk unpacked and reconstructed the minified client scripts into a modular, offline-capable Three.js repository hosted on GitHub.
Why does the project require a local HTTP server instead of the file protocol?
Modern web browsers enforce security policies that block ES modules and local asset loading when opening files directly via the file protocol.
Where can users play the live reconstructed game online?
A public mirror is available at echoes-beneath-the-tide.vercel.app, running the fully de-bundled and reconstructed Three.js engine.
Sources
Author
Dillip Chowdary
Writes Tech Bytes coverage of AI, engineering, and the tools that actually ship. Editor of Tech Pulse Daily.
Related on Tech Bytes
Advertisement