Getting Started

Setting Up Your Solution

Open Visual Studio and create a new blank solution anywhere you'd like. Once created, you'll add references to the Chisel projects from your download folder.

1
Create a blank solution

In Visual Studio, go to File → New → Project, search for Blank Solution, and save it wherever you'd like.

2
Add the Engine project

Right-click the solution in Solution Explorer and choose Add → Existing Project. Navigate to your Chisel download folder and select:

Chisel/Engine/Engine.csproj
3
Add the FPS Template project

Repeat the same process and add:

Chisel/FPSTemplate/FPSTemplate.csproj
4
Set the compile flag

Right-click your game project in Solution Explorer and open Properties → Debug. In the Command line arguments field, enter:

-compile

This tells the engine to compile all entity data on launch, which is required when working on your game. You don't need this for final builds run directly, but it's good practice to always have it set in Visual Studio.

5
Run the template

Set FPSTemplate as the startup project, then hit Run.

Starting Your Own Game

The FPS template is your starting point for any new project. Rather than starting from scratch, you copy and rename it. Even though it's an FPS template, it's written in a way that you could pretty easily adapt it to just about any type of project, which is why I haven't made other templates! :)

1
Copy the FPSTemplate folder

Duplicate the Chisel/FPSTemplate folder and rename the copy to your project name, e.g. Chisel/MyGame.

2
Rename the .csproj file

Inside the folder, rename FPSTemplate.csproj to match your project, e.g. MyGame.csproj.

3
Add it to your solution

In Visual Studio, right-click the solution and choose Add → Existing Project, then select your new MyGame.csproj.

4
Set the compile flag

Just like with the template, open Properties → Debug for your new project and add -compile to the command line arguments.

5
Rename namespaces (optional)

To use your project name as the namespace, there may be find and replace functionality that can help. If not, it shouldn't be a pain to change them manually.

Note Renaming namespaces is entirely optional.