Commit graph

33 commits

Author SHA1 Message Date
16706a1ecf Scale difficulty by run position; wipe towers at phase end
Follow-up pass on the 2.0 refactor, closing the gap between "waves are drawn
at random" and "difficulty still lives in the enemy assets".

- Enemy health is no longer authored per enemy type. New EnemyScalingConfig
  scales a per-zone HP *budget* by encounter number; per-enemy health is that
  budget divided by the wave's enemy count. Scaling the total rather than the
  per-enemy value keeps enemy count a texture knob (few tanks vs many swarmers)
  instead of a second, uncontrolled difficulty axis. EnemyDefinition.MaxHp
  becomes HpMultiplier, a deviation around 1.0. Speed stays archetype-only and
  unscaled -- escalating it compounds with health and invalidates tower balance
  mid-run.
- GoldConfig entries no longer reference a WaveDefinition. Payout is a property
  of run position, not of which wave got drawn: WaveGoldEntry ->
  EncounterGoldEntry, Waves -> Encounters, keyed by global encounter number.
  Its inspector labels elements "Encounter N" and projects cumulative earnings.
- The wave's voted buffs now show as icon badges in the top bar, read from the
  same RunState slot the spawn path uses so the display can't drift from what
  the enemies actually carry. Hover names the buff; unillustrated cards fall
  back to a lettered badge rather than vanishing.
- Clearing a phase's boss destroys every built tower, unrefunded. Queued build
  jobs still refund -- those towers were never delivered. Runs with the field
  empty, so the walkability churn doesn't hit the re-path scheduler.
- Fixed an RPC codegen break: [ClientRpc] requires a ClientRpc suffix, unlike
  the newer [Rpc(SendTo...)] style this file doesn't use.
- Setup checklist reordered into dependency order; it previously asked for a
  RunDefinition two sections before creating one.

Also carries the editor-side asset reorganisation into Definitions/RunDefinitions
and the sprite move into Enemy/Player draft icon folders.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-31 00:32:33 -07:00
4892d7253d First pass at full refactor to 2.0 design
Restructures the game around the cyclical run loop from Game Design Doc V2:
5 waves = a cycle, 3 cycles = a phase, each phase ends in a boss.

- New TD.Gameplay.Waves: WaveGroup / PhaseDefinition / RunDefinition author the
  run as draggable weighted pools; RunState owns phase/cycle position, the drawn
  wave slots, and the per-slot enemy buff sets. WaveManager's flat wave array is
  gone -- it now only runs the encounter RunState points at.
- New TD.Gameplay.EnemyUpgrades: the post-wave enemy-buff vote, with public
  live-replicated ballots so the HUD can show who voted for what.
- Inter-wave flow is now strictly sequential: draft -> vote -> build, each stage
  ending early once every player has acted.
- Enemy abilities inverted from per-instance random rolls to deterministic,
  stacking per-wave-slot sets. Six cards ship: Split (reworked), Flight, Blink,
  No Bounty, Gold Theft, Double Up.
- Tower upgrades are a two-step tree: a draft pick unlocks a node, gold converts
  an already-placed tower in place.
- Boss encounters flag their enemies and drive a boss HP bar.
- Player cap reduced to 3 via MatchRules.MaxPlayers.
- GoldConfig is now keyed by global encounter number rather than wave index.

Compiles clean; NOT yet verified in-engine. Editor wiring still required --
see Docs/2.0_Setup_Checklist.md.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-30 17:45:11 -07:00
Ben Calegari
0b7bc936ef Add settings menu to control audio and return to main menu 2026-07-28 22:02:28 -07:00
Ben Calegari
726af6d379 Fix retry after defeat 2026-07-28 20:47:06 -07:00
330a929985 remove deprecated buff system 2026-07-21 21:20:30 -07:00
4375350901 added text entry system for debug console 2026-07-20 23:48:20 -07:00
a33d951abd Updates to spells, HUD, Gold, and Camera Controls. New sound effects! 2026-07-18 18:12:56 -07:00
fe2c59d326 tab once selects builder, tab twice focuses builder 2026-07-16 20:49:13 -07:00
52f7bfdf51 Merge pull request 'tower-sell' (#12) from tower-sell into main
Reviewed-on: #12
2026-07-14 23:54:08 -07:00
7cf15dcaa6 draft options working; spells won't cast though 2026-07-14 20:56:50 -07:00
9be31b1645 Add tower Sell action with refund + coin VFX/SFX
Owner-validated sell RPC refunds SellRefundPercent of invested gold (Wall refunds 100% while un-upgraded), despawns the tower, and broadcasts a coin-burst VFX + rustle SFX. Refunds do not count as per-wave income. Investment/upgrade tracking added as the seam for the future upgrade system.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-14 20:05:06 -07:00
d53a2a47e2 slightly slower fire rate, change fire rate name 2026-06-29 19:50:22 -07:00
b0ca2e1d28 Merge branch 'feature/draft-system' 2026-06-24 00:27:03 -07:00
3ceebed8f6 Adding the bones of the drafting system by removing the wall and siege towers from the base set and adding them temporarily as choices for the draft. Also adding Project_Context and Project_Roadmap documents to use with Claude 2026-06-24 00:15:17 -07:00
Ben Calegari
4f57499e40 Seige tower 2026-06-23 23:12:48 -07:00
117c77b4a8 Adding new tower types and concept of tower deck 2026-06-23 21:55:12 -07:00
8f394e1d92 fix bugs 2026-06-23 20:26:55 -07:00
1256c46359 B button launches upgrade menu 2026-06-23 19:57:38 -07:00
b772a7d4a2 purchase buffs menu works 2026-06-23 19:57:38 -07:00
Ben Calegari
04ead32846 Paint towers with some the colors of the wind 2026-06-03 00:00:14 -07:00
a911d0f13e Adding a ton of materials and textures, and adding terrain! 2026-05-26 23:59:57 -07:00
3dcc0e7edd Updating HUD, Gold Config, and finishing off Play flow for 9player map. 2026-05-22 12:18:23 -07:00
a7be12fa9b Adding 9 Player level 2026-05-21 23:36:19 -07:00
fdada6f132 Adding new Races, Main Menu -> Lobby flow, and what's needed to set up multiplayer testing. 2026-05-17 23:31:02 -07:00
60fa58b07f Comitting lobby code without testing. 2026-05-15 14:30:15 -07:00
66f84652dc Everything related to chat functionality, and updating the projectile prefab to rotate properly 2026-05-15 13:40:13 -07:00
f6cc6a7102 Adding Text Mesh Pro, new enemies, new enemy waves, new HUD functionality, New animators, a retry function, and floating text for gold earned and lives lost. 2026-05-13 17:39:16 -07:00
c100db52e5 Major updates to the HUD and selectable objects 2026-05-11 23:57:35 -07:00
bc557af624 Finish Phase 1.2 HUD: selection wiring, command grid context, build progress bar
- Builder.DisplayName: stub property ("Builder (P{n})") for portrait label; swaps
  to real player name when MatchState lands in Phase 1.3
- HUDController: subscribe SelectionState.OnSelectionChanged in OnEnable/OnDisable;
  HandleSelectionChanged drives portrait label + grays out command grid when nothing
  is selected; Start() seeds initial state in case builder auto-selected before Start
- BuildSiteVisual: ComputeProgressNormalized() public API ([0,1], safe on any client);
  OnNetworkSpawn spawns a non-networked BuildProgressBar child
- BuildProgressBar: new world-space uGUI Canvas bar; green while Constructing, yellow
  while Paused, hidden while Queued; billboards to Camera.main each LateUpdate;
  auto-destroyed when parent BuildSiteVisual despawns

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-11 18:03:34 -07:00
6c37e569ab Minimap! 2026-05-10 22:26:55 -07:00
f7720a9915 Adding HUD! 2026-05-08 21:40:15 -07:00
9369763df5 Adding Gold Manager with initial network setup 2026-04-23 22:44:45 -07:00
048e618f1e Reorganizing Project Folder Structure 2026-04-23 21:24:23 -07:00