Skip to content

Challenge Hints

As a challenge designer, the challenge hints system allows you to provide progressive assistance to participants who are stuck on your challenge. Hints can have costs (in points) and can be configured with requirements to ensure they are revealed in a specific order.

Basic Structure

{
  "name": "Challenge Name",
  "hints": [
    {
      "id": 1,
      "title": "First Hint",
      "hint": "Hint content goes here.",
      "cost": 10
    },
    {
      "id": 2,
      "title": "More information",
      "hint": "An additional hint for the player.",
      "cost": 10,
      "requirements": [1]
    }
  ]
  //...
}

Hints Array

The hints field is an optional array of hint objects that can be provided to participants during the challenge.

Hint Object Fields

Field Type Required Description
id number Yes The unique id of the hint, used to link required hints in order.
title string Yes The title of the hint, displayed to participants before they use it
hint string Yes The content of the hint provided to participants
cost number No The cost of the hint in points (deducted from participant's score)
requirements number[] No List of hint ids that must be used before this hint can be used

Examples

Simple Hint

A basic hint without cost or requirements:

{
  "name": "Web Challenge",
  "hints": [
    {
      "id": 1,
      "title": "Check the source",
      "hint": "Have you looked at the HTML source code?"
    }
  ]
}

Hint with Cost

A hint that costs points when revealed:

{
  "name": "Crypto Challenge",
  "hints": [
    {
      "title": "Cipher Type",
      "hint": "This is a substitution cipher.",
      "cost": 50
    }
  ]
}

Progressive Hints

Multiple hints with requirements to ensure they are revealed in order:

{
  "name": "Binary Exploitation",
  "hints": [
    {
      "id": 1,
      "title": "Buffer Overflow",
      "hint": "Look for buffer overflow vulnerabilities in the input handling.",
      "cost": 25
    },
    {
      "id": 2,
      "title": "Return Address",
      "hint": "Try overwriting the return address on the stack.",
      "cost": 50,
      "requirements": [1]
    },
    {
      "id": 3,
      "title": "Shell Code",
      "hint": "You'll need to inject shellcode to get a shell.",
      "cost": 75,
      "requirements": [1, 2]
    }
  ]
}