Quest HUD: an objective tracker, and quests that speak #132

Closed
opened 2026-08-28 12:20:34 +00:00 by metaheavens · 1 comment
Owner

Sub-ticket of #129.

  • A small tracker on the HUD showing the current quest and its progress. Same visual idiom as the wave alert (#100): a neon panel, drawn geometry, no art.
  • It must not fight the wave alert or the resource readout for space.
  • Quests announce themselves through the existing narration banner, so a new objective is a dialog the player acknowledges (#128) rather than a caption that slides past.
  • Hidden during the prologue - the prologue is already talking.
Sub-ticket of #129. - A small tracker on the HUD showing the current quest and its progress. Same visual idiom as the wave alert (#100): a neon panel, drawn geometry, no art. - It must not fight the wave alert or the resource readout for space. - Quests announce themselves through the existing narration banner, so a new objective is a dialog the player acknowledges (#128) rather than a caption that slides past. - Hidden during the prologue - the prologue is already talking.
Author
Owner

Done in 397983b.

Two halves, deliberately not one node.

ui/QuestTracker.gd is the standing objective: title, task, and a progress bar, in the wave alert's idiom - neon geometry, no art. It sits under the alert on the right so the two stack rather than argue, and it stands down whenever a full-screen panel is open, which is the HUD's existing rule for anything sitting behind a menu. A one-of-one goal shows no counter, because "0 / 1" reads as a broken readout rather than as a task not started.

world/QuestDirector.gd is the voice. Quests announce themselves through the narration banner, so a new objective is something the player acknowledges and the game waits for (#128) rather than a caption that slides past.

The reason those are separate: quests advance in GameState, which keeps running on a planet surface where there is no banner at all. A line emitted straight at a banner from down there would simply be lost. So GameState queues lines and the director drains whichever banner is alive. Both scenes now carry a banner, a tracker and a director, so a quest finished underground is announced underground - and if one is ever finished somewhere with no banner at all, the next one that exists reads it out instead of dropping it.

The tracker is an ordinary pausable node, so it is frozen behind a dialog like the rest of the HUD and comes up as the line closes. The line and the panel say the same thing, so there was nothing to gain from having both on screen at once.

Done in `397983b`. Two halves, deliberately not one node. `ui/QuestTracker.gd` is the standing objective: title, task, and a progress bar, in the wave alert's idiom - neon geometry, no art. It sits under the alert on the right so the two stack rather than argue, and it stands down whenever a full-screen panel is open, which is the HUD's existing rule for anything sitting behind a menu. A one-of-one goal shows no counter, because "0 / 1" reads as a broken readout rather than as a task not started. `world/QuestDirector.gd` is the voice. Quests announce themselves through the narration banner, so a new objective is something the player acknowledges and the game waits for (#128) rather than a caption that slides past. The reason those are separate: quests advance in `GameState`, which keeps running on a planet surface where there is no banner at all. A line emitted straight at a banner from down there would simply be lost. So `GameState` *queues* lines and the director drains whichever banner is alive. Both scenes now carry a banner, a tracker and a director, so a quest finished underground is announced underground - and if one is ever finished somewhere with no banner at all, the next one that exists reads it out instead of dropping it. The tracker is an ordinary pausable node, so it is frozen behind a dialog like the rest of the HUD and comes up as the line closes. The line and the panel say the same thing, so there was nothing to gain from having both on screen at once.
Sign in to join this conversation.
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
metaheavens/spaceship#132
No description provided.