Set up the desktop emulator¶
Use this route for the tutorial and for keeping your game in files and Git. The emulator runs your MicroPython game on your computer; no console is needed.
Install dependencies¶
The previous setup guides recorded Ubuntu 24.04 x86_64, macOS Sonoma 14.5 on an M1 MacBook Air, and Windows 10 Intel 64-bit. These are recorded environments, not a claim that every current combination has been retested. SDK CI uses Python 3.12.
Linux (Ubuntu):
sudo apt install git micropython python3.12-venv ffmpeg
macOS: install Homebrew, then:
brew install git python@3.12 micropython ffmpeg
Use Homebrew’s installation instructions to put its binaries on PATH; its prefix differs between Apple Silicon and Intel machines.
Windows: install Git and
Python 3.12, with Python on PATH.
The SDK includes emulator/micropython.exe. FFmpeg is needed for audio
conversion; see emulator/ffmpeg-win/README.md in the repository for the
local binary directory. Game code is MicroPython, distinct from the CPython
used to run the emulator host.
Clone and install¶
git clone https://github.com/ventilastation/vsdk.git
cd vsdk
python3 -m venv .venv
. .venv/bin/activate
python -m pip install -r requirements.txt
On Windows, use these commands in Command Prompt instead:
git clone https://github.com/ventilastation/vsdk.git
cd vsdk
py -3.12 -m venv .venv
.venv\Scripts\activate
python -m pip install -r requirements.txt
python -m pip install pywin32
You do not need to initialize the Retro-Go firmware submodule to write MicroPython games.
Run a known VS2 game¶
On Linux/macOS, run from the repository root:
./vs-emu.sh --game demos.tutorial_game
On Windows, with the virtual environment still active:
vs-emu.bat --game demos.tutorial_game
You should see Trench Run. A/D steer; Space is A and 1
is Select (Back). Without --game, the emulator opens the launcher; the finished tutorial
is in Tech Demos. ROM generation happens automatically when sources change.
Controls and troubleshooting¶
Control |
Player 1 |
Player 2 |
|---|---|---|
Up / Down / Left / Right |
Arrow keys |
W / S / A / D |
A / B / C / D |
Numpad 0 / 1 / 2 / 3 |
Space / B / N / M |
Select / Start |
Numpad + / Enter |
1 / 2 |
Press F1 to see the keyboard layout. Select is BACK in the game API;
C and D are X and Y. Player 1 uses the numeric keypad, including its Enter
key; the main Enter key is unassigned. The keypad works with Num Lock on or off.
Either player can navigate the launcher with Up/Down and select with A. Select or D returns from a submenu.
A USB gamepad also works. The terminal that launched the emulator shows Python
tracebacks: keep it open when debugging. A missing PNG usually means
images/__images__.yaml names a file you have not copied.
If python, micropython, or FFmpeg cannot be found, check PATH and activate
.venv. If your game is missing, check its games/<group>/<name>/code/<name>.py
entry point and metadata. --game group.name uses a dot between group and name.
The Unix launcher tries to build the optional native renderer. The GPU shader
renderer needs OpenGL 3.3; ./vs-emu.sh --scene-renderer cpu selects the CPU
path. For renderer profiling and parity checks, see the
desktop scene-renderer comparison
in the SDK internals.