Home / Blog / What the Water Keeps – Reverse-engineered Three.js source…
Tech News

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

What the Water Keeps – Reverse-engineered Three.js source of the Fable 5.2

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 / FeatureOriginal Production ReleaseReverse-Engineered Source
Source Repositories0 public codebases1 modular GitHub repository
Source Map Availability0 maps provided100% de-bundled readable source
Local Build StepProprietary bundler0 build commands required
Offline Execution0% (cloud host dependent)100% verified local execution
Three.js DependenciesInlined remote bundleIsolated local vendor directory
PWA Manifest SupportMissing manifest fileValidated 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

What the Water Keeps – Reverse-engineered Three.js source of the Fable 5.2
Illustration · Pexels

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.

Command
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.

Command
python -m http.server 8000

Engineers 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.

Command
npm install -g @anthropic-ai/claude-code
claude update
Command
/model fable
Command
claude --model fable
claude config set model fable

05What 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

Dillip Chowdary

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

5-min tech signal

Weekday briefing for engineers who skip the noise.

No spam · Unsubscribe anytime

Advertisement

✈️ CareerPilot

Your AI job-search copilot

Match your resume against live Ashby, Greenhouse & Lever openings — fit scores, job-specific resume optimization and email alerts.

Find matching jobs →

Free Tools

Browse all tools →