Skip to content

Show relevant input hints in all scenes #1430

@wjt

Description

@wjt

Currently we only show input hints in a few places, e.g.:

  • On the lower island of Fray's End, where you start the very first time you play (directions + interact)
  • In the first round of ink combat ("repel")
  • At the very start of the stealth challenge ("sprint")

As suggested in a number of places, e.g.:

I think we should show input hints at all times at the bottom of the screen, but only the relevant actions. So this would mean:

  • Always show "[Shift] Run"
  • When an interaction is possible, show the "[Space] Interact" prompt
  • When repelling ink is possible, show the "[Space] Repel" prompt
  • When grappling is possible, show those hints
  • etc (I've probably forgotten some actions)

An open question: do we have to show the directions at all times? Or perhaps only at the very start of the game? It's pretty hard to forget how to move around, whereas it's easy to forget the other actions.

I would implement this as follows:

  • Create a new scene at scenes/ui_elements/input_hints/input_hud.tscn which contains all the possible hints (perhaps with some on the left and some on the right) and properties controlling whether they're visible
    • These hints are already defined as scenes in scenes/ui_elements/input_hints
    • Replace the instances of those individual hints in scenes like frays_end.tscn with the unified input_hud.tscn
  • Make the hints dynamic:
    • Attach a script which in _ready() finds the Player node (by looking at nodes in the player group)
      • Connect to the mode_changed signal on that node
      • At scene start and whenever the mode changes, show or hide elements as needed
    • Add func can_interact() -> bool to player.gd and a signal for when its value changes, based on what player_interaction.gd thinks
      • Connect to this signal too and adjust the visibility of the "interact" prompt
  • Now add this scene to every remaining level

(I would work on this in at least those 3 stages, not all at once.)

The alternative is to make the HUD a global scene - it would work much the same way but would need to reload its state on every scene change.

XP Summary (total 750)

Subdomain Skill XP
Game Design: Game Feel & UX Problem Solving 75
Game Design: Game Feel & UX Creativity & Design Thinking 150
Game Design: Game Feel & UX Technical Literacy 150
Engineering: Gameplay & Systems Programming Problem Solving 150
Engineering: Gameplay & Systems Programming Creativity & Design Thinking 75
Engineering: Gameplay & Systems Programming Technical Literacy 150

Metadata

Metadata

Assignees

Labels

No labels
No labels

Projects

Status

Done

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions