1. Wall Construction Modes
Maze Settings panel
Thin Wall Mode
Walls are rendered as thin box segments aligned along grid lines with customizable thickness. Ideal for classic dungeon layouts.
- Wall Thickness —
wall_thickness— 0.01–10.0 (default 0.1) - Double-Sided Thin Walls —
thin_wall_double_sided— When enabled, a single-sided custom wall tile is duplicated on both sides of the grid line to fake thickness. Disable when your custom wall tile already has built-in thickness. - Clean Wall Corners —
clean_wall_corners— Extends thin wall and roof faces at intersections to close gaps and eliminate visible seams. UV coordinates are adjusted proportionally so textures remain perfectly stretched. Roof faces may overlap slightly at corners.
Cube Mode
Walls are full tile-sized cubes centered on grid cells. The generated maze respects exact layout dimensions, and path cell centers are placed perfectly within the grid.
- Instanced Pillars (Pillar Mode) —
cube_mode_pillar— Use whole meshes from your Wall Collection as single pillars/cubes rather than assembling them face-by-face. Roof tile generation is automatically suppressed. Clicking the top/roof area of these pillars in the interactive editor works seamlessly to toggle or cycle them.- Mesh alignment requirement: meshes must be centered horizontally (local X=0, Y=0) with the bottom aligned at local Z=0. If the origin is at the mesh center (like default Blender cubes), it will sink halfway into the floor.
Tiled Height
Optionally stack walls in tile-height increments for consistent UV mapping across segmented wall stacks.
- Tiled Height —
wall_height_tiled— Toggle (default off) - Tiles High —
wall_height_tiles— 1–100 (default 1) — Only visible when Tiled Height is on. - Wall Height —
wall_height— 0.1–100.0 (default 1.0) — Used when Tiled Height is off.
2. Grid Types
Maze Settings panel
FireMaze supports two grid layouts, each with its own generation and mesh construction logic.
Rectangular Grid
Standard width × depth cell layout. All algorithms, rooms, loops, and entrances/exits work as documented. Image masking is available.
- Width —
width— 3–200 cells (default 10) - Depth —
depth— 3–200 cells (default 10) - Maze Shape —
maze_shape— Outer boundary shape for the maze:Rectangle— Standard rectangular boundary.Diamond— Diamond/rhombus silhouette.Triangle— Triangular silhouette.Hexagon— Hexagonal silhouette.
- Shape Rotation —
shape_rotation— 0°, 90°, 180°, 270°. - Smooth Shape Edges —
smooth_shape_edges— Toggle. Clips boundary tiles to the shape contour for a smoother outline.- Boundary Method —
smooth_boundary_method:Filler Triangles— Generates extra triangular faces to fill boundary gaps.Clipped Tiles— Clips floor/roof tiles to the boundary contour.
- Boundary Offset —
smooth_boundary_offset— 0.0–2.0 (default 0.15). Extends the shape boundary outward to clear stray corner fragments.
- Boundary Method —
Polar (Circular) Grid
Maze generated in concentric rings with radially-divided sectors. Each ring's sector count increases outward for a natural circular look.
- Rings —
polar_rings— 2–100 (default 5) - Custom Tile Alignment —
polar_custom_alignment— How custom tiles are aligned to wedge-shaped polar cells:- Procedural Only — Uses procedurally generated curved meshes (wedges, circular arcs, radial walls). Custom tiles are ignored.
- Trapezoidal Scaling — Stretches custom tiles to fit the wedge-shaped cells (straight walls, segmented appearance).
- Polar Bending (Warp) — Dynamically bends/warps custom tile vertices along circular arcs for a smooth organic look. Resolves the inherent left-handed Jacobian reflection of polar coordinates by applying compensating negative scales to keep normals, geometry, and texture orientations correct. Subdivision cuts are automatically capped (max 2 for detailed meshes, max 4 for simple proxy tiles) to prevent vertex explosion.
3. Generation Algorithms
Algorithm & Rooms panel
FireMaze supports 10 maze generation algorithms, each producing distinct corridor architectures. All algorithms work on rectangular grids; polar grids natively use DFS (others fall back to a random spanning tree / Kruskal-style equivalent).
| Algorithm | ID | Characteristics |
|---|---|---|
| Depth-First Search | dfs | Recursive backtracker. Long winding corridors, perfect maze. |
| Kruskal's | kruskal | Random edge merging. Short corridors, many dead-ends. |
| Eller's | eller | Row-by-row generation. Memory-efficient. Distinct row structure. |
| Binary Tree | binary_tree | Simple, fast. Bias toward north/east corridors. |
| Prim's | prims | Randomized MST. Balanced, highly branching. |
| Hunt-and-Kill | hunt_and_kill | Random walk + scan. Long winding corridors. |
| Sidewinder | sidewinder | Row-by-row horizontal runs. Strong horizontal bias. |
| Wilson's | wilsons | Loop-erased random walk. Unbiased uniform spanning tree. |
| Recursive Division | recursive_division | Recursive subdivision with single doors. Nested chambers. |
| Growing Tree | growing_tree | Hybrid frontier. Highly customizable via selection bias. |
Algorithm Bias Parameters
All bias values range from 0.0 to 1.0 with a default of 0.5. Only the parameters relevant to the selected algorithm are shown in the UI.
| Parameter | Property | Default | Affects | Description |
|---|---|---|---|---|
| GT Selection Bias | selection_bias | 0.5 | Growing Tree | 0.0 = always newest cell (DFS style, long corridors). 1.0 = always random cell (Prim's style, branched clusters). |
| Corridor Straightness | straightness | 0.5 | DFS, Hunt-and-Kill | Probability of continuing in the same direction. Higher = longer, straighter corridors. |
| Radial Bias | radial_bias | 0.5 | Polar DFS | 0.0 = prefer tangential (concentric) movements, ring-like pathways. 1.0 = prefer radial (in/out) movements, spoke-like pathways. |
| Diagonal Bias | direction_bias | 0.5 | Binary Tree | 0.0 = always carve North (horizontal lanes). 1.0 = always carve East (vertical lanes). |
| Sidewinder East Bias | east_bias | 0.5 | Sidewinder | Higher = longer horizontal runs. Lower = more frequent vertical exits to the North. |
| Split Orientation Bias | orientation_bias | 0.5 | Recursive Division | 0.0 = bias vertical splits. 1.0 = bias horizontal splits. |
| Passage Location Bias | passage_bias | 0.5 | Recursive Division | 0.0 = push doors toward center of wall segment. 1.0 = push doors toward edges/corners. |
| Eller Merge Prob | eller_merge_prob | 0.5 | Eller's | Horizontal set merging rate. Higher = more horizontal connections within the same row. |
4. Procedural Rooms
Algorithm & Rooms panel — Rectangular grids only
Pre-carve open rectangular clearings within the maze. Rooms auto-connect to the corridor network and are guaranteed to contain no stray pillars or internal walls in both Thin and Cube modes. Rooms respect the blocked mask — any placement overlapping a blocked cell is skipped, keeping image-masked layouts intact.
- Enable Rooms —
rooms_enable— Toggle (default off) - Room Count —
rooms_count— 1–50 (default 3) - Min Room Size —
min_room_size— 2–20 cells (default 2) - Max Room Size —
max_room_size— 2–20 cells (default 4)
5. Loops & Isolated Obstacles
Loops & Layout panel — Rectangular grids only
- Loop Probability —
loop_probability— 0.0–1.0 (default 0.0). Randomly removes additional walls to create alternative paths and loops. 0.0 = perfect maze (exactly one path between any two points). Higher values create more circular corridors and shortcuts. - Isolated Wall Prob —
isolated_wall_prob— 0.0–1.0 (default 0.0). Places standalone wall columns or pillars in floor regions as obstacles.
6. Entrances & Exits
Entrances & Exits panel — Rectangular grids only
Completion Modes
- Find Center (
center) — Entrance on an edge leading to a goal cell in the center of the maze. - Find Exit (
exit) — Entrance on one side, exit on the opposite side.
Settings
- Entrance Side —
entrance_side— Random/Any, North (+Y), South (−Y), East (+X), West (−X) - Exit Side —
exit_side— Random/Any, North (+Y), South (−Y), East (+X), West (−X) - Entrances —
num_entrances— 1–10 (default 1) - Exits —
num_exits— 1–10 (default 1) - Emergency Exits —
emergency_exits— Toggle (default off). Center mode only. Adds extra random openings on outer edges that lead out of the maze, providing multiple escape points.
7. Interactive Viewport Editor
Generation & Editing section — FireMaze root panel
Paint, modify, and customize the maze layout in real time directly from the 3D viewport.
- Click Interactive Edit in the sidebar.
- The viewport status bar displays editing shortcuts.
- Left-click on any cell or wall face to toggle it on/off.
- Shift+left-click to cycle that face's mesh from its custom collection.
- Press Esc or Enter (or click Exit Edit Mode) to return to normal interaction.
The editor monitors workspace and window state — switching to another workspace tab or clicking in another viewport region automatically terminates edit mode to prevent UI lockout. Clicks on the sidebar (N-panel) are ignored so you can adjust settings without leaving edit mode.
8. Real-Time Guide Paths
Guide Path panel
Generate and display the BFS-calculated shortest route from the entrance to the exit(s) or center.
- Generate Guide —
generate_guide— Toggle (default off) - Guide Type —
guide_type:Curve— A simple NURBS curve object.Tube (Mesh)— A solid 3D tube mesh.Ribbon— A flat ribbon path.
- Guide Width —
guide_width— 0.01–10.0 (default 0.1). Thickness of the tube/ribbon. - Height Offset —
guide_height_offset— −10.0–10.0 (default 0.1). Vertical position above the floor. - Wave Amplitude —
guide_wave_amplitude— 0.0–5.0 (default 0.0). Sine wave amplitude for floating animation. - Wave Frequency —
guide_wave_frequency— 0.1–20.0 (default 1.0). Sine wave frequency.
The guide path automatically loads a bright neon-green glowing emissive material (FireMaze_Guide) to visually stand out in Eevee or Cycles.
9. Custom Tiles & Collections
Custom Meshes & Collections panel
Replace standard procedural geometry with your own meshes or randomized collections.
Tile Origin
- Tiles Centered —
tiles_centered— Toggle (default on). Enable if your custom tiles have their origin at the center (like Blender primitives). Disable if tiles have their bottom-left corner at the origin.
Floors & Roofs
| Property | Label | Type | Description |
|---|---|---|---|
custom_floor_mesh | Floor Mesh | Mesh | Single custom mesh for all floor tiles |
custom_floor_collection | Floor Collection | Collection | Randomly distribute meshes from this collection as floor tiles |
custom_roof_mesh | Roof Mesh | Mesh | Single custom mesh for all roof tiles |
custom_roof_collection | Roof Collection | Collection | Randomly distribute meshes from this collection as roof tiles |
floor_thickness > 0, custom floors/roofs do not scale with thickness — they are placed as-is at the top surface.Walls
| Property | Label | Type | Description |
|---|---|---|---|
custom_wall_mesh | Wall Mesh | Mesh | Single custom mesh for all wall segments |
custom_wall_collection | Wall Collection | Collection | Randomly distribute meshes from this collection as walls |
Stairs & Ramps
| Property | Label | Type | Description |
|---|---|---|---|
custom_stair_mesh | Stair Mesh | Object | Custom object to instantiate at stair cells |
custom_ramp_mesh | Ramp Mesh | Object | Custom object to instantiate at ramp cells |
For larger footprints (1×2, 2×2), only the starting candidate cell receives the custom mesh; the other footprint cells are carved open on both floors (no floor or roof tiles) to serve as a landing or open vertical shaft.
Independent Face/Tile Swapping
In Interactive Edit Mode, Shift+left-clicking a face cycles its mesh index from the respective collection:
- Cube Mode — Raycast hit normals detect the clicked direction, allowing independent cycling of North, South, East, and West wall faces (when not in Instanced Pillar Mode), plus floor and roof tiles.
- Thin Wall Mode — Distance-to-edge calculations precisely target the clicked thin wall segment, floor, or roof. Shared walls between adjacent cells are automatically synchronized.
Mesh Origin Requirements
| Element | X/Y (horizontal) | Z (vertical) |
|---|---|---|
| Pillars / Walls | Centered (local X=0, Y=0) | Bottom at local Z=0 |
| Floors | Centered (local X=0, Y=0) | Bottom face at local Z=0 |
| Roofs | Centered (local X=0, Y=0) | Top surface at local Z=0 |
10. Detailed Transform Offsets
Detailed Transforms panel
Add variety and organic offsets to standard or custom tiles using local matrix transforms applied relative to each individual tile segment's local center.
| Element | Translate (XYZ) | Rotate (Euler degrees) | Scale (XYZ) |
|---|---|---|---|
| Wall Offsets | wall_translate (0,0,0) | wall_rotate (0,0,0) | wall_scale (1,1,1) |
| Floor Offsets | floor_translate (0,0,0) | floor_rotate (0,0,0) | floor_scale (1,1,1) |
| Roof Offsets | roof_translate (0,0,0) | roof_rotate (0,0,0) | roof_scale (1,1,1) |
Translation uses TRANSLATION subtype (LENGTH unit), rotation uses EULER subtype (ROTATION unit).
11. Image Masking
Session & Image Management panel — Rectangular grids only
Use a black-and-white image to define the walkable shape of the maze. White pixels = walkable (path), black pixels = blocked (wall).
- Load Mask from Disk — Imports a PNG, JPG, BMP, or TGA file from disk as the mask image.
- Mask Image —
mask_image— Select an existing Blender Image datablock. - Invert Mask Colors —
mask_invert— Toggle. Swap interpretation (black = walkable, white = blocked).
The mask image is sampled at each cell's position, making it easy to create mazes shaped like logos, text, or custom silhouettes. Masking is disabled when floors > 1.
12. Vertex Painting
Post-Processing panel
Procedurally paint vertex colors on maze meshes for shading, texturing, or game engine blending.
- Enable Vertex Painting —
vertex_paint_enable— Toggle (default off) - Paint Intensity —
vertex_paint_intensity— 0.0–1.0 (default 1.0). Controls opacity/strength of the effect.
| Mode | ID | Description |
|---|---|---|
| Ambient Occlusion | ao | Procedural darkening in corners, seams, and near floor/roof boundaries for a natural shadowed look. |
| Texture Blend Weights | blend | RGBA channels encode material blends: R=Moss (near floor), G=Cracks (in corners), B=Wetness (on flat floors), A=Soot (in dead-ends). |
| Path Highlight | path | Greens the floor tiles along the shortest path to the exit/center. |
| Distance Gradient | distance | Black-to-white gradient mapped by BFS distance from the entrance. |
13. Prop & Decor Spawner
Prop & Decor Spawner panel — Experimental
Automatically place decorative objects on wall faces, dead-ends, and entrances/exits. Spawned props are grouped under a scoped sub-collection (FireMaze_Props_{parent_name}), linked as a child of the maze collection, and tagged with a fire_maze_data custom property for reliable cleanup.
| Prop | Property | Density | Placement |
|---|---|---|---|
| Torches | prop_torch_mesh | prop_torch_density — 0.0–1.0 (default 0.2) | On valid wall faces bordering open space, at 60% of wall height, facing the open area. |
| Chests | prop_chest_mesh | prop_chest_density — 0.0–1.0 (default 0.5) | In dead-end cells, oriented toward the only open direction. Excludes stairs, entrances, and exits. |
| Doors | prop_door_mesh | Always spawns at valid locations | At entrance (floor 0) and exit (top floor) openings. |
14. Post-Processing & Colliders
Post-Processing panel
Merge Options
- Single Wall Object —
single_wall_object— Toggle (default on). Merges all wall and cap faces into a singleFireMaze_Wallsobject. - Merge Objects —
merge_objects— Toggle (default off). Combines floors, walls, roofs, and caps into oneFireMaze_Mergedmesh.
Geometry Optimization
- Remove Doubles —
remove_doubles— Toggle (default off). Final vertex weld to merge touching corners and stacked tiled wall segments. - Optimize Geometry (Dissolve Planar) —
optimize_coplanar— Toggle (default off). Simplifies mesh by dissolving coplanar faces. Reduces poly count but may stretch seamless tiled textures.
Lightmap UVs
- Generate Lightmap UVs —
generate_lightmap— Toggle (default off). Generates a second UV map named "Lightmap" on all final visual mesh objects.- Method —
lightmap_method:Smart UV Project— Groups adjacent/co-planar faces into contiguous UV islands (reduces seam-bleeding in game engines).Lightmap Pack— Projects and packs each face individually (zero distortion, maximum packing density, but splits every face).
- Method —
Colliders
- Generate Colliders —
generate_colliders— Toggle (default off). Generates simple flat-faced helper meshes (FireMaze_Floor_Collider,FireMaze_Walls_Collider,FireMaze_Roof_Collider) matching the maze layout. Hidden in renders by default.- Roof colliders are generated even when Instanced Pillars mode is enabled.
- Merge Colliders —
merge_colliders— Combines all active colliders into a singleFireMaze_Collidermesh. - Optimize Colliders —
optimize_colliders_coplanar— Applies planar dissolve to collider meshes to reduce polygon count.
15. Multilevel Stairs & Ramps
Maze Settings panel
Configure vertical floor transitions for multi-floor mazes.
Floor Settings
- Floors —
floors— 1–20 (default 1). Number of vertical levels. - Floor Thickness —
floor_thickness— 0.0–10.0 (default 0.0). Thickness of the floor slab between levels. Adds visual depth with physical box geometry.
Stair Settings
Shown when floors > 1.
- Stairs Per Level —
stair_count— 1–50 (default 1). Number of staircases per floor transition. - Stair Style —
stair_style:Staircase— Standard stepped staircase geometry.Ramp— Smooth sloped ramp geometry.
- Stair Footprint —
stair_footprint— Rectangular grids only:1x1— Single-cell spiral staircase/ramp.1x2— Two-cell straight staircase.2x2— Two-by-two U-turn staircase with landing.- Polar grids only support
1x1footprints.
- Stair Direction —
stair_direction:- Rectangular: North (N), East (E), South (S), West (W).
- Polar: CCW (N), Outward (E), CW (S), Inward (W).
Custom Stair Objects
Assign custom Blender Object pointers (meshes or other object types) to instantiate at stair/ramp cells instead of procedural geometry:
- Staircase Object —
custom_stair_mesh(Object pointer) - Ramp Object —
custom_ramp_mesh(Object pointer)
16. Property Quick Reference
All properties are stored on context.scene.fire_maze as a Blender PointerProperty.
| UI Panel | Properties |
|---|---|
| FireMaze (root) | grid_type, maze_shape, shape_rotation, smooth_shape_edges, smooth_boundary_method, smooth_boundary_offset, width, depth, polar_rings, polar_custom_alignment, wall_height_tiled, wall_height_tiles, wall_height, wall_mode, wall_thickness, thin_wall_double_sided, clean_wall_corners, tile_size, floors, floor_thickness, stair_footprint, stair_style, stair_direction, stair_count, seed, edit_floor_level, edit_roof, edit_tool, is_editing |
| Algorithm & Rooms | algorithm, selection_bias, straightness, radial_bias, direction_bias, east_bias, orientation_bias, passage_bias, eller_merge_prob, rooms_enable, rooms_count, min_room_size, max_room_size |
| Session & Image Management | mask_image, mask_invert |
| Entrances & Exits | mode, entrance_side, exit_side, num_entrances, num_exits, emergency_exits |
| Loops & Layout | loop_probability, isolated_wall_prob |
| Guide Path | generate_guide, guide_type, guide_width, guide_height_offset, guide_wave_amplitude, guide_wave_frequency |
| Custom Meshes & Collections | tiles_centered, custom_floor_mesh, custom_floor_collection, custom_roof_mesh, custom_roof_collection, custom_stair_mesh, custom_ramp_mesh, custom_wall_mesh, custom_wall_collection, cube_mode_pillar |
| Detailed Transforms | wall_translate, wall_rotate, wall_scale, floor_translate, floor_rotate, floor_scale, roof_translate, roof_rotate, roof_scale |
| Post-Processing | single_wall_object, merge_objects, remove_doubles, generate_lightmap, lightmap_method, optimize_coplanar, vertex_paint_enable, vertex_paint_mode, vertex_paint_intensity, generate_colliders, merge_colliders, optimize_colliders_coplanar |
| Prop & Decor Spawner | prop_torch_mesh, prop_torch_density, prop_chest_mesh, prop_chest_density, prop_door_mesh |