Missions

From Dashkin Wiki
Jump to: navigation, search

This page provides an overview for missions as well as instructions for creating your own mission data files.


Missions

Missions are single player game in which a user must complete a series of stages in order to achieve a certain rank and completion level. Missions can span multiple stages in which different levels, sublevels, game modes, and cutscenes can be used.

The simplest mission is a single stage on a level with the mission controlling the victory / loss conditions and the stage merely setting up the map and objectives for the user.

Stage

A stage is a single map with a set of victory and loss conditions in which a player can achieve a rank. A stage can load in sublevels for additional content.

Simple Setup

The recommended setup for a mission is to :

  1. Have single stage
  2. Have the mission control victory / loss conditions
  3. Have the mission control the tier ranking conditions
  4. Use time for a ranking condition
  5. Use goals for a victory condition
  6. Use goals or time for a loss condition
  7. Have the stage control the game mode, map, and color schemes
  8. Include the Multiplayer sublevel option
  9. Have the stage skip the Post-Stage screen
  10. Have the mission always unlocked

Troubleshooting

  • I cannot see my mission show up in the list.
    • Make sure that the 'ShipMission' option is set to true

Ranks

Rank Description
None This rank isn't included in the tier list, but is used for when a user has completed a level but not achieved any rank.
Bronze This rank is shown for completing 'bronze' tier. This rank is supposed to be easy to achieve. Its image is a 3-leaved flower.
Silver This rank is shown for completing 'silver' tier. This rank is supposed to be nominal to achieve. Its image is a 4-leaved flower.
Gold This rank is shown for completing 'gold' tier. This rank is supposed to be hard to achieve. Its image is a 5-leaved flower.
Platinum This rank is shown for completing 'platinum' tier. This rank is supposed to be difficult to achieve. Its image is a 6-leaved flower.
Diamond This rank is shown for completing 'diamond' tier. This rank is supposed to be very difficult to achieve. Its image is a 7-leaved flower.

Levels

This is the list of levels which can be used by your Stage.

Level Description
GL_SunnyDay The wide open grasslands map
GL_FoggyNight The midnight ridge / foggy night map
Forest_day_01 The gloomy hall long forest map
Forest_night_01 The Mushroom Hall map with lots of mushrooms
CV_Cavern_01 The Howling Caverns map with lots of multicolored plants.
CV_Cavern_02 This is a new map that is unavailable as of now
Training The small training court.

Sublevels

This is the list of available sublevels to be used by your Stage.

GL_SunnyDay

Sublevel Description
SL_Multiplayer_01 The multiplayer spawn points & goals.
SL_Collect_Tut_01 An easy brackensack collection mission.
SL_DistShoot_Tut_01 The small distance-shoot tutorial.
SL_PreciseShoot_Tut_01 The small precision shooting tutorial. 'Spikey'
SL_Tower_01 The popup tower sublevel.
SL_WallJump_01 The wall jumping collection mission.

GL_FoggyNight

Sublevel Description
SL_Multiplayer_01 The multiplayer spawn points & goals.

Forest_day_01

Sublevel Description
SL_Multiplayer_01 The multiplayer spawn points & goals.

Forest_night_01

Sublevel Description
SL_Multiplayer_01 The multiplayer spawn points & goals.

CV_Cavern_01

Sublevel Description
SL_Multiplayer_01 The multiplayer spawn points & goals.

CV_Cavern_02

Sublevel Description
SL_Multiplayer_01 The multiplayer spawn points & goals.

Training

Sublevel Description
SL_Multiplayer_01 The multiplayer spawn points & goals.

Ranks

Rank Description
None This rank isn't included in the tier list, but is used for when a user has completed a level but not achieved any rank.
Bronze This rank is shown for completing 'bronze' tier. This rank is supposed to be easy to achieve. Its image is a 3-leaved flower.
Silver This rank is shown for completing 'silver' tier. This rank is supposed to be nominal to achieve. Its image is a 4-leaved flower.
Gold This rank is shown for completing 'gold' tier. This rank is supposed to be hard to achieve. Its image is a 5-leaved flower.
Platinum This rank is shown for completing 'platinum' tier. This rank is supposed to be difficult to achieve. Its image is a 6-leaved flower.
Diamond This rank is shown for completing 'diamond' tier. This rank is supposed to be very difficult to achieve. Its image is a 7-leaved flower.

Mission Creation

All missions are located inside of your Dashkin install folder. The default install path for mission data is C:\Users\%USERNAME%\AppData\Local\BrackenwoodGames\Dashkin\App\Dashkin\Missions. To add a new mission you must :

  1. Create a new mission file like so 'MyMission_01.json'
  2. Fill out this mission options in proper json format in the file
  3. Add this json file to the mission data directory

A good reference for how missions are created are the mission data files shipped with the game themselves. To get your bearings I would recommend copying an existing and modifying it to test out that everything works as you expect.

Here is an example configuration file :

{  
   "Name":"Training_1",
   "LockedName":"Locked",
   "UnlockedName":"The Pit",
   "Header":"In the Beginning",
   "Description":"A traditional BrackenSack training pit. Hit the ball onto the right-side targets. Left-side targets do not count!",
   "LockedDescription":"Locked",
   "Thumb":"TRAINING",
   "Ctx":"OFFLINE",
   "PlayerNumber":1,
   "SkillRating":1,
   "Category":"TRAINING",
   "Stages":[  
      {  
         "Name":"Stage 1",
         "Header":"In the Beginning",
         "IntroMessage":"Go",
         "Map":"TRAINING",
         "BGM":"DEFAULT",
         "GameMode":[  
            {  
               "Type":"CANDASH",
               "Value":"false"
            }
         ],
         "NoWinConditions":false,
         "WinConditions":[  
            {  
               "Condition":"GOAL",
               "Threshold":10,
               "Comparison":"GTE"
            }
         ],
         "LossConditions":[  
            {  
               "Condition":"OWNGOAL",
               "Threshold":3,
               "Comparison":"GTE"
            }
         ],
         "FailureMessage":"Failed",
         "CompletionMessage":"Success",
         "IntroCutscene":"NONE",
         "ExitCutscene":"NONE",
         "ResultTier":{  

         },
         "Objectives":[  
            {  
               "Name":"Experiment"
            },
            {  
               "Name":"Score Goals"
            }
         ],
         "ColorScheme":"BROWNS",
         "CameraType":"DEFAULT",
         "EntityType":"DASHKIN",
         "BallType":"LEATHERBALL",
         "SkipPreStageScreen":false,
         "SkipPostStageScreen":true,
         "ResetLevel":true,
         "CutsceneCompletion":{  
            "AlwaysPlay":false,
            "SeenIntro":false,
            "SeenExit":false
         },
         "StageNumber":0,
         "HasNext":false,
         "UIOptions":{  
            "ShowLeftScore":true,
            "ShowRightScore":false,
            "ShowClock":true,
            "ShowObjectives":true
         }
      }
   ],
   "RankedStat":"TIME",
   "ResultTier":{  
      "Bronze":[  
         {  
            "Condition":"TIME",
            "Threshold":100,
            "Comparison":"LTE"
         }
      ],
      "Silver":[  
         {  
            "Condition":"TIME",
            "Threshold":90,
            "Comparison":"LTE"
         }
      ],
      "Gold":[  
         {  
            "Condition":"TIME",
            "Threshold":80,
            "Comparison":"LTE"
         }
      ],
      "Platinum":[  
         {  
            "Condition":"TIME",
            "Threshold":70,
            "Comparison":"LTE"
         }
      ],
      "Diamond":[  
         {  
            "Condition":"TIME",
            "Threshold":60,
            "Comparison":"LTE"
         }
      ]
   },
   "IntroCutscene":"NONE",
   "ExitCutscene":"NONE",
   "Objectives":[  
      {  
         "Name":"Hit right-side targets"
      },
      {  
         "Name":"Do not hit left-side targets"
      }
   ],
   "MissionCompletion":{  
      "Completed":true,
      "Locked":false,
      "CurrStat":20,
      "CurrDuration":20,
      "RankedCondition":"TIME",
      "BestTier":"BRONZE",
      "CurrTier":"NONE",
      "BestStat":25,
      "BestDuration":25,
      "CutsceneCompletion":{  
         "AlwaysPlay":false,
      }
   },
   "NeverUnlocked":false,
   "AlwaysUnlocked":true,
   "ShipMission":true,
   "SortOrder":1
}

Mission Data Format

Here is a description of all elements available in a mission


{  
   "Name":"Training_1",
   "LockedName":"Locked",
   "UnlockedName":"The Pit",
   "Header":"In the Beginning",
   "Description":"A traditional BrackenSack training pit. Hit the ball onto the right-side targets. Left-side targets do not count!",
   "LockedDescription":"Locked",
   "Thumb":"TRAINING",
   "Ctx":"OFFLINE",
   "PlayerNumber":1,
   "SkillRating":1,
   "Category":"TRAINING",
   "Stages":[ ],
   "RankedStat":"TIME",
   "ResultTier":{  },
   "IntroCutscene":"NONE",
   "ExitCutscene":"NONE",
   "Objectives":[ ],
   "MissionCompletion":{ },
   "NeverUnlocked":false,
   "AlwaysUnlocked":true,
   "ShipMission":true,
   "SortOrder":1
}
Name Description Notes
Name The unique codename of the mission. This must be unique or things will be very angry. Codenames such as 'MyMission_01' are *highly* recommended.
Locked Name The name that will appear if the mission is locked. Just leave Locked Name unless you're doing something special
Unlocked Name The name that will appear if the mission is available to play. Make this short, but descriptive
Header The short text displayed in the pre-mission screen as an overview of the mission Make this short, but descriptive
Description The long form text shown on the pre-mission screen and mission selection screen.
LockedDescription The long form text shown in the mission selection screen when the mission is locked. Usually not needed
Thumb The thumbnail used in the pre mission and mission selection screen Options : LOCKED, TRAINING, SCORING, MOVEMENT, CONTROL, SOLO, TEAM, IMPOSSIBLE
Ctx Used for online rankings, leave alone for now. Options : OFFLINE
PlayerNumber Unused, leave as 1.
SkillRating Used to give people an idea of what difficult the mission is. Keep between 1-5
Category The category of mission Options : TRAINING, SOLO_1, SOLO_2, SOLO_3, TEAM_1, TEAM_2, TEAM_3, SCORING_1, SCORING_2, SCORING_3, MOVEMENT_1, MOVEMENT_2, MOVEMENT_3, CONTROL_1, CONTROL_2, CONTROL_3, IMPOSSIBLE
Stages An array of 'Stage' structures refer to the stage documentation on how to construct these objects.
RankedStat The stat used to determine the rank of the player refer to the list of stats for which stats are available. Usually use TIME
ResultTier The list of tier conditions to rank the player refer to the result tier documentation on how to create this object
IntroCutscene The intro cutscene to play for this mission. Leave this blank or as 'None'
ExitCutscene The exit cutscene to play for this mission. Leave this blank or as 'None'
WinConditions The list of conditions for completing this mission. refer to the conditions documentation for how to create this list.
LossConditions The list of conditions for losing this mission. refer to the conditions documentation for how to create this list.
Objectives The list of objectives for this mission. Refer to the objectives documentation on how to construct these.
MissionCompletion A temp structure for transient data Ignore this, leave it blank or don't include
UnlockedBy This is the list of missions that must be completed to unlock this mission. Leave this blank or create the list of data structures
AlwaysUnlocked Set this to true if you always want the mission unlocked.
ShipMission Set this to true to make the mission available to play. **THIS IS VERY IMPORTANT TO SET TO TRUE**
SortOrder The order in which this mission will appear in its category.

Stage Data Format

This is the description of how to create a stage object.

{  
 "Name":"Stage 1",
 "Header":"In the Beginning",
 "IntroMessage":"Go",
 "Map":"TRAINING",
 "BGM":"DEFAULT",
 "GameMode":[  
	{  
	   "Type":"CANDASH",
	   "Value":"false"
	}
 ],
 "NoWinConditions":false,
 "WinConditions":[  
	{  
	   "Condition":"GOAL",
	   "Threshold":10,
	   "Comparison":"GTE"
	}
 ],
 "LossConditions":[  
	{  
	   "Condition":"OWNGOAL",
	   "Threshold":3,
	   "Comparison":"GTE"
	}
 ],
 "FailureMessage":"Failed",
 "CompletionMessage":"Success",
 "IntroCutscene":"NONE",
 "ExitCutscene":"NONE",
 "ResultTier":{  

 },
 "Objectives":[  
	{  
	   "Name":"Experiment",
	   "Result":"INPROG"
	},
	{  
	   "Name":"Score Goals",
	   "Result":"INPROG"
	}
 ],
 "ColorScheme":"BROWNS",
 "CameraType":"DEFAULT",
 "EntityType":"DASHKIN",
 "BallType":"LEATHERBALL",
 "SkipPreStageScreen":false,
 "SkipPostStageScreen":true,
 "ResetLevel":true,
 "CutsceneCompletion":{  
	"AlwaysPlay":false,
	"SeenIntro":false,
	"SeenExit":false
 },
 "StageNumber":0,
 "HasNext":false,
 "UIOptions":{  
	"ShowLeftScore":true,
	"ShowRightScore":false,
	"ShowClock":true,
	"ShowObjectives":true
 },
 "TimeOfDay":{  
	"Enabled":false,
	"TimeOfDay":0,
	"TimeOfDayAdvance":2
 }
}
Name Description Notes
Name The name of the stage, this is user facing and shows up in the UI Keep short and descriptive
Header The short intro header in the pre mission screen describing this mission. Keep short and descriptive
IntroMessage A short intro message to show up in-game when the stage starts Make this a call to action
Map The map which will be used for this stage Refer to the list of levels above MAKE SURE ITS IN ALL CAPS!!!!!!!
BGM The music which will be used for the stage. Default for the stage's default level music Options : NONE, DEFAULT, CAVERNS1, FOREST1, FOREST2, GRASSLANDS1, GRASSLANDS2, MENUCREDITS, MENUTHEME, SPLASHSCREEN, TRAINING
Sublevels The list of map sublevels which will be loaded when the stage starts. This is a list, refer to the sublevels available for each level above.
LoadMultiplayerSublevel If the multiplayer sublevel is loaded for this stage. Usually this is true.
GameMode Global game mode overrides for this stage. Refer to the game mode options documentation in the server setup page for what options are available.
PlayerOverrides Player specific overrides for this stage Refer to the game mode options documentation in the server setup page for what options are available.
BotOverrides Bot specific overrides for this stage. Refer to the game mode options documentation in the server setup page for what options are available.
Actions Unused Leave blank or don't include
NoWinConditions Set this if there are no win conditions for the stage (the mission-wide win conditions will be used).
WinConditions This is the list of conditions required to end the stage with a win. Refer to the conditions documentation for how to construct
LossConditions This is the list of conditions required to end the stage with a loss. Refer to the conditions documentation for how to construct
FailureMessage This is a short message to display in-stage before the post-stage defeat screen
CompletionMessage This is a short message to display in-stage before the post-stage win screen
IntroCutscene This is the cutscene to play before starting the stage Unused, leave blank or don't include
ExitCutscene This is the cutscene to play before ending the stage Unused, leave blank or don't include
ResultTier This is the list of conditions for each result tier for this stage Refer to the result tier docs on how to make this object
Objectives This is a human readable list of objectives displayed in the UI in pre-stage screen. Refer to the objectives documentation on how to make this object
ColorScheme This is the color scheme used for the stage. Options : DEFAULT, CLASSIC, DARK, LIGHT, BROWNS, LIGHTFOREST, DARKFOREST, LIGHTCAVERNS, DARKCAVERNS
CameraType This is the camera type to be used in the stage. Options : Default, Close, Far, Test
EntityType This is the entity the player uses in the stage Options : Dashkin, Fatsack (fatsack is pretty broken)
BallType This is the type of ball used Options : Default, Leatherball, Fatsack
SkipPreStageScreen Set this to true in order to start the stage without any intro UI good for interrupting and transitioning game modes / play cutscenes
SkipPostStageScreen Set this to true in order to end the stage and move on without any exit UI In simple missions its a good idea to set this to true. good for interrupting and transitioning game modes / play cutscenes
CutsceneCompletion Unused, leave blank or don't include
StageNumber Unused, leave blank or don't include
HasNext Unused, leave blank or don't include
Tier Unused, leave blank or don't include
UIOptions Advanced UI options for controlling the stage's UI Refer to the UI options documentation about how to construct this object.
TimeOfDay Advanced options for time of day Refer to the time of day documentation about how to construct this object.

Objective Data Format

This is the description of how to create a stage object.

{  
        "Name":"Experiment"
}
Name Description Notes
Name A human readable short piece of text to describe the objective
Result Unused, do not include or leave blank

Result Tier Data Format

This is the description of how to create a ResultTier object

{  
  "Bronze":[  
	 {  
		"Condition":"TIME",
		"Threshold":100,
		"Comparison":"LTE"
	 }
  ],
  "Silver":[  
	 {  
		"Condition":"TIME",
		"Threshold":90,
		"Comparison":"LTE"
	 }
  ],
  "Gold":[  
	 {  
		"Condition":"TIME",
		"Threshold":80,
		"Comparison":"LTE"
	 }
  ],
  "Platinum":[  
	 {  
		"Condition":"TIME",
		"Threshold":70,
		"Comparison":"LTE"
	 }
  ],
  "Diamond":[  
	 {  
		"Condition":"TIME",
		"Threshold":60,
		"Comparison":"LTE"
	 }
  ]
}
Name Description Notes
Bronze The list of conditions for the bronze rank Refer to the condition documentation for how to make a condition
Silver The list of conditions for the silver rank Refer to the condition documentation for how to make a condition
Gold The list of conditions for the gold rank Refer to the condition documentation for how to make a condition
Platinum The list of conditions for the platinum rank Refer to the condition documentation for how to make a condition
Diamond The list of conditions for the diamond rank Refer to the condition documentation for how to make a condition

Conditions Data Format

This is the description of how to create a condition

{  
        "Condition":"OWNGOAL",
        "Threshold":3,
        "Comparison":"GTE"
}
Name Description Notes
Condition This is the stats which is used to compare Refer to the list below for all the options
Threshold What value we're comparing against
Comparison What sort of comparison (USUALLY LTE 'less than equal') Options : EQ, LT, GT, LTE, GTE (EQ = equal, LT = less than, GT = greater than, etc)


This is the list of stats available for conditions

Name Description
TIME The time in seconds.
WIN How many games were won.
LOSE How many games were lost.
GOAL The number of goals scored by the player on the opposing team.
OWNGOAL The number of goals scored by the player on their own team.
ASSISTS The number of assists by the player.
BALLTOUCH The number of ball touches by the player.
BT_SLIDE The number of ball slides by the player.
BT_KICK The number of ball kicks by the player.
BT_PUNCH The number of ball punches by the player.
BT_GROUNDPOUND The number of ball ground pounds by the player.
BT_AIRPOUND The number of ground pounds in the air by the player.
BT_POPUP The number of ball popups by the player
PLAYERTOUCH The number of hits on others by the player.
PT_SLIDE The number of slide hits on others by the player.
PT_KICK The number of kick hits on others by the player.
PT_PUNCH The number of punch hits on others by the player.
PT_KICK The number of kick hits on others by the player.
PT_GROUNDPOUND The number of ground pound hits on others by the player.
PT_AIRPOUND The number of ground pound air hits on others by the player.
PT_POPUP The number of popup hits on others by the player.
RUNINTOWALL The number of times the player has run into a wall.
JUMP The number of jumps the player has done.
AIRJUMP The number of air jumps the player has done.
WALLJUMP The number of wall jumps the player has done.
LAND The number of times the player has landed.
BALLLAND The number of times a ball his has the ground.
OBSTACLETOUCH The number of obstacles touched by the player.
TOUCHATTEMPTS The number of touch attempts a player has performed.
MATCHESPLAYED The number of matches a user has played
LOSSINROW The number of times the player lost in a row.
SCORE The total score for a player.
WINLOSS The player's win/loss percentage
WINSCORE The player's win score
ACCURACY The number of touches divided by the number of touch attempts (can be greater than 100%)
LEFTSCORE ** IMPORTANT ** The left team's score
RIGHTSCORE ** IMPORTANT ** The right team's score
COLLECT ** IMPORTANT ** The number of objects collected

Unlocked By Data Format

This is the data format for the unlocked by object. You can specify individual missions or an entire category. A 'NONE' tier means that you at least completed the mission or category.

{  
         "MissionName":"",
         "MissionCategory":"SOLO_1",
         "Tier":"NONE"
}
Name Description
MissionName This name of the mission required to be completed to unlock this mission. MUST BE EXACT!
MissionCategory The category of missions required to be completed to unlock this mission.
Tier The Tier required for the MissionName or MissionCategory. Options : NONE, BRONZE, SILVER, GOLD, PLATINUM, DIAMOND

UI Options Data Format

This the definition for the options available for the UI

{  
        "ShowLeftScore":true,
        "ShowRightScore":true,
        "ShowClock":true,
        "ShowObjectives":true
}
Name Description
ShowLeftScore If the left score is shown.
ShowRightScore If the right score is shown.
ShowClock If the clock is shown

Time of Day Data Format

This details the time of day options.

{  
        "Enabled":false,
        "TimeOfDay":0,
        "TimeOfDayAdvance":2
}
Name Description
Enabled 'true' or 'false' if the time of day is set by this structure.
TimeOfDay What time of day the stage starts in, 0-23
TimeOfDayAdvance The speed of the advance for time of day (usually 0)