JSON Structure
Game
Globally, the game JSON consists of several large sections:
{ "game": {} /* Game settings, such as start time and passage sequence */, "gbonuses": [] /* List of global bonuses in the game */, "lines": [] /* List of passage lines */, "tasks": [] /* List of game levels */, }
Game Settings
{ "game": { "type": "1", /* Winner is determined by: "0": Points "1": Time */ "stat": "5", /* Statistics: "0": Open "1": Open without bonuses "2": Closed during the game "4": Summary only "5": Closed always "6": Completed tasks */ "team_limit": 0, /* Limit of players in the team */ "name": "#New Unnamed Game", /* Name */ "description": "", /* Description */ "finish_text": "", /* Finish text */ "html_header": "", /* Common HTML header */ "image": "", /* Image */ "start_time": "2021-10-17 12:00:00", /* Start */ "end_time": "2022-10-17 12:00:00", /* Finish */ "status": "3", /* Roster entry: "0": Automatically all "1": Automatically paid "2": Automatically all as testers "3": Manually */ "start_type": "0", /* Game start: "0": Simultaneous "1": Individual start time */ "price": 0, /* Price */ "currency": "UAH", /* Currency of price: "UAH" "USD" "EUR" "RUB" */ "kind": "0", /* Game type: "0": other "1": green "2": yellow "3": red "4": virtual */ "scenario": "0", /* Scenario: "0": Closed "1": Open in archive "2": Open in archive, but only to those who played "3": Open to teams that finished the game */ "answer_prefix": "ff", /* Code prefix */ "default_line": "" /* Default line (name) */ } }
Global Bonuses
{ "gbonuses": [ /* List of global bonuses in the game. Multiple items can be separated by commas */ { "code": "cc, dd", /* Answers */ "time": 0, /* Bonus time for completion */ "description": "", /* Task details */ "hint": "", /* Text after solution */ "first_task_n": 1, /* Available from task */ "last_task_n": 2 /* Available up to task */ } ] }
Lines
{ "lines": [ /* List of lines in the game. Multiple items can be separated by commas */ { "title": "Line 2", /* Line name */ "task_order": "1,2,3+4,5-7" /* Order */ } ] }
Level
A level in the game also has a composite structure:
{ "task": {}, /* Level settings, such as name or auto-transition time */ "codes": [], /* List of sectors or codes in the level. Multiple items can be separated by commas */ "bonuses": [], /* List of bonuses in the level */ "hints": [], /* List of hints in the level */ }
Level Settings
{ "task": { "number": 1, /* № */ "max_time": 3600, /* Auto-transition (seconds) */ "score": 10, /* Penalty/Score for no auto-transition */ "time_k": 1.0, /* Time multiplier x */ "delay": 0, /* Delay (for storm levels) */ "working_name": "Title", /* Name in the game */ "name": "In statistics", /* Name in statistics */ "surrender_code": "GiveUp", /* Skip Code */ "task": "Test", /* Task text */ "script": "alert(1)", /* Task script */ "answer": "Word in English", /* Answer format */ "answers_limit": 10, /* Input limit */ "answers_per_time": 60, /* per time interval */ "answers_limit_penalty": 10, /* penalty for each extra try */ "codes": 0, /* Codes needed for completion */ "code_bonus_time": 0, /* Auto-transition reduction (seconds) */ "code_bonus": 0, /* Bonus (in seconds) */ "finish_confirmation": "1", /* Close task: "0": Forcefully "1": Reasonably */ "hidden_bonuses": "0", /* Bonuses: Display in task: "0": List format "1": Compact in one line */ "bonuses_kind": "0" /* Bonuses: Open order: "0": Any "1": In order */ } }
Sectors
{ "codes": [ /* List of sectors or codes in the level. Multiple items can be separated by commas */ { "name": "Sector 1", "code": "a, b" /* Synonym codes separated by commas */ }, { "name": "Sector 2", "code": "c, d" /* Synonym codes separated by commas */ } ], }
Bonuses
{ "bonuses": [ /* List of bonuses in the level. Multiple items can be separated by commas */ { "number": 1, /* Sequence number of the bonus */ "code": "c, d", /* Answers */ "time": 0, /* Bonus time for completion */ "description": "", /* Bonus task description */ "hint": "", /* Text after solution */ "delay": 0, /* Delay of bonus appearance */ "duration": 0, /* Duration */ "duration_k": 0 /* Multiplier for remaining time */ } ] }
Hints
{ "hints": [ /* List of hints in the level. Multiple items can be separated by commas */ { "number": 1, /* Sequence number of the hint */ "info": "", /* Hint description */ "hint": "", /* Hint text */ "delay": 0, /* Time delay */ "penalty": 0 /* Penalty cost */ } ] }
Example of a Whole Game
Description of fields is here.
Example without descriptions:
- game_example.json
{ "game": { "type": "1", "stat": "5", "team_limit": 0, "name": "#New Unnamed Game", "description": "", "finish_text": "", "html_header": "", "image": "", "start_time": "2021-10-17 12:00:00", "end_time": "2022-10-17 12:00:00", "status": "3", "start_type": "0", "price": 0, "currency": "UAH", "kind": "0", "scenario": "0", "answer_prefix": "ff", "default_line": "" }, "tasks": [ { "task": { "number": 1, "max_time": 3600, "score": 10, "time_k": 1.0, "delay": 0, "working_name": "Title", "name": "In statistics", "surrender_code": "GiveUp", "task": "Test", "script": "alert(1)", "answer": "Word in English", "answers_limit": 10, "answers_per_time": 60, "answers_limit_penalty": 10, "codes": 0, "code_bonus_time": 0, "code_bonus": 0, "finish_confirmation": "1", "hidden_bonuses": "0", "bonuses_kind": "0" }, "codes": [ { "name": "Sector 1", "code": "a, b" } ], "bonuses": [ { "number": 1, "code": "c, d", "time": 0, "description": "", "hint": "", "delay": 0, "duration": 0, "duration_k": 0 } ], "hints": [ { "number": 1, "info": "", "hint": "", "delay": 0, "penalty": 0 } ] } ], "gbonuses": [ { "code": "cc, dd", "time": 0, "description": "", "hint": "", "first_task_n": 1, "last_task_n": 2 } ], "lines": [ { "title": "Line 2", "task_order": "1,2,3+4,5-7" } ] }
Example of a Whole Level
Description of fields is here.
Example without descriptions below:
- level_example.json
[ { "task": { "number": 1, "max_time": 3600, "score": 10, "time_k": 1.0, "delay": 0, "working_name": "Title", "name": "In statistics", "surrender_code": "GiveUp", "task": "Test", "script": "alert(1)", "answer": "Word in English", "answers_limit": 10, "answers_per_time": 60, "answers_limit_penalty": 10, "codes": 0, "code_bonus_time": 0, "code_bonus": 0, "finish_confirmation": "1", "hidden_bonuses": "0", "bonuses_kind": "0" }, "codes": [ { "name": "Sector 1", "code": "a, b" } ], "bonuses": [ { "number": 1, "code": "c, d", "time": 0, "description": "", "hint": "", "delay": 0, "duration": 0, "duration_k": 0 } ], "hints": [ { "number": 1, "info": "", "hint": "", "delay": 0, "penalty": 0 } ] } ]