Structure

For MMM to work properly several files need to be added and some settings updated. This page lists everything you need to change in order to get MMM running.

BZN Files

Map files should go in the bzn folder as usual. For a map to support MMM, the following settings must be updated:

  • Script File - This should be set to mmm_loader.dll, or whatever you have renamed it.
  • Title - This should be set to something, and your Lua files or pack should have the same name.
  • Map Type - This should be set to mission.

Loader

The MMM loader DLL is require in order to run MMM scripts. It should be placed in the missions directory of your mod. You also need to set this as the script file in the properties of your map in the map editor. Without setting this value, MMM will not be loaded.

Lua Scripts / Pack

All mission scripts are Lua files - they can either be in a normal directory structure or packed into a zip file. These files are stored in the missions directory alongside the loader. For more information on packs, see the tutorial. There must be a Lua file or a pack with the same name as the title of your mission - that is the title field in the map properties in the map editor.

ODFs

MMM has two of its own ODF files which are used for saving and loading data. If you use the Save or Load classes then these ODF files are required.

Other Files

Any objectives files that need to be loaded by an MMM mission should be placed in the objectives folder. Sounds should go in the sounds folder. All media resources such as these must be present when the game is launched to ensure that they are loaded.

Campaign Settings

To make missions available in the single player menu you'll need to perform several steps (these are all done for you in the default installation). There are a number of animation and bitmap files required in order to make the single player menu usable - there are some included in the MMM mod folder to get you started, but they are described below too.

Menu Graphics

The following files need to be added to bitmaps. The Bink files must be 320x220 in resolution and can be created using the Rad Video Tools.

Name Type Description
bitmaps\MissionSelect\MissionField.bmp BMP Image Image for active non-selected buttons
bitmaps\MissionSelect\MissionFieldDisabled.bmp BMP Image Image for disabled buttons
bitmaps\MissionSelect\MissionFieldH.bmp BMP Image Image for active selected buttons
bitmaps\MissionSelect\MissionSelectBG.bmp BMP Image Background image for the mission list dialog
bitmaps\Single\borg.bik Bink Video Plays in the bottom-right slot when not moused over
bitmaps\Single\borgGlow.bik Bink Video Plays in the bottom-right slot when moused over
bitmaps\Single\federation.bik Bink Video Plays in the top-right slot when not moused over
bitmaps\Single\fedGlow.bik Bink Video Plays in the top-right slot when moused over
bitmaps\Single\klingon.bik Bink Video Plays in the bottom-left slot when not moused over
bitmaps\Single\klingonGlow.bik Bink Video Plays in the bottom-left slot when moused over
bitmaps\Single\singleplay.bmp BMP Image Background image for the single player menu
bitmaps\Single\tutorial.bik Bink Video Plays in the top-left slot when not moused over
bitmaps\Single\tutorialGlow.bik Bink Video Plays in the top-left slot when moused over

Configuration Settings

In order to make the missions appear in the single player menu, some changes need to be made to some configuration files in the directory.

In RTS_CFG.h, cfgSINGLE_PLAYER_ENABLED = 1 needs to be added. This will re-enable the single player menu.

In the file mshell.set the .bzn filenames need to be added. The dashes separate campaigns, so the following would add some missions to the first campaign slot, leaving the other slots empty:

EntityFinderTutorial.bzn
MonitorTutorial.bzn
TimerTutorial.bzn
CineractiveTutorial.bzn
TextInputTutorial.bzn
-
-
-
-

Finally in the Label.map file you need to find the mission_select section and entries for your map names - this will make sure that the buttons have text. It should look something like the following:

mission_select {
    + title            {}
    + ok_button        {OK}
    + cancel_button        {Cancel}
    + MonitorTutorial.bzn {Monitor Tutorial}
    + TextInputTutorial.bzn {TextInput Tutorial}
    + TimerTutorial.bzn {Timer Tutorial}
    + CineractiveTutorial.bzn {Cineractive Tutorial}
    + EntityFinderTutorial.bzn {EntityFinder Tutorial}