# Running SimC locally
### Last updated: 2026-01-26
## Getting SimC onto your machine:
You have three main options: **Manual Download**, **GitHub Desktop** and **Git CLI**.
### Manual Download:
- Navigate to https://github.com/simulationcraft/simc and make sure that you're on the correct branch ( is the current main branch)
- Find the green  button and click it
- Hit 'Download ZIP'

- Extract the `.zip` file to a directory, make sure that the root of the directory is called `simc` and contains folders like `ActionPriorityLists`, `engine` and `SpellDataDump`
### GitHub Desktop:
- Download and install GitHub Desktop: https://desktop.github.com/download/
- Login with your GitHub account
- Go to File -> Clone Repository

- Choose a local path and paste in the the repository URL (https://github.com/simulationcraft/simc.git) make sure it ends with `.git`

- Hit Clone and GitHub Desktop will download the SimC source to your local path
### Git CLI:
- Download and install Git: https://git-scm.com/install/windows
- If you're prompted to add Git to PATH, say yes
- Open a terminal (Terminal, PowerShell, Command Prompt) and enter `git --version`
- It should return a version:

- Navigate your terminal to where you want SimC to be installed via `cd` or File Explorer
- Your terminal should now read your path, mine is `C:\code`: 
- Run `git clone https://github.com/simulationcraft/simc.git`
- Git will download the SimC source to your local path
- To verify, run `cd simc` then `git status` and you should see:

## Updating SimC
Again, you have three options: **Manual Download**, **GitHub Desktop** and **Git CLI**.
### Manual Download
- Delete your `simc` directory and repeat the steps in the previous section
### GitHub Desktop
- Ensure that your working branch is clean (0 changed files):

- Hit the **'Fetch Origin'** button: 
- Hit the **'Pull origin'** button: 
- Go to the 'History' tab and check the latest changes match the GitHub repo
 
- Rebuild using the steps in the next section
### Git CLI
- Navigate to the `simc` directory in your Terminal
- Run `git fetch` to get the latest version of the repo
- Run `git status`, this will tell you if your branch is behind or not
- Delete or stash any changes if they exist (they shouldn't be on the main branch anyway!)
- If your branch is behind, run `git pull` to bring in the new changes
- Rebuild using the steps in the next section
## Building SimC
We're going to build using Visual Studio. If you know enough to want to use a different build system/compiler, you don't need this guide :p
### Instructions
- Download and run the **Visual Studio Community** installer (**NOT Visual Studio Code**): https://visualstudio.microsoft.com/vs/community/
- In the **'Workloads'** section, select **'Desktop development with C++'**

- Hit 'Install'
- Once installed, navigate to your SimC directory, find the `simc_vs2026.sln` file and open it, it should open in Visual Studio
- Find the 'Build' tab and select 'Build Solution'

- Check the 'Output' pane, you should see something like this:

## Running SimC
Create a text file for your sim input file called `input.simc` (ensure that it's of `.simc` type) and populate it with your input. Treat this like an Advanced Sim's input on Raidbots. Note that you will need to add some options that are usually handled by Raidbots. Here is a basic example input:
```
ptr=1
iterations=5000
desired_targets=1
max_time=300
report_details=1
single_actor_batch=1
html=output.html
<your /simc string goes here>
<custom apl goes here>
```
You have two options: **Visual Studio** or **From the Terminal**.
### Visual Studio:
- Find the Debugger button, click the drop-down and find 'simc debug properties'

- In the debug properties section, add your `.simc` file's path to the 'Command Arguments section' like so:

(Ignore my file's name being different here)
- Hit 'Apply', 'OK' and then click the Debugger button: 
- A terminal will open and run SimC based on your input
- Check the `vs` folder for your HTML output
### From the Terminal:
- Navigate your terminal to the `simc` directory
- Run `cd bin/x64/Debug` to get to your `.exe`
- Run `./simc.exe <path>` replacing `<path>` with your input file's path
- Check the `vs` folder for your HTML output
## Using `log`, `debug` and `json`
These are extremely useful options that enable you to see much more precisely what a sim iteration is doing.

To set them up add the following to your input file:
```
log=1
output=log.txt
```
Or:
```
debug=1
output=debug.txt
```
And if you like:
```
json=json_log.txt,full_states=1
```
You can find the outputs in the `vs` folder in the project's root directory.
**Note:** these options will cause the sim to only run 1 iteration.
## Using `spell_query`
This is another useful tool for querying the SimC database to verify spell effects and other useful information about spells. This will show you the data that SimC is working with. The wiki also provides a more extensive look at the option here: https://github.com/simulationcraft/simc/wiki/SpellQuery.
### From the Terminal
This is best done via the Terminal, don't bother with Visual Studio here.
- Navigate your Terminal to the `simc` directory
- Run `cd bin/x64/Debug` to get to your `.exe`
- Run `./simc.exe spell_query=spell.id=<id>` replacing `<id>` with your spell's ID
