generated from UQcsse3200/game-engine
-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Labels
collaboration ticketCollaboration between teamsCollaboration between teamssprint 3Sprint 3 labelSprint 3 label
Description
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:
- New Hero: Create a new hero with distinct base stats, abilities, and assets/config.
- Balance: Adjust combat values (e.g., base damage/HP/attack rate) to more reasonable levels across heroes.
- Home UI: Implement a Hero Selection flow on the home screen (browse → inspect → confirm).
- 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
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
collaboration ticketCollaboration between teamsCollaboration between teamssprint 3Sprint 3 labelSprint 3 label