Commit Graph
192 Commits
Author SHA1 Message Date
Richard ZinkandClaude Opus 5.5 44b938f0e5 Installable as an app (PWA): manifest, pixel-art icons, offline service worker
- manifest.webmanifest (full screen, any orientation), icons 192/512/maskable/apple-touch
- sw.js: network first, cache as offline fallback, the savegame API is never cached
- registered only over HTTPS or on localhost; nginx serves the manifest type
- README: installing, HTTPS requirement

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-03 11:41:29 +01:00
Richard ZinkandClaude Opus 5.5 b8bf2b8503 Campaign tests: every mission runs a simulated minute undecided; missions 1 and 2 are won by a scripted player
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-03 11:37:32 +01:00
Richard ZinkandClaude Opus 5.5 6c85a62f1b Creatures arrive faster with more free lair room, slower as the lairs fill up
- Portal interval scaled by free beds (1 free: ~3x slower, 6: normal, 14: 2x faster, up to ~3x)
- Lair info shows the free beds and the arrival speed
- Test

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-03 11:29:18 +01:00
Richard ZinkandClaude Opus 5.5 bd8f53e8a1 Towers shoot enemy towers and the enemy gate; build areas use the floor under the pointer
- With no unit in reach, towers fire at opposing towers (both sides) and the player's towers
  at the gate of the order / hero gate (line of sight needed, walls block)
- Rooms, bridges, sell, flag and towers pick the floor tile under the pointer; only digging
  and the hand still aim at walls
- Test for tower duels and gate fire

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-03 11:27:13 +01:00
Richard ZinkandClaude Opus 5.5 09e22b009e Campaign menu and story: mission list, briefings, goals panel, mission end flow
- Title screen: Campaign with the list of the 20 missions (done / open / locked)
- Briefing per mission: story told by old Crookfinger (EN/DE), goals, new tools,
  creatures and gold carried over; start button
- In the game: goals panel with progress (click/tap opens the briefing again), the pause menu
  has a Briefing entry to read the whole briefing again
- Mission end: next mission / try again and back to the campaign; won missions and the
  carry-over are stored in the browser; epilogue after the last mission

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-03 11:23:44 +01:00
Richard ZinkandClaude Opus 5.5 46755d68ac Campaign mission system: 20 mission definitions, goals, unlocks, carry-over
- campaign.rs: missions as key data (size, rivers, fortresses, goals, waves, time limit, gifts);
  start_mission builds the map with the generator; tools unlock step by step; the strongest
  5 creatures and 20% of the gold are carried into the next mission; campaign progress type
- Map generator options (portals, treasure caves, hero gate) and meandering rivers with
  knight bridges
- Mission goals: shards, gate of the order, all knights, vault loot, knight towers, waves;
  time limits; waves and gate defenders only where the mission wants them
- Locked tools are shown dark and cannot be chosen; HUD shows gate/waves/time only when used
- Fix: patrol routes no longer start on tower spots
- Tests: every mission builds, its goals are possible, wave heroes reach the core

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-03 11:11:53 +01:00
Richard ZinkandClaude Opus 5.5 e15b16cc60 Knight fortresses: knight towers, patrols, alarm, claimable knight ground and vaults
- fortress.rs: fortress builder (masonry walls with doors, courtyard, corner towers, vault chambers
  full of mixed treasure, shard chamber, gate of the order as the heart, guards, patrols)
- Knight towers shoot the player's units; creatures tear down knight towers within reach
- Patrols walk their round; guards and patrols that spot an enemy alarm the others nearby
- Imps claim knight ground (slower, not next to fighting heroes); vaults hand over their treasure,
  shard chambers give the shard back; claiming alarms the knights
- Knights tear down the player's bridges near their posts
- Fix: units next to a tower could stop at the tile edge just out of melee reach
- Tests for towers, vault looting, patrols/alarm and bridge tearing

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-03 10:57:37 +01:00
Richard ZinkandClaude Opus 5.5 7e84cae910 Silver, ruby and diamond veins; treasury shows its treasures; announced payday
- New veins (appended kinds): silver (common), ruby (rare), diamond (very rare, far from the core);
  treasure caves contain gems; each treasure is worth a different amount per strike and per vein
- Imps carry one kind of treasure at a time
- Treasury tiles hold up to 500 each and show gold coins, silver bars, rubies or diamonds;
  spending empties random treasury tiles, the soul core keeps what does not fit
- Training no longer drains gold continuously: it is billed on the next payday
- Payday is announced 20 s before (message with the cost); the HUD shows a payday countdown and
  the cost of the next payday in red next to the gold counter
- Tests for the treasury and the payday bill

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-03 10:43:33 +01:00
Richard ZinkandClaude Opus 5.5 75dc445d3b Rivers and bridges: water and lava tiles, bridge tool, burning in lava
- New tile kinds (appended for the savegame codec): water, lava, wooden bridge, stone bridge, core shard
- Sunken river beds with banks, bridge decks with rails, lava glow and lights
- Bridge tool (key U, rooms category): bridges grow from own ground, 30 gold/tile over water, 75 over lava
- Selling a bridge drops the units on it into the river (water: swim to the bank, lava: burn)
- Cannon blasts and punches knock units back; into lava = burnt (heroes still pay their bounty)
- Heroes cannot path through rivers; texts EN/DE; tests for bridges and lava

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-03 10:32:40 +01:00
Richard ZinkandClaude Opus 5.5 af6be62805 Touch interface for phones and tablets; category toolbar for mouse and touch
- touch.rs: gesture recognition (tap, double tap, long press, drag, two-finger pan/pinch/rotate)
- Touch mode: Auto (touch device or first touch) / On / Off in Settings -> Game
- Larger interface factor on touch screens, top bar wraps, smaller minimap, fewer messages
- Toolbar grouped into categories with pop-up rows and a menu button, also on the desktop
- Long press shows information or drops held units; double tap with the hand slaps
- Savegame name via the browser's text dialog when the name field is tapped
- Touch help texts (EN/DE)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-03 10:10:53 +01:00
Richard ZinkandClaude Opus 5.5 6f037294c0 Tower shots start at the tower top (arrow battlements, cannon muzzle, magic orb)
Effects now carry start/end heights; leftover 2D height offsets that moved
projectiles and hit sparks sideways on the map are removed.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-03 10:04:46 +01:00
Richard ZinkandClaude Opus 5.5 4d1bf30586 3D resolution setting extended down to 1/16
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-03 09:48:25 +01:00
Richard ZinkandClaude Opus 5.5 c54998be55 Imps: at least 10% of the imps (min. one) claim floor while there is floor to claim
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-03 09:47:42 +01:00
Richard ZinkandClaude Opus 5.5 7f4324abca Server-side savegames: Rust service with a shared savegame list in the menu, fallback to files
- server/: small axum service storing savegames as files (1 MB each, 500 MB total, rate limit)
- docker compose: second container with a volume; nginx forwards /api/
- JS plugin: asynchronous HTTP requests polled by the game
- Save/Load open a list page (name field, new, overwrite, load, delete with confirmation)
- Without a reachable service the game keeps using savegame files and the browser autosave

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-03 09:31:36 +01:00
Richard ZinkandClaude Opus 5.5 c5b7896609 Chainbreaker: rare, very strong original creature (twin-axe cleave, restless without fights)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-03 09:14:39 +01:00
Richard ZinkandClaude Opus 5.5 05ba88359e Planned hero entry points: walls glow and pulse red, with a pulsing red light
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-03 08:58:35 +01:00
Richard ZinkandClaude Opus 5.5 f113e1085c Pixel-art mouse pointers and hand actions
- pointing monster hand with the active tool's icon, grabbing hand / fist, animated backhand and punch
- active tool highlighted in the toolbar (pulsing frame, arrow)
- hand: pick up unconscious heroes on own ground, drop prisoners anywhere on own ground
  (onto a free torture place = locked up), Shift+click backhand (speed-up) / punch (stun)
- fix: hint slots overflowed with the new hints; hint times are no longer saved
- test for the hand rules

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-03 08:53:21 +01:00
Richard ZinkandClaude Opus 5.5 50d013bb28 UI in device pixels on the character grid with fixed integer font sizes, ASCII bars; 3D render scale for a pixel look
- text only at 1x/2x/4x times an integer interface factor (auto or 1-4 in the settings)
- high DPI rendering, own 2D camera in device pixels, mouse converted
- toolbar buttons 6 columns, integer icon scale, minimap integer pixels per tile
- all bars (top bar, unit/tower/gate HP) as CP437 block characters
- 3D world optionally rendered at 1/2, 1/3, 1/4 and upscaled with nearest filtering

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-03 08:42:50 +01:00
Richard ZinkandClaude Opus 5.5 889ca66dbf Add MIT license
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-03 08:30:49 +01:00
Richard ZinkandClaude Opus 5.5 3e3084c35d Fix tile outlines drawn over units (miniquad only depth-tests with depth writes); Soul Core starts with a treasury ring
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-03 08:19:49 +01:00
Richard ZinkandClaude Opus 5.5 5158075d7b Soundtrack expanded to 35 pieces with a leitmotif variant generator and 8 new instruments
- generator: leitmotif as scale degrees, keys/modes, augmentation, diminution, inversion,
  fragment sequences, accompaniment and drum styles; hand-written title 2, boss themes, victory 2
- organ, bell, choir, sub bass, tom, crash, harp, timpani; 8-bit samples, unused instruments stripped
- src/tracks.rs generated with categories; music director with boss themes and room moods
- all pieces validated with libopenmpt; notes checked to stay in key

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-03 08:09:15 +01:00
Richard ZinkandClaude Opus 5.5 1e92e19089 Hero wave AI: varying entry points facing the gate, split waves, scout warning with directions and minimap markers
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-03 07:58:35 +01:00
Richard ZinkandClaude Opus 5.5 a1ad5ad141 Torture chamber with prisoners and defectors, Jailer; temple with prayer, Flame Priestess
- defeated heroes are knocked out if the torture chamber has room; imps carry them in
- torture drains HP over ~100 s; ~40% defect (paladins ~25%) and become own creatures
- Jailer (6+ torture tiles): tanky melee that pulls enemies in with a chain
- temple: creatures pray for mana (more than studying) and mood
- Flame Priestess (6+ temple tiles): fireballs with splash, heals creatures and the Soul Core
- tests: prisoner chain + defect rate, temple prayer + core healing

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-03 07:53:58 +01:00
Richard ZinkandClaude Opus 5.5 903d6fb0f4 Defence towers: arrow (piercing), cannon (splash + knockback), magic (mana, slow, chain); 3 levels, repair by imps, heroes attack towers; torture/temple room tools prepared
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-03 07:47:50 +01:00
Richard ZinkandClaude Opus 5.5 a1fe02ffa6 Imps reinforce walls next to claimed ground (heroes avoid them, ~10x slower to break)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-03 07:39:39 +01:00
Richard ZinkandClaude Opus 5.5 c508e232b0 Dig marks and hover follow the real block shape; sprites no longer clipped by walls behind them
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-03 07:25:46 +01:00
Richard ZinkandClaude Opus 5.5 5fd0d37c14 Faint block highlight on hover and inside the dig rectangle
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-03 07:03:47 +01:00
Richard ZinkandClaude Opus 5.5 f710a19351 Configurable map size (64-256, non-square), one portal per 64x64 tiles, guarded treasure caves, glowing dig-mark blocks
- New Game dialog with map width/height (steps of 32), remembered in settings
- map dimensions are per game; renderer chunks, minimap and camera follow them
- content scales with area; grace period grows with the distance to the Hero Gate
- treasure caves with rich gold, guarded by hero squads that hold their post
- marked blocks: translucent yellow box with outline on all edges
- savegame v2: packed run-length encoded tiles (256x256 map ~320 KB), v1 still loads
- tests: savegame round trip on 96x128, 256x256 generation/simulation/save

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-03 06:34:09 +01:00
Richard ZinkandClaude Opus 5.5 925be17e82 Own XM/MOD replayer, audio mixer with crossfades, synthesised chip sound effects, music director
- src/xm.rs: FastTracker 2 XM and ProTracker MOD replayer (verified against libopenmpt)
- src/audio.rs: music players with crossfade + effect voices, rendered on demand
- src/sfx.rs: 29 synthesised chip sound effects
- www/dc_plugin.js: AudioContext started on first input, streams samples from WASM
- music follows the game: title, rotating build tracks, battle, gate assault, jingles
- macroquad audio removed; all tests run natively with cargo test

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-03 06:10:28 +01:00
Richard ZinkandClaude Opus 5.5 2dba65be8b Soundtrack: XM composer script and 8 generated chiptune modules
tools/compose_music.py synthesises chip instruments and writes FastTracker 2 XM files
(editable in MilkyTracker). The title leitmotif runs through all pieces: title,
three build tracks, two battle tracks, victory and defeat jingles.
Validated with libopenmpt; instrument tuning checked (A4 = 440 Hz).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-03 05:57:55 +01:00
Richard ZinkandClaude Opus 5.5 fb7dab3683 Title screen, pause menu, settings dialog and savegames
- title screen (continue/new/load/settings/help) and Esc pause menu
- settings: language & sound, camera, graphics, game, rebindable keys;
  stored in localStorage and in every savegame (always applied on load)
- savegames as JSON (.dcsave): download, load via file picker or drag & drop
- autosave to localStorage every 2 minutes and when the tab is hidden/closed
- configurable wall detail, light count, interface size, game speed, hints
- audio behind a cargo feature so native tests run (cargo test --no-default-features)
- savegame round-trip test

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-02 23:08:33 +01:00
Richard ZinkandClaude Opus 5.5 fbf6f223fc Switch repo to English, add i18n with EN/DE language files and first-start language selection
- in-game texts moved to lang/en.lang and lang/de.lang (key = text, placeholders)
- game logic emits message keys + args, translated at display time
- localStorage access via own miniquad JS plugin (www/dc_plugin.js)
- code comments, DESIGN.md, CREDITS.md translated; README.md added

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-02 22:53:03 +01:00
Richard ZinkandClaude Opus 5.5 a101f6ddc4 Tile outlines on floors, wall tops and wall corners (toggle with G)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-02 22:45:36 +01:00
Richard ZinkandClaude Opus 5.5 220d9543cc 3D isometric renderer: chunked meshes with noise-displaced walls, lit shader with flickering torches, billboard sprites, rotatable/tiltable ortho camera, ray picking
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-02 22:42:10 +01:00
Richard ZinkandClaude Opus 5.5 91bb91b6ee WIP 3D renderer module, document music plans
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-02 22:37:32 +01:00
Richard ZinkandClaude Opus 5.5 58c1041173 Auto torches on claim, pickup by entity index, document planned features
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-02 22:30:53 +01:00
Richard ZinkandClaude Opus 5.5 80f8335b6d Name DungeonCraft, 3D-Entscheidungen dokumentiert
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-02 22:24:34 +01:00
Richard ZinkandClaude Opus 5.5 b4b4fea45b Fix: ö/ò in DINOBYTE vertauscht, quad_net-Plugin-Fehler im Browser abgefangen
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-02 22:20:24 +01:00
Richard ZinkandClaude Opus 5.5 db417b3af8 Renderer, Oberfläche, Eingabe, Sound-Modul, Simulationstest und Docker-Setup (Port 18093)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-02 22:16:41 +01:00
Richard ZinkandClaude Opus 5.5 14e481cffb Umstellung auf macroquad: endlose Wellen, Heldentor mit Verteidigern, Angriffsflagge, Sound-Events, Grafikmodul mit DINOBYTE-Bitmap-Font (CC BY 4.0) und CP437-Rahmen
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-02 22:09:38 +01:00
Richard ZinkandClaude Opus 5.5 ec9cab9453 Design-Entscheidungen dokumentiert
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-02 21:57:55 +01:00
Richard ZinkandClaude Opus 5.5 a569aff7a8 Projektgerüst, Karte/Wegfindung und Spiellogik
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-02 21:49:10 +01:00