When making a new MacenWolf project, you will most likely need to make a copy of the GAMEDICT.WL6 file that comes with the download of "core" MacenWolf to include in your published files.
This file contains many variables read by the engine to know how to handle the game files. The file includes everything from par times and music, to episode titles and level structure, all able to be edited from any text editor. The file is very well annotated, so it's worth reading through to see all the options on offer.
For most projects though, there's a few specific variables to pay attention to. These are all at the top of the file, because MacenWolf was built to be convenient.
Compatibility Flag
The Mac version of Wolf3D was originally released in several forms, with most mods and custom scenarios being Wolfenstein: The Second Encounter and Wolfenstein: The Third Encounter (And of course, many built on the demo Wolfenstein 3D: The First Encounter). There were several engine differences between The Second Encounter and The Third Encounter, and these are toggled between by commenting and uncommenting the variable:
//3rdenc
To enable the variable, simply remove the two slashes (This uncomments the line).
As noted in the "Modding Reference" text file included with MacenWolf, The Third Encounter has the following quirks, which will be enabled in your project if the variable is uncommented:
- Shorter knife distance
- No vacuum spot trick (In The Second Encounter, when you push a pushwall and stand around in the spot where the wall used to be, enemies cannot attack you)
- Enemies can't open locked doors
- Knife displays 0 ammo
- Objects don't block projectiles, besides the cage and column block
- Red frame in difficulty menu
- 40,000 points needed for an extra life (Commented, it is only 20,000 points)
- The point at which BJ's face becomes damaged (50% uncommented, 25% commented)
- Map limits with the compatibility option enabled: Uncommented, 400 guards, 64 visible objects. Commented, 127 guards with 200 objects.
Episode Names, Starts/Ends, and Secret Levels
MacenWolf is designed to be flexible in how an author structures their scenarios, and uses variables from these next sections to manage that.
The first is episode names. Each episode planned in a project (Up to 12) should have it's own line.
Here's an example of the section in a project containing three episodes:
// ========== EPISODE NAMES
// Rather self-explanatory. You can have up to 12 episodes/scenarios per game
episode1 "EPISODE NAME 1"
episode2 "EPISODE NAME 2"
episode3 "EPISODE NAME 3"
The game will read this information, and know there are three episodes as well as what to name them.
The next section tells MacenWolf when each episode starts, and which maps end an episode. This is important, otherwise MacenWolf will keep trying to play extra maps after finishing the final map in the planned project (Or, end prematurely).
The starts of episodes are determined using the startepisode* variable, with the * replaced by the episode number.
The finalmap variable tells MacenWolf which maps contain elevators that will "end" the game. Unlike startepisode*, finalmap does not require information about an episode.
Using the same example of a three episode game, we'll say each episode is 5 levels long (Ignoring secret levels for now). So the game will start Episode 1 on map 1, and end on Map 5, Episode 2 will start on Map 6 and end on Map 10, and so on.
// ========== EPISODE STARTS/ENDS
// Specify the starting map for each episode/scenario in
// your mod. You can have as many final maps as you like
// and they're not tied to any specific episode, to accomodate
// for certain rare episode flow decisions
startepisode1 1
startepisode2 6
startepisode3 11
finalmap 5 // the final map for Episode 1
finalmap 10 // the final map for Episode 2
finalmap 15 // the final map for Episode 3
If the planned project has secret levels, there's one more section to fill out. In this section, using the secretlevel* variable will tell the game that if there is a Secret Elevator present on the specified map (Which replaces the *), to send the player to the designated secret level.
In the example project, Episode 1 and Episode 3 will each have a secret level, which will be maps 16 and 17.
The secret level in Episode 1 will be found on Map 1, and will take the player back to Map 2 when it is finished.
Episode 3, however, will have a secret elevator on it's second level (Which is Map 12 in the project), and if completed will skip the player all the way to the final level of the episode, Map 15. So, the section below the STARTS/ENDS section will look as follows:
// ========== SECRET LEVELS
// Any map can have a secret (alternate) exit, so for example secretlevel1 10
// sends you from E1M1 to E1M10 and secretlevel10 2 sends you from E1M10 back to E1M2
secretlevel1 16 // The first secret elevator is on E1M1, and takes you to M16
secretlevel12 17 // The second secret elevator is on E3M2, and will take you to M17
secretlevel16 2 // Taking the secret elevator on M16 will take you back to E1M2, allowing you to
//continue on with the Episode.
secretlevel17 15 // Taking the secret elevator on M17 will skip you through the game and take you
// straight to the final boss of Episode 3 at E3M5, which is the 15th map in the project.
The above sections are the main elements that should be edited when creating a project in MacenWolf, to ensure the game will play out as you have planned.
There are many other elements and features that can be activated and changed within the GAMEDICT.WL6 file, and it is worth taking a look at the options on offer.