OneLiteFeatherNET / OneLiteFeatherNET/Voyager

feat(race): synchronized countdown start and live position/timer HUD

Open
#169 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

enhancement gameplay player-feel
Dominant language
Java
Stars
0
Forks
0
Avg merge
2d 21h
Merged PRs (30d)
12

Description

Description

All players in a Race Mode session must start simultaneously via a shared 3-2-1-GO countdown. Movement and ring collision are suppressed before the GO signal. The HUD gains a live elapsed-timer action bar and a race position display.

Acceptance Criteria

  • A 3-2-1-GO countdown is broadcast to all players in the lobby phase before map start
  • Player movement and elytra launch are blocked until the GO signal fires
  • Ring collision events are ignored until the GO signal fires
  • After GO, an elapsed timer displays in the action bar (format: `MM:SS.ms` or `SS.ms`)
  • A race position display shows each player's current place (e.g. `1 / 4`) and gap to the leader
  • `HudComponent` is extended to carry timer and position state
  • Countdown is implemented in `MinestomLobbyPhase` or a dedicated `CountdownPhase`
  • Timer starts at the exact tick the GO signal fires (consistent across all players)
  • Unit tests cover countdown sequence and freeze/unfreeze transitions
  • Minestom testing framework used for phase-level tests

Technical Details

  • The freeze mechanic must not interfere with camera movement (look direction remains free)
  • Position ranking is recomputed every tick based on rings completed, then elapsed time as tiebreaker
  • `HudComponent` is a Java record; use a builder or `with*()` pattern for updates
  • The GO signal is a server-side event dispatched via the phase system, not a client packet race

Dependencies

  • #168 (time-bracket scoring — timer must align with the same start tick used for scoring)

Estimate

M

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with MinestomLobbyPhase, the possible dedicated CountdownPhase, and the HudComponent record; review dependency #168 to align the shared start tick. Use the Minestom testing framework for phase-level tests covering the countdown and freeze/unfreeze transitions, and verify the timer, position, gap, and movement behavior against the acceptance criteria.

Written by the indexing model from the issue text.

Assessment

Tech stack
java
Domain
game-dev
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.