This release is a pre-release and may not be stable for production use.
Scenes are Python code
from simvx.core import Node2D, Sprite2D
class Coin(Node2D):
def on_ready(self):
self.add_child(Sprite2D(texture="coin.png"))
class Level(Node2D):
def __init__(self, **kwargs):
super().__init__(**kwargs)
for i in range(5):
self.add_child(Coin(position=(64 * i, 0)))
Both classes are nodes, and nodes are scenes. The editor rewrites this same file and leaves the methods you wrote untouched.
This release is infrastructure, not the engine. It reserves the name and puts the documentation and the release pipeline in place. What it installs today is a preflight check; the engine itself comes from the project's own index. See Installing below.
Core architecture
Rendering. Vulkan on the desktop and WebGPU in the browser, from the same scene. Draws are batched and per-object data lives in GPU buffers, so frame cost tracks the GPU work rather than the Python that built the scene. PBR materials, shadows, ambient occlusion, image-based lighting and post-processing are all opt-in. The 2D side is its own pipeline: sprites, tilemaps, particles and 2D lights.
Editor. A scene tree, an inspector, gizmos and a play mode that runs the game in place, all built from the engine's own widgets. Every panel is a Python class you can modify.
Physics. Bodies, joints, areas and queries, in 2D and in 3D, behind one API whichever
backend is in use. The default is pure Python and always present. For speed there are native
backends: Chipmunk2D through pymunk, used automatically once installed, and Jolt for 3D, which
you opt into per project.
Audio, animation, navigation, tilemaps, UI and save/load are part of the same library. Over 100 worked examples come with it: single-feature references, narrated tutorials, re-implementations of well-known games and tutorial projects, and larger demos. Most run in the browser from the docs.
Design decisions
- Scenes are reviewable. A scene change shows up in
git diffas source, and a conflict in one is resolved like any other merge conflict. - No scripting bridge. Engine, editor and game run in one runtime. There is no binding layer between a fast core and a slow script language, and an editor plugin uses the same API as the game.
- Standard tooling. Game code is an ordinary Python package, so you can use
pdb, pytest, mypy and anything else on PyPI. - Export to HTML.
simvx export web game.pywrites a WebGPU page you can serve from any static host, with no backend and nothing for a player to install. - Headless is first class. CI can render a frame and assert on the pixels with no display attached, and programmatic input drives a scene the way a player would.
Installing
Requires Python 3.14+ and a Vulkan 1.2+ driver for the desktop renderer. Windowing runs on GLFW, SDL3 or Qt. A Vulkan driver comes from your GPU vendor, not from pip, so this package ships a check for one:
pip install simvx && simvx-preflight
The engine itself is published continuously to the project's own index:
pip install --pre simvx --extra-index-url https://pypi.simvx.com/
Or from source:
git clone https://git.simvx.com/simvx.git && cd simvx && uv sync
Licence
AGPL-3.0-or-later covers the engine. A game-distribution exception then lets you ship your own game under any licence you like, closed source included, at no cost. It has three conditions: that the game display the "Made with SimVX" splash, that it use the engine through its public interfaces, and that changes to the engine itself stay AGPL. A commercial licence covers what that exception does not, such as shipping without the splash. See https://simvx.com.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file simvx-0.0.0.dev0.tar.gz.
File metadata
- Download URL: simvx-0.0.0.dev0.tar.gz
- Upload date:
- Size: 27.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Manjaro Linux","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1e3817204e0847e718fd2fef7425516d02bee0ca1a0488ee49028a092f098e13
|
|
| MD5 |
141655ed96028eb6aaea7adb08ee5c36
|
|
| BLAKE2b-256 |
efb681a903d0c8994326630eb1cff7349949d0624e0cacd972a0940a2880b872
|
File details
Details for the file simvx-0.0.0.dev0-py3-none-any.whl.
File metadata
- Download URL: simvx-0.0.0.dev0-py3-none-any.whl
- Upload date:
- Size: 27.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Manjaro Linux","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
210c04fdee9f4cac1ec55ca32996da2865261e8373476e50b823db4300dcde1b
|
|
| MD5 |
2d133bfb254b8567e65b22f25671209b
|
|
| BLAKE2b-256 |
f14de1880acafe7b18a211f46854db7a20b1731359abdf627a24ae50c21c93f5
|