Bloons+
WIKI / DEVELOPERS

Developer guide

Build and contribute

Local development

Clone the repository, run npm ci, and create a Python 3.12 environment using py -3.12 -m venv .venv. Install requirements-installer.txt into that environment. On a fresh checkout only, copy autobtd6/userconfig.example.json to autobtd6/userconfig.json. Use npm run app for Electron or npm start for the local API and interface.

Runtime architecture

electron-main.js owns the desktop window. server.js exposes the local API. assets/app/app.js renders controls and progress. lib/automation.js selects recordings and launches Python; lib/engine-lock.js prevents competing input jobs. The guest bridge lives in lib/vm-bridge.js, and setup in lib/vm-setup.js. The Python runner is autobtd6/replay.py; capture and simulated input are adapted by windowed_input.py.

API reference

GET /api/farm/status returns active replay status and logs. POST /api/farm/start starts a supported automation job. GET /api/progress/local-save exposes supported account progress; GET /api/route-failures returns failure evidence. Inspect the corresponding branches in server.js for request bodies and response shapes before integrating; the preview API may change. Keep the service local and do not expose game control to the internet.

Verification workflow

Run syntax checks on changed JavaScript and Python files. Focused HUD and placement regressions live in tests/test_hud_and_placement.py. Check git diff --check and tools/check-publication.py before publishing. Live replay validation must check placements, upgrades, a real victory and the saved medal. Passing a syntax check does not establish a working strategy.

Installer and website

installer/make-installer.py builds the Windows bootstrap and payload. installer-bootstrap.cs supplies setup UI and dependency installation. Build tools live in tools/. The website is static HTML in docs/, with shared site.css and site.js; directory-based pages provide clean URLs. Preserve license notices for imported routes and assets.

Safe contributions

Never commit player saves, VM keys, tokens, account identifiers, private screenshots or generated progress. Keep personal settings local. Provide route provenance, game version, mode, account prerequisites and focused regression evidence in a change description. Original CHIMPS recordings remain preserved while runner fixes are developed.