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

Get started

  • Installation
  • Quickstart
  • Examples Gallery
  • Editor in the browser

Tutorials

  • Your first 2D game
  • Your first 3D game
  • From monolithic to composed
  • Building a scene in the editor

Guides: scenes and nodes

  • Node system
  • Scenes
  • Patterns
  • Event Bus
  • Save system

Guides: input and UI

  • Input
  • UI system
  • Fonts and languages

Guides: 2D

  • 2D drawing
  • TileMap
  • 2D lighting
  • Particles

Guides: 3D and rendering

  • Cameras (3D)
  • Materials
  • Custom shaders
  • WorldEnvironment
  • Compressed textures (BC / ASTC / ETC2)
  • Blender to SimVX (glTF)
  • Constructive solid geometry
  • Skeleton

Guides: gameplay systems

  • Animation
  • Physics
  • Navigation
  • 3D navigation
  • Audio
  • AssetServer
  • Package resources
  • Math types
  • LLM layer

Guides: testing and tools

  • Testing
  • Visual testing
  • Custom classes in the editor
  • IDE

Shipping

  • Shipping a game
  • Web export

Reference

  • API Reference
    • simvx.core
      • simvx.core.assets
        • simvx.core.assets.sources
          • simvx.core.assets.sources.mem
          • simvx.core.assets.sources.file
          • simvx.core.assets.sources.http
          • simvx.core.assets.sources.pkg
        • simvx.core.assets.loaders
          • simvx.core.assets.loaders.bytes_loader
          • simvx.core.assets.loaders.json_loader
          • simvx.core.assets.loaders.base
        • simvx.core.assets.server
        • simvx.core.assets.handle
        • simvx.core.assets.cache
        • simvx.core.assets.source
      • simvx.core.navigation
        • simvx.core.navigation.path_follower_2d
      • simvx.core.port_helpers
        • simvx.core.port_helpers.procedural_textures
      • simvx.core.ui
        • simvx.core.ui.ansi_parser
        • simvx.core.ui.splash
        • simvx.core.ui.rich_text
        • simvx.core.ui.advanced
        • simvx.core.ui.widgets
        • simvx.core.ui.touch_controller
        • simvx.core.ui.markers
        • simvx.core.ui.text_paragraph
        • simvx.core.ui.navigation
        • simvx.core.ui.testing
        • simvx.core.ui.overlay
        • simvx.core.ui.containers
        • simvx.core.ui.clipboard
        • simvx.core.ui.file_browser
        • simvx.core.ui.terminal
        • simvx.core.ui.theme
        • simvx.core.ui.syntax_highlighter
        • simvx.core.ui.tooltip
        • simvx.core.ui.core
        • simvx.core.ui.dock
        • simvx.core.ui.find_replace
        • simvx.core.ui.tabs
        • simvx.core.ui.tree
        • simvx.core.ui.split
        • simvx.core.ui.graph_edit
        • simvx.core.ui.virtual_controls
        • simvx.core.ui.virtual_scroll
        • simvx.core.ui.command_line
        • simvx.core.ui.completion_types
        • simvx.core.ui.file_dialog
        • simvx.core.ui.multiline
        • simvx.core.ui.focus
        • simvx.core.ui.button_group
        • simvx.core.ui.scroll
        • simvx.core.ui.toolbar
        • simvx.core.ui.menu
        • simvx.core.ui.grid_slots
        • simvx.core.ui.code_editor_panel
        • simvx.core.ui.marks
        • simvx.core.ui.autocomplete
        • simvx.core.ui.folding
        • simvx.core.ui.text_selection
        • simvx.core.ui.scene_host
        • simvx.core.ui.colour_picker
        • simvx.core.ui.enums
        • simvx.core.ui.code_edit
        • simvx.core.ui.types
        • simvx.core.ui.ui_input
      • simvx.core.text
        • simvx.core.text.measure
        • simvx.core.text.msdf
        • simvx.core.text.font
        • simvx.core.text.bundled
      • simvx.core.scene_io
        • simvx.core.scene_io.source
        • simvx.core.scene_io.symbols
        • simvx.core.scene_io.scene_file
        • simvx.core.scene_io.emitter
        • simvx.core.scene_io.layout
        • simvx.core.scene_io.scene_module
        • simvx.core.scene_io.loader
        • simvx.core.scene_io.detection
        • simvx.core.scene_io.syntax
      • simvx.core.input
        • simvx.core.input.tick
        • simvx.core.input.controller
        • simvx.core.input.engine
        • simvx.core.input.web_events
        • simvx.core.input.controls
        • simvx.core.input.listener
        • simvx.core.input.drag
        • simvx.core.input.state
        • simvx.core.input.players
        • simvx.core.input.router
        • simvx.core.input.map
        • simvx.core.input.spelling
        • simvx.core.input.gestures
        • simvx.core.input.prompts
        • simvx.core.input.capabilities
        • simvx.core.input.events
        • simvx.core.input.contexts
        • simvx.core.input.devices
        • simvx.core.input.actions
        • simvx.core.input.enums
        • simvx.core.input.layouts
      • simvx.core.testing
        • simvx.core.testing.scene_runner
        • simvx.core.testing.recorder
        • simvx.core.testing.optional
        • simvx.core.testing.selftest
        • simvx.core.testing.diagnostics
        • simvx.core.testing.benchmark
        • simvx.core.testing.input_sim
      • simvx.core.navigation3d
        • simvx.core.navigation3d.server
        • simvx.core.navigation3d.nodes
        • simvx.core.navigation3d.mesh
      • simvx.core.nodes_2d
        • simvx.core.nodes_2d.marker
        • simvx.core.nodes_2d.camera
        • simvx.core.nodes_2d.remote_transform
        • simvx.core.nodes_2d.trail
        • simvx.core.nodes_2d.ninepatch
        • simvx.core.nodes_2d.canvas
        • simvx.core.nodes_2d.shapes
        • simvx.core.nodes_2d.node2d
        • simvx.core.nodes_2d.spring_follow
        • simvx.core.nodes_2d.ysort
        • simvx.core.nodes_2d.text
        • simvx.core.nodes_2d.background_bands
        • simvx.core.nodes_2d.path
      • simvx.core.math
        • simvx.core.math.aabb
        • simvx.core.math.rect2
        • simvx.core.math.matrices
        • simvx.core.math.transforms
        • simvx.core.math.raycast
        • simvx.core.math.curves
        • simvx.core.math.types
      • simvx.core.graphics
        • simvx.core.graphics.material
        • simvx.core.graphics.texture
        • simvx.core.graphics.shader_bindings
        • simvx.core.graphics.texture_slot
        • simvx.core.graphics.mesh
        • simvx.core.graphics.shader
      • simvx.core.debug
        • simvx.core.debug.ui_inspector
        • simvx.core.debug.overlay
        • simvx.core.debug.profiler
      • simvx.core.lsp
        • simvx.core.lsp.protocol
        • simvx.core.lsp.server
        • simvx.core.lsp.client
      • simvx.core.animation
        • simvx.core.animation.tween
        • simvx.core.animation.skeletal
        • simvx.core.animation.state_machine
        • simvx.core.animation.sprite
        • simvx.core.animation.player
        • simvx.core.animation.track
        • simvx.core.animation.blend_space
      • simvx.core.nodes_3d
        • simvx.core.nodes_3d.chase_camera
        • simvx.core.nodes_3d.marker
        • simvx.core.nodes_3d.camera
        • simvx.core.nodes_3d.lights
        • simvx.core.nodes_3d.node3d
        • simvx.core.nodes_3d.remote_transform
        • simvx.core.nodes_3d.multimesh
        • simvx.core.nodes_3d.spring_arm
        • simvx.core.nodes_3d.sprite
        • simvx.core.nodes_3d.text
        • simvx.core.nodes_3d.mesh
        • simvx.core.nodes_3d.path
      • simvx.core.physics
        • simvx.core.physics.builtin
          • simvx.core.physics.builtin.world2d
          • simvx.core.physics.builtin.world
        • simvx.core.physics.pymunk_backend
        • simvx.core.physics.material
        • simvx.core.physics.shapes2d
        • simvx.core.physics.nodes
        • simvx.core.physics.capability
        • simvx.core.physics.shapes
        • simvx.core.physics.world2d
        • simvx.core.physics.slide
        • simvx.core.physics.root
        • simvx.core.physics.nodes2d
        • simvx.core.physics.backends
        • simvx.core.physics.query2d
        • simvx.core.physics.world
        • simvx.core.physics.query
      • simvx.core.audio_backend
      • simvx.core.audio_synth
      • simvx.core.mesh_builder
      • simvx.core.water
      • simvx.core.particle_trail
      • simvx.core.mesh_lod
      • simvx.core.scene_target_graph
      • simvx.core.git_status
      • simvx.core.background
      • simvx.core.gpu_particles
      • simvx.core.planar_reflection
      • simvx.core.gradient
      • simvx.core.scene_tree
      • simvx.core.event_bus
      • simvx.core.branding
      • simvx.core.clipboard
      • simvx.core.shortcuts
      • simvx.core.decal
      • simvx.core.i18n
      • simvx.core.atlas
      • simvx.core.hot_reload
      • simvx.core.ocean
      • simvx.core.colour
      • simvx.core.save_manager
      • simvx.core.run
      • simvx.core.descriptors
      • simvx.core.resource
      • simvx.core.env_sync_spec
      • simvx.core.project
      • simvx.core.file_state
      • simvx.core.audio_bus
      • simvx.core.clustered_lighting
      • simvx.core.easing
      • simvx.core.config
      • simvx.core.selection
      • simvx.core.rain
      • simvx.core.irradiance_volume
      • simvx.core.node
      • simvx.core.gesture
      • simvx.core.document
      • simvx.core.properties
      • simvx.core.undo
      • simvx.core.diagnostics
      • simvx.core.skeleton2d
      • simvx.core.gizmo
      • simvx.core.shell_node
      • simvx.core.decorators
      • simvx.core.light2d
      • simvx.core.mesh_instance_2d
      • simvx.core.audio_errors
      • simvx.core.procedural_sky
      • simvx.core.cli
      • simvx.core.audio_effect
      • simvx.core.signals
      • simvx.core.noise
      • simvx.core.skeleton
      • simvx.core.audio_listener
      • simvx.core.audio_protocol
      • simvx.core.audio
      • simvx.core.scene_step
      • simvx.core.py_console
      • simvx.core.reflection_probe
      • simvx.core.export
      • simvx.core.tilemap
      • simvx.core.asset_resolver
      • simvx.core.io
      • simvx.core.viewport
      • simvx.core.fog_volume
      • simvx.core.graphics_quality
      • simvx.core.render_view
      • simvx.core.csg
      • simvx.core.scripted_demo
      • simvx.core.particles
      • simvx.core.alignment
      • simvx.core.coroutines
      • simvx.core.colour_grading
      • simvx.core.world_environment
    • simvx.graphics
      • simvx.graphics.materials
        • simvx.graphics.materials.material
        • simvx.graphics.materials.texture
        • simvx.graphics.materials.custom_shader
        • simvx.graphics.materials.shader_compiler
      • simvx.graphics.assets
        • simvx.graphics.assets.block_decode
        • simvx.graphics.assets.image_loader
        • simvx.graphics.assets.ktx2_loader
        • simvx.graphics.assets.mesh_loader
        • simvx.graphics.assets.cubemap_loader
        • simvx.graphics.assets.scene_import
        • simvx.graphics.assets.dds_loader
      • simvx.graphics.gpu
        • simvx.graphics.gpu.memory
        • simvx.graphics.gpu.multi_device
        • simvx.graphics.gpu.instance
        • simvx.graphics.gpu.queue
        • simvx.graphics.gpu.context
        • simvx.graphics.gpu.pipeline_cache
        • simvx.graphics.gpu.sync
        • simvx.graphics.gpu.descriptors
        • simvx.graphics.gpu.retire
        • simvx.graphics.gpu.secondary_engine
        • simvx.graphics.gpu.timestamp_pool
        • simvx.graphics.gpu.pipeline_compute
        • simvx.graphics.gpu.device
        • simvx.graphics.gpu.swapchain
        • simvx.graphics.gpu.commands
        • simvx.graphics.gpu.capabilities
        • simvx.graphics.gpu.pipeline
      • simvx.graphics.ui
      • simvx.graphics.scene
        • simvx.graphics.scene.camera
        • simvx.graphics.scene.frustum
        • simvx.graphics.scene.draw_batch
      • simvx.graphics.shaders
        • simvx.graphics.shaders.variants
      • simvx.graphics.picking
        • simvx.graphics.picking.pick_pass
        • simvx.graphics.picking.raycast
      • simvx.graphics.renderer
        • simvx.graphics.renderer.sub_viewport
        • simvx.graphics.renderer.light_cull_pass
        • simvx.graphics.renderer.decal_pack
        • simvx.graphics.renderer.layer_post
        • simvx.graphics.renderer.draw2d_pass
        • simvx.graphics.renderer.bloom_pass
        • simvx.graphics.renderer.pass_helpers
        • simvx.graphics.renderer.viewport_manager
        • simvx.graphics.renderer.bindless_draw2d_pass
        • simvx.graphics.renderer.gizmo_pass
        • simvx.graphics.renderer.ssgi_pass
        • simvx.graphics.renderer.render_graph
        • simvx.graphics.renderer.pass_orchestrator
        • simvx.graphics.renderer.shadow_data
        • simvx.graphics.renderer.grid_pass
        • simvx.graphics.renderer.reflection_probe_pack
        • simvx.graphics.renderer.shadow_cache
        • simvx.graphics.renderer.hiz_pass
        • simvx.graphics.renderer.render_target
        • simvx.graphics.renderer.scene_renderer
        • simvx.graphics.renderer.shadow_renderer
        • simvx.graphics.renderer.ocean_pack
        • simvx.graphics.renderer.irradiance_volume_pass
        • simvx.graphics.renderer.render_context
        • simvx.graphics.renderer.resource_registry
        • simvx.graphics.renderer.depth_prepass
        • simvx.graphics.renderer.ssao_pass
        • simvx.graphics.renderer.particle_compute
        • simvx.graphics.renderer.environment_sync
        • simvx.graphics.renderer.game_viewport
        • simvx.graphics.renderer.water_pack
        • simvx.graphics.renderer.occlusion_cull
        • simvx.graphics.renderer.skybox_pass
        • simvx.graphics.renderer.ocean_compute
        • simvx.graphics.renderer.ibl_pass
        • simvx.graphics.renderer.velocity_pass
        • simvx.graphics.renderer.buffer_manager
        • simvx.graphics.renderer.ocean_fft
        • simvx.graphics.renderer.point_shadow_pass
        • simvx.graphics.renderer.forward
        • simvx.graphics.renderer.reflection_probe_pass
        • simvx.graphics.renderer.render_thread
        • simvx.graphics.renderer.outline_pass
        • simvx.graphics.renderer.tilemap_pass
        • simvx.graphics.renderer.particle_pass
        • simvx.graphics.renderer.text_pass
        • simvx.graphics.renderer.async_compute
        • simvx.graphics.renderer.pipeline_manager
        • simvx.graphics.renderer.gpu_batch
        • simvx.graphics.renderer.shadow_pass
        • simvx.graphics.renderer.light2d_pass
        • simvx.graphics.renderer.secondary_sru
        • simvx.graphics.renderer.vertex_layouts
        • simvx.graphics.renderer.transparency
        • simvx.graphics.renderer.view_occlusion
        • simvx.graphics.renderer.post_process
        • simvx.graphics.renderer.ssr_pass
        • simvx.graphics.renderer.mesh_registry
        • simvx.graphics.renderer.caster_slots
        • simvx.graphics.renderer.render_packet
        • simvx.graphics.renderer.scene_copy
        • simvx.graphics.renderer.billboard2d_data
        • simvx.graphics.renderer.render_pass
        • simvx.graphics.renderer.fog_volume_pack
        • simvx.graphics.renderer.billboard2d_pass
        • simvx.graphics.renderer.passes
        • simvx.graphics.renderer.overlay_renderer
        • simvx.graphics.renderer.water_pass
        • simvx.graphics.renderer.render_view
        • simvx.graphics.renderer.volumetric_fog_pass
        • simvx.graphics.renderer.custom_post_process
        • simvx.graphics.renderer.ocean_pass
        • simvx.graphics.renderer.colour_grading
        • simvx.graphics.renderer.shadow_math
        • simvx.graphics.renderer.taa_pass
        • simvx.graphics.renderer.tile_types
      • simvx.graphics.render2d
        • simvx.graphics.render2d.clip_scope
        • simvx.graphics.render2d.publish
        • simvx.graphics.render2d.submit
        • simvx.graphics.render2d.cache
        • simvx.graphics.render2d.item_list
        • simvx.graphics.render2d.item_builder
      • simvx.graphics.streaming
        • simvx.graphics.streaming.server
      • simvx.graphics.platform
      • simvx.graphics.playtest_patterns
      • simvx.graphics.text_renderer
      • simvx.graphics.draw2d_texture
      • simvx.graphics.draw2d_text
      • simvx.graphics.engine
      • simvx.graphics.testing
      • simvx.graphics.presentation
      • simvx.graphics.scene_adapter
      • simvx.graphics.engine_surface
      • simvx.graphics.blend
      • simvx.graphics.gpu_gate
      • simvx.graphics.draw2d_vertex
      • simvx.graphics.playtest
      • simvx.graphics.text_utils
      • simvx.graphics.cook
      • simvx.graphics.frame_loop
      • simvx.graphics.material_slots
      • simvx.graphics.pytest_plugin
      • simvx.graphics.draw2d_transform
      • simvx.graphics.cli
      • simvx.graphics.input_adapter
      • simvx.graphics.app
      • simvx.graphics.draw2d
      • simvx.graphics.draw2d_ops
      • simvx.graphics.debug_draw
      • simvx.graphics.frame_globals
      • simvx.graphics.types
    • simvx.editor
      • simvx.editor.panels
        • simvx.editor.panels.inspector_sections
        • simvx.editor.panels.scene_tree
          • simvx.editor.panels.scene_tree.type_registry
          • simvx.editor.panels.scene_tree.dialogs
          • simvx.editor.panels.scene_tree.panel
        • simvx.editor.panels.anchor_picker
        • simvx.editor.panels.repl_panel
        • simvx.editor.panels.asset_browser
        • simvx.editor.panels.inspector_widgets
        • simvx.editor.panels.animation
        • simvx.editor.panels.profiler_panel
        • simvx.editor.panels.scene3d_view
        • simvx.editor.panels.file_browser
        • simvx.editor.panels.play_controls
        • simvx.editor.panels.code_tab
        • simvx.editor.panels.animation_editor
        • simvx.editor.panels.properties
        • simvx.editor.panels.status_bar
        • simvx.editor.panels.section_widgets
        • simvx.editor.panels.console
        • simvx.editor.panels.scene2d_view
      • 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.nodes
            • simvx.editor.testing.demo_steps.handlers.menu
            • simvx.editor.testing.demo_steps.handlers.viewport
          • simvx.editor.testing.demo_steps.steps
        • simvx.editor.testing.hosting
      • simvx.editor.command_palette
      • simvx.editor.refactor_inline
      • simvx.editor.autosave
      • simvx.editor.web_export
      • simvx.editor.dialog_message
      • simvx.editor.refactor_extract
      • simvx.editor.unsaved_class_warning_dialog
      • simvx.editor.export_dialog
      • simvx.editor.about_dialog
      • simvx.editor.main
      • simvx.editor.gizmo_manipulator
      • simvx.editor.make_custom_class_dialog
      • simvx.editor.error_nav
      • simvx.editor.theme
      • simvx.editor.play_mode
      • simvx.editor.error_recovery
      • simvx.editor.project_settings_dialog
      • simvx.editor.project
      • simvx.editor.node_ops
      • simvx.editor.workspace_tabs
      • simvx.editor.game_render_hook
      • simvx.editor.project_classes
      • simvx.editor.config
      • simvx.editor.scene_file_ops
      • simvx.editor.state
      • simvx.editor.rename_class_dialog
      • simvx.editor.layout_presets
      • simvx.editor.default_scenes
      • simvx.editor.convert_to_class
      • simvx.editor.welcome
      • simvx.editor.export_controller
      • simvx.editor.input_map_dialog
      • simvx.editor.modal_dialog
      • simvx.editor.project_registry
      • simvx.editor.preferences_dialog
      • simvx.editor.plugin
      • simvx.editor.cli
      • simvx.editor.menus
      • simvx.editor.root
      • simvx.editor.keyboard_nav
      • simvx.editor.scene_diff
      • simvx.editor.app
      • simvx.editor.live_file_ops
      • simvx.editor.save_dialog
      • simvx.editor.extract
      • simvx.editor.save_report_dialog
      • simvx.editor.hints
      • simvx.editor.templates
      • simvx.editor.commands
      • simvx.editor.duplicate_node_dialog
    • simvx.ide
      • simvx.ide.lint
        • simvx.ide.lint.runner
      • simvx.ide.panels
        • simvx.ide.panels.terminal_panel
        • simvx.ide.panels.output_panel
        • simvx.ide.panels.debug_panel
        • simvx.ide.panels.search_panel
        • simvx.ide.panels.file_browser
        • simvx.ide.panels.symbol_outline
        • simvx.ide.panels.problems_panel
        • simvx.ide.panels.settings_panel
      • simvx.ide.dap
        • simvx.ide.dap.client
      • simvx.ide.widgets
        • simvx.ide.widgets.command_palette
        • simvx.ide.widgets.minimap
        • simvx.ide.widgets.confirm_dialog
        • simvx.ide.widgets.status_bar
        • simvx.ide.widgets.goto_line
        • simvx.ide.widgets.autocomplete
      • simvx.ide.lsp
        • simvx.ide.lsp.client
      • simvx.ide.language_server
      • simvx.ide.editor_integration
      • simvx.ide.edit_actions
      • simvx.ide.playtest
      • simvx.ide.config
      • simvx.ide.state
      • simvx.ide.embedded
      • simvx.ide.app
      • simvx.ide.file_tabs
      • simvx.ide.keybindings
      • simvx.ide.debug_session
  • API cheat sheet
  • Core engine
  • Graphics
  • App
  • Physics Backends
  • Windowing backends
  • Architecture

Project

  • SimVX Documentation License
  • Building from source
  • Contributing
Back to top
View this page

Examples Gallery¶

Browse every SimVX example. Use the checkboxes to filter by category and the search box to narrow by title or tag.

SimVX Editor in your browser not all features work yet
Openbeta
Showing 0/0

Animated Sprite

frame animation from a spritesheet.

▶ Play

Animated Sprite

Area2D

a trigger zone that reports bodies entering and leaving.

▶ Play

Area2D

Bloom 2D

glow on a pure-2D scene.

▶ Play

Bloom 2D

Bunnymark

a sprite-renderer stress test.

▶ Play

Bunnymark

Camera2D

follow a target with smoothing, zoom, and edge limits.

▶ Play

Camera2D

Collision Shapes

A circle and a box body falling onto a static floor.

▶ Play

Collision Shapes

Blend Modes

a multiply day/night tint and an additive flash.

▶ Play

Blend Modes

GPU Particle Fireworks.

A fireworks show built from one-shot GPUParticles2D bursts, cycling through the velocity patterns that give each burst its silhouette.

▶ Play

GPU Particle Fireworks.

GPU Particles 2D

a particle fountain simulated on the GPU.

▶ Play

GPU Particles 2D

2D Joints

a pendulum chain built from PinJoint2D.

▶ Play

2D Joints

Game feel

composing shake, hitstop, punch, flash and particles

▶ Play

Game feel

Layer post

bloom the world, keep the HUD crisp.

▶ Play

Layer post

2D Lighting

coloured point lights and shadow-casting occluders.

▶ Play

2D Lighting

Line joints and caps

Every Line2D joint, cap and gradient side by side.

▶ Play

Line joints and caps

Navigation

grid A* pathfinding with a click-to-move character.

▶ Play

Navigation

NinePatchRect

9-slice panel scaling.

▶ Play

NinePatchRect

2D Path Follow

an arrow rides a figure-8 bezier curve.

▶ Play

2D Path Follow

Post Shader 2D

your own GLSL over a pure-2D scene.

▶ Play

Post Shader 2D

Procedural Dungeon

rooms and corridors on a TileMap.

▶ Play

Procedural Dungeon

Screen Effects 2D

CRT scanlines, pixelate and blur.

▶ Play

Screen Effects 2D

Skeleton2D

bone hierarchies, rest poses and two-bone IK.

▶ Play

Skeleton2D

Sprite

Draw textured quads with Sprite2D.

▶ Play

Sprite

Texture resource

change a sprite’s image at runtime.

▶ Play

Texture resource

TileMap

a two-layer tile world with a camera that follows the player.

▶ Play

TileMap

Timer

run code on a delay or at a repeating interval.

▶ Play

Timer

2D Trail

fading ribbons behind moving objects.

▶ Play

2D Trail

Triangle

the smallest custom-draw scene.

▶ Play

Triangle

Tween

animate any property over time with easing.

▶ Play

Tween

Animated Model

load a rigged glTF and play its skeletal animation.

▶ Play

Animated Model

Animation Blend

BlendSpace1D, crossfade, and keyframe events.

▶ Play

Animation Blend

Chase Camera

a third-person camera that lags behind its target.

▶ Play

Chase Camera

Physics Raycast Sandbox

drop bodies into a PhysicsRoot and raycast against them.

▶ Play

Physics Raycast Sandbox

Compressed Texture.

A block-compressed texture stays compressed in GPU memory, so it takes a fraction of the space of the same image as RGBA. SimVX loads the portable UASTC encoding from a KTX2 file, and a .ktx2 path goes wherever any other image path does: here it is the albedo_map of a Material on a spinning cube.

▶ Play

Compressed Texture.

CSG

Boolean Operations on 3D Shapes.

▶ Play

CSG

Custom Post-Process

your own GLSL fullscreen effect.

▶ Play

Custom Post-Process

Custom Shader

ShaderMaterial with inline GLSL and animated uniforms.

▶ Play

Custom Shader

Custom Shader Textures

sampling a texture and blending from a ShaderMaterial.

▶ Play

Custom Shader Textures

Cutout shadows

an alpha-tested material casts a holed shadow.

▶ Play

Cutout shadows

Decals

projecting textures onto surfaces with Decal3D.

▶ Play

Decals

Dynamic Sky

a procedural day-night sky that lights the scene.

▶ Play

Dynamic Sky

Extrude Path

sweep a profile along a 3D centerline.

▶ Play

Extrude Path

First-Person Camera

walk and look around from the player’s eyes.

▶ Play

First-Person Camera

Fog

Distance-based fog via WorldEnvironment.

▶ Play

Fog

GPU Particles 3D

two emitters simulated entirely on the GPU.

▶ Play

GPU Particles 3D

IBL

Image-based lighting on metallic spheres.

▶ Play

IBL

3D Joints

A pinned chain and a hinged door, built from PinJoint3D and HingeJoint3D.

▶ Play

3D Joints

3D Lighting

Directional and orbiting point lights.

▶ Play

3D Lighting

LUT Grading

3D-LUT colour grading via WorldEnvironment.

▶ Play

LUT Grading

Transform Hierarchy

a MeshInstance3D follows any parent transform.

▶ Play

Transform Hierarchy

Model Viewer

load a glTF model with PBR textures and frame it with an orbit camera.

▶ Play

Model Viewer

Motion Blur

Camera motion blur on a WorldEnvironment, over a scene of orbiting cubes.

▶ Play

Motion Blur

MultiMesh

Thousands of cubes in one draw call.

▶ Play

MultiMesh

3D Navigation

click-to-move pathfinding on a navmesh with carved obstacles.

▶ Play

3D Navigation

Noise

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

▶ Play

Noise

Normal mapping

vertex tangents and the derivative fallback.

▶ Play

Normal mapping

Occlusion Culling

a GPU Hi-Z cull skips what a near wall hides.

📄 Docs

Occlusion Culling

FFT Ocean.

OceanSurface3D is an open-sea plane whose waves come from an FFT of a Tessendorf (Phillips) spectrum rather than a sum of analytic waves. Each frame the spectrum is inverse-transformed into displacement, slope and foam maps for up to three cascades, from long swell to fine ripple, which sum into rolling swell, choppy crests and foam on the steep, folding faces. The quality tier picks the cascade count and texture size.

▶ Play

FFT Ocean.

Particles

CPU particle emitters with sub-emitters, collision, trails and seeds.

▶ Play

Particles

3D Path Follow

a camera rail spirals up around a ring of shapes.

▶ Play

3D Path Follow

Mouse Picking

click cubes to change their colour.

▶ Play

Mouse Picking

Planar Reflection

a mirror floor reflecting the scene above it.

▶ Play

Planar Reflection

Planar Water

a Gerstner sea that mirrors the world above it.

▶ Play

Planar Water

Point and Spot Shadows

shadow maps from positional lights.

▶ Play

Point and Spot Shadows

Post-processing

SSAO, tonemapping, FXAA and depth of field on a WorldEnvironment.

▶ Play

Post-processing

Irradiance Probe Volume

baked diffuse light that bleeds wall colour onto a moving object.

▶ Play

Irradiance Probe Volume

Rain and wetness

a GPU downpour over a rain-slicked courtyard.

▶ Play

Rain and wetness

Raycast

click a cube to cast a ray through the pointer and see where it lands.

▶ Play

Raycast

ReflectionProbe3D

local cubemap reflections inside a box.

▶ Play

ReflectionProbe3D

Screen-space refraction

a glass ball bends the scene behind it.

▶ Play

Screen-space refraction

Render Layers

choose which objects a camera draws.

▶ Play

Render Layers

Render scale

the 3D scene at a lower resolution, the UI at native resolution.

▶ Play

Render scale

RenderView

the main scene from a second camera, shown on an in-world monitor.

▶ Play

RenderView

Rotating Cube

Smallest 3D scene.

▶ Play

Rotating Cube

Shadow Caster Budget

several point lights casting at once.

▶ Play

Shadow Caster Budget

Cascaded Shadows

how a directional light’s shadow map is split over distance.

▶ Play

Cascaded Shadows

Skeletal Animation

a four-bone arm waving under an AnimationPlayer.

▶ Play

Skeletal Animation

Split Screen

two players in one 3D world, each with their own RenderView.

▶ Play

Split Screen

Screen-Space Ambient Occlusion

contact shadows where surfaces meet.

▶ Play

Screen-Space Ambient Occlusion

Screen-space global illumination

coloured light bleeding between surfaces.

▶ Play

Screen-space global illumination

Screen-space reflections

a glossy floor mirroring the scene above it.

▶ Play

Screen-space reflections

SubViewport

Render a Live 3D Scene to a Texture.

▶ Play

SubViewport

SubViewport Occlusion

an offscreen view that culls what its own camera cannot see.

📄 Docs

SubViewport Occlusion

TAA

temporal anti-aliasing steadies thin edges under a moving camera.

▶ Play

TAA

TAAU

temporal upsampling rebuilds a sharp image from a low-resolution render.

▶ Play

TAAU

3D Text Rendering.

Three ways to put text in a 3D scene, and how non-Latin scripts are handled.

▶ Play

3D Text Rendering.

Procedural Textures

NumPy Arrays as Material Maps.

▶ Play

Procedural Textures

Volumetric Fog

Ray-marched light scattering and local FogVolume3D regions.

▶ Play

Volumetric Fog

Water Surface.

An animated sea over a sloped sandy floor, with three pillars standing in the water and a half-sunk sphere forming an island.

▶ Play

Water Surface.

Wireframe

Draw a mesh’s edges with Material(wireframe=True).

▶ Play

Wireframe

World 2D in HDR

2D that tonemaps and blooms with the 3D scene.

▶ Play

World 2D in HDR

Agent Playtest

an LLM agent drives a running SimVX game, headless.

📄 Docs

Agent Playtest

LLM NPC Flavour

an NPC whose barks come from a language model without ever stalling the game.

▶ Play

LLM NPC Flavour

Node-Gen

generate a Node subclass from a description.

📄 Docs

Node-Gen

AI State Machine.

A finite-state machine drives an enemy through four states: PATROL walks a loop of waypoints, CHASE closes in once the player is inside its vision radius with a clear line of sight, ATTACK strikes on a cooldown at close range, and RETURN walks back to the nearest waypoint when the player escapes. The grey smoke cloud blocks sight but not movement: a patrolling enemy cannot see the player through it, and a chase that loses sight of the player for 1.5 seconds gives up. The live state floats above the enemy, and every transition is written to the log at the top right.

▶ Play

AI State Machine.

Steering behaviours

agents that seek, flee, wander, arrive and flock.

▶ Play

Steering behaviours

Audio Playback

play, pause and stop tones, and change volume and pitch live.

▶ Play

Audio Playback

Audio Buses.

Buses are the mixing desk every sound passes through. AudioBusLayout.get_default() holds five of them: Master, with Music, SFX, Voice and UI sending into it. A player chooses its bus with the bus property, which accepts only those five names:

▶ Play

Audio Buses.

Music Streaming

loops that crossfade and duck under dialogue.

📄 Docs

Music Streaming

Spatial Audio

3D positional sound that pans as the source orbits you.

📄 Docs

Spatial Audio

Audio Spectrum

FFT bars over a synthesised arpeggio.

▶ Play

Audio Spectrum

Lifecycle

the order node hooks fire, made visible.

▶ Play

Lifecycle

Properties

validated, editor-visible node values.

▶ Play

Properties

SaveManager

save, load and migrate persisted Properties.

▶ Play

SaveManager

Scene Files.

A SimVX scene is a Python source file holding a Node subclass, so a saved scene is readable, diffable and editable by hand. This example builds a small level in code, saves it, shows the source it wrote, then loads the file back and switches to it.

▶ Play

Scene Files.

Signals.

A signal is how a node announces that something happened without knowing who cares. The emitter declares it, listeners connect to it, and emitting calls every connected listener in turn.

▶ Play

Signals.

Debug Draw

Wireframe boxes, spheres, axes, and rays.

▶ Play

Debug Draw

Debug Overlay

the engine’s built-in on-screen diagnostic HUD.

▶ Play

Debug Overlay

Python Console

an interactive Python prompt inside the running game.

▶ Play

Python Console

Terminal

Your login shell running inside a SimVX window.

📄 Docs

Terminal

Named Input Actions

An action is a name for what the player means (“move”, “jump”) rather than for the key that means it. A node declares its actions in an input_context dictionary on the class, and they are in force exactly while that node is in the tree; on the root they cover the whole scene. Game code then asks Input.value("move") and never needs to know which device answered.

▶ Play

Named Input Actions

Controller Tester.

Reads a game controller directly, every frame, and draws what it reports: both sticks as a crosshair in a circle, the analogue triggers as fill bars and every standard button as a dot that lights while it is held.

▶ Play

Controller Tester.

Standard Controls

move, jump, shoot at the cursor, and rebind any of it.

▶ Play

Standard Controls

Touch Gestures as Controls.

A map you pinch, twist and pan with two fingers, or drive with a mouse and keys. Every gesture is a control, bound in the node’s input_context exactly as a key is, and read with Input.value or Input.just_pressed.

▶ Play

Touch Gestures as Controls.

Physics Backend Compare

The builtin solver and Jolt, side by side in one scene.

▶ Play

Physics Backend Compare

Body and World Knobs

damping and gravity scale per body, the rest per world.

▶ Play

Body and World Knobs

Character Platformer

CharacterBody2D with gravity, jump, and platforms.

▶ Play

Character Platformer

Character Presence

a character body is an ordinary kinematic body.

▶ Play

Character Presence

Character Push

a character shoves what it walks into, by mass.

▶ Play

Character Push

Scaled Colliders

one shape resource, many sizes, and the collider matches the mesh.

▶ Play

Scaled Colliders

2D Physics Playground

rigid bodies, a character, one-way platforms, and joints.

▶ Play

2D Physics Playground

3D Physics Playground

falling bodies and a walking character.

▶ Play

3D Physics Playground

Sleeping Bodies

what wakes a settled pile, and how to edit one without waking it.

▶ Play

Sleeping Bodies

Dialogue Box

branching NPC dialogue with selectable choices.

▶ Play

Dialogue Box

Touch Gestures

tap, long press, swipe, pinch, rotate, pan.

▶ Play

Touch Gestures

Health bars

world-space bars over enemies, floating damage numbers and a fixed HUD.

▶ Play

Health bars

HUD Anchors

a game HUD pinned to screen corners that follows the window.

▶ Play

HUD Anchors

Internationalisation

switch UI language and watch plural rules update live.

▶ Play

Internationalisation

Grid Inventory

a 4x3 grid of selectable item slots.

▶ Play

Grid Inventory

Menu Bar

a desktop-style menu strip with dropdown menus.

▶ Play

Menu Bar

Minimap

a corner overview of a scrolling 2D world.

▶ Play

Minimap

Pause Menu

freeze the game with tree.paused and show a modal overlay.

▶ Play

Pause Menu

Rotated Controls

widgets turn, scale and take clicks along with their parent.

▶ Play

Rotated Controls

Settings Screen

a centred options panel with a live interface-size slider.

▶ Play

Settings Screen

Splash Screen

the branded boot splash and a reusable loading screen.

▶ Play

Splash Screen

Text Input

single-line TextEdit fields with focus routing, submit and activation.

▶ Play

Text Input

Theme Presets

every built-in AppTheme side by side.

▶ Play

Theme Presets

Touch Targets

small controls a thumb can still hit, at the size they were drawn.

▶ Play

Touch Targets

Tree View

a collapsible hierarchy you can select from and edit.

▶ Play

Tree View

Undo and Redo

move cubes around and rewind every move.

▶ Play

Undo and Redo

Widget Showcase

a tour of the built-in UI widgets, one family per tab.

▶ Play

Widget Showcase

Bouncing Balls

Properties, velocity, and screen-edge collision.

▶ Play

Bouncing Balls

First Scene

Open a window and draw a node.

▶ Play

First Scene

Gem Collector

your first 3D game.

▶ Play

Gem Collector

Input and Movement

Drive a node from the keyboard with input actions.

▶ Play

Input and Movement

Monolith to Composed

Structure a game as small, single-purpose nodes.

▶ Play

Monolith to Composed

Nodes and Signals

build a scene tree and wire nodes together with signals.

▶ Play

Nodes and Signals

Pong

a complete two-player game.

▶ Play

Pong

Testing Your Game

a coin collector built to be tested.

▶ Play

Testing Your Game

Balatro Feel

A card hand with hover lift, drag-to-reorder, and punchy selection juice.

▶ Play · MIT

Balatro Feel

Casual Crusade

a card-laying dungeon crawler with path-walk scoring.

▶ Play · MIT

Casual Crusade

Claustrowordia

Port of Antti Haavikko’s LD50 jam winner, with procedural audio and word scoring.

▶ Play · MIT

Claustrowordia

Clear Code Zelda

top-down ARPG with sword combat, magic, enemy AI and stat upgrades.

▶ Play · CC0-1.0

Clear Code Zelda

Clumsy Bird

Flappy-style endless flyer with audio, score and restart.

▶ Play · GPL-3.0-or-later

Clumsy Bird

Dodge the Creeps

Godot’s first 2D tutorial, wandering mobs, top-down dodge.

▶ Play · MIT

Dodge the Creeps

GDQuest Open RPG

Overworld exploration with turn-based party combat.

▶ Play · MIT

GDQuest Open RPG

HeartBeast Action RPG

sword-and-roll combat port of the classic Godot tutorial.

▶ Play · MIT

HeartBeast Action RPG

HexGL

3D anti-grav racer, Catmull-Rom banked track, lap-attack, AI ghost.

▶ Play · MIT

HexGL

Hextris

Rotate the hexagon to line up falling colour blocks.

▶ Play · GPL-3.0-or-later

Hextris

Mr. Rescue

Arcade firefighting in a procedurally generated burning building.

▶ Play · MIT

Mr. Rescue

PirateMaker

An in-game level editor and the level it builds, in one process.

▶ Play · see attribution

PirateMaker

Procedural Planets

quad-sphere terrain built from layered noise and shaded by a biome ramp.

▶ Play · MIT

Procedural Planets

Q1K3

first-person Quake-style FPS with three weapons and five enemy types.

▶ Play · MIT

Q1K3

Asteroids (raylib classic)

vector ship physics, screen wrap, splitting rocks.

▶ Play · Zlib

Asteroids (raylib classic)

Snake (raylib classic)

Grid logic, a drawn D-pad, resize-aware HUD.

▶ Play · Zlib

Snake (raylib classic)

Tetris (raylib classic)

Grid logic, rotation, line clears, score HUD.

▶ Play · Zlib

Tetris (raylib classic)

SNKRX

Wave-based arena, particles, screenshake, slow-motion, bloom.

▶ Play · MIT

SNKRX

Klondike Solitaire

drag-drop cards with springy motion, undo, and save/load.

▶ Play · MIT

Klondike Solitaire

Squash the Creeps

a 3D arcade port of Godot’s first 3D game tutorial.

▶ Play · MIT

Squash the Creeps

Tanks of Freedom

Isometric turn-based strategy, three units, four buildings, AI opponent.

▶ Play · MIT

Tanks of Freedom

Tiny Yurts

Isometric grid, BFS path-following agents, drawable routes.

▶ Play · MIT

Tiny Yurts

Tower Defence

waves, tile-aligned turret placement, upgrades, and a shop panel.

▶ Play · MIT

Tower Defence

Pixel Runner

Clear Code’s Pygame endless runner, with Timer signals, flipbook sprites and synthesised audio.

▶ Play · MIT

Pixel Runner

You’re the OS

schedule processes, swap memory pages, and keep the user calm.

▶ Play · GPL-3.0-or-later

You’re the OS

Afterglow

an original precision platformer.

▶ Play

Afterglow

Asteroids 2D

The classic arcade shooter in one small file.

▶ Play

Asteroids 2D

Bloom

Grow your colour, starve theirs. One tap a turn.

▶ Play

Bloom

Deep Sea Aquarium

bioluminescent tank with flocking fish and a synthesised score.

▶ Play

Deep Sea Aquarium

Dungeon Explorer

a 100-floor action-RPG descent with loot, skills, and a village hub.

▶ Play

Dungeon Explorer

Pad Grid

a playable synth instrument with record, replay and training modes.

▶ Play

Pad Grid

Physics Sandbox

stack-toppling cubes and bouncy balls in a walled 3D arena.

▶ Play

Physics Sandbox

Planet Explorer

an endless flight over procedural terrain, weather and a day/night cycle.

▶ Play

Planet Explorer

SHRIKE

top-down 3D space survival roguelike.

▶ Play

SHRIKE

Space Invaders 2D

the arcade classic rebuilt on nodes, signals and synthesized sound.

▶ Play

Space Invaders 2D

Space Invaders 3D

the arcade classic built from 3D meshes.

▶ Play

Space Invaders 3D

Squad Commander

an LLM officer picks the stance, the squad fights every frame.

📄 Docs

Squad Commander

Tic Tac Toe

Classic two-player game built entirely from UI widgets.

▶ Play

Tic Tac Toe

Tidewater

an FFT sea meeting a mirror-calm river under golden-hour rain.

▶ Play

Tidewater
Next
Your first 2D game
Previous
Quickstart
Copyright © 2026, SimVX Contributors
Made with Sphinx and @pradyunsg's Furo