{"record":{"id":"cdd1d6883d47f23a","repo":"egametang/ET","slug":"rcbuildheightfieldlayers-region-id-overflow","errorCode":null,"errorMessage":"rcBuildHeightfieldLayers: Region ID overflow.","messagePattern":"rcBuildHeightfieldLayers: Region ID overflow\\.","errorType":"exception","errorClass":"Exception","httpStatus":null,"severity":"warning","filePath":"Packages/cn.etetet.recast/Scripts/Core/Share/Recast/RecastLayers.cs","lineNumber":157,"sourceCode":"                    }\n                }\n\n                // Create unique ID.\n                for (int i = 0; i < sweepId; ++i)\n                {\n                    // If the neighbour is set and there is only one continuous\n                    // connection to it,\n                    // the sweep will be merged with the previous one, else new\n                    // region is created.\n                    if (sweeps[i].nei != 0xff && prevCount[sweeps[i].nei] == sweeps[i].ns)\n                    {\n                        sweeps[i].id = sweeps[i].nei;\n                    }\n                    else\n                    {\n                        if (regId == 255)\n                        {\n                            throw new Exception(\"rcBuildHeightfieldLayers: Region ID overflow.\");\n                        }\n\n                        sweeps[i].id = regId++;\n                    }\n                }\n\n                // Remap local sweep ids to region ids.\n                for (int x = borderSize; x < w - borderSize; ++x)\n                {\n                    RcCompactCell c = chf.cells[x + y * w];\n                    for (int i = c.index, ni = c.index + c.count; i < ni; ++i)\n                    {\n                        if (srcReg[i] != 0xff)\n                            srcReg[i] = sweeps[srcReg[i]].id;\n                    }\n                }\n            }\n","sourceCodeStart":139,"sourceCodeEnd":175,"githubUrl":"https://github.com/egametang/ET/blob/5cab01f7a8bee5f49f4781eebe9e2b1c6d7ebe0f/Packages/cn.etetet.recast/Scripts/Core/Share/Recast/RecastLayers.cs#L139-L175","documentation":"Thrown in rcBuildHeightfieldLayers when the region ID counter (regId) reaches 255 during the sweep-based region assignment. Layer region IDs are stored in a byte, so at most 255 distinct regions are supported per tile. More than that means the compact heightfield is too complex for the layer partitioning step.","triggerScenarios":"A tile with extremely fragmented walkable area producing > 255 distinct layer regions; very small minRegionArea retaining slivers; high-detail scenes in a single large tile.","commonSituations":"Large tiles covering complex geometry; tiny minRegionArea; layer partitioning on scenes better suited to watershed/monotile.","solutions":["Reduce tile size so each tile contains fewer regions.","Raise minRegionArea to merge tiny regions and reduce the total count.","Smooth/erode walkable area (filterSmallRegion, region merging) before layer build.","Simplify source geometry; switch to a partitioning method with a lower region count."],"exampleFix":"// before\ncfg.minRegionArea = 4;\ncfg.tileSize = 1024;\n\n// after\ncfg.minRegionArea = 64;\ncfg.tileSize = 256;","handlingStrategy":"validation","validationCode":"if (cfg.tileSize > 512) Debug.LogWarning(\"Large tiles can exceed 255 layer regions; consider smaller tiles\");\nif (cfg.minRegionArea < 32) Debug.LogWarning(\"Tiny minRegionArea raises region count toward the 255 cap\");","typeGuard":null,"tryCatchPattern":"try { RecastLayers.BuildHeightfieldLayers(ctx, chf, borderSize, cfg.tileSize, lset); }\ncatch (Exception e) when (e.Message.Contains(\"Region ID overflow\"))\n{ /* reduce tile size, raise minRegionArea, retry */ }","preventionTips":["Reduce tile size so each tile has fewer regions.","Raise minRegionArea to merge slivers.","Apply region merging/smoothing filters before layer build.","Simplify source geometry for layer-partitioned tiles."],"tags":["recast","layers","region","config","capacity"],"backgroundTag":null,"analyzedSha":"5cab01f7a8bee5f49f4781eebe9e2b1c6d7ebe0f","analyzedAt":"2026-08-13T21:10:40.377Z","schemaVersion":2},"datasetVersion":"2026-08-14T00:17:13.853Z"}