No description
  • GDScript 91.1%
  • Kotlin 3.8%
  • JavaScript 1.9%
  • Python 1.4%
  • HTML 0.6%
  • Other 1.2%
Find a file
mihai205 0fcc89ced8
Some checks failed
ci / android (push) Failing after 1m9s
ci / sim (push) Successful in 20m26s
chore: gameplay store screenshots on snow/forest maps, feature graphic from icon art
screenshot.gd takes an optional min_wave so captures show a built-up maze.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21 09:44:10 +03:00
.forgejo/workflows ci: fail APK export when translations were not imported 2026-10-19 17:13:46 +03:00
addons/admob feat: AdMob via Poing Studios plugin (MIT), UMP consent, Gradle Android build 2026-10-18 12:29:57 +03:00
ads feat: AdMob via Poing Studios plugin (MIT), UMP consent, Gradle Android build 2026-10-18 12:29:57 +03:00
android build: add Android-dev export preset (arm64 only) 2026-10-19 20:32:47 +03:00
assets feat: new app icon (boss creep in maze), all sizes built from store/icon_source.jpg 2026-10-21 09:21:11 +03:00
data feat: untimed Play vs bot offer; keep searching for humans 2026-10-19 18:02:52 +03:00
docs feat: seven races with per-race towers, powers and PvP/random-map picker 2026-10-19 14:15:21 +03:00
game feat: return to campaign level select after finishing a campaign game 2026-10-20 12:08:13 +03:00
legal feat: ad rules wrapper, rewarded continue, privacy link, account deletion 2026-10-18 03:01:06 +03:00
levels_src feat: level tool (JSON <-> TileMap scene), Forgejo CI 2026-10-17 23:53:15 +03:00
nakama feat: landing site at /, game at /game/; store assets; com.moweb.mazetd, v1.0.0, AAB release 2026-10-20 13:21:35 +03:00
net feat: untimed Play vs bot offer; keep searching for humans 2026-10-19 18:02:52 +03:00
server feat: matchmaking wait screen with enter-game accept and requeue on no-show 2026-10-19 17:22:19 +03:00
sim fix: PvP keeps 1 s tower build time 2026-10-19 18:10:29 +03:00
site feat: new app icon (boss creep in maze), all sizes built from store/icon_source.jpg 2026-10-21 09:21:11 +03:00
store chore: gameplay store screenshots on snow/forest maps, feature graphic from icon art 2026-10-21 09:44:10 +03:00
tests feat: seven races with per-race towers, powers and PvP/random-map picker 2026-10-19 14:15:21 +03:00
tools chore: gameplay store screenshots on snow/forest maps, feature graphic from icon art 2026-10-21 09:44:10 +03:00
.dockerignore feat: game server Dockerfile + compose service, data-version bound tokens, deploy guide 2026-10-18 02:59:35 +03:00
.gitignore feat: serve Web build from nakama compose; fix font missing in exports 2026-10-19 21:02:13 +03:00
ASSETS_LICENSES.md feat: new app icon (boss creep in maze), all sizes built from store/icon_source.jpg 2026-10-21 09:21:11 +03:00
default_bus_layout.tres feat: Kenney art + audio pass, bosses, effects, tower panel, path preview 2026-10-18 00:40:27 +03:00
DEPLOY.md feat: landing site at /, game at /game/; store assets; com.moweb.mazetd, v1.0.0, AAB release 2026-10-20 13:21:35 +03:00
export_presets.cfg feat: new app icon (boss creep in maze), all sizes built from store/icon_source.jpg 2026-10-21 09:21:11 +03:00
project.godot feat: landing site at /, game at /game/; store assets; com.moweb.mazetd, v1.0.0, AAB release 2026-10-20 13:21:35 +03:00
README.md tools: deterministic reference bot for level validation; README overview 2026-10-18 03:12:01 +03:00
web.Dockerfile fix: web.Dockerfile parse error in nginx redirect tweak 2026-10-20 15:59:30 +03:00
web.Dockerfile.dockerignore feat: build Web export inside Docker for the web service 2026-10-19 21:09:24 +03:00

Maze TD

Free mobile maze-building tower defense (Godot 4.7, GDScript) with a Nakama backend. Single player: 4 worlds x 10 levels, 4 difficulties, stars, endless mode, daily challenge. Multiplayer: each player defends a lane; sending creeps costs gold now and raises income.

Layout

  • sim/ deterministic fixed-point simulation (no Nodes, no floats in state): sim.gd lane, match.gd PvP, bot.gd / pvp_bot.gd heuristic bots, daily.gd daily challenge spec
  • data/ towers, creeps, damage matrix, difficulties, sends, levels (levels/), PvP maps (pvp/), i18n (en/ro)
  • game/ client: board renderer, menu, settings, save, audio, art map, telemetry
  • net/ Nakama client (auth, matchmaking, rooms), lockstep match client
  • server/ headless authoritative game server (tokens, validation, rate limits, relay, replays) + Dockerfile
  • nakama/ docker compose (Nakama + Postgres + game server) and the server module (modules/index.js)
  • ads/ ad placement rules (no-op backend until the AdMob plugin is wired)
  • tools/ balance runner, PvP runner, campaign validator, level generator/tuner, leak report, perf bench, level tool (JSON <-> TileMap), screenshots, icon
  • tests/ sim + rules tests (run_tests.gd), network/security test (net_test.gd)
  • legal/ privacy policy draft. ASSETS_LICENSES.md lists every third-party asset.

Checks (all run in CI)

godot --headless -s tests/run_tests.gd
godot --headless -s tests/net_test.gd
godot --headless -s tools/perf_bench.gd
godot --headless -s tools/balance_runner.gd -- seeds=2
godot --headless -s tools/pvp_runner.gd -- seeds=2
godot --headless -s tools/campaign_validator.gd

Levels

Generated by python tools/gen_worlds.py from tools/tuning/w*.json; python tools/tune_worlds.py <world> bisects HP per difficulty until the reference bot lands in each difficulty's lives range. Hand-drawn maps: godot --headless -s tools/level_tool.gd -- import=w1_l01, edit levels_src/w1_l01.tscn, then -- export=w1_l01; the generator keeps hand-drawn maps.

Deploy

See DEPLOY.md.