About⌗

text quest is an open source game engine for running text-based adventure games; using a low/no code approach to game design.

A list of available games can be found on the home page. You can also read more about the games in detail in the games section (be careful - spoilers alert!).

Motivation⌗

Text quest was create to:

  1. Inspire creative story writing (without images, CGI or video)
  2. Create a low/no code solution for building games (using YAML)
  3. Bootstrap something as quickly as possible to test the above (and not get bogged down with tooling, libraries and frameworks)
  4. Provide a little escapism during these unusual times

Game Design⌗

Games are defined using YAML. A sample game can be seen below, it contains the game, player, powers and single block (See: concepts for more detail):

game:
  name: Single Room Example Game
  version: 1.0
  description: Use commands to in a single room
  author: <a href="https://github.com/desholmes">Des Holmes</a>
  intro: '"Where am I?!?, maybe I should <b>look</b> around."</p>'

player:
  name: "Des"
  block: entrance
  bag:
  powers:
  blockHistory:

powers:
  help:
    description: "help: Lists your powers and any hints."
  look:
    description: "look: Use `look` for a description of your surroundings."
  powers:
    description: "powers: List the powers you have unlocked."

blocks:
  ######
  # SINGLE ROOM
  ######
  entrance:
    state: default
    states:
      default:
        name: "Single room"
        description: "You're in a single room game, nothing much to see in here."

Concepts⌗

Here’s an overview of the core concepts within a game:

  • Blocks: A block represents a single location within the game. A block can have:
    • exits: Connections to other blocks
    • states: Variations for a block state (containing exits, actions, items)
    • items: Items which are ‘visible’ from within a block state
    • actions: Actions which can be performed by the player within a block state, and actions which can be triggered automatically based on what a player is carrying
  • Game: The name, version and author for the game
  • Player: The name, current block location, powers and items they are carrying
  • Powers: Descriptions for powers a player can unlock (not listed here, as they are part of the game)
  • Items: Descriptions for items which the player can carry, or can be found in a block

You can read more details about the games and their design in the games section (🙈 spoilers alert!). The Sleepy Traveller (v1.2), Halloween (v1.0)

Technical Detail⌗

This project currently uses:

  1. JavaScript as the core programming language for the game engine
  2. Parcel web application bundler
  3. text-terminal for the terminal interface
  4. YAML to store the game configuration
  5. ascii generator for the logo
  6. github-fork-ribbon-css

Development⌗

If you’re interesting in contributing head over to the text quest GitHub project.

Future Roadmap⌗

The follow features are currently being considered for future development.

  1. Introduce characters as a concept (and associated powers)
  2. Cross over with voice activation project (coming soon)
  3. Upload/point to yaml URL (incl. Game yaml validator)
  4. Create a supporting website with docs and links to games
  5. Online game editor (visual, or text based)

Games⌗

Jump into a game to try it out:

-> 🎃 Halloween (v1.0) -> 😴 The Sleepy Traveller (v1.2)

Originally published on textquest.io, the dedicated website for the text quest project.