Page MenuHomePhabricator

Updated 755 Days AgoPublic

Blocks | Artifacts | Fossils | Minerals
Controls and Gameplay | Narration
Math Puzzles

EuroPython 2020 Sprint | Map Generation | Player Movement | Puzzle Screen | Miners Log
Graphics | sound_design


Tasks are split into four sectors of teams of two people. The sectors are as follows:

  • Map Generation: This team will handle the map creation of the game. This covers cases where the player walks off of the screen. It will also cover item distribution.
  • Player Movement: This team will handle the logic of the avatar's location and surroundings. This will cover cases where the player is free climbing and moving. It also covers cases where the player moves out of the way when using TNT.
  • Math Screen: This team will handle the math logic. This includes the pop-up screen that the player can use to work through the given math problem. It also covers handling PEMDAS issues by teaching steps of simplification (for 6/2*3, solve 6/2 before starting the *3 part).
  • Miner's Log: This team will handle cases where the player checks the miner's log or opens the menu and the hotkeys used to do this. It also covers what features can be found on the menu.

Summary and Goals

Design Goal: Accessibility First

DiamondQuest was originally conceived of as a game for a student with cerebral palsy, who could only use a computer by tapping individual keys with a head pointer. This meant the student could not play any game which (a) required use of the mouse, (b) required key combinations, or (c) required time-sensitive responses or reflex reactions.

The game should be designed for motion-impaired players first and primarily, while ensuring the resulting game is still enjoyable by other players. This means we must work within the following design parameters:

  1. One Finger Rule: The game should be fully playable and enjoyable with only one finger, simulating a head pointer or other motion impairment.
  1. No Death Scenario: Accidental key presses are more frequent with some motion impairments. This means that there will be no lava pools or other hazards.
  1. No Reaction Times: The player should have unlimited time to make decisions and solve puzzles in the game. There should be no timers, time constraints, or required reactions.
  1. Audio Feedback: Use sound design and narration to make this game playable by vision-impaired players, and to reduce how often a player with a head pointer has to look up. Done right, even a completely blind player could enjoy the game, although this is not the primary target.
  1. Highly Visible: All graphics, especially the math problems, should be easily readable. (Implementation Note: Jason should be able read the numbers at two feet without his glasses.)

Educational Goal: Reward-Driven Math Practice

DiamondQuest is a math practice game which allows the player to control the difficulty, and which encourages higher difficulty and more effort with greater rewards. The game was originally designed for math drills (basic operations), but provides a good medium for computation practice.

We want the game to provide a fun and comfortable experience to players of varying skill levels, including players with math anxiety. This means we must work within the following design parameters:

  1. Self-Leveling: Properties of the math problems presented are controlled within the context of gameplay (no level settings).
  1. Increased Difficulty, Increases Reward. The easiest problems should yield a decently fun game; harder problems yield more fun.
  1. Simple Gameplay: Gameplay mechanics should be kept simple; the math should be the central challenge.
  1. No Failure/Death Scenarios. Players with math anxiety may experience worsening symptoms if there is a possibility of death or setback. This means that there will be no lava pools or other hazards.
  1. Calm Atmosphere: Design should focus entirely on the excitement of discovery and beauty of the underground. No creepy elements! The game's design should actively counteract math anxiety symptoms.


World and Blocks

(See Blocks)

Gameplay takes place on a, 2D, block-based map. The player can occupy a single empty block. The map continues to generate as the player moves through it. The top boundary of the map is a single, breakable, flat layer of grass/grassroot blocks, above which is air. The bottom boundary is made up of unbreakable Mantle Rock.

The rest of the map is made up primarily of Stone Blocks, with Mineral Blocks, Artifact Blocks, and Fossil Blocks randomly distributed. The distribution rate is constant throughout the map, but the rarity of the Blocks increases with depth.

Cavern systems can naturally generate.

Different "regions" are randomly selected for different sections of the map. Each region increases the probability of particular sets of Artifacts, Minerals, and Fossils.

Because there are only three types of Blocks that yield Items, when a new version of DiamondQuest is released with new Items, no map generation needs to take place. The items are selected when the Block is broken, not sooner.

Player Avatar

  • Controls

    See Controls and Gameplay


    The game music should be ambient and relaxing, but still related to the underground theme.

    Sounds and narration should be used to make the game playable without needing to look up from the keyboard. This also makes it more playable by vision-impaired users.

    • Changing Tool and Power Level has different sounds.
    • Change selection sounds to indicate proximity to valuable blocks. For example, a different sound will play when a valuable block is three away from the selection, two away, adjacent, and selected. This allows the player to select the direction they want to dig without having to look up.
    • Different sounds for walking and climbing, and for when the character reaches a wall in the current direction of motion. Sound should also be different (echo or pitch?) when adjacent to no walls, one wall, two walls, and three walls. This will make it possible, and less frustrating, to move around in game without looking.
    • While solving math problems, numbers and symbols are narrated when selected, as well as initially ("Five plus three. [Blip] Five. [Blip] Three. [Thonk] Blank.")
    • Number and operator entry should be in a distinctly different voice (female vs. male?) than existing number and operator narration.
    • Different sounds when breaking Stone, Artifact, Mineral, and Fossil blocks.
    • Each Item will need narration for its name and Collection, and some prompt when it's new to the Log: "New Item! Byzantine Water Jug"

    See also, Narration

    Scout Tool

    The Scout tool (S) narrates how many item blocks are nearby, how many are in the sector (column), and what the current depth is.

    Math Problems & Difficulty Level

    See Math Puzzles


    DiamondQuest's gameplay is simple, but there is room for boundless expansion in later versions by adding more Items. There are three types:

    • Artifacts are obtained from Artifact Blocks. These are human-made objects from different civilizations.
    • Fossils are obtained from Fossil Blocks. These are bones and fossils.
    • Minerals are obtained from Mineral Blocks. These are gems and other valuable and interesting minerals.

    It's possible to get more than one of any given Item. The count should be noted in the Miner's Log. However, the game should emphasize when a new Item is found, as opposed to another of an already found Item.


    The first time a player profile is created, they should be walked through the gameplay control and mechanics with narration. This tutorial is playable again from the menu.

    Last Author
    Last Edited
    Jul 20 2020, 9:20 AM

    Event Timeline

    jcmcdonald created this object with edit policy "DiamondQuest [Project] (Project)".
    jcmcdonald published a new version of this document.
    jcmcdonald edited the content of this document. (Show Details)
    jcmcdonald edited the content of this document. (Show Details)
    jcmcdonald edited the content of this document. (Show Details)
    jcmcdonald edited the content of this document. (Show Details)
    jcmcdonald edited the content of this document. (Show Details)
    jcmcdonald edited the content of this document. (Show Details)
    jcmcdonald edited the content of this document. (Show Details)
    jcmcdonald removed subscribers: jafrazier, bdlovy.