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

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.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.helpers
        • simvx.core.helpers.coroutines
        • simvx.core.helpers.matrix
        • simvx.core.helpers.raycast
        • simvx.core.helpers.debug
      • 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.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.audio_bus
      • simvx.core.decal
      • simvx.core.selection
      • simvx.core.file_state
      • simvx.core.scene_tree
      • simvx.core.csg
      • simvx.core.scene_codegen
      • simvx.core.audio_backend
      • simvx.core.cli
      • simvx.core.particles
      • simvx.core.skeleton
      • simvx.core.run
      • simvx.core.scene
      • simvx.core.surface_tool
      • simvx.core.export
      • simvx.core.gizmo
      • simvx.core.noise
      • simvx.core.gpu_particles
      • simvx.core.cst_codegen
      • 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.process_node
      • 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.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.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.descriptors
        • 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.demo_steps
        • simvx.editor.demo_steps.handlers
          • simvx.editor.demo_steps.handlers.inspector
          • simvx.editor.demo_steps.handlers.menu
          • simvx.editor.demo_steps.handlers.nodes
          • simvx.editor.demo_steps.handlers.viewport
        • simvx.editor.demo_steps.steps
      • 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.viewport3d
        • simvx.editor.panels.status_bar
        • simvx.editor.panels.animation
        • simvx.editor.panels.filesystem
        • simvx.editor.panels.file_browser
        • simvx.editor.panels.inspector
        • simvx.editor.panels.animation_editor
        • simvx.editor.panels.inspector_widgets
        • simvx.editor.panels.anchor_preset_widget
        • simvx.editor.panels.console
        • simvx.editor.panels.code_tab
        • simvx.editor.panels.property_widgets
        • simvx.editor.panels.resource_browser
        • simvx.editor.panels.viewport_math
        • simvx.editor.panels.viewport2d
        • simvx.editor.panels.section_widgets
        • simvx.editor.panels.repl_panel
        • simvx.editor.panels.profiler_panel
      • simvx.editor.play_mode
      • 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.preferences
      • simvx.editor.app
      • simvx.editor.menus
      • simvx.editor.project_registry
      • 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.script_ops
      • simvx.editor.save_dialog
      • simvx.editor.project_settings_dialog
      • simvx.editor.extract
      • simvx.editor.error_nav
      • simvx.editor.theme
      • simvx.editor.export_dialog
      • simvx.editor.live_file_ops
      • simvx.editor.command_palette
      • simvx.editor.state
      • simvx.editor.ide_bridge
      • simvx.editor.main
      • simvx.editor.commands
      • simvx.editor.shell
      • simvx.editor.hints
      • simvx.editor.input_map_dialog
      • simvx.editor.gizmo_controller
      • simvx.editor.autosave
    • 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.manager
        • simvx.ide.dap.client
      • simvx.ide.lint
        • simvx.ide.lint.runner
      • simvx.ide.lsp
        • simvx.ide.lsp.client
      • simvx.ide.debug_controller
      • simvx.ide.app
      • simvx.ide.lsp_controller
      • simvx.ide.state
      • simvx.ide.embedded
      • simvx.ide.keybindings
      • simvx.ide.config
      • simvx.ide.edit_controller
      • simvx.ide.playtest
      • simvx.ide.file_controller
Back to top
View this page

Navigation¶

SimVX provides 2D pathfinding through graph-based A* (AStar2D), grid-based A* (AStarGrid2D), and a steering agent node (NavigationAgent2D).

Graph-Based A* (AStar2D)¶

Build an arbitrary waypoint graph and find shortest paths:

from simvx.core import AStar2D

astar = AStar2D()

# Add waypoints
astar.add_point(0, (0, 0))
astar.add_point(1, (100, 0))
astar.add_point(2, (100, 100))
astar.add_point(3, (50, 50), weight=2.0)  # Costlier to traverse

# Connect them
astar.connect_points(0, 1)  # Bidirectional by default
astar.connect_points(1, 2)
astar.connect_points(0, 3)
astar.connect_points(3, 2)

# Find path (returns world positions)
path = astar.get_point_path(0, 2)  # [(0,0), (100,0), (100,100)]

# Or get point IDs
id_path = astar.get_id_path(0, 2)  # [0, 1, 2]

Additional Operations¶

astar.set_point_disabled(3)           # Exclude from pathfinding
astar.disconnect_points(0, 1)         # Remove a connection
closest = astar.get_closest_point((45, 45))  # Nearest non-disabled point

Grid-Based A* (AStarGrid2D)¶

For tile-based games, AStarGrid2D manages a rectangular grid automatically:

from simvx.core import AStarGrid2D

grid = AStarGrid2D(width=20, height=20, cell_size=32.0, diagonal=True)

# Mark obstacles
grid.set_solid(5, 5)
grid.set_solid(5, 6)
grid.set_solid(5, 7)

# Set terrain cost (swamp = 3x slower)
grid.set_weight(10, 10, 3.0)

# Find path in grid coordinates
path = grid.find_path((0, 0), (19, 19))  # [(0,0), (1,1), ...]

# Or use world positions (auto-converts via cell_size)
world_path = grid.find_path_world((16.0, 16.0), (624.0, 624.0))

NavigationAgent2D¶

A node that follows computed paths with built-in steering. Assign a pathfinder, set a target, and the agent moves each physics frame:

from simvx.core import NavigationAgent2D, AStarGrid2D, Vec2

grid = AStarGrid2D(50, 50, cell_size=16.0)

class Enemy(NavigationAgent2D):
    max_speed = 120.0
    path_desired_distance = 4.0

    def ready(self):
        self.set_navigation(grid)
        self.navigation_finished.connect(self._on_arrived)
        self.target_position = Vec2(400, 300)

    def _on_arrived(self):
        print("Reached destination!")

Properties¶

Property

Default

Description

max_speed

100.0

Maximum movement speed in units/sec

path_desired_distance

4.0

Distance to a waypoint before advancing to the next

Properties and Signals¶

  • target_position – Assigning this recomputes the path immediately.

  • velocity – Current velocity vector (read-only, computed each physics frame).

  • is_navigation_finished – True when the agent has reached its target.

  • navigation_finished – Signal emitted when the target is reached.

API Reference¶

See simvx.core.navigation for the complete navigation API.

Next
3D Navigation
Previous
Constructive Solid Geometry
Copyright © 2026, SimVX Contributors
Made with Sphinx and @pradyunsg's Furo
On this page
  • Navigation
    • Graph-Based A* (AStar2D)
      • Additional Operations
    • Grid-Based A* (AStarGrid2D)
    • NavigationAgent2D
      • Properties
      • Properties and Signals
    • API Reference