Modding Tutorials Wiki

Introduction

The purpose of this Wiki is to share all the most up to date knowledge available on how to mod Commandos 2, to help you create your own missions and be able to integrate them in future releases of the Commandos 2: Destination Paris mod!

Suggested Tools

Before starting to read this guide, get a good text editor, I personally use Notepad++ because it allows to create a User Defined Language Syntax. I created a custom syntax that correctly parses the following Commandos 2 files:
  • .mis
  • .gsc
  • .bas
  • .msb

You can find the custom script here. For instructions on how to import it in Notepad++ follow this guide (at the bottom).
If you want to attempt to create your own syntax scheme, you will find this guide useful.

The other tool that you will need is the Debug Version of Commandos 2 that will allow you to visually see what is happening in the game while you are modding it, especially useful to see the XYZ coordinates and names of the entities you create.

File Structure

First of all, it is important to understand how coding works. The game is programmed in such a way that it allows you to modify it with relative ease. Objects (each enemy, item, weapon, animal, etc.) have their own code structure with shared and unique Properties, each code has a beginning and an end, so you will need to be careful not to mix the codes together, otherwise the game will not load or will crash. You can recognize codes' beginning and end points easily. 

Here's an example:

            [
                .TOKEN CAJA_MADERA 
                .COLORPUNTOLIBRETA OBJETO 
                .POS 
                [
                    .XYZ 
                    (
                        0.0 0.0 0.0 
                    )
                    .ESC EXTERIOR 
                ]
                .ANGULO 0.0 
                .BANDO NEUTRAL 
                .HTIP CAJA 
                .COMPORTAMIENTO 
                (
                    ComporCaja 
                    [
                        .CERRADA 0 
                    ]
                )
                .ZONASELECCION 
                (
                    Cilindro 
                    [
                        .RADIO 10.0 
                        .ALTURA 20.0 
                    ]
                )
                .VOLCOLISION 
                (
                    Cilindro 
                    [
                        .RADIO 12.0 
                        .ALTURA 20.0 
                    ]
                )
                .ANIMADOR 
                (
                    AnimadorSimple 
                    [
                        .VOL 
                        (
                            Cilindro 
                            [
                                .RADIO 20.0 
                                .ALTURA 30.0 
                            ]
                        )
                        .ANIM CAJAMADERA.ANI 
                    ]
                )
                .CONTENEDOR  1.0 
                .MICUADRICULA 
                [
                    .DIMCUADX  4.0 
                    .DIMCUADY  3.0 
                    .GFXCUAD CUADPERR 
                ]
                .LISTAS 
                (
                    SELE EJEC FLAS CHOC 
                )               
                .BICHOS 
                (
                    #place here the items
                )
            ]

This is the code of an (empty) Box
 
, as you can see, the Object code starts with a [ and ends with a ] . If you should add another Object, you would add it after the final ] (on a new line) or at the beginning, before the first [ , if you'd add it anywhere else, the game would not load because you would have mixed the object codes and the game would not be able to correctly recognize and separate them!
The lines that start with a . (like .ANGULO) indicate a Property which has always either a value or a Group Property associated to it. A Group Property is a "container" that contains either other Properties or Objects. Some Objects (Commandos, enemies, furniture, vehicles, etc.) have a Group Property called .BICHOS which, to simplify, you can see as their "backpack". It can contain other Objects and is defined by:

                .BICHOS 
                (
                    # put items here
                )

As you can see, this Group Property code starts with .BICHOS followed by two parentheses ( and ) ; some Group Properties start with a [ and end with a ] .
The .TOKEN Property is the name of the Object and defines the Object in a unique way. There cannot exist two Objects with the same .TOKEN name.
Also notice this line of code: 

# put items here

It indicates a Comment, every word or phrase preceded by a # will be ignored by the game.

Consider this a basic introduction to modding, with what you saw here, you will be able to understand most of the available tutorials. There are slight differences depending on the file that you edit, but the basics are just the same.

Each mission has these files that you can edit:

- .mis files contain the main data of the missions (Allies, Enemies, Vehicles, Items, Objectives, Rails, etc.);
- .bas files contain all the structure of the missions (walls, doors, cables, etc.);
- .gsc files contain all the accesories needed to give missions a good look (behaviour scripts, etc.);
- .msb files contain the objectives locations on maps;
- .str files contain the objectives descriptions;
- .txt files contain the objectives explanations when locations on maps are not available

Files you can Edit

By default these files are contained in the .pck archives and need to be first extracted and then decoded otherwise your text editor won't be able to read them correctly. You can find the necessary tools to extract and decode the files in the Modding Tools Page of Commandos HQ, otherwise you can use the files already extracted and decoded here.

Mission Names

In the DATA folder of the game you will find folders that contain the files described above, the names of the corresponding missions are the following:

 Mission Folder  Mission Name
  BU   Target: Burma
  CZ   Castle Colditz
  ECL   Bonus Mission 2
  HL   White Death
  IS   The Guns of Savo Island
  KW   Bridge over the River Kwai
  PA   Is Paris Burning?
  PT   The Giant in Haiphong
  RY   Saving Private Smith
  SB   Das Boot, Silent Killers
  SB_NOCTURNA    Night of the Wolves
  SH   Bonus Mission 7
  TK   Bonus Mission 8
  ITK   Bonus Mission 4
  TU01   Training Mission 1
  TU01J   Bonus Mission 5
  TU01A   Bonus Mission 1
  TU02   Training Mission 2
  TU03   Bonus Mission 9
  TU04   Bonus Mission 3
  TU05   Bonus Mission 6

Objectives: What you will learn

Modding a game like Commandos 2 is not very difficult actually, the only problem is that it is all manual work, with code pasting and copying and defining correctly different attributes. This is of course for the game design part, such as creating missions based on available models, manage objects, define enemy routes, behaviour, etc. If you want to modify the whole game structure and other more "core" aspects, such as texture design, new objects creation, etc. then you will need to go beyond this guide and really learn how to program on a more in-depth level. In short, you will learn to have fun while creating your missions and enjoy seeing your ideas "come to life"!

Measurable Objectives:

In detail, you will learn to:
  • Understand the Game Files and their functions that allow each mission to come alive!
  • Edit the missions (add/remove items, enemies, Commandos, modify their behaviour and abilities)
  • Edit Mission objectives and briefings
  • Modify some global game rules (Enemy reaction speed, weapons firing speed, carriable item quantity, etc.)
  • Modify Game sounds
  • Add New Missions (based on existing ones)

Final Suggestions Before Starting

Before starting with the modding, here are some suggestions that I hope you will find useful:

- Be calm if something can't be gotten to work; think and search for an alternative. If even the alternative proves failure, don't hesitate to post on the Commandos HQ forum for help

- Take your time, don't rush it; results do not come in minutes of work, often to obtain something of quality, time will be your friend, as long as you use it well

- Don't make too many changes from the beginning; start modding one or two things per time, then load and try if they work. Otherwise a little distraction could be a real pain. You would have to recheck each single change you did to find the little thing that's having fun making your game crash

- This takes us to another suggestion: make often backups of your work. If you make a lot of good changes, then for some reason you add another one that makes the game crash, and lets say that you also forgot where that change is, can you imagine what's going to happen? You will have to remod EVERYTHING from the beginning, or backtrack by memory which isn't very stimulating, right? So, when you think you're happy with your changes, make a copy of the modded file to always have a good starting point that is not the beginning

- To make it possible for you (or other people) to modify the code without to much hassle, I would suggest to keep the code clean and readable by using the same indentation and same schemes when copying and pasting

Good Luck! ;-)