Skip to content

Create the command line interface system #47

Description

@blalasaadri

In the game, the player will have to "interface with the ship's computers from within by learning one of the most powerful tools available: The Command Line" (as described in the game readme). What this means is basically:

  • under certain conditions (maybe always, maybe only when the player is in a certain state, e.g. in a specific room) a command line interface will be visible
  • this interface will have to accept text input and be able to return text output, similar to e.g. a terminal running Bash.
  • it has to be possible to define commands that the CLI will recognize, including
    • the command itself
    • possible arguments
    • a white- or blacklist for when the command can be used
    • the output of the command (which may depend on the arguments)
    • effects to the game state, that running this command will have (depending on both the current game state and the given arguments)

An example of how this may look is:

There are also several open questions, including:

  • should the user be able to edit text files? If so, a navigation within a 2D environment (the text file) is required.
  • should there be a history of previously called commands? If so, how many commands should be saved in the history at any given point in time? (e.g. the last 5 commands)
  • should tab completion be available?
  • should arguments be possible in any order?
  • should combined arguments with spaces (e.g. --room 2) be allowed or should those always be connected (e.g. --room=2)?
  • should any kind of scripting be allowed? (e.g. branching, loops, pipes, ...)

An MVP would be an interface that is:

  • always visible to the player
  • accepts text input
  • recognizes commands
  • recognizes combined arguments (so --room=2 is one argument but --room 2 would be two)
  • allows the definition of output which may depend on the arguments
  • allows limited game state changes (e.g. calling the bcs --room=2 --device=lamp activate command may cause the lamp in room 2 to be activated

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions