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 / Godot VFX
Godot VFX that stay attached, depth-aware, and editable
Coordinate spaces, spatial shaders, scene depth, and impact systems built around the way effects behave after the object starts moving.
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 pathfindingTuning RVO Avoidance in Godot: Radius, Neighbors, and Time Horizons
Tune Godot RVO avoidance by matching radius, neighbor distance, neighbor caps, and time horizons to your agents, then verify desired and safe velocity.
2026-08-07 / 16 min read
Read02 / article
Godot pathfindingFormation Movement in Godot: Stable Slots, Release, and Reformation
Build formation movement in Godot with a virtual anchor, stable unit-to-slot assignment, checked destinations, and deliberate release and reformation.
2026-08-04 / 15 min read
Read03 / article
Godot pathfindingGodot Reachability Rules: Validate a World Change Before It Traps the Player
Build Godot reachability rules that catch navigation softlocks across doors, bridges, actor profiles, quest phases, and saved games.
2026-08-03 / 16 min read
Read04 / article
Godot VFXHow to Make an Energy Shield in Godot 4
Build a reactive energy shield in Godot 4 with a holographic shader, local-space impacts, multiple hits, sustained beams, particles, and positional audio.
2026-07-27 / 14 min read
Read05 / article
Godot VFXGodot Hit Effect Not Following the Node? Fix Five VFX Drift Bugs
Fix Godot hit effects that stay behind, slide across a mesh, stretch under scale, trail the wrong way, or jitter after the receiving Node3D moves.
2026-07-27 / 10 min read
Read06 / article
Godot VFXLocal Space vs World Space Effects in Godot 4
Learn when Godot VFX should follow a node or remain in the world, how to convert hit positions safely, and why shield ripples, particles, and trails drift.
2026-07-27 / 12 min read
Read07 / article
Godot pathfinding2D Pathfinding in Godot 4: Grid, Graph, or Navmesh?
Choose and set up 2D pathfinding in Godot 4 with AStarGrid2D, AStar2D, or NavigationServer2D, using verified grid, graph, and navmesh examples.
2026-07-19 / 15 min read
Read08 / article
Godot pathfinding3D Pathfinding in Godot 4: Navmesh, Agents, and When You Need A*
Set up 3D pathfinding in Godot 4 with NavigationRegion3D, NavigationAgent3D, click-to-move, navmesh baking, and the AStar3D decision.
2026-07-17 / 15 min read
Read09 / article
Godot pathfindingPac-Man-Style Ghost AI in Godot: Build the Full Maze Chase
Build a Pac-Man-style maze chase in Godot with TileMapLayer, buffered grid movement, shared Dijkstra fields, ghost modes, tunnels, and reservations.
2026-07-16 / 16 min read
Read10 / article
Game pathfindingA* Pathfinding in Godot and Unity: Free Starter Projects
Download MIT-licensed A* grid pathfinding projects for Godot GDScript, Godot C#, and Unity C#, with authored scenes and verified source.
2026-07-16 / 16 min read
Read11 / article
Godot pathfindingWhy NavigationAgent2D Lags With Hundreds of Units
Hundreds of NavigationAgent2D units lag Godot through same-tick request bursts, per-frame target resets, and path_max_distance repath storms. Fix each.
2026-07-15 / 15 min read
Read12 / 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
Read13 / 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
Read14 / 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
Read15 / 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
Read16 / 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
Read17 / 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
Read18 / 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
Read19 / 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
Read20 / 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
Read21 / 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
Read22 / 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 / 13 min read
Read23 / 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 / 16 min read
Read24 / 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
Read25 / 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
Read26 / 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
Read27 / 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 / 15 min read
Read28 / 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
Read29 / 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
Read30 / 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
Read31 / 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
Read32 / 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
Read33 / article
Godot pathfindingNavigationServer2D in Godot 4: setup, path queries, and debugging
Set up NavigationServer2D in Godot 4, validate reachable paths, connect regions and links, handle sync and rebakes, and diagnose empty or partial paths.
2026-06-23 / 18 min read
Read34 / article
Godot pathfindingAStarGrid2D in Godot 4: complete reference
Set up AStarGrid2D correctly in Godot 4.7.1 with practical code and an interactive demo: update(), solids, weights, diagonals, jumping, and partial paths.
2026-06-21 / 15 min read
Read35 / 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
Read36 / 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
Read37 / 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
Read38 / 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
Read39 / 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
Read40 / 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
Read41 / 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
Read42 / 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
Read43 / 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
Read44 / 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
Read45 / 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
Read46 / 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
Read47 / 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
Read48 / 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
Read49 / 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
Read50 / 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
Read51 / 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
Read52 / 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
Read53 / 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
Read54 / 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