Creating Your First Project

When you first boot up DSEditor, your *Projects* folder will be empty. Right clicking on this folder, or selecting *File>New Module (CTRL+N)*, will allow you to create a new Project Module. A Project Module is a project with the focus of developing a **module**. A **module** is a modification to the game. As part of the tutorial, perform the action of creating a new Project Module.

After requesting to create a new Project Module, a window will appear containing the following elements to be filled:

* **Name (required) -** The name of the module, which will be shown in-game.
* **Version (required) -** The version of the module, which will be displayed to the user during game. The version, even though not checked for correct incrementation, is a useful information for the player to know if they have the latest version of your module, so make sure you change it everytime you make significant changes.
* **Description -** The description of the module that will be shown during game.

For the sake of this tutorial, we'll input the following information into each field:

* **Name (required) -** MyModule
* **Version (required) -** 1.0.0
* **Description -** My first module for Dungeon Souls!

After the appropriate information is filled in, a new Project Module will appear under *Projects* with the name specified previously. Opening the project's node will show all of the modding files associated to the project. In this case, only one file will be present: the **Dungeon Souls Module (.dsmod)** file. This is the file where the module is declared, as well as any global variables (we'll soon talk about this concept) to the entire module. If you've been following along, the file should look like this:

```
define module test
{
[NAME]="MyModule";
[VERSION]="1.0.0";
[DESCRIPTION]="My first module for Dungeon Souls!";
[SPRITE_DIR]="Sprites";

*//Place code here...*
}

```

If you look at the code, you can see some familiar information. The name, version and description values inserted in the previous window are already set to their corresponding variables. In **DSML**, certain types of code (often referred as **definitions**) will have certain types of **Game Variables**. These represent a special kind of variable, which set important variables for the **definition** to work properly before any code is executed. **Game Variables**have the following syntax:

```
[<NAME_OF_THE_GAME_VARIABLE>]

```

Apart from the Game Variables specified previously, you can also check that there is one extra game variable called **SPRITE\_DIR**. This game variable specifies the directory where the graphical assets will be stored, so that the engine knows where to load the sprites from. Currently, this value cannot be changed (changing it will cause an error on Dungeon Souls), but is planned to be able to accept any value, as to customize sprite location.

Finally, there is one more element in the code, which is the **comment**. Comments are pieces of text that are ignored by the compiler, but allow for easy documentation on the code. Use them whenever you need to explain an important concept or set a friendly reminder of what a particular piece of code does in your module. **Comments** start with **//** and currently do not possess multiple lines.