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 to JSON with PackedScene prefab support

  • Math library with Vec2, Vec3, Quat, and matrix utilities (pure NumPy)

Installation

# Install core engine + Vulkan backend (editable/dev mode)
uv pip install -e packages/core -e packages/graphics

Requirements: Python 3.13+, NumPy, Vulkan 1.2+ GPU, GLFW3, glslc shader compiler.

Quick Start

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)

        cube = MeshInstance3D(
            mesh=Mesh.cube(),
            material=Material(color=(1, 0, 0)),
        )
        self.add_child(cube)

    def process(self, dt):
        cube = self.children["MeshInstance3D"]
        cube.rotate((0, 1, 0), 90 * dt)

app = App(width=1280, height=720, title="My Game")
app.run(MyGame())