Autonomous Terrain & Hazard Exploration Navigation Agent
A real-time 3D rover autonomy simulator with multi-algorithm pathfinding, infinite procedural terrain, and multi-planetary deployment.
The entire system runs in-browser. No backend required.
Multi-algorithm pathfinding, manual driving, terrain controls, and planetary environment switching.
A rover is placed on an infinite procedurally generated planetary surface. The operator clicks anywhere and the rover plans a path using one of four selectable algorithms, visualizing the search in real-time.
The terrain extends infinitely in every direction. Slopes, craters, and rocks are generated deterministically from seeded noise.
Switching between Mars, Venus, Europa, and Titan rebuilds the entire terrain, sky, lighting, fog, and surface colors to match real physical conditions.
Four search algorithms, same slope-based cost function, fundamentally different exploration patterns.
Explores by estimated total cost: actual cost (g) plus heuristic (h).
A focused beam expanding toward the target. Heuristic is Euclidean distance.
A* without the heuristic. Explores by actual cost only, producing a uniform circular flood.
Guaranteed optimal but explores significantly more nodes. Concentric ring expansion.
Randomly samples points, finds nearest tree node, extends a branch toward the sample.
15% goal bias ensures growth toward target. Branches rejected on slopes >35°.
Searches backward from goal to rover. Designed for replanning when environment changes.
When the environment changes mid-traverse, only affected portions need recomputation.
The terrain is infinite. There are no edges, no loading screens, no prebuilt maps. The rover can drive in any direction forever.
The world is divided into 80-unit chunks. A 7×7 grid (49 total) is maintained around the rover.
As the rover moves, chunks behind unload and new chunks ahead generate every 0.5s.
3-layer fBm noise at different frequencies blended together, sampled from independent 256×256 seeded noise textures.
Plus ridge noise for sharp geological features. One continuous world-space function.
Deterministic craters via spatial cell hashing. The world divided into 50-unit cells, each cell's hash determines its craters.
Geometry: parabolic depression with raised rim.
Every height query (terrain mesh vertices, rover ground contact, pathfinding cost, engineering viewport) calls the same getWorldHeight() function. There is one source of truth.
Four planetary bodies. Each switches the entire simulation: terrain heightmap scales, surface and rock colors, crater density, sky gradients, fog density, sun color, dust particle colors.
THE RED PLANET
THE HELLSCAPE
JUPITER'S ICE WORLD
SATURN'S GIANT MOON
Each planet is a data object, not a separate code path. Mars and Europa run identical terrain generation logic with different parameter values. Adding a new planet is adding one object to a dictionary.