# Creating Custom Levels for Wicked Quest Want to add your own levels? It's pretty simple! Every level is a JSON file, and you can create as many as you want. ## Getting Started 1. Make a directory under levels/ with your level pack name: levels/My Cool Levels/ 2. Start with 1.json in your new directory. Each level after that is numbered in order: 2.json, 3.json, etc. ## Basic Level Structure Every level needs these things: { "level_id": 1, "name": "My Level", "description": "Set the scene for your level.", "locked": false, "player_start": { "x": 0, "y": 0 }, "boundaries": { "left": 0, "right": 200 }, "ambience": "Graveyard Blitz.ogg", "footstep_sound": "footstep_stone" } If you set locked to true, the player may not leave the level until all enemies have been defeated. Drop custom ambience files, e.g. music or creepy sound track in sounds/ambience. Add custom footstep sounds into the sounds directory. ## Adding Objects All objects go in an "objects" list. Here are some examples of what you can add: ### Coins (Bone Dust) { "x_range": [5, 8], "y": 3, "sound": "coin", "collectible": true, "static": true } ### Coffins { "x": 15, "y": 3, "sound": "coffin", "type": "coffin", "item": "extra_life" } Items are optional, can be extra_life, hand_of_glory, jack_o_lantern, or anything from graves. ### Graves { "x": 35, "y": 0, "type": "grave", "sound": "grave", "static": true, "zombie_spawn_chance": 20, "item": "shin_bone" } Zombie spawn chance is 0-100, higher means more zombies. Item is also optional, can be shin_bone, guts, or any item from coffin. ### Enemies { "x_range": [20, 35], // patrol or hunting range "y": 0, "enemy_type": "goblin", // goblin, witch, ghoul, boogie_man, ghost, revenant "health": 4, "damage": 2, "attack_range": 1.5, "attack_pattern": { "type": "hunter", "turn_threshold": 5 } } Attacks can be "hunter" or "patrol". The "patrol" option does not use the "turn_threshold" option. The "turn_threshold" option is how quickly the hunting enemy will turn around to attack the player. Hunters will leave their area to pursue the player once he has entered the enemy's range. ### Hazards #### Skull Storm { "x_range": [40, 60], "y": 12, "type": "skull_storm", "damage": 4, "maximum_skulls": 2, "frequency": { "min": 1, "max": 4 } } The maximum setting is how many skulls can be falling at once. Frequence is the number of seconds that can expire before the next skull falls. #### Catapult { "x": 55, "y": 0, "type": "catapult", "fire_interval": 4000, // milliseconds between shots "range": 25 } #### Spider Web { "type": "spider_web", "x": 15, "y": 0 } ## Creating New Enemies Want to add a new enemy type? You'll need two sound files in the sounds directory: - enemy.ogg - The sound the enemy makes while alive - enemy_dies.ogg - The death sound For example, to add a werewolf enemy: - Add werewolf.ogg and werewolf_dies.ogg to the sounds directory - Use "werewolf" as the enemy_type in your level file ## Tips - Add at least 33 coins per level - Space out hazards to give players a chance - Enemy health: - Regular enemies: 4-6 HP - Mini-bosses: 8 HP - Bosses: 40+ HP - Lock boss levels with "locked": true - Test your levels thoroughly! Check out the Wicked Quest levels for more examples.