Absolute Beginner’s Guide to Creating a Mission for Thief 2 (Part Nine)

Part Nine – Publishing your Mission

Before we release our mission, we need to package it up in such a way that it can be read by other users’ installations of Thief 2.

Finalising the mission

Make sure your mission is open in Dromed. Make sure that you’ve removed the NVDebug script and the marker that used it. Simply delete the marker, and to drop the script you can type script_drop nvdebug into the console.

Next click Tools > Complete Processing to ensure that the mission has been portalised, optimised, the pathfinding is built, the high quality lighting is processed, and the room database is up-to-date. Phew!

Now save the mission under a new filename – call it miss17.mis (to match the Dark Mission Description and folder structures you set up earlier). Now close Dromed as we are done with the mission file.


In your FM directory (FMs/Tutorial), create a new folder called strings. Next browse to your Thief directory/RES and open strings.crf using your archive software like WinRAR (it’s basically a zip file with a different extension). Find the file inside strings.crf called MISSFLAG.str and extract that file into your strings folder.

Now make a new folder inside the strings folder called english. Extract TITLES.str from the english folder in strings.crf and put it into strings/english in your install directory.

Now close strings.crf and open your extracted version of MISSFLAG.str. It will look like this:

// Valid mission flags
 // skip This mission doesn't exist; it should be skipped.
 // no_briefing Skip the briefing movie
 // no_loadout Skip the loadout
 // cutscene Play a cutscene immediately afterward
 // end End the game when this mission is completed
miss_1: "no_loadout"
 miss_2: ""
 miss_3: "skip"
 miss_4: ""
 miss_5: "no_loadout,cutscene"
 miss_6: ""
 miss_7: ""
 miss_8: ""
 miss_9: ""
 miss_10: "no_loadout"
 miss_11: ""
 miss_12: ""
 miss_13: ""
 miss_14: ""
 miss_15: "no_loadout"
 miss_16: "cutscene,end"
 miss_7_next: "9"
 miss_9_next: "8"
 //Courier->Viki's Realm
 miss_8_next: "10"
 //Unwelcome Guest -> Precious Cargo
 miss_11_next: "14"
 miss_15_next: "12"
 miss_13_next: "16"
//we will want something like this
 //(see drkmislp.c)
 //please remove this comment when you actually put it in.
 miss_10_endmovie: "cs10"

The lines with double slashes are comments. The legend at the top tells you what are valid flags to set for each mission. This is currently set up for normal Thief 2. But we want to skip all the original missions and jump straight to our new one. Edit the lines starting with miss_ to look like the following:

miss_1: "skip"
 miss_2: "skip"
 miss_3: "skip"
 miss_4: "skip"
 miss_5: "skip"
 miss_6: "skip"
 miss_7: "skip"
 miss_8: "skip"
 miss_9: "skip"
 miss_10: "skip"
 miss_11: "skip"
 miss_12: "skip"
 miss_13: "skip"
 miss_14: "skip"
 miss_15: "skip"
 miss_16: "skip"

Now all the original missions will be skipped. Add a new line beneath that for miss_17:

miss_17: "no_briefing, no_loadout, end"

This specifies that our mission has no briefing movie, no pre-mission shop and should end the game once it is complete. Save MISSFLAG.str and close it. Note that we’re stating the mission number as 17. If we’d set it up to be a different number, that number would need to be used instead.

Now go into the strings/english folder and open TITLES.str. This file contains all the mission names that you’ll see when looking at the briefing screens, or when saving and loading the game:

title_1: "Running Interference"
 title_2: "Shipping ... and Receiving"
 title_3: ""
 title_4: "Framed"
 title_5: "Ambush!"
 title_6: "Eavesdropping"
 title_7: "First City Bank and Trust"
 title_8: "Trace the Courier"
 title_9: "Blackmail"
 title_10: "Trail of Blood"
 title_11: "Life of the Party"
 title_12: "Casing the Joint"
 title_13: "Masks"
 title_14: "Precious Cargo"
 title_15: "Kidnap"
 title_16: "Sabotage at Soulforge"
short_1: "Interference"
 short_2: "Receiving"
 short_3: ""
 short_4: "Framed"
 short_5: "Ambush!"
 short_6: "Eavesdropping"
 short_7: "Bank"
 short_8: "Courier"
 short_9: "Blackmail"
 short_10: "Blood"
 short_11: "Party"
 short_12: "Casing"
 short_13: "Masks"
 short_14: "Cargo"
 short_15: "Kidnap"
 short_16: "Sabotage"

As you can see, it currently contains the original mission names. The first batch are the missions’ full titles, as seen on the briefing screens. The second batch are the shorter names seen when saving the mission. Add a new line under the titles:

title_17: "My Tutorial Mission"

Next add a new line under the short batch:

short_17: "Tutorial"

You can of course use whatever mission name you like. Save and close TITLES.str. We’ve now set up all the files we’ll need to be able to play the mission.

Adding to a Zip

Now what we need to do is get all the files we’ve created. With this mission, we won’t have many, but if you were to use a lot of custom textures and objects, it’s a good idea to keep track of what you’ve used so that you’re not having to sort through hundreds of files at release time. This is why it’s a good idea to use FMSel and the FMs folder to keep all your files organised. Then the only files you need to worry about will already be sorted in FMs/Tutorial.

To release your mission, you’ll need to put it in a zip file.

In your Fan Mission folder (Created in part one. If you don’t have one, just create a new folder, e.g. C:/ThiefFMs), create a new zip file called tutorial.zip and open it. Now this zip file needs to have a folder structure that mirrors your FM folder, but only contains the files needed for your mission. So for this tutorial, everything that is contained within FMs/Tutorial should be in the root of the zip file. In a larger mission you may find you’ve removed objects or textures from the mission that you had previously copied into your FM directory. You would need to go through and remove any unused objects and the like to keep the filesize down. For our purposes, there should be no redundant files in your FM folder.

With the zip file open, add miss17.mis from your FM directory to the zip.

Next drag the entire books folder into the zip file, so that our book text appears in the right place. Now drag the intrface folder containing the objective text into the zip. Finally add the strings folder.

That’s all the files necessary for releasing the mission in place. You should also create a readme.txt file and place it in the root of your zip file, containing information about the mission and crediting the authors of any custom content. Have a look at the readmes of other released missions to get an idea of what content to include and in what format.

Your zip file should contain all the files and folders used for the mission.

Your zip file should contain all the files and folders used for the mission.

Now anyone should be able to load this mission zip file through FMSel, or any other FM loader, and play your mission! There’s one more file we should include in the zip to add information to FMSel.

When you double click thief2.exe it will load FMSel before booting the game (because of the change you made to cam_mod.ini in Part One.) FMSel should pick up the zip file you made in addition to the Tutorial folder in your install.

Ensure FMSel is loading zips from your Thief missions folder.

Ensure FMSel is loading zips from your Thief missions folder.

Now if you click Play FM, it will quickly install and then load Thief 2 with your mission. You can play through it, choosing one of your difficulty levels to see the full objective text for each, and this time it will actually finish with a Mission Complete movie when you complete all the objectives!

You should be able to complete your mission through Thief 2.

You should be able to complete your mission through Thief 2.

Now reopen FMSel and select your mission. Click the gear icon, then select Tasks > Create New FM.INI… This will load a new window where you can enter some information about your mission. For Display Name, type the name of your mission (e.g. My Tutorial Mission). For Info File type readme.txt – now if someone tries to open the info file for your mission through FMSel, it will display your readme.txt that you made. Next you can set the Release Date if you plan on releasing the mission on a future date.

Click the Tags tab and add any relevant tags to your mission. In a real mission these might be anything from the type of mission (mansion, rooftops etc.) to the type of enemies encountered (undead,spiders etc.) or other defining characteristics (short, campaign etc.). You can add some premade tags from the <Tag Presets> dropdown.

Next you can type a description on the Descr tab. This might be a story synopsis for your mission. When you’re done, click OK and save the file in your FM folder.

Now browse to your mission folder and locate the new fm.ini file which has been created. Add this to the root of your zip file. Now when someone loads your mission for the first time in FMSel, they will be able to see some info about the mission.

What next?

Uploading your mission to the internet for others to play would be the next step, although you’ll probably want to wait until you’ve got a bigger mission than our small tutorial one! This thread contains a large number of links, including some links to fan mission sites where you can request to have your mission hosted. You could also host your mission on a file sharing service such as Dropbox or Yousendit, but you might quickly run out of allocated bandwidth if lots of people are downloading your mission.

Once it’s on the internet, you’ll want to get the mission tested. There are many people in the community who love testing missions and providing feedback, and your mission will always benefit from fresh eyes looking at it to ensure everything works as it should. The best place to get your mission tested is Shalebridge Cradle, a forum dedicated to mission testing. You can request testers, and even get a private forum set up just for you and your testers.

Once the mission has been tested, and you’ve uploaded a final version with all the bugs fixed (or as many as you can!),  you can announce your mission on TTLG.com by making a new thread in this forum. This is where the majority of Thief fans will go to learn about new Fan mission releases, and there will be hundreds of people eager to play your new mission. Just be prepared to help out if people get stuck!

Additional Mission Creation Help

This tutorial has really only covered the basics of creating a mission. Before you’re ready to release a mission, there’s plenty more you’ll want to learn. Here’s a list of places you can find out more about making Thief levels:

  • The \doc\Tutorials folder inside your Thief install directory. This contains a number of tutorials, including the official ones by Looking Glass Studios. Some of these are out-of-date however.
  • The Editor’s Guild – a forum dedicated to Thief mission creation. Asking a question about Thief editing on here is the best way to get good information from Thief experts.
  • This thread contains links to hundreds of tutorials on a vast range of topics.

I hope you have enjoyed this tutorial, and are looking forward to branching out on your own and creating the next awesome Thief level. If you’d like me to write a tutorial on any particular aspect of Thief level editing, let me know in the comments. I’d also be grateful for any feedback – did you find the tutorial useful?

Good luck, and happy Dromeding!

Many thanks to the folks at TTLG.com for suggesting changes and useful additions to this tutorial, particularly Daraan, qolelis, nickie, R Soul and Firehawk for the PDF version.

Previous: Part Eight – Water and Ambience

Part One – Setting Up
Part Two – Introduction to Dromed
Part Three – Making it Playable
Part Four – Adding Gameplay
Part Five – Links
Part Six – Objectives
Part Seven – Ingame Text
Part Eight – Water and Ambience
Part Nine – Publishing Your Mission

Full tutorial now available as a PDF, converted by Firehawk: http://www.file-upload.net/download-8570485/Absolute-Beginner—s-Guide-by-nicked.pdf.html

3 thoughts on “Absolute Beginner’s Guide to Creating a Mission for Thief 2 (Part Nine)

  1. amazing tutorial! Thanks a lot 🙂 The most precious part is that it actually goes through the whole process enabling new guys like me to get the “skeleton” of the mission quite quickly. The extra goodies are just a matter of time…

    I just wanted to mention one little problem which I had with “publishing the mission” and eventual solution which I’ve figured out, in case if anyone else might run into it when going though the process.

    In case if the mission is called not “17” but a higher number (technically its possible and i’ve seen several FM’s called 20, 22 etc.), say “18”, then the mission will crash.
    In this case the “missflag” in strings folder should include “skip 17” etc, till our actual mission:

    miss_16: “skip”
    miss_17: “skip” (….this one added on top of default 16 missions lines)
    miss_18: “no_briefing, no_loadout, end” (….my tutorial mission called “18”)

    Same goes for the “titles.str” in strings folder:

    title_16: “Sabotage at Soulforge” (….thief’s last default mission)
    title_17: “” (…. “empty” mission number added on top of existing 16)
    title_18: “My Tutorial Mission”

    short_16: “Sabotage”
    short_17: “”
    short_18: “Tutorial”

  2. Good point – one other thing to note (and it may not be an issue in New Dark, but I’m not sure) is that too high a mission number will cause weird unexpected problems like arrows not working or random crashes. Something as high as 35 is definitely ill-advised, but anything in the 20s should be ok. Otherwise, as long as the strings files, the folder structure for things like intrface, and the Dark Mission Description all have the same number, you should be fine.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s