SimVX¶
A Godot-inspired game engine written entirely in Python, featuring a scene-tree node system, Vulkan rendering, and a rich set of built-in systems for building games and simulations.
Features¶
Node system with scene tree hierarchy, signals, groups, and coroutines
3D rendering via Vulkan (GPU-driven, multi-draw indirect batching)
Animation with tweens, sprite sheets, keyframe clips, and state machines
Audio with 2D/3D spatial playback, distance attenuation, and bus routing
UI widgets including buttons, sliders, text edits, and layout containers
Collision detection with GJK narrowphase, AABB broadphase, and raycasting
Scene serialization — scenes round-trip as Python source (JSON/pickle for save-game data)
Math library with Vec2, Vec3, Quat, and matrix utilities (pure NumPy)
Installation¶
# Install all packages in editable/dev mode
uv pip install -e packages/core -e packages/graphics -e packages/web -e packages/editor -e packages/ide
Requirements: Python 3.13+, NumPy, Vulkan 1.2+ GPU, GLFW3, glslc shader compiler.
Quick Start¶
import math
from simvx.core import Node, Camera3D, MeshInstance3D, Mesh, Material
from simvx.graphics import App
class MyGame(Node):
def ready(self):
cam = Camera3D(position=(0, 5, 10))
cam.look_at((0, 0, 0))
self.add_child(cam)
self.cube = self.add_child(MeshInstance3D(
name="Cube",
mesh=Mesh.cube(),
material=Material(colour=(1, 0, 0)),
))
def process(self, dt):
self.cube.rotate((0, 1, 0), math.radians(90) * dt) # 90°/sec
app = App(width=1280, height=720, title="My Game")
app.run(MyGame())
Note
SimVX ships under a custom non-commercial licence (with a small-scale commercial exception). See LICENSE for the exact terms before using it in a product.
Getting Started
Core Engine
Graphics Backend
API Reference