WDFUSE Tutorial - Introduction

## Introduction

Dark Forces uses a 3D Engine called **JEDI** which renders each of the missions in the game. The missions, and all the accompanying assets, are stored in files called **GOBs** which are compressed containers like a zip file.

( **Note:** A handy tool to inspect the GOB files is called CONMAN and you can get it **here** )

The main **GOB** files are...

1. **DARK.GOB -** Stores all the main mission data including the level geometry. Some of the files inside the GOB are described below.
	1. **LEV** files store the raw level geometry (all the rooms, the walls and their textures)
	2. **O** files store all the objects (enemies, items etc..)
	3. **INF** files contain all the game scripting logic (Ex: how to move to an elevator or open a door)
	4. **GOL** files store all the mission goals (Ex: Find the Death Star Plans)
	5. **CMP** files store the colormap mapping (Ex: How lighting affects textures)
	6. **PAL** files store the available colors in the mission. You are limited to 256 colors.
	7. **3DO** files store all the true 3D geometry such as platforms or Kyle's ship
2. **SPRITES.GOB -** Stores all the enemy and item objects files.
	1. **WAX** files store all the animated enemies and items like stormtroopers or shield pick-ups.
	2. **FME** files are non-animated decorations and items such as the blaster rifle
3. **SOUNDS.GOB** - Containers all the sound effects and music for the game
	1. **VOC** files are all the sound effects such as stormtrooper blaster shots or elevator hums.
	2. **GMD** files are the mission soundtracks.
4. **TEXTURES.GOB** - Contains all the textures for the game.
	1. **BM** files store the texture assets for Dark Forces.

When making missions with **WDFUSE** you will be mostly working with **LEV** **O** and **INF** files. Lets go into more details about each of these components

### **LEV** Files

Each of the Dark Forces missions' geometry is stored in a LEV file. For example, *Secret Base* is stored in SECBASE.LEV and the Arc Hammer is stored in **ARC.LEV**.

The **LEV**el geometry itself is made out of rooms, called **Sectors**. The more sectors you have, the more rooms the mission will have. For example, the small mission Secret Base has 218 sectors while the Arc Hammer has 409.

Since this is not a true 3D game, the sectors themselves are basically an outline of a room and an accompanying height. All the walls in this game are perpendicular to the floor and you can never have any slopes. Here is an example of a sector with **six** walls.

Each sector includes various information like the number of walls it has, the X, Y and Z coordinates of the vertices (points), the height of the floor and ceiling, the textures assigned to it, the amount of lighting and what map layer it belongs on.

### **O** Files

The **O**bject file stores all objects present in the mission. For example, the objects for *The Secret Base* are stored in SECBASE.O. Each object contains details such as X Y and Z coordinates, the direction it is facing, the type of the object (whether an enemy or an item) and the difficulty.

### **INF** Files

The **INF**ormation files store all the scripting logic for the mission. For example, the scripting logic for *The Secret Base* are stored in SECBASE.INF. These files contain details such as how to open a door, move an elevator and when to complete a mission. Each INF script is mapped to a Sector of one of the Sector's Walls. This means that all the missions have a separate sectors that all they do is to tell the mission when to finish

Now that you understand the file structure lets get into WDFUSE Configuration.

**WDFUSE Tutorials**

1. **Introduction**
2. WDFUSE Tutorial - Configuration
3. WDFUSE Tutorial - Basic Geometry
4. WDFUSE Tutorial - Basic Geometry II
5. WDFUSE Tutorial - 3D Renderer
6. WDFUSE Tutorial - Advanced Geometry
7. WDFUSE Tutorial - Advanced Geometry II
8. WDFUSE Tutorial - Advanced Geometry III
9. WDFUSE Tutorial - Objects
10. WDFUSE Tutorial - Scripting
11. WDFUSE Tutorial - Scripting II
12. WDFUSE Tutorial - Scripting III