A high-performance, deterministic voxel grid system for spatial partitioning, simulation, and game development in Unity.
Lightweight and optimized for lockstep engines.
This package is a Unity-specific implementation of the GridForge library
- Voxel-Based Spatial Partitioning – Build efficient 3D voxel grids with fast access & updates.
 - Deterministic & Lockstep Ready – Designed for synchronized multiplayer and physics-safe environments.
 - ScanCell Overlay System – Accelerated proximity and radius queries using spatial hashing.
 - Dynamic Occupancy & Obstacle Tracking – Manage moving occupants, dynamic obstacles, and voxel metadata.
 - Minimal Allocations & Fast Queries – Built with SwiftCollections and FixedMathSharp for optimal performance.
 - Multi-Layered Grid System – Dynamic, hierarchical, and persistent grids.
 
- Open Unity.
 - Go to Window → Package Manager.
 - Click the + icon and select "Add package from git URL...".
 - Enter:
 
https://github.com/mrdav30/GridForge-Unity.git
- Click Add.
 
- Download the .unitypackage file from the latest release.
 - Open Unity and import the package via Assets → Import Package → Custom Package....
 - Select the downloaded file and import the contents.
 
GridForge-Unity depends on the following Unity packages:
These dependencies are automatically included when installing via UPM.
GridConfiguration config = new GridConfiguration(new Vector3d(-10, 0, -10), new Vector3d(10, 0, 10));
GlobalGridManager.TryAddGrid(config, out ushort gridIndex);Vector3d queryPosition = new Vector3d(5, 0, 5);
if (GlobalGridManager.TryGetGridAndVoxel(queryPosition, out VoxelGrid grid, out Voxel voxel))
	Console.WriteLine($"Voxel at {queryPosition} is {(voxel.IsOccupied ? "occupied" : "empty")}");
}BoundingArea blockArea = new BoundingArea(new Vector3d(3, 0, 3), new Vector3d(5, 0, 5));
Blocker blocker = new Blocker(blockArea);
blocker.ApplyBlockage();if (GlobalGridManager.TryGetGrid(queryPosition, out VoxelGrid grid, out Voxel voxel))
{
    PathPartition partition = new PathPartition();
    partition.Setup(voxel.GlobalVoxelIndex);
    voxel.AddPartition(partition);
}Vector3d scanCenter = new Vector3d(0, 0, 0);
Fixed64 scanRadius = (Fixed64)5;
foreach (IVoxelOccupant occupant in ScanManager.ScanRadius(scanCenter, scanRadius))
{
    Console.WriteLine($"Found occupant at {occupant.WorldPosition}");
}GridForge includes editor utilities for debugging:
- GridDebugger – Visualizes grids, voxels, and selected areas.
 - GridTracer Debuging – Helps debug line-of-sight & navigation.
 - Blocker Editor – Allows visual blocker placement via Unity Inspector.
 
- Unity 2020+
 - Supports deterministic lockstep engines
 - Compatible with AI navigation and procedural world systems
 
This project is licensed under the MIT License - see the LICENSE file for details.
- David Oravsky - Lead Developer
 - Contributions Welcome! Open a PR or issue.
 
For questions or support, open an issue on GitHub.