Blog / Vav Labs
RSSTechnical notes from Vav Labs.
Unity, Godot, rendering, product engineering, and the maintenance work behind long-lived software.
Cluster / Godot pathfinding
Godot pathfinding, from empty path to production
Grids, navmeshes, clearance, dynamic blockers, and the named reasons a path comes back empty — with runnable Godot 4.6 scenes where it matters.
Cluster / Unity debugging
Unity debugging with evidence instead of folklore
MonoBehaviour basics, the editor errors that eat evenings, and how to capture the state of a bug while it still exists.
01 / article
Godot pathfindingWeighted Terrain Pathfinding in Godot
Make AStarGrid2D prefer roads over mud and swamp with verified terrain weights, correct route-cost math, safe heuristics, and per-unit profiles.
2026-07-14 / 16 min read
Read02 / article
Godot pathfindingRuntime AStarGrid2D Updates Without Full Rebuilds
Update doors, blockers, and terrain costs in AStarGrid2D without rebuilding the grid. Learn when update() is required and how to replay point data.
2026-07-13 / 13 min read
Read03 / article
Godot pathfindingFire Emblem, Into the Breach and XCOM Movement in Godot
Fire Emblem terrain profiles, Into the Breach's telegraphed intents, and XCOM 2's action bands — three movement contracts mapped to verified Godot systems.
2026-07-13 / 10 min read
Read04 / article
Godot pathfindingTurn order and movement planning in Godot
Build deterministic tactical turns in Godot with explicit phases, movement intents, initiative tie-breakers, conflict resolution, and safe state commits.
2026-07-13 / 13 min read
Read05 / article
Godot pathfindingAction points and terrain costs in Godot
Build Godot tactical movement where terrain entry costs consume action points, previews stay pure, confirms validate first, and undo restores state.
2026-07-12 / 14 min read
Read06 / article
Godot pathfindingRectangular and Circular Agent Clearance in Godot
Handle rectangular and circular agents on Godot grids with footprint masks, summed-area tables, radius fields, and explicit rotation rules.
2026-07-12 / 14 min read
Read07 / article
Godot pathfindingAnnotated A* for Multi-Size Agents in Godot
Use one clearance map inside A* to pathfind for 1x1, 2x2, and larger square agents in Godot without rebuilding the grid for every size.
2026-07-12 / 15 min read
Read08 / article
Godot pathfindingHow to Move Multi-Tile Units on a Grid in Godot
Move 2x2 and larger units on a Godot grid: anchor conventions, the map_to_local half-cell trap, touched-cell checks, rotation, and ownership.
2026-07-12 / 12 min read
Read09 / article
Godot pathfindingHow to Prevent Two Units From Moving to the Same Tile in Godot
Prevent two Godot units from claiming one tile with a small reservation table: pure previews, atomic confirms, deterministic conflicts, and reversible undo.
2026-07-11 / 15 min read
Read10 / article
Godot pathfindingGodot No-Path Reports: Turn an Empty Path Into a Diagnosis
Turn an empty Godot path into a useful no-path report: system, query, reason code, evidence, next check, and copyable output.
2026-07-09 / 11 min read
Read11 / article
Godot pathfindingBuilding a navigation debug panel in Godot
Build a runtime navigation debug panel in Godot 4: built-in debug toggles, NavigationServer2D stats, and a click-to-probe tester that explains failed paths.
2026-07-08 / 10 min read
Read12 / article
Godot pathfindingDijkstra maps for roguelike AI in Godot
Build Dijkstra maps in Godot for roguelike AI: pursuit fields, shared maps for many actors, source bias, flee maps, autoexplore, hazards, and INF-safe scoring.
2026-07-08 / 13 min read
Read13 / article
Godot pathfindingTactical RPG movement range in Godot
Build tactical RPG movement range in Godot with TileMapLayer, AStarGrid2D, terrain costs, unit blockers, reachable-cell highlights, and path preview.
2026-07-07 / 12 min read
Read14 / article
Godot pathfindingGodot pathfinding addons compared: what actually exists in 2026
Godot 4 pathfinding addons compared against the built-ins: Asset Library and GitHub options, maintenance state, licenses, and the gaps left.
2026-07-07 / 12 min read
Read15 / article
Godot pathfindingWhy your NavigationAgent gets stuck in Godot: a diagnosis guide
Diagnose a stuck NavigationAgent2D in Godot: bake-radius mismatch, repath loops, avoidance push-off, unreachable targets, and callback traps.
2026-07-06 / 12 min read
Read16 / article
Godot pathfindingAStar2D in Godot 4: complete reference
AStar2D reference for Godot 4: points, connections, one-way segments, weights, disabled points, closest-point lookup, partial paths, and custom costs.
2026-07-05 / 13 min read
Read17 / article
Godot pathfindingNavigationAgent2D Setup and Common Gotchas in Godot
Fix NavigationAgent2D not moving, first-frame empty paths, early finished states, jitter, and avoidance wiring in Godot 4.7, with runnable proof.
2026-07-02 / 10 min read
Read18 / article
Godot pathfindingNavigationObstacle Avoidance vs Pathfinding in Godot
NavigationObstacle avoidance steers Godot agents locally. It does not make path queries reroute by itself. Use an explicit route query to prove what changed.
2026-07-01 / 9 min read
Read19 / article
Godot pathfindingTileMapLayer Custom Data for Walkability in Godot
Use a Godot TileSet custom data layer as the AStarGrid2D walkability source: read TileData, handle empty cells, and avoid navigation-layer confusion.
2026-06-29 / 8 min read
Read20 / article
Godot pathfindingTileMap to Navigation Grid in Godot
Build an AStarGrid2D from a Godot TileMapLayer using get_used_rect(), tile custom data, and set_point_solid(). Verified in Godot 4.7.
2026-06-27 / 12 min read
Read21 / article
Godot pathfindingStop Players from Blocking the Path in a Godot Tower Defense
Validate tower placement in Godot before the player seals the maze. A temporary blocker check, a real demo, and measured full-vs-incremental cost.
2026-06-24 / 9 min read
Read22 / article
Godot pathfindingNavigationServer2D in Godot 4: the complete guide
Complete NavigationServer2D guide for Godot 4: NavigationRegion2D baking, map sync, direct map_get_path() queries, links, obstacles, and empty-path fixes.
2026-06-23 / 13 min read
Read23 / article
Godot pathfindingAStarGrid2D in Godot 4: complete reference
Complete AStarGrid2D reference for Godot 4: region, cell size, update(), solid cells, weight scale, diagonals, heuristics, jumping, and partial paths.
2026-06-21 / 15 min read
Read24 / article
Godot pathfindingMoving 10,000 agents in Godot without the frame spike
Godot pathfinding slow with many agents? A Godot 4.6 benchmark: one shared field holds 10,000 at a 5 ms median frame where per-agent queries collapse at 500.
2026-06-15 / 12 min read
Read25 / article
Godot pathfindingWhy is my path failing in Godot? Nine boring causes to check first
Godot returned an empty path? Check coordinates, bounds, solid starts, stale grid data, sync timing, clearance, region gaps, and weights first.
2026-06-10 / 10 min read
Read26 / article
Godot pathfindingPathfinding failure modes in Godot: why no path is not enough
When Godot returns an empty path, ask which assumption failed: start, goal, blocker, clearance, terrain rule, stale data, or disconnected region.
2026-06-08 / 8 min read
Read27 / article
Godot pathfindingGrid or navmesh in Godot? Choosing pathfinding that survives production
The short answer first, then the full decision: movement model, runtime changes, scale, agent size, path stability. Current for Godot 4.6, FAQ included.
2026-06-06 / 9 min read
Read28 / article
Godot pathfindingDynamic blockers in Godot: when one tower should not rebuild the whole map
A placed tower or closed door should invalidate a region, not rebuild the whole grid. Update Godot pathfinding locally, without the full-rebuild frame spike.
2026-06-05 / 10 min read
Read29 / article
Meta Quest VRQuest VRC: 60 fps or 72 fps? The official docs still conflict
Meta's official Quest guidance still says both 60 and 72 fps. Here is why 72 is the conservative pre-submit target, and what to verify.
2026-06-04 / 8 min read
Read30 / article
Godot pathfindingFlow fields in Godot: pathfinding for crowds that share a destination
When a crowd shares one destination, per-agent A* repeats the same work. A flow field solves the grid once so every agent can read the next direction.
2026-06-04 / 9 min read
Read31 / article
Unity fundamentalsWhat is a MonoBehaviour in Unity?
A MonoBehaviour is the base class that lets Unity attach a C# script to a GameObject and call it each frame. What it is, its lifecycle, and when to skip it.
2026-06-04 / 7 min read
Read32 / article
Unity troubleshooting“No MonoBehaviour scripts in the file”: what Unity means and how to fix it
Unity's “no MonoBehaviour scripts in the file” error: check for compile errors first, then the file/class name match, then whether it's really a MonoBehaviour.
2026-06-04 / 7 min read
Read33 / article
Unity toolingWhat belongs in an AI bug-fix prompt — and what is just 48 KB of noise
Pasting a whole scene dump into an AI assistant and asking it to fix the bug is not a prompt; it is a hope. A useful AI bug report is small and structured.
2026-05-29 / 8 min read
Read34 / article
Godot pathfindingInfluence maps in Godot: giving a grid a sense of danger
A* finds the shortest path — even when it runs straight through the enemy's firing line. Influence maps turn a grid from a floor plan into a tactical opinion.
2026-05-29 / 9 min read
Read35 / article
Unity toolingUnity bug reports need evidence, not folklore
Most Unity bug reports arrive as folklore: vague memory, no scene, no logs, no screenshot. Capture the evidence on screen, before the trail goes cold.
2026-05-27 / 8 min read
Read36 / article
Godot pathfindingMulti-size agents in Godot: clearance maps without the headaches
Godot grid pathfinding treats every unit as one cell, so a 2×2 agent routes through gaps it can't fit. Clearance maps fix it with one grid for all sizes.
2026-05-25 / 8 min read
Read37 / article
Godot / PerformanceWhy your Godot pathfinding causes frame spikes and how to fix it
Stop repathing when nothing changed, spread queries across frames, share one map between agents, stop allocating on the hot path. Four fixes, with tradeoffs.
2026-05-25 / 9 min read
Read38 / article
Engineering practiceOpen-sourcing an old Unity game is not a button
Re-shipping a 2018 Unity game raised the obvious question: open source it. The real answer lives in asset licensing, archaeology, and maintenance promises.
2026-05-25 / 8 min read
Read39 / article
ResearchWhy running TDA in real time is an unreasonable thing to try
Topological data analysis has strong offline algorithms. A 16ms frame budget is where they stop being convenient and become an engineering problem.
2026-05-16 / 7 min read
Read40 / article
Godot pathfindingAStarGrid2D limitations and alternatives in Godot
AStarGrid2D limitations in Godot: when the built-in grid stops being enough, which alternatives fit, and what dynamic blockers, clearance, and crowds cost.
2026-05-15 / 10 min read
Read41 / article
Product engineeringHow to build a Unity Asset Store tool without exposing source
Private source is fine. Private evidence is where it gets awkward. How to package and sell a closed-source Unity Asset Store tool buyers can still trust.
2026-05-14 / 8 min read
Read42 / article
RenderingURP performance mistakes I look for first
The first URP rendering checks before we blame the engine, the GPU, or the phase of the moon — overdraw, extra passes, and settings that quietly cost frames.
2026-05-13 / 9 min read
Read43 / article
Unity architectureHow I structure Unity projects that outgrow MonoBehaviour scripts
A boundary-first approach for Unity projects after the inspector stops being a filing system — separating data, logic, and scene wiring so code keeps scaling.
2026-05-12 / 9 min read
Read