Creating Mission Objectives

XII. Creating Mission Objectives

If you’ve followed this tutorial all the way through, from beginning to end, you should now have the knowledge to make fairly detailed Thief maps. You can create terrain, place objects, give yourself weapons, and even define patrol routes for your AIs. Now we come to the most advanced (read: confusing) part of this tutorial: creating mission objectives. If you enter into the current level, you can kill the guard and steal the scepter…but then you’re just sort of stuck there, hanging around with nothing to do. In other words, you have to “pretend” that stealing the scepter is your goal, because DromEd doesn’t yet recognize that (or anything else) as an actual objective.

In order to assign objectives, you must specify a mission’s quest data. Go to the top of the screen, to the menu bar, and click “Editors.” Then, click “Mission Quest Data.” Don’t worry – nothing is supposed to happen. That’s because you haven’t yet specified any quest data. When you have specified this information, clicking “Mission Quest Data” will bring up a small “Quest Data” dialog box, containing all the objective and difficulty information for that mission. So, we need to enter in this information. Understanding these concepts, at least for the purposes of level creation, is a bit tricky…but this tutorial should at least teach you the basic principles needed for the creation of real missions, with real objectives.

In order to implement objectives, you must first understand how DromEd views those objectives. So, this section of the tutorial will first explain the concepts behind objectives and difficulty levels, and then teach you to actually implement them in your missions.

First and foremost, every objective you include must be given a number, and the first objective must be given the number 0. So, if you have three objectives, they would be numbered 0, 1, and 2. Again, they must be numbered in this way.

Next, each objective has a “state,” which indicates whether or not it has been completed or not. DromEd recognizes four states for objectives: “incomplete,” “complete,” “inactive,” and “failed.” If you’ve played Thief, you will have seen, on the “Objectives” screen, visible representations of each of these states: “incomplete” is marked by an empty box, meaning that objective has not yet been fulfilled; “complete” is marked by a green check mark, meaning that objective has been satisfied (like when you steal an objective item); “inactive” is marked by a red circle with a line through it, meaning that objective is no longer active or applicable; and “failed” is marked by a red “x” (though at that point, because of the failure of an objective, the mission will usually end before you can even notice this mark on the “Objectives” screen).

DromEd uses the following numbering convention for objective states:

0=incomplete
1=complete
2=inactive
3=failed

When making Thief levels with DromEd, each objective must be marked with a 0 (zero) for “incomplete,” meaning that at the beginning of a mission, each objective has yet to be accomplished by the player. These objectives will be marked either “complete” or “failed” according to the actions of the player.

The next thing a budding level designer needs to know is that in Thief, objectives can be either visible or invisible. Visible objectives are those the player can see on the “Objectives” screen right at the start of the game; so, when starting a Thief mission with visible objectives, the player knows exactly what he or she is supposed to do. A good example of a visible objective can be seen in Thief’s “Lord Bafford’s Manor” mission, where the player has to steal Lord Bafford’s scepter: “Steal the jeweled scepter with as little notice as possible.” An invisible objective, on the other hand, is one the player is not aware of at the start of a mission. A good example of an invisible objective can be seen in Thief’s “Assassins” mission, where the player, after tailing two would-be hit men back to Ramirez’s mansion, has to then steal the purse from Ramirez’s belt. The objective to steal the purse is an invisible objective, because it doesn’t show up on the player’s “Objectives” list at the beginning of the mission; instead, that objective is added after the player tails the two assassins back to the mansion. Subsequently, if you set off the alarm during the course of the mission, exiting Ramirez’s mansion will give you yet another objective: to make it back to your “home turf.”

For the purposes of designing Thief missions with DromEd, it is imperative that you realize something about mission objectives before you actually begin the creation process: the “ConVict” script only supports visible objectives! So, you could not create a mission with the complexity of “Assassins,” because all of the objectives must be visible to the player at the start of that mission. So, you could easily create a mission that required the player to enter a certain building, steal a certain object, and then retreat to a certain location…but the player would have to be aware of all of these objectives at the beginning of the mission. You could not, however, create a mission that required the player to steal a certain object…and then gave that player a new objective after the object was actually stolen.

DromEd uses the following numbering convention for objective visibility/invisibility:

0=invisible
1=visible

So, as stated, each objective must be numbered 1, for “visible.” [Important Note: By now, you may be wondering exactly where these numbers come into play. Don’t worry – that will be explained shortly.]

You now know that, for the purposes of level design with DromEd, each objective has a “state” (incomplete, complete, inactive and failed) and a visibility (visible, invisible). Well, there are obviously different kinds of objectives as well. The public release of DromEd supports four different kinds of objectives, with the following numbering scheme:

1=Steal an object
2=Kill a creature
3=Get a certain amount of loot
4=Go to a location

[Note: Objectives are covered in more detail in the “ConVict” document. There are some variations of the objectives you see here. For example, you could easily have an objective that prevents you from killing a certain creature or creature type. Also, in order to learn how to create loot objectives (ie., steal 500 gold pieces on “Normal” level), you must refer to the ConVict document!]]

You could include just one or all four of these objective types in your mission. So, the player could be required to steal an object…or the player could be required to steal an object, kill a creature, get a certain amount of loot, and go to a certain location.

You can even use multiple objectives of the same type, if you wish. For example, the player could be required to steal two different objects, kill three different monsters, and then go to a certain location.

So, how do you enter all this data into DromEd? The first thing you should do is write down on a piece of paper all the objectives you want, starting with the number 0. Using the sample level we’ve made, let’s have two objectives: stealing the scepter and killing the guard. This would read as:

1=Steal the scepter
2=Kill the guard

Now, before we can tell DromEd what the actual objectives are, we have to indicate that each one will be “incomplete,” and “visible,” as already stated in the tutorial; each of these commands must be entered in separately. The command used for entering in objective data is “quest_create_mis” — without the quotation marks, of course. Get used to this command, because we’ll be using it quite often.

The variable for entering in the “state” of an objective is “goal_state_x, 0” – where “x” is a variable representing the number of that particular goal, and “0” is the number corresponding to the state we want – incomplete. So, the entire variable you would need to enter (in the command line) is exactly as follows:

quest_create_mis goal_state_0, 0

[Important Note: The first number is always the number of the objective you’re referring to, and the second number is always the number that corresponds to a specific DromEd command. Always use the above format: number, comma, space, number.]

After this line is entered in, go back up to the menu; go to “Editors,” and “Mission Quest Data.” You’ll notice that the small “Quest Data” dialog box now comes up, and lists the info you’ve entered. Click the “Cancel” button to close the window.

[Note: You can use the “Quest Data” window to directly edit variables you’ve entered in. Just highlight the variable, click “OK,” and you can change the variables’s “Name” and “Value.”]

Confused? Let’s dissect that line to see what you’re telling DromEd to do. “Quest_create_mis” is the standard command for entering in objective data. Then, you use a space and type in the rest of the command. “Goal_state_0, 0” means that objective 0 (steal the scepter) is going to be marked with a 0, meaning it is incomplete. What all this means is that when you start the mission, the objective “Steal the scepter” will have an unchecked box next to it on the “Objectives” screen, because that objective has yet to be fulfilled.

Of course (now things get even trickier) the objective “Steal the Scepter” won’t appear on the “Objectives” screen at all unless you mark that objective as visible, meaning the player can see it right at the beginning of the mission. To mark our first objective as visible, use the following command exactly as you see here:

quest_create_mis goal_visible_0, 1

Hopefully, by now you are gaining an understanding of how objective data is entered into the command line. With the above line, we told DromEd that objective 0 (steal the scepter) would be marked with a 1, meaning it is visible at the start of a mission.

[Important Note: So, in case you haven’t already figured it out, you must enter in the “goal_state” and “goal_visible” variables for everyobjective you have, and each one must be made “incomplete” and “visible.”]

Now that we’ve set the state and visibility of the first goal (steal the scepter), follow the examples above and set the state and visibility of the second goal (kill the guard).

[Important Note: If you screw something up and need to delete a variable you’ve entered in, use the command “quest_delete” and then the variable you entered. So, if you wanted to delete the line “quest_create_mis goal_state_0, 0” you would type in:

quest_delete goal_state_0

You would not use the comma and second number because you’re not trying to set anything for goal 0 – you’re simply trying to delete goal 0. So, you need only indicate the number of the objective (goal), which in this case is 0, for our first objective, “Steal the scepter.”]

Okay, we’ve told DromEd that we’ve got two objectives, and that each one will be visible and marked as incomplete at the beginning of the mission…but we haven’t yet told DromEd what those objectives are. For each objective, we must enter in two commands: one to indicate what the objective is, and one to indicate what the subject of that objective is. So, for the first objective – “Steal the scepter” – we need to tell DromEd two things: 1.) The player needs to steal an object; 2.) The object the player needs to steal is the jeweled scepter. To do this, we use the commands “goal_type” and “goal_target.”

Type in:
quest_create_mis goal_type_0, 1

The above line tells DromEd that objective 0 will require the player to steal an item.

Now, find the scepter object you placed on the table, click it, and make a note of its number. Then, type in:

quest_create_mis goal_target_0, x (where “x” is the number of the scepter)

The above line tells DromEd that the subject of objective 0 (which we just defined as “steal an object”) is the scepter.

Using the examples above, let’s enter in the data for the second objective – “Kill the guard.” First, we would use the following command:

quest_create_mis goal_type_1, 2

The above line tells DromEd that objective 1 will require the player to kill a creature.

Then, we would use:

quest_create_mis goal_target_1, x (where “x” is the number of the guard)

The above line tells DromEd that the subject of objective 1 (which we just defined as “kill a creature”) is the guard.

Before you can get the objectives enabled, there’s one more thing you must do, and that is to assign the “VictoryCheck” script to your Starting Point. Click on the Starting Point to select it, and then click the “Properties” button to bring up the “Properties” window. The, click “Add,” and choose “S,” and then “Scripts.” This will bring up a small “Scripts” box with a few different fields. In the “Script 0” field, type in “VictoryCheck” (one word – without the quotation marks) and then click the “OK” button. Click the appropriate buttons to close out the windows and return to DromEd.

Now that you’ve actually got real objectives, enter into game mode by hitting “Alt+G.” Once there, hit the “O” key to bring up the “Objectives” screen. You should see two small, empty boxes to the left of the screen, with no text next to them. Those objectives are, in order from top to bottom: Steal the scepter; and kill the guard. The reason there are no text descriptions of the objectives is because this information hasn’t been entered in yet. Don’t worry – we’ll come to that a bit later. For now, it’s enough to know that we have two objectives: the first requires you to steal the scepter; the second requires you to kill the guard. Hit the “Done” button on the “Objectives” screen to return to game mode. Then, kill the guard – either nail him with an arrow from a distance, or get behind him and backstab with the sword. [Note: If you knock the guard out with the blackjack, he’ll be merely unconscious, and not dead. To finish him off, you’ll have to hack away at his unconscious body with your sword.] When the guard is dead, return to the “Objectives” screen and note that there is now a green check mark in the second box. That’s because you’ve completed the second objective – “Kill the Guard.” Exit the “Objectives” screen and steal the scepter – the mission will end, meaning you also completed the first objective – “Steal the scepter.”

XIII. Creating Difficulty Levels

If you’ve made it this far, you’re to be commended! Learning how to implement real objectives into your missions is the test of a true Thief level designer. And, if you can do that, you can take the objective formula even further and incorporate difficulty levels into your missions.

The first thing you need to realize when creating different difficulty levels is that you first need to create all the objectives, as discussed in the previous section of this tutorial. So, even if you have objectives that only show up on certain difficulty levels, those objectives need to be created before you do anything else. Since we already have two objectives in place, let’s use those to illustrate the differences in difficulty levels. Right now, our objectives are: “Steal the scepter” and “Kill the guard.” Whenever we enter the game, we must accomplish these objectives. But let’s modify things a bit, so that the “Kill the guard” objective is only required when we play the game on “Expert” difficulty level.

DromEd recognizes three different difficulty levels, with the following numbering scheme:

0=Normal
1=Hard
2=Expert

To tell DromEd which objectives will be available on which difficulty level, there are two different commands we can use: “goal_min_diff” and “goal_max_diff.” “Goal_min_diff” is the minimum difficulty that objective would be available. “Goal_max_diff” is the maximum difficulty that objective would be available. So, let’s say the “Normal” and “Hard” difficulty levels required you to steal 300 gold worth of loot, and the “Expert” difficulty level required you to steal 500 gold worth of loot. The goal “Steal 300 gold worth of loot” would use the “goal_max_diff” command, set to the number 1, for Hard difficulty. So, basically, this would tell Dromed that the goal “Steal 300 gold worth of loot” would apply to all difficulty levels, up to the maximum difficulty level of “Hard.” We don’t want to apply this objective beyond the “Hard” difficulty level because we want the “Expert” level to require stealing 500 gold worth of loot. To specify that objective, we would use the “goal_min_diff” command and set the number to 2, for “Expert” difficulty. This would tell DromEd that the goal “Steal 500 gold worth of loot” would only apply to difficulty level of “Expert” and above. Of course, there is no difficulty level higher than “Expert,” but that’s okay. That just means the program will apply that difficulty level to just “Expert,” which is exactly what we want.

Let’s get back to our tutorial level. Remember, we want the objective “Steal the scepter” to apply on all difficulty levels, and the objective “Kill the guard” to apply only on the “Expert” difficulty level. So, for the “Steal the scepter” objective, we wouldn’t need to specify any conditions. For the “Kill the guard” objective, however, we would need to enter in the following command line:

quest_create_mis goal_min_diff_1, 2

The above line basically tells DromEd that objective 1 (“Kill the guard”) will be applied to the minimum difficulty level of 2, which is “Expert.”

[Note: Remember, “Kill the Guard” is objective 1, because objective 0 is “Steal the scepter.”]

Now it’s time to test out the difficulty levels. Normally (and this is something that will be covered in the next section), a person playing your mission would select a difficulty level through the pre-mission screen, just as they would when playing any Thief level. But during the course of level design, you need to be able to check your work in DromEd. You do this by using the difficulty level selection command. To play the mission on a particular difficulty, type in:

quest_create_mis difficulty, x (where “x” is the difficulty level you want to play at)

So, to play the tutorial mission on the “Normal” difficulty level, type in:

quest_create_mis difficulty, 0

Now, enter into game mode and hit the “O” button to bring up the “Objectives” screen. You should notice that there is now only one small box…meaning there is only one objective. That’s because we’re playing on the “Normal” difficulty level, and we set the “Kill the guard” objective as an “Expert” difficulty level. So, on “Normal” difficulty, this objective wouldn’t even be available. If we had wanted to play the mission on the “Expert” difficulty level, thereby enabling that second objective, we would have used the command:

quest_create_mis difficulty, 2

You should only use the “set difficulty” command to test out a particular difficulty level through DromEd. If you set a particular difficulty level, and then save the file, the mission will be “stuck” on that level, even if the player chooses another difficulty level on the pre-game screen. So, if we set the tutorial mission to “Expert” difficulty and then saved the mission, anyone who played the mission would be forced to do so at the “Expert” level. If you do save the mission while it’s set to a particular difficulty level, you must delete the difficulty command and resave in order for the mission to operate correctly. So, you would use this command:

quest_delete difficulty


About this entry