Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode Skip to content
SimVX documentation
SimVX documentation

Getting Started

  • Installation
  • Quickstart
  • Your First 2D Game
  • Your First 3D Game
  • Patterns
  • Examples Gallery
    • Triangle
    • Bouncing Balls
    • Rotating Cube
    • Pong
    • Platformer
    • Asteroids 2D
    • Space Invaders 2D
    • Tic Tac Toe
    • Dungeon Explorer
    • Asteroids 3D
    • Space Invaders 3D
    • Physics Sandbox
    • Pad Grid
    • Planet Explorer
    • Deep Sea Aquarium
    • Sprite
    • Tilemap
    • 2D Lighting
    • 2D Navigation
    • NinePatch
    • 2D Joints
    • 2D Path Follow
    • 2D Trail
    • 3D Lighting
    • Fog
    • IBL
    • Particles
    • Animation Blend
    • MultiMesh
    • Noise
    • Mesh Parenting
    • CSG
    • 3D Joints
    • 3D Navigation
    • Widget Showcase
    • Menus
    • Tree
  • Architecture
  • Building a Simple Game with the SimVX Editor

Core Engine

  • Core Engine
  • Node System
  • Input System
  • Animation
  • SimVX Audio System
  • UI System
  • Math Types
  • Collision & Physics
  • Scenes
  • Particles
  • TileMap
  • 2D Lighting
  • Constructive Solid Geometry
  • Navigation
  • 3D Navigation
  • Skeleton
  • Physics Engine
  • Testing
  • Package Resources
  • Save System
  • Event Bus

Graphics Backend

  • Graphics Backend
  • App Class
  • Custom Shaders
  • Visual Testing

Web

  • Web Export
  • Web export — resource channel

IDE

  • IDE

API Reference

  • API Reference
    • simvx.core
      • simvx.core.physics
        • simvx.core.physics.engine
      • simvx.core.scene_io
        • simvx.core.scene_io.loader
        • simvx.core.scene_io.source_tree
        • simvx.core.scene_io.edits
        • simvx.core.scene_io.detection
        • simvx.core.scene_io.scene_file
        • simvx.core.scene_io.scene_module
        • simvx.core.scene_io.symbols
        • simvx.core.scene_io.emitter
      • simvx.core.debug
        • simvx.core.debug.overlay
        • simvx.core.debug.ui_inspector
        • simvx.core.debug.profiler
      • simvx.core.nodes_3d
        • simvx.core.nodes_3d.path
        • simvx.core.nodes_3d.text
        • simvx.core.nodes_3d.multimesh
        • simvx.core.nodes_3d.remote_transform
        • simvx.core.nodes_3d.node3d
        • simvx.core.nodes_3d.sprite
        • simvx.core.nodes_3d.marker
        • simvx.core.nodes_3d.lights
        • simvx.core.nodes_3d.camera
        • simvx.core.nodes_3d.mesh
        • simvx.core.nodes_3d.spring_arm
      • simvx.core.input
        • simvx.core.input.events
        • simvx.core.input.map
        • simvx.core.input.state
        • simvx.core.input.enums
      • simvx.core.ui
        • simvx.core.ui.core
        • simvx.core.ui.ui_input
        • simvx.core.ui.virtual_scroll
        • simvx.core.ui.autocomplete
        • simvx.core.ui.terminal
        • simvx.core.ui.code_edit
        • simvx.core.ui.file_browser
        • simvx.core.ui.syntax_highlighter
        • simvx.core.ui.tabs
        • simvx.core.ui.colour_picker
        • simvx.core.ui.toolbar
        • simvx.core.ui.types
        • simvx.core.ui.clipboard
        • simvx.core.ui.markers
        • simvx.core.ui.split
        • simvx.core.ui.graph_edit
        • simvx.core.ui.virtual_controls
        • simvx.core.ui.testing
        • simvx.core.ui.menu
        • simvx.core.ui.containers
        • simvx.core.ui.tree
        • simvx.core.ui.code_editor_panel
        • simvx.core.ui.folding
        • simvx.core.ui.theme
        • simvx.core.ui.find_replace
        • simvx.core.ui.dock
        • simvx.core.ui.rich_text
        • simvx.core.ui.popup_manager
        • simvx.core.ui.scroll
        • simvx.core.ui.file_dialog
        • simvx.core.ui.ansi_parser
        • simvx.core.ui.widgets
        • simvx.core.ui.completion_types
        • simvx.core.ui.multiline
        • simvx.core.ui.tooltip
        • simvx.core.ui.enums
        • simvx.core.ui.advanced
      • simvx.core.text
        • simvx.core.text.msdf
        • simvx.core.text.font
      • simvx.core.math
        • simvx.core.math.matrices
        • simvx.core.math.types
        • simvx.core.math.rect2
        • simvx.core.math.aabb
        • simvx.core.math.curves
        • simvx.core.math.raycast
        • simvx.core.math.transforms
      • simvx.core.animation
        • simvx.core.animation.blend_space
        • simvx.core.animation.state_machine
        • simvx.core.animation.tween
        • simvx.core.animation.player
        • simvx.core.animation.sprite
        • simvx.core.animation.skeletal
        • simvx.core.animation.track
      • simvx.core.graphics
        • simvx.core.graphics.material
        • simvx.core.graphics.shader
        • simvx.core.graphics.mesh
      • simvx.core.navigation3d
        • simvx.core.navigation3d.server
        • simvx.core.navigation3d.nodes
        • simvx.core.navigation3d.mesh
      • simvx.core.nodes_2d
        • simvx.core.nodes_2d.path
        • simvx.core.nodes_2d.text
        • simvx.core.nodes_2d.remote_transform
        • simvx.core.nodes_2d.ninepatch
        • simvx.core.nodes_2d.node2d
        • simvx.core.nodes_2d.shapes
        • simvx.core.nodes_2d.ysort
        • simvx.core.nodes_2d.canvas
        • simvx.core.nodes_2d.marker
        • simvx.core.nodes_2d.camera
        • simvx.core.nodes_2d.trail
      • simvx.core.lsp
        • simvx.core.lsp.protocol
        • simvx.core.lsp.server
        • simvx.core.lsp.client
      • simvx.core.testing
        • simvx.core.testing.scene_runner
        • simvx.core.testing.input_sim
        • simvx.core.testing.recorder
        • simvx.core.testing.diagnostics
      • simvx.core.coroutines
      • simvx.core.audio_bus
      • simvx.core.save_manager
      • simvx.core.decal
      • simvx.core.selection
      • simvx.core.file_state
      • simvx.core.scene_tree
      • simvx.core.csg
      • simvx.core.audio_backend
      • simvx.core.cli
      • simvx.core.particles
      • simvx.core.skeleton
      • simvx.core.run
      • simvx.core.surface_tool
      • simvx.core.export
      • simvx.core.gizmo
      • simvx.core.event_bus
      • simvx.core.noise
      • simvx.core.shell_node
      • simvx.core.gpu_particles
      • simvx.core.reflection_probe
      • simvx.core.collision
      • simvx.core.tilemap
      • simvx.core.physics_nodes
      • simvx.core.clipboard
      • simvx.core.resource
      • simvx.core.atlas
      • simvx.core.particle_trail
      • simvx.core.gesture
      • simvx.core.asset_resolver
      • simvx.core.document
      • simvx.core.hot_reload
      • simvx.core.script_embed
      • simvx.core.scripted_demo
      • simvx.core.descriptors
      • simvx.core.script
      • simvx.core.light2d
      • simvx.core.project
      • simvx.core.properties
      • simvx.core.events
      • simvx.core.shapecast
      • simvx.core.audio
      • simvx.core.easing
      • simvx.core.world_environment
      • simvx.core.fog_volume
      • simvx.core.undo
      • simvx.core.clustered_lighting
      • simvx.core.navigation
      • simvx.core.render_queue
      • simvx.core.shortcuts
      • simvx.core.mesh_lod
      • simvx.core.config
      • simvx.core.node
      • simvx.core.skeleton2d
      • simvx.core.resource_loader
      • simvx.core.git_status
      • simvx.core.i18n
      • simvx.core.mesh_instance_2d
      • simvx.core.viewport
    • simvx.graphics
      • simvx.graphics.streaming
        • simvx.graphics.streaming.server
      • simvx.graphics.assets
        • simvx.graphics.assets.scene_import
        • simvx.graphics.assets.cubemap_loader
        • simvx.graphics.assets.mesh_loader
        • simvx.graphics.assets.image_loader
      • simvx.graphics.platform
      • simvx.graphics.picking
        • simvx.graphics.picking.pick_pass
        • simvx.graphics.picking.raycast_utils
        • simvx.graphics.picking.raycast
      • simvx.graphics.shaders
      • simvx.graphics.renderer
        • simvx.graphics.renderer.render_graph
        • simvx.graphics.renderer.render_pass
        • simvx.graphics.renderer.tilemap_pass
        • simvx.graphics.renderer.shadow_renderer
        • simvx.graphics.renderer.overlay_renderer
        • simvx.graphics.renderer.custom_post_process
        • simvx.graphics.renderer.outline_pass
        • simvx.graphics.renderer.gpu_batch
        • simvx.graphics.renderer.gizmo_pass
        • simvx.graphics.renderer.particle_compute
        • simvx.graphics.renderer.scene_renderer
        • simvx.graphics.renderer.grid_pass
        • simvx.graphics.renderer.draw2d_pass
        • simvx.graphics.renderer.colour_grading
        • simvx.graphics.renderer.light2d_pass
        • simvx.graphics.renderer.passes
        • simvx.graphics.renderer.game_viewport
        • simvx.graphics.renderer.viewport_manager
        • simvx.graphics.renderer.particle_pass
        • simvx.graphics.renderer.mesh_registry
        • simvx.graphics.renderer.environment_sync
        • simvx.graphics.renderer.shadow_pass
        • simvx.graphics.renderer.pass_orchestrator
        • simvx.graphics.renderer.light_cull_pass
        • simvx.graphics.renderer.shadow_math
        • simvx.graphics.renderer.text_pass
        • simvx.graphics.renderer.skybox_pass
        • simvx.graphics.renderer.point_shadow_pass
        • simvx.graphics.renderer.forward
        • simvx.graphics.renderer.bloom_pass
        • simvx.graphics.renderer.render_target
        • simvx.graphics.renderer.render_context
        • simvx.graphics.renderer.tile_types
        • simvx.graphics.renderer.ibl_pass
        • simvx.graphics.renderer.transparency
        • simvx.graphics.renderer.post_process
        • simvx.graphics.renderer.ssao_pass
        • simvx.graphics.renderer.resource_registry
        • simvx.graphics.renderer.buffer_manager
        • simvx.graphics.renderer.pipeline_manager
        • simvx.graphics.renderer.fog_pass
        • simvx.graphics.renderer.pass_helpers
      • simvx.graphics.gpu
        • simvx.graphics.gpu.swapchain
        • simvx.graphics.gpu.sync
        • simvx.graphics.gpu.timestamp_pool
        • simvx.graphics.gpu.descriptors
        • simvx.graphics.gpu.pipeline_compute
        • simvx.graphics.gpu.commands
        • simvx.graphics.gpu.pipeline
        • simvx.graphics.gpu.context
        • simvx.graphics.gpu.memory
        • simvx.graphics.gpu.device
        • simvx.graphics.gpu.instance
      • simvx.graphics.ui
        • simvx.graphics.ui.ui_pass
      • simvx.graphics.materials
        • simvx.graphics.materials.custom_shader
        • simvx.graphics.materials.texture
        • simvx.graphics.materials.material
        • simvx.graphics.materials.shader_compiler
      • simvx.graphics.scene
        • simvx.graphics.scene.frustum
        • simvx.graphics.scene.transforms
        • simvx.graphics.scene.camera
        • simvx.graphics.scene.draw_batch
      • simvx.graphics.draw2d_vertex
      • simvx.graphics.engine
      • simvx.graphics.input_adapter
      • simvx.graphics.draw2d_texture
      • simvx.graphics.app
      • simvx.graphics.debug_draw
      • simvx.graphics.testing
      • simvx.graphics.draw2d_text
      • simvx.graphics.draw2d
      • simvx.graphics.text_utils
      • simvx.graphics.text_renderer
      • simvx.graphics.draw2d_transform
      • simvx.graphics.draw2d_batch
      • simvx.graphics.scene_adapter
      • simvx.graphics.playtest_patterns
      • simvx.graphics.playtest
    • simvx.editor
      • simvx.editor.panels
        • simvx.editor.panels.scene_tree
          • simvx.editor.panels.scene_tree.dialogs
          • simvx.editor.panels.scene_tree.panel
          • simvx.editor.panels.scene_tree.type_registry
        • simvx.editor.panels.inspector_sections
          • simvx.editor.panels.inspector_sections.sections
        • simvx.editor.panels.inspector_script
        • simvx.editor.panels.status_bar
        • simvx.editor.panels.animation
        • simvx.editor.panels.file_browser
        • simvx.editor.panels.animation_editor
        • simvx.editor.panels.inspector_widgets
        • simvx.editor.panels.anchor_preset_widget
        • simvx.editor.panels.play_controls
        • simvx.editor.panels.console
        • simvx.editor.panels.code_tab
        • simvx.editor.panels.properties
        • simvx.editor.panels.property_widgets
        • simvx.editor.panels.scene3d_view
        • simvx.editor.panels.asset_browser
        • simvx.editor.panels.viewport_math
        • simvx.editor.panels.scene2d_view
        • simvx.editor.panels.section_widgets
        • simvx.editor.panels.repl_panel
        • simvx.editor.panels.profiler_panel
      • simvx.editor.testing
        • simvx.editor.testing.demo_steps
          • simvx.editor.testing.demo_steps.handlers
            • simvx.editor.testing.demo_steps.handlers.inspector
            • simvx.editor.testing.demo_steps.handlers.menu
            • simvx.editor.testing.demo_steps.handlers.nodes
            • simvx.editor.testing.demo_steps.handlers.viewport
          • simvx.editor.testing.demo_steps.steps
      • simvx.editor.game_render_hook
      • simvx.editor.play_mode
      • simvx.editor.scene_diff
      • simvx.editor.refactor_extract
      • simvx.editor.default_scenes
      • simvx.editor.export_controller
      • simvx.editor.workspace_tabs
      • simvx.editor.templates
      • simvx.editor.cli
      • simvx.editor.node_ops
      • simvx.editor.error_recovery
      • simvx.editor.plugin
      • simvx.editor.welcome
      • simvx.editor.node_catalogue
      • simvx.editor.app
      • simvx.editor.duplicate_node_dialog
      • simvx.editor.menus
      • simvx.editor.project_registry
      • simvx.editor.about_dialog
      • simvx.editor.keyboard_nav
      • simvx.editor.layout_presets
      • simvx.editor.scene_file_ops
      • simvx.editor.preferences_dialog
      • simvx.editor.project
      • simvx.editor.web_export
      • simvx.editor.make_custom_class_dialog
      • simvx.editor.script_ops
      • simvx.editor.save_dialog
      • simvx.editor.project_settings_dialog
      • simvx.editor.extract
      • simvx.editor.error_nav
      • simvx.editor.refactor_inline
      • simvx.editor.theme
      • simvx.editor.export_dialog
      • simvx.editor.live_file_ops
      • simvx.editor.project_classes
      • simvx.editor.command_palette
      • simvx.editor.root
      • simvx.editor.state
      • simvx.editor.ide_bridge
      • simvx.editor.config
      • simvx.editor.main
      • simvx.editor.commands
      • simvx.editor.gizmo_manipulator
      • simvx.editor.hints
      • simvx.editor.input_map_dialog
      • simvx.editor.unsaved_class_warning_dialog
      • simvx.editor.autosave
      • simvx.editor.rename_class_dialog
    • simvx.ide
      • simvx.ide.widgets
        • simvx.ide.widgets.status_bar
        • simvx.ide.widgets.autocomplete
        • simvx.ide.widgets.goto_line
        • simvx.ide.widgets.minimap
        • simvx.ide.widgets.confirm_dialog
        • simvx.ide.widgets.command_palette
      • simvx.ide.panels
        • simvx.ide.panels.terminal_panel
        • simvx.ide.panels.symbol_outline
        • simvx.ide.panels.settings_panel
        • simvx.ide.panels.output_panel
        • simvx.ide.panels.file_browser
        • simvx.ide.panels.debug_panel
        • simvx.ide.panels.problems_panel
        • simvx.ide.panels.search_panel
      • simvx.ide.dap
        • simvx.ide.dap.client
      • simvx.ide.lint
        • simvx.ide.lint.runner
      • simvx.ide.lsp
        • simvx.ide.lsp.client
      • simvx.ide.debug_session
      • simvx.ide.language_server
      • simvx.ide.file_tabs
      • simvx.ide.app
      • simvx.ide.state
      • simvx.ide.edit_actions
      • simvx.ide.embedded
      • simvx.ide.keybindings
      • simvx.ide.config
      • simvx.ide.playtest
Back to top
View this page

Examples Gallery¶

All examples live in packages/graphics/examples/. Run any example with:

uv run python packages/graphics/examples/<filename>.py

Getting Started¶

Example

Description

Demo

Platforms

start_triangle.py

Minimal 2D triangle via draw() override.

Play

Web, Vulkan

start_bouncing_ball.py

Colourful balls bouncing off screen edges.

Play

Web, Vulkan

start_rotating_cube.py

Simple 3D rotating cube using the node system.

Play

Web, Vulkan

2D Games¶

Example

Description

Demo

Platforms

game_pong.py

Two-player Pong with paddles, ball, and score.

Play

Web, Vulkan

game_platformer.py

CharacterBody2D with gravity, jump, and platforms.

Play

Web, Vulkan

game_asteroids2d.py

Classic arcade game with wrap-around physics.

Play

Web, Vulkan

game_spaceinvaders2d.py

Rows of enemies, bullets, and wave progression.

Play

Web, Vulkan

game_tictactoe/game.py

Classic two-player game built with UI widgets.

Play

Web, Vulkan

games/dungeon_explorer/main.py

Top-down dungeon crawler with procedural generation, loot, skill trees, and boss fights.

Play

Web

3D Games¶

Example

Description

Demo

Platforms

game_asteroids3d.py

Top-down arcade game with 3D objects.

Play

Web, Vulkan

game_spaceinvaders3d.py

Classic arcade game with 3D meshes.

Play

Web, Vulkan

game_physics_sandbox.py

Visual demo of the SimVX physics engine.

Play

Web, Vulkan

game_pad_grid.py

Pad instrument with recording, loop, and training modes.

Play

Web

game_planet_explorer.py

Infinite procedural flyover with terrain, day/night cycle, and weather.

Play

Web, Vulkan

game_tictactoe3d/game.py

3D board with animated X and O pieces.

—

game_deep_sea_aquarium/main.py

Bioluminescent underwater world with boids, music, and bloom.

Play

Web

2D Features¶

Example

Description

Demo

Platforms

2d_sprite.py

PNG textures as 2D quads via draw_texture().

Play

Web, Vulkan

2d_tilemap.py

GPU-rendered tilemap with multi-layer and player-follow camera.

Play

Web (TileMap rendering not yet supported on web.), Vulkan

2d_light.py

Coloured point lights with shadow-casting occluders.

Play

Web (2D lighting not composited on web — only occluder outlines and light markers render.), Vulkan (2D lighting not composited on web.)

2d_navigation.py

A* pathfinding – click-to-move character on a grid.

Play

Web, Vulkan

2d_ninepatch.py

9-slice sprite scaling via draw_texture_region().

Play

Web, Vulkan

2d_joints.py

2D physics joints (pendulum chain).

Play

Web, Vulkan

2d_path_follow.py

Path following with Curve2D and PathFollow2D.

Play

Web, Vulkan

2d_trail.py

Trail rendering behind moving objects.

Play

Web, Vulkan

3D Features¶

Example

Description

Demo

Platforms

3d_lighting.py

Directional, point, and spot lights.

Play

Web, Vulkan

3d_shadows.py

Cascade shadow maps with debug visualisation.

—

3d_point_shadows.py

Point and spot light shadow maps.

—

3d_ssao.py

Screen-space ambient occlusion.

—

3d_fog.py

Fog and colour grading via WorldEnvironment.

Play

Web (Fog renders differently than desktop (no tonemap exposure on web).), Vulkan

3d_ibl.py

Image-based lighting with metallic spheres.

Play

Web (Skybox and image-based lighting not yet supported on web.), Vulkan

3d_particles.py

CPU + GPU particle effects with sub-emitters, collision, trails.

Play

Web (No particles render on web.), Vulkan (GPUParticles3D not rendered on web; CPU emitters still work.)

3d_model_viewer.py

Load glTF models with PBR textures and orbit camera.

Vulkan

3d_animation_blend.py

BlendSpace1D, crossfade, and keyframe events.

Play

Web, Vulkan

3d_motion_blur.py

Camera-based motion blur.

Vulkan

3d_multimesh.py

1600 instanced cubes via MultiMeshInstance3D.

Play

Web, Vulkan

3d_noise.py

Perlin, Simplex, Value, and Cellular noise side by side.

Play

Web, Vulkan

3d_picking.py

Mouse picking – click cubes to change colour.

—

3d_raycast.py

Ray grid with animated cubes and single/multi-hit toggle.

—

3d_render_layers.py

Object visibility via render layer bitmasks.

—

3d_textured_cubes.py

Checkerboard textures on cubes.

—

3d_mesh_parenting.py

MeshInstance3D rendering inside different parent node types.

Play

Web

3d_text.py

Text textures on 3D geometry + MSDF overlay.

—

3d_csg.py

CSG boolean operations (union, subtract, intersect).

Play

Web, Vulkan

3d_joints.py

3D physics joints (pin, hinge).

Play

Web (HingeJoint3D angular limits not enforced — door rotates full 360°.), Vulkan (HingeJoint3D angular limits not enforced.)

3d_navigation.py

3D pathfinding with NavigationAgent3D.

Play

Web, Vulkan

3d_skeletal.py

Skeletal animation with bone deformation.

—

3d_path_follow.py

3D path following (camera rail).

—

3d_custom_shader.py

ShaderMaterial API preview — visual effect blocked on renderer integration.

Vulkan (ShaderMaterial not yet applied on web — shapes render with default materials.)

3d_feature_showcase.py

Interactive 3D showcase: PBR, collisions, raycasting, DebugDraw.

—

UI¶

Example

Description

Demo

Platforms

ui_widget_showcase.py

Comprehensive UI showcase with DemoRunner.

Play

Web

ui_text_input.py

Character input, focus routing, and scissor clipping.

—

ui_menus.py

MenuBar with PopupMenu dropdowns and z-ordering.

Play

Web

ui_tree.py

Live scene tree inspector with expand/collapse.

Play

Web

ui_theme_demo.py

StyleBox theming system.

—

ui_terminal.py

Interactive terminal emulator running bash.

—

ui_audio.py

Audio – generate and play test tones.

—

ui_i18n.py

Translated text and locale switching.

—

ui_undo.py

Undo/Redo with Ctrl+Z / Ctrl+Shift+Z.

—

ui_gestures.py

Touch gesture recognition (tap, swipe, pinch, rotate).

—

Debug¶

Example

Description

Demo

Platforms

debug_draw.py

Wireframe boxes, spheres, axes, and rays.

—

debug_overlay.py

F3 debug overlay with feature cycling.

—

Next
Triangle
Previous
Patterns
Copyright © 2026, SimVX Contributors
Made with Sphinx and @pradyunsg's Furo
On this page
  • Examples Gallery
    • Getting Started
    • 2D Games
    • 3D Games
    • 2D Features
    • 3D Features
    • UI
    • Debug