# 1. Virtual Machine

The game has to run inside a Virtual Machine — this keeps the bot and any anticheat completely separate. This page walks you through creating that VM using a well-tested community project.

> The setup takes about **20-30 minutes** end-to-end. Most of it is Windows installing itself — you only click a few things.

***

## Before you start

Make sure you have:

* **Windows 10 Pro or Windows 11 Pro** on your host PC (Home edition does not work). The VM itself will always run Windows 10.
* **Windows language: English (US)** on both host and VM — other languages (e.g. Turkish) can cause installation issues
* **PC with an NVIDIA, Intel or AMD GPU**
* **Latest GPU driver** downloaded straight from the manufacturer's site (NVIDIA.com or Intel.com), not from Windows Update
* **Virtualization enabled** in the BIOS (most PCs built in the last 5 years have it on by default)
* **At least 200 GB free disk space** and **10 GB of RAM** to spare
* **A Windows 10 ISO** — [download here](https://drive.google.com/file/d/1NFAf0-JpN8vwtmG2XMYYUSHATXioPqAB/view?usp=sharing)
* **A powered monitor or an HDMI dummy dongle** connected to the GPU

> 💡 Not sure about virtualization? Search "System Information" in Windows and look for "Virtualization-based security". If it shows "Running", you're good.

***

## What you'll install

We use a community project called **Easy-GPU-PV** by jamesstringer90 to create the VM with GPU sharing. It's the most reliable option for Black Desert.

| Tool            | Where it runs | What it does                     |
| --------------- | ------------- | -------------------------------- |
| **Easy-GPU-PV** | Your host PC  | Creates the VM with GPU sharing. |
| **Sunshine**    | Inside the VM | Streams the game from the VM.    |
| **Moonlight**   | Your host PC  | Shows the VM on your monitor.    |

Parsec is supported as an alternative to Sunshine + Moonlight if you prefer it — see [Streaming & Input](/pixelbot/configuration/streaming.md).

***

## Step 1 — Create the VM

1. Download the Easy-GPU-PV repository as a ZIP: 👉 <https://github.com/jamesstringer90/Easy-GPU-PV> (Green **Code** button → **Download ZIP**)
2. Extract it anywhere on your PC. Keep the whole folder together.
3. Open **PowerShell ISE as Administrator** and run:

   ```
   Set-ExecutionPolicy unrestricted
   ```
4. Open `PreChecks.ps1` in PowerShell ISE and run it (green play button). It checks your system and shows your GPU name — write it down, you'll need it.
5. Open `CopyFilesToVM.ps1` in PowerShell ISE. At the top of the file, edit these fields:

   | Field                             | What to put                                              |
   | --------------------------------- | -------------------------------------------------------- |
   | `VMName`                          | A name for the VM (e.g. `BDO`)                           |
   | `SourcePath`                      | Full path to the Windows 10 ISO you downloaded           |
   | `SizeBytes`                       | `150gb` (enough for BDO + updates)                       |
   | `MemoryAmount`                    | `6GB` (or more if you have lots of RAM)                  |
   | `CPUCores`                        | `4` (or more if you have 8+ cores)                       |
   | `GPUName`                         | `AUTO`                                                   |
   | `GPUResourceAllocationPercentage` | `30` (raise it only if VM graphics stutter)              |
   | `Username`                        | A name for the VM user (must be different from `VMName`) |
   | `Password`                        | Any password (cannot be empty)                           |
   | `Autologon`                       | `true`                                                   |

   Leave everything else as it is.
6. Run `CopyFilesToVM.ps1`. It takes 10-20 minutes. When it finishes, your VM exists and Windows is installed inside.

> ⚠️ If the script errors with *"Cannot bind argument to parameter 'Path'"*, your ISO file path is wrong. Double-check the full path and that the file actually exists.

***

## Step 2 — Set up streaming

At this point you have a working VM, but nothing to see it with. Follow the [Sunshine Setup](/pixelbot/configuration/sunshine.md) guide to install the streaming software.

If you'd rather use Parsec, install it inside the VM and on your PC — no extra setup needed from this docs (go straight to [Streaming & Input](/pixelbot/configuration/streaming.md)).

***

## Keeping the VM up to date

Whenever you update your GPU drivers on the host PC:

1. Reboot the host.
2. Open PowerShell as Administrator in the Easy-GPU-PV folder.
3. Run:

   ```
   .\Update-VMGpuPartitionDriver.ps1 -VMName "YOUR_VM_NAME" -GPUName "AUTO"
   ```

***

## Troubleshooting

| Problem                              | What to do                                                                                           |
| ------------------------------------ | ---------------------------------------------------------------------------------------------------- |
| Script says ISO path is null         | Check the `SourcePath` field — it must be the full path to the `.iso` file, and the file must exist. |
| VM seems stuck                       | Be patient — the first Windows installation takes 10-20 minutes.                                     |
| GPU error inside the VM              | Reboot the host, then re-run `Update-VMGpuPartitionDriver.ps1`.                                      |
| "User is not an administrator" error | Your `VMName` and `Username` are the same. Make them different and re-run.                           |
| Script won't start                   | Run `Set-ExecutionPolicy unrestricted` in PowerShell as Admin.                                       |

***

## Need Help?

Join our [Discord](https://discord.gg/3pMUfYXjra) for support.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://pixelbot-docs.gitbook.io/pixelbot/configuration/virtualmachine.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
