How to upload a new game

    To upload a new game, submit a file ending in .jep.json that follows the schema described below.

    The schema is also defined in this JSON schema file and in this JSON editor.

    Schema definition

    {
      "title": "Your Title",
      "author": "Author Name",
      "copyright": "(c) Copyright Holder",
      "note": "any note",
      "boards": [ ... board objects ]
    }

    A game is a series of "boards". Each board looks like so:

    {
      "categoryNames": [
        "Apples",
        "Bananas"
      ],
      "categories": [
        {
          "name": "Apples",
          "note": "Name the apple variety.",
          "clues": [
            {
              "clue": "This apple variety is named after a city in New York State",
              "answer": "Empire",
              "value": 200
            }
            // ... more clues
          ]
        },
        {
          "name": "Bananas",
          "clues": [ ... clues for category 2 ],
        }
      ]
    }

    A clue can be wagerable or not. Wagerable clues allow players to wager on the answer and win or lose that value instead of the clue's value. The "wagerable" field is not required.

    Clues can also be long-form or not. For long-form clues, all players may write down their answers over a longer time period instead of competing to buzz in. Long-form clues must also be wagerable.

    A clue may have an associated image. To add one, set "imageSrc" to a URL pointing to the image. Jep! does not host images. Images must come from one of the allowed domains.

    Type definition

    interface Game {
      title: string;
      author: string;
      copyright: string;
      note: string;
      boards: Board[];
    }
    
    interface Board {
      categoryNames: string[];
      categories: Category[];
    }
    
    interface Category {
      name: string;
      clues: Clue[];
      note?: string;
    }
    
    interface Clue {
      clue: string;
      answer: string;
      value: number;
      wagerable?: boolean; // default false
      longForm?: boolean; // default false
      imageSrc?: string;
    }

    Example full game (copy, modify, paste)

    {
      "title": "** your title **",
      "author": "** your author **",
      "copyright": "** your copyright **",
      "note": "** your note **",
      "boards": [
        {
          "categoryNames": [
            "** round 1, category 1 **",
            "** round 1, category 2 **",
            "** round 1, category 3 **",
            "** round 1, category 4 **",
            "** round 1, category 5 **",
            "** round 1, category 6 **"
          ],
          "categories": [
            {
              "name": "** round 1, category 1 **",
              "note": "** optional category note **",
              "clues": [
                {
                  "clue": "** clue **",
                  "answer": "** answer **",
                  "value": 200
                },
                {
                  "clue": "** clue **",
                  "answer": "** answer **",
                  "value": 400
                },
                {
                  "clue": "** clue **",
                  "answer": "** answer **",
                  "value": 600
                },
                {
                  "clue": "** clue **",
                  "answer": "** answer **",
                  "value": 800
                },
                {
                  "clue": "** clue **",
                  "answer": "** answer **",
                  "value": 1000
                }
              ]
            },
            {
              "name": "** round 1, category 2 **",
              "clues": [
                {
                  "clue": "** clue **",
                  "answer": "** answer **",
                  "value": 200
                },
                {
                  "clue": "** clue **",
                  "answer": "** answer **",
                  "value": 400
                },
                {
                  "clue": "** clue **",
                  "answer": "** answer **",
                  "value": 600,
                  "wagerable": true
                },
                {
                  "clue": "** clue **",
                  "answer": "** answer **",
                  "value": 800
                },
                {
                  "clue": "** clue **",
                  "answer": "** answer **",
                  "value": 1000
                }
              ]
            },
            {
              "name": "** round 1, category 3 **",
              "clues": [
                {
                  "clue": "** clue **",
                  "answer": "** answer **",
                  "value": 200
                },
                {
                  "clue": "** clue **",
                  "answer": "** answer **",
                  "value": 400
                },
                {
                  "clue": "** clue **",
                  "answer": "** answer **",
                  "value": 600
                },
                {
                  "clue": "** clue **",
                  "answer": "** answer **",
                  "value": 800
                },
                {
                  "clue": "** clue **",
                  "answer": "** answer **",
                  "value": 1000
                }
              ]
            },
            {
              "name": "** round 1, category 4 **",
              "clues": [
                {
                  "clue": "** clue **",
                  "answer": "** answer **",
                  "value": 200
                },
                {
                  "clue": "** clue **",
                  "answer": "** answer **",
                  "value": 400
                },
                {
                  "clue": "** clue **",
                  "answer": "** answer **",
                  "value": 600
                },
                {
                  "clue": "** clue **",
                  "answer": "** answer **",
                  "value": 800
                },
                {
                  "clue": "** clue **",
                  "answer": "** answer **",
                  "value": 1000
                }
              ]
            },
            {
              "name": "** round 1, category 5 **",
              "clues": [
                {
                  "clue": "** clue **",
                  "answer": "** answer **",
                  "value": 200
                },
                {
                  "clue": "** clue **",
                  "answer": "** answer **",
                  "value": 400
                },
                {
                  "clue": "** clue **",
                  "answer": "** answer **",
                  "value": 600
                },
                {
                  "clue": "** clue **",
                  "answer": "** answer **",
                  "value": 800
                },
                {
                  "clue": "** clue **",
                  "answer": "** answer **",
                  "value": 1000
                }
              ]
            },
            {
              "name": "** round 1, category 6 **",
              "clues": [
                {
                  "clue": "** clue **",
                  "answer": "** answer **",
                  "value": 200
                },
                {
                  "clue": "** clue **",
                  "answer": "** answer **",
                  "value": 400
                },
                {
                  "clue": "** clue **",
                  "answer": "** answer **",
                  "value": 600
                },
                {
                  "clue": "** clue **",
                  "answer": "** answer **",
                  "value": 800
                },
                {
                  "clue": "** clue **",
                  "answer": "** answer **",
                  "value": 1000
                }
              ]
            }
          ]
        },
        {
          "categoryNames": [
            "** round 2, category 1 **",
            "** round 2, category 2 **",
            "** round 2, category 3 **",
            "** round 2, category 4 **",
            "** round 2, category 5 **",
            "** round 2, category 6 **"
          ],
          "categories": [
            {
              "name": "** round 2, category 1 **",
              "clues": [
                {
                  "clue": "** clue **",
                  "answer": "** answer **",
                  "value": 200
                },
                {
                  "clue": "** clue **",
                  "answer": "** answer **",
                  "value": 400
                },
                {
                  "clue": "** clue **",
                  "answer": "** answer **",
                  "value": 600
                },
                {
                  "clue": "** clue **",
                  "answer": "** answer **",
                  "value": 800
                },
                {
                  "clue": "** clue **",
                  "answer": "** answer **",
                  "value": 1000
                }
              ]
            },
            {
              "name": "** round 2, category 2 **",
              "clues": [
                {
                  "clue": "** clue **",
                  "answer": "** answer **",
                  "value": 200
                },
                {
                  "clue": "** clue **",
                  "answer": "** answer **",
                  "value": 400
                },
                {
                  "clue": "** clue **",
                  "answer": "** answer **",
                  "value": 600
                },
                {
                  "clue": "** clue **",
                  "answer": "** answer **",
                  "value": 800
                },
                {
                  "clue": "** clue **",
                  "answer": "** answer **",
                  "value": 1000
                }
              ]
            },
            {
              "name": "** round 2, category 3 **",
              "clues": [
                {
                  "clue": "** clue **",
                  "answer": "** answer **",
                  "value": 200
                },
                {
                  "clue": "** clue **",
                  "answer": "** answer **",
                  "value": 400
                },
                {
                  "clue": "** clue **",
                  "answer": "** answer **",
                  "value": 600
                },
                {
                  "clue": "** clue **",
                  "answer": "** answer **",
                  "value": 800,
                  "wagerable": true
                },
                {
                  "clue": "** clue **",
                  "answer": "** answer **",
                  "value": 1000
                }
              ]
            },
            {
              "name": "** round 2, category 4 **",
              "clues": [
                {
                  "clue": "** clue **",
                  "answer": "** answer **",
                  "value": 200
                },
                {
                  "clue": "** clue **",
                  "answer": "** answer **",
                  "value": 400
                },
                {
                  "clue": "** clue **",
                  "answer": "** answer **",
                  "value": 600,
                  "wagerable": true
                },
                {
                  "clue": "** clue **",
                  "answer": "** answer **",
                  "value": 800
                },
                {
                  "clue": "** clue **",
                  "answer": "** answer **",
                  "value": 1000
                }
              ]
            },
            {
              "name": "** round 2, category 5 **",
              "clues": [
                {
                  "clue": "** clue **",
                  "answer": "** answer **",
                  "value": 200
                },
                {
                  "clue": "** clue **",
                  "answer": "** answer **",
                  "value": 400
                },
                {
                  "clue": "** clue **",
                  "answer": "** answer **",
                  "value": 600
                },
                {
                  "clue": "** clue **",
                  "answer": "** answer **",
                  "value": 800
                },
                {
                  "clue": "** clue **",
                  "answer": "** answer **",
                  "value": 1000
                }
              ]
            },
            {
              "name": "** round 2, category 6 **",
              "clues": [
                {
                  "clue": "** clue **",
                  "answer": "** answer **",
                  "value": 200
                },
                {
                  "clue": "** clue **",
                  "answer": "** answer **",
                  "value": 400
                },
                {
                  "clue": "** clue **",
                  "answer": "** answer **",
                  "value": 600
                },
                {
                  "clue": "** clue **",
                  "answer": "** answer **",
                  "value": 800
                },
                {
                  "clue": "** clue **",
                  "answer": "** answer **",
                  "value": 1000
                }
              ]
            }
          ]
        },
        {
          "categoryNames": ["** round 3, final category **"],
          "categories": [
            {
              "name": "** round 3, final category **",
              "clues": [
                {
                  "clue": "** clue **",
                  "answer": "** answer **",
                  "value": 0,
                  "wagerable": true,
                  "longForm": true
                }
              ]
            }
          ]
        }
      ]
    }