.sch files, DifficultyInfo thoughts, running an FM. - by d'Spair
d'Spair on 27/2/2005 at 22:57
Well, I'm trying to figure out the way to play the mission one has created, without the editor. I.e. what should be done in order to play the mission without T3Ed installed. Plus there are a few things connected with that.
So, we have to -
a) Set some things in the map(s) in T3Ed;
b) Modify some files;
c) Modify the Entry map.
A:
As far as I understand, there is no limit on the number of maps a mission may consist of. Let's imagine that we have a mission called "Bank", that consists of three areas: "Bank West Wing", "Bank East Wing" and "Bank Basement".
The general name for the mission is "Bank". All the maps must have the name of the format "BankX", where X is a number starting from 1 - in our case we have "Bank1", "Bank2" and "Bank3".
The general name must be used when creating conversations. You should put "Bank" (NOT "Bank1" or whatever) in LevelInfo > Properties > LevelInfo > ConversationPackage in each of all three maps you have. The same is about the Map Name in Conversation Properties > Usage. The general mission name is also used in other things, see below.
The name of the actual map is also important. This is the actual map file name (for example, Bank1.gmp). You should use the actual map filename in ... LevelInfo > Title (without the extention, just "Bank1"). This is also related to Teleporters between maps.
Let's see what we have to do with our teleporter Volume properties. In TeleportInfo, TeleportDestination is the name of a starting point that is placed in the destination map. TeleportDisplayName is a link to one of .sch files with the name of the area (see below), you should have "T_LevelEnterTextBank2" or similar.
Pay attention: Teleporter destinations and Starting Point are different things! If you have no actual StartingPoint in your map (doesn't matter if you have teleporter destinations or not), you will not be able to play the level via the editor. In the mission, you probably should have one StartingPoint - actually the one where you begin the game. You don't have to use StartingPoints in other maps of your mission, Teleporter destinations will do fine.
As fas as I know, the player automatically starts in PlayerStart that is placed in the first map (Bank1 in our case). That means that the first map where the player begins MUST be Bank1 (not Bank2 or Bank3).
You also have to add "T_LevelEnterTextBank1" into LevelInfo > LevelEnterText for "Bank1" map, and so on.
Don't forget to export all your levels to .gmp files.
B:
Now we have to modify some files. Go to Thief3\Content\T3\Books\English folder.
Briefings and DeBriefings folder contain some files with texts for briefings and debriefings. You also have to set up a few things in editor (see the third post).
Go to String_Tags directory.
MapRooms.sch contains some data on how your mission is called ingame. For example, for Museum mission it looks like that:
TextEntry
T_EnterMissionNamemuseum
lang_english 2004-02-29 21:48:00 "Still Life with Blackjack"
lang_french 2004-03-25 13:58:33 "De la Nature Morte et des Matraques"
lang_german 2004-03-20 17:14:06 "Stillleben mit Knьppel"
lang_italian 2004-03-25 07:24:38 "Natura morta con manganello"
In our case, we should probably do something like this:
TextEntry
T_EnterMissionNamebank
lang_english 2004-02-29 21:48:00 "The Bank Mission"
lang_french 2004-03-25 13:58:33 "The Bank Mission"
lang_german 2004-03-20 17:14:06 "The Bank Mission"
lang_italian 2004-03-25 07:24:38 "The Bank Mission"
[if you plan to have multy-language support, you may add text in other languages]
Misc.sch file has info on the ingame names of the areas (maps). For Bank West Wing, we should have something like this:
TextEntry
T_LevelEnterTextBank1
lang_english 2004-02-29 21:48:00 "Bank West Wing"
lang_french 2004-04-29 12:12:22 "Bank West Wing"
lang_german 2004-03-20 17:14:06 "Bank West Wing"
lang_italian 2004-03-25 07:31:07 "Bank West Wing"
In quotes.sch, you can modify the text that appears onscreen when the level is loading:
TextEntry
T_bankLoadingQuote0
lang_english 2004-08-23 18:16:39 "This is a loading quote for the Bank map."
lang_french 2004-08-23 18:16:39 "This is a loading quote for the Bank map."
lang_german 2004-08-23 18:16:39 "This is a loading quote for the Bank map."
lang_italian 2004-08-23 18:16:39 "This is a loading quote for the Bank map."
You can have few loading quotes, just call them T_bankLoadingQuote1, T_bankLoadingQuote2 and so on.
Probably that's it.
C:
Using a shortcut of T3.exe with Bank1 command line parameter is NOT recommende due to some bugs and odd things connected with it. But there is a way to modify the Entry.unr file in order to run your mission in the real game by hitting the "New Game" button. Make a backup of Entry.unr and Entry.gmp files first.
Open Entry.unr. Find the EnterMissionInfoInn file and go to its Properties > EnterMissionInfo. In EnterMissionBriefingFileName and EnterMissionVisibleObjectivesFileName write "Bank.txt" (instead of "Inn.txt", if course). You can also cnahge the name of the sound file (EnterMissionBriefingVoiceOverSchemaName).
Now find the ExitMissionInfoEntry file and go to its Properties > ExitMissionInfo. Set ExitMissionDestMapName to Bank1 and ExitMissionDestTeleportName to the name of your Bank1 teleporter destination (more about that is in the T3Ed readme).
Actually, that's it. Rebuild the map, save it and Export. Now if you start the game by clicking on the regular T3.exe file and press "New Game", your Bank mission will begin.
FILES THAT HAVE TO BE SHIPPED.
This is quite tough and I haven't checked it yet, but here is what I think about it:
- Map .unr and .gmp files (bank1, bank2, bank3);
- Modified entry.unr and entry.gmp files;
- The Shortcut;
- Content\T3\Conversations folder (?);
- Content\T3\Books\EMObjectives.dat file;
- Content\T3\Books\English\Briefings\Bank.sch file;
- Content\T3\Books\English\DeBriefings\Bank.sch file;
- Content\T3\Books\English\String_Tags\MapRooms.sch file;
- Content\T3\Books\English\String_Tags\Misc.sch file;
- Content\T3\Books\English\String_Tags\Quotes.sch file;
- Gamesys (if necessary);
+ The custom meshes\schemas etc that you added to your FM.
What do you think about it?
Hope this is useful for someone.
d'Spair on 28/2/2005 at 14:01
Updated the first post.
d'Spair on 28/2/2005 at 17:29
Here's what I found out today.
Each map should have three actors placed on it: EnterMissionInfo, ExitMissionInfo and DifficultyInfo. Let's start with the first two of them.
ADDENDUM: ExitMissionInfo should be placed only in the map where the player finishes the mission. Though if you can succesfully complete the mission being anywhere in your mission, you should probably put ExitMissionInfo actors in every map you have.
EnterMissionInfo:
Add MetaData > Info > EnterMissionInfo > T3EnterMissionInfo > EnterMissionInfoCastle somewhere to your map (or, if your mission consists of few maps, to each of them). Edit it's Properties > EnterMissionInfo:
EnterMissionBriefingFileName should be changed to [your_general_mission_name].txt (if we are still working on our test Bank mission, this must be set to "Bank.txt").
EnterMissionBriefingVoiceOverSchemaName - the name of the sound file that should play while a player reads a briefing text ("Garrett's speech" in OMs).
EnterMissionVisibleObjectivesFileName - also set to "Bank.txt".
Those are the most important properties. Now you should have a working briefing when you press "Restart", but difficulty levels info is still not present. We will fix it later.
ExitMissionInfo:
This is an easy part. Add MetaData > Info > ExitMisionInfo > ExitMissionInfoCastle. Go to its Properties > ExitMissionInfo.
ExitMissionDebriefingVOSchemaName - name of a file that plays along with a debriefing text displayed.
ExitMissionDestMapName and ExitMissionDestTeleportName are quite self-expanatory.
Now for the difficult part.
DifficultyInfo
Add MetaData > Info > DifficultyInfo > T3DifficultyInfo > DifficultyInfoCastle.
Go to its Properties > Difficulty. Here you can modify some parameters set to each difficulty levels. Change DifficultyInfoLevelName and LevelName to "Bank".
The DifficultyInfo actor is connected with goals and restrictions set to different game skill levels.
Make a TriggerScript link from EnterMissionInfoCastle actor to DifficultyInfoCastle actor you have just created. Now if you begin the game in your Bank mission and hit "Restart", you will be able to choose a difficulty level and succesfully restart the game (finally).
DifficultyInfo actor has Scripts > bEnableScriptInherent parameter. As far as I know, this must be set to True for the DifficultyInfo actor in your first map (where the mission begins), and to False for all the others. But don't forget to press the "Reset" button so that all the scripts set onto your DifficultyInfo actors are deleted (you don't need them).
David has already wrote a tutorial on making Objectives, but I'm afraid that the system he expained won't work with skill levels (?). I may be wrong, though.
In OMs, there are some links from DifficultyInfo actor to some Volumes and other Actors (often AIs). When a player gets inside one of those volumes, an objective ("Go to a certain place") turns to Completed. This probably works because of some scripts (for example, there is a script in Missions > Castle > CastleObjectives named "EnterCastle": when a player gets inside a volume with a TriggerScript link on it, the objective "Get inside the Castle" counts as completed.)
Unfortunately, I don't know yet how this system works with FMs. I made a script with
CONDITIONS
- When linked volume(s) [TriggerScript] are breached by [Category_Player]
ACTIONS
- Set goal [objCorner] to [kGS_Success].
Then I added a volume in the corner of my little map and made a ~TriggerScript link to the DifficultyInfo actor. I've also done all necessary conversation work. But when I start a game and go to this corner in my map, nothing happens. My objective still counts as Incompleted.
This is what I have discovered so far. Hope this is helpful.
rujuro on 28/2/2005 at 17:36
I think that if you place that TriggerScript on the volume itself, and change the linked volume to MYSELF, it might work. That's assuming you've queued the conversation to start already with another script, presumably at the player start on the map load.
Mortal Monkey on 28/2/2005 at 17:49
Knьppel is my new favorite word.
d'Spair on 28/2/2005 at 17:58
I can't integrate objectives determined by difficulty levels (Get 30% loot, don't kill unarmed and so on) with the objectives actually given to a player when a map starts. Doesn't matter what I'm trying to do, I always have only this "Go into the corner" goal when I start the game, and "Get 30% loot" etc. objectives simply disappear and don't work... This system is really very complicated. My dear, only few people will probably dare to explore it...
d'Spair on 28/2/2005 at 18:26
Aha, a little step forward: we have to put TriggerScript that starts the "objective conversation" not onto a playerstart, but onto a DifficultyInfo actor. Now the objectives work properly, but I still can't get difficulty level objectives.
sk2k on 28/2/2005 at 20:53
Quote Posted by d'Spair
Make a TriggerScript link from EnterMissionInfoCastle actor to DifficultyInfoCastle actor you have just created. Now if you begin the game in your Bank mission and hit "Restart", you will be able to choose a difficulty level and succesfully restart the game (finally).
Hmm, when i got killed and choose RESTART the mission briefing appears. I choose the difficulty and click on restart. It switches back to the death scene but the level does not restart.
Do i miss something?
MfG
Petronius
d'Spair on 28/2/2005 at 22:04
Quote Posted by sk2k
Hmm, when i got killed and choose RESTART the mission briefing appears. I choose the difficulty and click on restart. It switches back to the death scene but the level does not restart.
Do i miss something?
MfG
Petronius
I'm absolutely confused by the way this system works (doesn't work, to be honest), so I can't give you a definite answer... Make sure that you have done all previous steps correct though. If you are unable to restart, you might have forgotten to link EnterMissionInfo to DifficultyInfo... Or not... Well, until I can't find out how this diabolic system works, I can't say for sure.
d'Spair on 28/2/2005 at 23:55
Ok, I finally figured it out. See (
http://www.ttlg.com/forums/showthread.php?t=94258) this thread by me for some info. This will probably explain why your Restart function doesn't work properly.
Also see the very first post in this thread, I've completely rewritten the "C" part of it.
I have also slightly updated some other posts in this thread.
Now there is only one major problem left: how to integrate Difficulty Level objectives and the real mission objectives?..