Skip to content

[Gameplay/UI] Add new hero, rebalance combat values, implement home hero selection & hero profile UI #165

@zhaohacker8

Description

@zhaohacker8

Description

Introduce a new playable hero, rebalance combat values for fairness and clarity, and add end-to-end hero selection and profile UI on the home screen.

This task includes:

  1. New Hero: Create a new hero with distinct base stats, abilities, and assets/config.
  2. Balance: Adjust combat values (e.g., base damage/HP/attack rate) to more reasonable levels across heroes.
  3. Home UI: Implement a Hero Selection flow on the home screen (browse → inspect → confirm).
  4. Profile UI: Design and implement the Hero Profile panel that shows stats, ability summary, and flavor text.

Requirements

  • Config-driven: Add hero definition(s) to config (e.g., configs/hero.json/configs/heroes.json): id, displayName, portrait, baseStats {hp, damage, attackRate, speed}, abilitySummary, unlock state, etc.
  • Balance targets: Document target ranges for damage/HP/attackRate and align all heroes to those ranges; avoid one-shot / infinite-stun style outliers.
  • Selection flow: From Home → Hero Select → Profile → Confirm, the chosen hero becomes the active one for the next session.
  • Persistence: Persist the last selected hero (e.g., in save/profile) and restore on next launch.
  • Profile UI: Show portrait, name, stats (with units), ability summary, and clear Select/Back actions.
  • Accessibility/UX: Keyboard/controller and mouse support; focus states; safe area; text contrast; helpful empty/error states.
  • Performance/Robustness: Lazy-load portraits; null-guards for assets/camera/renderer; dispose listeners/resources correctly.

Milestones

List of steps that need to be completed for this task.

  • Define config schema and add entry for the new hero (+ update existing heroes).
  • Implement balance pass (damage/HP/attack rate/speed); update tests & docs.
  • Build Hero Selection view on the home screen (grid/carousel + highlight).
  • Build Hero Profile panel (portrait, stats, abilities, flavor, Select/Back).
  • Wire selection → set active hero → persist → load on boot.
  • Add analytics/logs (optional): selection events, time in view, cancel/confirm ratio.
  • QA pass (accessibility/perf), fix issues, and update changelog + screenshots/GIF.

Completion Deadline: TBD


User Story

  • As a player, I want to pick my hero on the home screen, inspect their stats and abilities, and start with the hero I prefer.
  • As a player, I want balanced combat values so different heroes feel fair, distinct, and viable.
  • As a team, we want a config-driven hero system that's easy to extend and tune.

Acceptance Criteria

New Hero

  • The new hero appears in the selection list with correct portrait/name.
  • In-game, the hero spawns with config-defined base stats and abilities.

Balance

  • All heroes’ damage/HP/attack rate fall within documented target ranges.
  • No regression tests fail; smoke test shows time-to-kill and survivability in expected bands.

Hero Selection

  • Home → Select Hero displays available heroes; clicking one opens Profile.
  • Select sets the active hero for the next session; Back returns without side effects.
  • The last selected hero is restored upon relaunch.

Profile UI

  • Shows: portrait, name, stats with units (e.g., DPS, HP, attacks/sec), ability summary, and flavor text.
  • Button/Focus states visible; disabled states consistent; works with mouse and keyboard/controller.

Stability & Perf

  • No NPEs from missing assets/camera; no frame hitches on open/close; resources disposed on scene change.

Documentation

  • Hero config fields and examples (new hero + existing heroes).
  • Balance methodology and target ranges.
  • Wireframe / screenshots / GIF for Selection and Profile UI.
  • Known limitations and future improvements (e.g., filters, rarity, unlock rules).

Test Plan

Automated

  • Unit: load hero config → instantiate hero with expected stats.
  • Unit: balance helpers (e.g., DPS calc) return expected values.
  • UI: selection state machine (idle → viewing profile → confirmed).
  • Persistence: save/load last selected hero.

Manual

  • Navigate with mouse and keyboard/controller; focus/hover behave correctly.
  • Portraits and texts load quickly; no missing textures.
  • Select hero → start game → stats/abilities match profile.
  • Relaunch the game → previously selected hero auto-restored.
  • 10–15 min playtest: no crashes/hangs; UI remains responsive.

Risks & Mitigations

  • Risk: Balance feels off (too strong/weak).
    Mitigation: Define target bands; quick tuning via config; add DPS/TTK sanity checks.
  • Risk: Asset loading causes jank.
    Mitigation: Lazy-load + cache portraits; prefetch on hover; avoid blocking main thread.
  • Risk: State desync between selection/persistence.
    Mitigation: Single source of truth; explicit save points; integration tests.

Definition of Done

  • All Acceptance Criteria pass.
  • New hero playable; balance updated; selection/profile UI complete.
  • Config-driven and documented; tests green; demo GIF attached.
  • PR reviewed and merged.

Meta

Assignees: @zhaohacker8 (Chenxu Zhao)
Reviewers: @teammate-1 @teammate-2
Labels: sprint 2, team 2
Type: Task
Project: 2025 Studio 4 Project
Estimate: 3–5 SP Priority: High

Metadata

Metadata

Assignees

Labels

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions