Adapted by abin, 2026-09-27
https://github.com/m-ko-de/open-td
MIT; replacement audio CC0-1.0

Single-player scenes only; no account/server required; fixed completed-loader transition; English game controls; namespaced persistence; local help; replaced third-party audio with original synthesized sounds by abin.

The runtime directory contains the exact hosted files, including license notices and the local player bridge. Plain HTML/JavaScript games use runtime as their editable source.
The source directory contains the preferred editable source, package manifest and lockfile. Use Node.js 22, run npm ci --ignore-scripts in source, then npm run build (Evolve: npm run evolve and npm run wiki). Build dependencies may be downloaded from the npm registry. For Evolve, replace runtime/evolve/main.js and runtime/wiki/wiki.js with the build outputs. For other built games, replace runtime assets with source/dist output and update the bundle paths in runtime/index.html; keep its CSP and game-bridge.js tag.

To serve the independent game, mount runtime at /play/open-td/ on any static HTTP server and visit /play/open-td/index.html. The game never requires its upstream server. Game bridge notifications only operate when embedded by a same-origin parent.
