From c8cbb7f8ac250d378fa224698a55395daef2fe27 Mon Sep 17 00:00:00 2001 From: JiWoong Sul Date: Mon, 24 Nov 2025 17:13:39 +0900 Subject: [PATCH] =?UTF-8?q?=EB=A0=88=EB=B2=A8=20=EC=83=9D=EC=84=B1=20?= =?UTF-8?q?=EC=99=84=ED=99=94=20=EB=B0=8F=20=EC=B2=B4=ED=81=AC=ED=8F=AC?= =?UTF-8?q?=EC=9D=B8=ED=8A=B8=20=EA=B0=95=ED=99=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Program.cs | 239 ++++- StatusReporter.cs | 4 +- levelbalance.json | 2309 ++++++++++++++++++++++++++++++++++++++++++++- 3 files changed, 2491 insertions(+), 61 deletions(-) diff --git a/Program.cs b/Program.cs index f466f03..ff42121 100644 --- a/Program.cs +++ b/Program.cs @@ -84,8 +84,8 @@ internal static class Program private static readonly GenerationTuning Tuning = new GenerationTuning { - MaxAttemptsPerLevel = 10_000, - MaxMillisecondsPerLevel = 200_000, + MaxAttemptsPerLevel = 100_000, + MaxMillisecondsPerLevel = 2_000_000, RelaxationSteps = 3, PushLimitPadding = 2, PushLimitScale = 0.35, @@ -130,14 +130,36 @@ internal static class Program (startId, endId) = (endId, startId); } - var totalWatch = Stopwatch.StartNew(); - var levels = generator.BuildRange(startId, endId); - totalWatch.Stop(); var options = new JsonSerializerOptions { WriteIndented = true, PropertyNamingPolicy = JsonNamingPolicy.CamelCase }; + var checkpointPath = Environment.GetEnvironmentVariable("NEKOBAN_CHECKPOINT"); + // 비워 있으면 기본 경로를 사용한다. (쉘 리다이렉션과 별개로 누적 체크포인트를 보관) + checkpointPath = string.IsNullOrWhiteSpace(checkpointPath) ? "stage_checkpoint.json" : checkpointPath; + var checkpointEnabled = !string.IsNullOrWhiteSpace(checkpointPath); + + void SaveCheckpoint(List snapshot, int lastId) + { + if (!checkpointEnabled) return; + // 10단위(또는 마지막 레벨)마다 누적 JSON을 디스크에 기록한다. + if (lastId % 10 != 0 && lastId != endId) return; + try + { + var json = JsonSerializer.Serialize(snapshot, options); + File.WriteAllText(checkpointPath, json); + status.ShowLine($"체크포인트 저장: 레벨 {lastId}까지 -> {checkpointPath}"); + } + catch (Exception ex) + { + status.ShowLine($"[warn] 체크포인트 저장 실패({checkpointPath}): {ex.Message}"); + } + } + + var totalWatch = Stopwatch.StartNew(); + var levels = generator.BuildRange(startId, endId, SaveCheckpoint); + totalWatch.Stop(); Console.WriteLine(JsonSerializer.Serialize(levels, options)); var duration = StatusReporter.FormatDuration(totalWatch.Elapsed); @@ -265,7 +287,7 @@ internal sealed class LevelGenerator _trace = Environment.GetEnvironmentVariable("NEKOBAN_DEBUG") == "1"; } - public List BuildRange(int startId, int endId) + public List BuildRange(int startId, int endId, Action, int>? onCheckpoint = null) { foreach (var band in _bands) { @@ -282,6 +304,7 @@ internal sealed class LevelGenerator var band = ResolveBand(id); var level = BuildSingle(id, band); output.Add(level); + onCheckpoint?.Invoke(output, id); } return output; @@ -298,13 +321,120 @@ internal sealed class LevelGenerator } private GeneratedLevel BuildSingle(int id, LevelBandConfig band) + { + // 완화 단계를 순차적으로 적용한다. (총 5단계 + 비상 1단계) + var stages = new List + { + new RelaxStage("기본", b => CloneBand(b)), + new RelaxStage("완화1-임계치", bandConfig => + { + var c = CloneBand(bandConfig); + c.MinAllowedPushes = Math.Max(1, c.MinAllowedPushes - 3); + c.MinAllowedTurns = Math.Max(0, c.MinAllowedTurns - 1); + c.MinAllowedBranching = Math.Max(0, c.MinAllowedBranching - 1); + return c; + }), + new RelaxStage("완화2-마스크확장", bandConfig => + { + var c = CloneBand(bandConfig); + c.MaskPadMin = -2; + c.MaskPadMax = -2; + c.ShapeMasks = MaskLibrary.Medium.Concat(MaskLibrary.Large).ToList(); + c.ShapeMasksExpanded = null; // 변형/패딩을 다시 계산하도록 초기화 + return c; + }), + new RelaxStage("완화3-역탐색확대", bandConfig => + { + var c = CloneBand(bandConfig); + c.ReverseDepthScale = Math.Max(1.0, c.ReverseDepthScale * 1.25); + c.ReverseBreadthScale = Math.Max(1.0, c.ReverseBreadthScale * 1.25); + return c; + }), + new RelaxStage("완화4-박스감소", bandConfig => + { + var c = CloneBand(bandConfig); + c.BoxCountLow = Math.Max(1, c.BoxCountLow - 1); + c.BoxCountHigh = Math.Max(c.BoxCountLow, c.BoxCountHigh - 1); + return c; + }), + new RelaxStage("완화5-간격완화", bandConfig => + { + var c = CloneBand(bandConfig); + c.MinGoalDistance = Math.Max(1, c.MinGoalDistance - 1); + c.MinBoxDistance = Math.Max(1, c.MinBoxDistance - 1); + c.MinWallDistance = Math.Max(0, c.MinWallDistance - 1); + return c; + }), + new RelaxStage("완화6-최종", bandConfig => + { + var c = CloneBand(bandConfig); + c.BoxCountLow = 1; + c.BoxCountHigh = Math.Max(1, c.BoxCountHigh - 2); + c.MinAllowedPushes = 1; + c.MinAllowedTurns = 0; + c.MinAllowedBranching = 0; + c.MinGoalDistance = Math.Max(1, c.MinGoalDistance - 2); + c.MinBoxDistance = Math.Max(1, c.MinBoxDistance - 2); + c.MinWallDistance = 0; + c.ReverseDepthScale = Math.Max(1.0, c.ReverseDepthScale * 2.8); + c.ReverseBreadthScale = Math.Max(1.0, c.ReverseBreadthScale * 2.8); + c.MaskPadMin = -2; + c.MaskPadMax = -2; + c.ShapeMasks = MaskLibrary.Medium.Concat(MaskLibrary.Microban).ToList(); + c.ShapeMasksExpanded = null; + return c; + }, OverrideRelaxSteps: 6) + }; + + // 밴드 강등 시도: 현재 밴드 -> 직전 10레벨 밴드 -> 직전 20레벨 밴드 + var bandCandidates = new List { band }; + var minStartId = _bands.Min(b => b.StartId); + foreach (var delta in new[] { 10, 20 }) + { + var fallbackId = Math.Max(minStartId, id - delta); + if (fallbackId < id) + { + var fb = CloneBand(ResolveBand(fallbackId)); + fb.StartId = band.StartId; + fb.EndId = band.EndId; + bandCandidates.Add(fb); + } + } + + // 시드 변조 재시도 + 완화 단계 루프 + const int seedRetries = 5; + foreach (var bandCandidate in bandCandidates) + { + for (var retry = 0; retry < seedRetries; retry++) + { + var jitterSeed = _rng.Next() ^ (id * 7919) ^ (retry * 104729); + var localRng = new Random(jitterSeed); + + foreach (var stage in stages) + { + var bandForStage = stage.Adjust(bandCandidate); + var relaxOverride = stage.OverrideRelaxSteps; + if (TryBuildStage(id, bandForStage, stage.Label, localRng, relaxOverride, out var level)) + { + return level; + } + } + } + } + + throw new InvalidOperationException($"레벨 {id} 생성 실패 (모든 완화 단계 시도됨)"); + } + + private bool TryBuildStage(int id, LevelBandConfig band, string stageLabel, Random rng, int? overrideRelaxSteps, out GeneratedLevel level) { var failReasons = _trace ? new Dictionary() : null; var baseMasks = band.ShapeMasks.Count > 0 ? band.ShapeMasks : MaskLibrary.Microban; band.ShapeMasksExpanded ??= MaskLibrary.ExpandWithTransforms(baseMasks, band.MaskPadMin, band.MaskPadMax); var pockets = ResolvePockets(band); - for (var relax = 0; relax < _tuning.RelaxationSteps; relax++) + var relaxSteps = overrideRelaxSteps ?? _tuning.RelaxationSteps; + + for (var relax = 0; relax < relaxSteps; relax++) { var attemptsLimit = _tuning.MaxAttemptsPerLevel + relax * 2000; var timeLimit = _tuning.MaxMillisecondsPerLevel + relax * 20_000; @@ -321,24 +451,26 @@ internal sealed class LevelGenerator var stopwatch = Stopwatch.StartNew(); var attempts = 0; - _status.Show($"레벨 {id} 생성중..."); while (attempts < attemptsLimit && stopwatch.ElapsedMilliseconds < timeLimit) { attempts++; + // 진행 상태가 살아 있음을 보여주기 위해, 1초 단위 점(.) 애니메이션을 출력한다. + // 예) "레벨 214 [기본] 생성중.", "..", "..." 식으로 순환. + _status.Show($"레벨 {id} [{stageLabel}] 생성중", withDots: true); var mask = MaskLibrary.CreateVariant( - MaskLibrary.PickRandom(_rng, band.ShapeMasksExpanded), - _rng, + MaskLibrary.PickRandom(rng, band.ShapeMasksExpanded), + rng, _tuning.ApplyMaskTransforms, _tuning.MaskWallJitter); - var canvas = LayoutFactory.FromMask(mask, _rng, _tuning, pockets); + var canvas = LayoutFactory.FromMask(mask, rng, _tuning, pockets); - var boxCount = _rng.Next(band.BoxCountLow, band.BoxCountHigh + 1); + var boxCount = rng.Next(band.BoxCountLow, band.BoxCountHigh + 1); if (boxCount <= 0) boxCount = 1; - if (!PiecePlacer.TryPlace(canvas, _rng, boxCount, out var goals, out var boxes, out var player)) + if (!PiecePlacer.TryPlace(canvas, rng, boxCount, out var goals, out var boxes, out var player)) { NoteFail(failReasons, "place"); continue; @@ -352,7 +484,7 @@ internal sealed class LevelGenerator var board = Board.FromCanvas(canvas); var reverse = new ReverseSearch(board, reverseDepth, reverseBreadth); - var startState = reverse.FindStartState(goals, minPush, _rng); + var startState = reverse.FindStartState(goals, minPush, rng); if (startState == null) { NoteFail(failReasons, "reverse_not_found"); @@ -393,7 +525,7 @@ internal sealed class LevelGenerator canvas.Overlay(startState.Boxes, '$'); canvas.Set(startState.Player, '@'); - // Final wall normalization; reject if tokens end up on the edge. + // 최종 외벽 정규화; 토큰이 가장자리에 닿으면 실패 처리. if (!LayoutFactory.NormalizeOuterWallsStrict(canvas, failOnTokens: true)) { NoteFail(failReasons, "boundary"); @@ -420,30 +552,61 @@ internal sealed class LevelGenerator _seenPatterns.Add(patternKey); } - _status.Show($"레벨 {id} 생성완료 ({StatusReporter.FormatDuration(stopwatch.Elapsed)})"); - return new GeneratedLevel + _status.Show($"레벨 {id} [{stageLabel}] 생성완료 ({StatusReporter.FormatDuration(stopwatch.Elapsed)})"); + level = new GeneratedLevel { Id = id, Grid = lines, LowestPush = solve.Pushes, PushLimit = pushLimit }; + return true; } } - _status.Show($"레벨 {id} 생성 실패"); + _status.Show($"레벨 {id} [{stageLabel}] 생성 실패"); if (_trace && failReasons != null) { - Console.Error.WriteLine($"[trace] level {id} failed. Reasons:"); + Console.Error.WriteLine($"[trace] level {id} stage {stageLabel} failed. Reasons:"); foreach (var kv in failReasons.OrderByDescending(kv => kv.Value)) { Console.Error.WriteLine($" - {kv.Key}: {kv.Value}"); } } - throw new InvalidOperationException($"레벨 {id} 생성 실패 (attempts {_tuning.MaxAttemptsPerLevel})"); + level = default!; + return false; } + private static LevelBandConfig CloneBand(LevelBandConfig src) + { + // 완화 단계마다 원본 밴드를 손상시키지 않도록 복사본을 만든다. + return new LevelBandConfig + { + StartId = src.StartId, + EndId = src.EndId, + BoxCountLow = src.BoxCountLow, + BoxCountHigh = src.BoxCountHigh, + MinAllowedPushes = src.MinAllowedPushes, + MinAllowedTurns = src.MinAllowedTurns, + MinAllowedBranching = src.MinAllowedBranching, + MinGoalDistance = src.MinGoalDistance, + MinBoxDistance = src.MinBoxDistance, + MinWallDistance = src.MinWallDistance, + ReverseDepthScale = src.ReverseDepthScale, + ReverseBreadthScale = src.ReverseBreadthScale, + PocketCarveMin = src.PocketCarveMin, + PocketCarveMax = src.PocketCarveMax, + PocketMaxRadius = src.PocketMaxRadius, + MaskPadMin = src.MaskPadMin, + MaskPadMax = src.MaskPadMax, + ShapeMasks = src.ShapeMasks.ToList(), + ShapeMasksExpanded = src.ShapeMasksExpanded?.ToList() + }; + } + + private sealed record RelaxStage(string Label, Func Adjust, int? OverrideRelaxSteps = null); + private LevelBandConfig ResolveBand(int id) { foreach (var band in _bands) @@ -498,24 +661,24 @@ internal sealed class GeneratedLevel internal sealed class LevelBandConfig { - public int StartId { get; init; } - public int EndId { get; init; } - public int BoxCountLow { get; init; } - public int BoxCountHigh { get; init; } - public int MinAllowedPushes { get; init; } - public int MinAllowedTurns { get; init; } = 0; - public int MinAllowedBranching { get; init; } = 0; - public int MinGoalDistance { get; init; } = 1; - public int MinBoxDistance { get; init; } = 1; - public int MinWallDistance { get; init; } = 0; - public double ReverseDepthScale { get; init; } = 1.0; - public double ReverseBreadthScale { get; init; } = 1.0; - public int PocketCarveMin { get; init; } = -1; - public int PocketCarveMax { get; init; } = -1; - public int PocketMaxRadius { get; init; } = -1; - public int MaskPadMin { get; init; } = -1; - public int MaskPadMax { get; init; } = 1; - public List ShapeMasks { get; init; } = new(); + public int StartId { get; set; } + public int EndId { get; set; } + public int BoxCountLow { get; set; } + public int BoxCountHigh { get; set; } + public int MinAllowedPushes { get; set; } + public int MinAllowedTurns { get; set; } = 0; + public int MinAllowedBranching { get; set; } = 0; + public int MinGoalDistance { get; set; } = 1; + public int MinBoxDistance { get; set; } = 1; + public int MinWallDistance { get; set; } = 0; + public double ReverseDepthScale { get; set; } = 1.0; + public double ReverseBreadthScale { get; set; } = 1.0; + public int PocketCarveMin { get; set; } = -1; + public int PocketCarveMax { get; set; } = -1; + public int PocketMaxRadius { get; set; } = -1; + public int MaskPadMin { get; set; } = -1; + public int MaskPadMax { get; set; } = 1; + public List ShapeMasks { get; set; } = new(); public List? ShapeMasksExpanded { get; set; } } diff --git a/StatusReporter.cs b/StatusReporter.cs index 6bd6a59..8ce2551 100644 --- a/StatusReporter.cs +++ b/StatusReporter.cs @@ -33,7 +33,9 @@ internal sealed class StatusReporter { if (_lastMessage == message && !newline) return; var now = DateTime.UtcNow; - if (!newline && (now - _lastWriteTime).TotalMilliseconds < 200) + // 너무 자주 찍으면 콘솔이 쓸데없이 지저분해지므로, + // 진행 중 상태는 최소 1초 간격으로만 업데이트한다. + if (!newline && (now - _lastWriteTime).TotalMilliseconds < 1000) { return; } diff --git a/levelbalance.json b/levelbalance.json index fbc11c1..695aa34 100644 --- a/levelbalance.json +++ b/levelbalance.json @@ -2,7 +2,7 @@ "bands": [ { "startId": 3, - "endId": 20, + "endId": 9, "boxCountLow": 1, "boxCountHigh": 2, "minAllowedPushes": 4, @@ -18,50 +18,2315 @@ "pocketMaxRadius": 1, "maskPadMin": -1, "maskPadMax": 1, - "maskSets": ["micro"], - "maskTake": 8 + "maskSets": [ + "micro" + ], + "maskTake": 10 }, { - "startId": 21, - "endId": 40, - "boxCountLow": 1, - "boxCountHigh": 2, + "startId": 10, + "endId": 10, + "boxCountLow": 2, + "boxCountHigh": 3, "minAllowedPushes": 7, - "minAllowedTurns": 3, + "minAllowedTurns": 4, "minAllowedBranching": 1, "minGoalDistance": 3, "minBoxDistance": 3, "minWallDistance": 1, "reverseDepthScale": 1.15, - "reverseBreadthScale": 1.2, + "reverseBreadthScale": 1.1, "pocketCarveMin": 1, "pocketCarveMax": 2, - "pocketMaxRadius": 2, + "pocketMaxRadius": 1, "maskPadMin": -1, - "maskPadMax": 2, - "maskSets": ["micro", "medium"], - "maskTake": 0 + "maskPadMax": 1, + "maskSets": [ + "micro" + ], + "maskTake": 10 }, { - "startId": 41, - "endId": 60, + "startId": 11, + "endId": 19, + "boxCountLow": 1, + "boxCountHigh": 2, + "minAllowedPushes": 5, + "minAllowedTurns": 2, + "minAllowedBranching": 0, + "minGoalDistance": 2, + "minBoxDistance": 3, + "minWallDistance": 1, + "reverseDepthScale": 1.03, + "reverseBreadthScale": 1.03, + "pocketCarveMin": 0, + "pocketCarveMax": 1, + "pocketMaxRadius": 1, + "maskPadMin": -1, + "maskPadMax": 1, + "maskSets": [ + "micro" + ], + "maskTake": 10 + }, + { + "startId": 20, + "endId": 20, + "boxCountLow": 2, + "boxCountHigh": 3, + "minAllowedPushes": 8, + "minAllowedTurns": 4, + "minAllowedBranching": 1, + "minGoalDistance": 3, + "minBoxDistance": 3, + "minWallDistance": 1, + "reverseDepthScale": 1.18, + "reverseBreadthScale": 1.14, + "pocketCarveMin": 1, + "pocketCarveMax": 2, + "pocketMaxRadius": 1, + "maskPadMin": -1, + "maskPadMax": 1, + "maskSets": [ + "micro" + ], + "maskTake": 10 + }, + { + "startId": 21, + "endId": 29, + "boxCountLow": 1, + "boxCountHigh": 2, + "minAllowedPushes": 6, + "minAllowedTurns": 2, + "minAllowedBranching": 0, + "minGoalDistance": 3, + "minBoxDistance": 3, + "minWallDistance": 1, + "reverseDepthScale": 1.06, + "reverseBreadthScale": 1.07, + "pocketCarveMin": 0, + "pocketCarveMax": 1, + "pocketMaxRadius": 1, + "maskPadMin": -1, + "maskPadMax": 1, + "maskSets": [ + "micro" + ], + "maskTake": 10 + }, + { + "startId": 30, + "endId": 30, "boxCountLow": 2, "boxCountHigh": 3, "minAllowedPushes": 9, "minAllowedTurns": 4, + "minAllowedBranching": 1, + "minGoalDistance": 3, + "minBoxDistance": 3, + "minWallDistance": 1, + "reverseDepthScale": 1.21, + "reverseBreadthScale": 1.17, + "pocketCarveMin": 1, + "pocketCarveMax": 2, + "pocketMaxRadius": 1, + "maskPadMin": -1, + "maskPadMax": 1, + "maskSets": [ + "micro" + ], + "maskTake": 10 + }, + { + "startId": 31, + "endId": 39, + "boxCountLow": 1, + "boxCountHigh": 2, + "minAllowedPushes": 7, + "minAllowedTurns": 3, + "minAllowedBranching": 0, + "minGoalDistance": 3, + "minBoxDistance": 3, + "minWallDistance": 1, + "reverseDepthScale": 1.09, + "reverseBreadthScale": 1.1, + "pocketCarveMin": 0, + "pocketCarveMax": 1, + "pocketMaxRadius": 1, + "maskPadMin": -1, + "maskPadMax": 1, + "maskSets": [ + "micro" + ], + "maskTake": 0 + }, + { + "startId": 40, + "endId": 40, + "boxCountLow": 2, + "boxCountHigh": 3, + "minAllowedPushes": 10, + "minAllowedTurns": 5, + "minAllowedBranching": 1, + "minGoalDistance": 3, + "minBoxDistance": 3, + "minWallDistance": 1, + "reverseDepthScale": 1.24, + "reverseBreadthScale": 1.21, + "pocketCarveMin": 1, + "pocketCarveMax": 2, + "pocketMaxRadius": 1, + "maskPadMin": -1, + "maskPadMax": 1, + "maskSets": [ + "micro" + ], + "maskTake": 0 + }, + { + "startId": 41, + "endId": 49, + "boxCountLow": 2, + "boxCountHigh": 3, + "minAllowedPushes": 8, + "minAllowedTurns": 3, + "minAllowedBranching": 0, + "minGoalDistance": 3, + "minBoxDistance": 3, + "minWallDistance": 1, + "reverseDepthScale": 1.12, + "reverseBreadthScale": 1.14, + "pocketCarveMin": 0, + "pocketCarveMax": 1, + "pocketMaxRadius": 2, + "maskPadMin": -1, + "maskPadMax": 1, + "maskSets": [ + "micro" + ], + "maskTake": 0 + }, + { + "startId": 50, + "endId": 50, + "boxCountLow": 3, + "boxCountHigh": 4, + "minAllowedPushes": 11, + "minAllowedTurns": 5, + "minAllowedBranching": 1, + "minGoalDistance": 3, + "minBoxDistance": 3, + "minWallDistance": 1, + "reverseDepthScale": 1.27, + "reverseBreadthScale": 1.24, + "pocketCarveMin": 1, + "pocketCarveMax": 2, + "pocketMaxRadius": 2, + "maskPadMin": -1, + "maskPadMax": 1, + "maskSets": [ + "micro" + ], + "maskTake": 0 + }, + { + "startId": 51, + "endId": 59, + "boxCountLow": 2, + "boxCountHigh": 3, + "minAllowedPushes": 9, + "minAllowedTurns": 3, + "minAllowedBranching": 0, + "minGoalDistance": 3, + "minBoxDistance": 3, + "minWallDistance": 1, + "reverseDepthScale": 1.15, + "reverseBreadthScale": 1.18, + "pocketCarveMin": 0, + "pocketCarveMax": 1, + "pocketMaxRadius": 2, + "maskPadMin": -1, + "maskPadMax": 1, + "maskSets": [ + "micro" + ], + "maskTake": 0 + }, + { + "startId": 60, + "endId": 60, + "boxCountLow": 3, + "boxCountHigh": 4, + "minAllowedPushes": 12, + "minAllowedTurns": 5, + "minAllowedBranching": 1, + "minGoalDistance": 3, + "minBoxDistance": 3, + "minWallDistance": 1, + "reverseDepthScale": 1.3, + "reverseBreadthScale": 1.28, + "pocketCarveMin": 1, + "pocketCarveMax": 2, + "pocketMaxRadius": 2, + "maskPadMin": -1, + "maskPadMax": 1, + "maskSets": [ + "micro" + ], + "maskTake": 0 + }, + { + "startId": 61, + "endId": 69, + "boxCountLow": 2, + "boxCountHigh": 3, + "minAllowedPushes": 10, + "minAllowedTurns": 4, + "minAllowedBranching": 1, + "minGoalDistance": 3, + "minBoxDistance": 3, + "minWallDistance": 1, + "reverseDepthScale": 1.18, + "reverseBreadthScale": 1.21, + "pocketCarveMin": 0, + "pocketCarveMax": 1, + "pocketMaxRadius": 2, + "maskPadMin": -1, + "maskPadMax": -1, + "maskSets": [ + "micro", + "medium" + ], + "maskTake": 0 + }, + { + "startId": 70, + "endId": 70, + "boxCountLow": 3, + "boxCountHigh": 4, + "minAllowedPushes": 13, + "minAllowedTurns": 6, "minAllowedBranching": 2, "minGoalDistance": 3, "minBoxDistance": 3, "minWallDistance": 1, - "reverseDepthScale": 1.35, - "reverseBreadthScale": 1.4, + "reverseDepthScale": 1.33, + "reverseBreadthScale": 1.31, "pocketCarveMin": 1, - "pocketCarveMax": 3, + "pocketCarveMax": 2, "pocketMaxRadius": 2, - "maskPadMin": 0, - "maskPadMax": 2, - "maskSets": ["medium", "large"], + "maskPadMin": -1, + "maskPadMax": -1, + "maskSets": [ + "micro", + "medium" + ], + "maskTake": 0 + }, + { + "startId": 71, + "endId": 79, + "boxCountLow": 2, + "boxCountHigh": 3, + "minAllowedPushes": 12, + "minAllowedTurns": 4, + "minAllowedBranching": 1, + "minGoalDistance": 3, + "minBoxDistance": 3, + "minWallDistance": 1, + "reverseDepthScale": 1.21, + "reverseBreadthScale": 1.25, + "pocketCarveMin": 0, + "pocketCarveMax": 1, + "pocketMaxRadius": 2, + "maskPadMin": -1, + "maskPadMax": -1, + "maskSets": [ + "micro", + "medium" + ], + "maskTake": 0 + }, + { + "startId": 80, + "endId": 80, + "boxCountLow": 3, + "boxCountHigh": 4, + "minAllowedPushes": 15, + "minAllowedTurns": 6, + "minAllowedBranching": 2, + "minGoalDistance": 3, + "minBoxDistance": 3, + "minWallDistance": 1, + "reverseDepthScale": 1.36, + "reverseBreadthScale": 1.35, + "pocketCarveMin": 1, + "pocketCarveMax": 2, + "pocketMaxRadius": 2, + "maskPadMin": -1, + "maskPadMax": -1, + "maskSets": [ + "micro", + "medium" + ], + "maskTake": 0 + }, + { + "startId": 81, + "endId": 89, + "boxCountLow": 3, + "boxCountHigh": 4, + "minAllowedPushes": 13, + "minAllowedTurns": 4, + "minAllowedBranching": 1, + "minGoalDistance": 3, + "minBoxDistance": 3, + "minWallDistance": 2, + "reverseDepthScale": 1.24, + "reverseBreadthScale": 1.28, + "pocketCarveMin": 0, + "pocketCarveMax": 1, + "pocketMaxRadius": 2, + "maskPadMin": -1, + "maskPadMax": -1, + "maskSets": [ + "micro", + "medium" + ], + "maskTake": 0 + }, + { + "startId": 90, + "endId": 90, + "boxCountLow": 4, + "boxCountHigh": 5, + "minAllowedPushes": 16, + "minAllowedTurns": 6, + "minAllowedBranching": 2, + "minGoalDistance": 3, + "minBoxDistance": 3, + "minWallDistance": 2, + "reverseDepthScale": 1.39, + "reverseBreadthScale": 1.38, + "pocketCarveMin": 1, + "pocketCarveMax": 2, + "pocketMaxRadius": 3, + "maskPadMin": -1, + "maskPadMax": -1, + "maskSets": [ + "micro", + "medium" + ], + "maskTake": 0 + }, + { + "startId": 91, + "endId": 99, + "boxCountLow": 3, + "boxCountHigh": 4, + "minAllowedPushes": 14, + "minAllowedTurns": 5, + "minAllowedBranching": 1, + "minGoalDistance": 3, + "minBoxDistance": 3, + "minWallDistance": 2, + "reverseDepthScale": 1.27, + "reverseBreadthScale": 1.31, + "pocketCarveMin": 0, + "pocketCarveMax": 1, + "pocketMaxRadius": 2, + "maskPadMin": -1, + "maskPadMax": -1, + "maskSets": [ + "micro", + "medium" + ], + "maskTake": 0 + }, + { + "startId": 100, + "endId": 100, + "boxCountLow": 4, + "boxCountHigh": 5, + "minAllowedPushes": 17, + "minAllowedTurns": 7, + "minAllowedBranching": 2, + "minGoalDistance": 3, + "minBoxDistance": 3, + "minWallDistance": 2, + "reverseDepthScale": 1.42, + "reverseBreadthScale": 1.42, + "pocketCarveMin": 1, + "pocketCarveMax": 2, + "pocketMaxRadius": 3, + "maskPadMin": -1, + "maskPadMax": -1, + "maskSets": [ + "micro", + "medium" + ], + "maskTake": 0 + }, + { + "startId": 101, + "endId": 109, + "boxCountLow": 3, + "boxCountHigh": 4, + "minAllowedPushes": 15, + "minAllowedTurns": 5, + "minAllowedBranching": 1, + "minGoalDistance": 3, + "minBoxDistance": 3, + "minWallDistance": 2, + "reverseDepthScale": 1.3, + "reverseBreadthScale": 1.35, + "pocketCarveMin": 1, + "pocketCarveMax": 2, + "pocketMaxRadius": 2, + "maskPadMin": -1, + "maskPadMax": -1, + "maskSets": [ + "medium" + ], + "maskTake": 0 + }, + { + "startId": 110, + "endId": 110, + "boxCountLow": 4, + "boxCountHigh": 5, + "minAllowedPushes": 18, + "minAllowedTurns": 7, + "minAllowedBranching": 2, + "minGoalDistance": 3, + "minBoxDistance": 3, + "minWallDistance": 2, + "reverseDepthScale": 1.45, + "reverseBreadthScale": 1.45, + "pocketCarveMin": 2, + "pocketCarveMax": 3, + "pocketMaxRadius": 3, + "maskPadMin": -1, + "maskPadMax": -1, + "maskSets": [ + "medium" + ], + "maskTake": 0 + }, + { + "startId": 111, + "endId": 119, + "boxCountLow": 3, + "boxCountHigh": 4, + "minAllowedPushes": 16, + "minAllowedTurns": 5, + "minAllowedBranching": 1, + "minGoalDistance": 3, + "minBoxDistance": 3, + "minWallDistance": 2, + "reverseDepthScale": 1.33, + "reverseBreadthScale": 1.39, + "pocketCarveMin": 1, + "pocketCarveMax": 2, + "pocketMaxRadius": 2, + "maskPadMin": -1, + "maskPadMax": -1, + "maskSets": [ + "medium" + ], + "maskTake": 0 + }, + { + "startId": 120, + "endId": 120, + "boxCountLow": 4, + "boxCountHigh": 5, + "minAllowedPushes": 19, + "minAllowedTurns": 7, + "minAllowedBranching": 2, + "minGoalDistance": 3, + "minBoxDistance": 3, + "minWallDistance": 2, + "reverseDepthScale": 1.48, + "reverseBreadthScale": 1.49, + "pocketCarveMin": 2, + "pocketCarveMax": 3, + "pocketMaxRadius": 3, + "maskPadMin": -1, + "maskPadMax": -1, + "maskSets": [ + "medium" + ], + "maskTake": 0 + }, + { + "startId": 121, + "endId": 129, + "boxCountLow": 4, + "boxCountHigh": 5, + "minAllowedPushes": 17, + "minAllowedTurns": 6, + "minAllowedBranching": 2, + "minGoalDistance": 3, + "minBoxDistance": 3, + "minWallDistance": 2, + "reverseDepthScale": 1.36, + "reverseBreadthScale": 1.42, + "pocketCarveMin": 1, + "pocketCarveMax": 2, + "pocketMaxRadius": 3, + "maskPadMin": -1, + "maskPadMax": -1, + "maskSets": [ + "medium" + ], + "maskTake": 0 + }, + { + "startId": 130, + "endId": 130, + "boxCountLow": 5, + "boxCountHigh": 5, + "minAllowedPushes": 20, + "minAllowedTurns": 8, + "minAllowedBranching": 3, + "minGoalDistance": 3, + "minBoxDistance": 3, + "minWallDistance": 2, + "reverseDepthScale": 1.51, + "reverseBreadthScale": 1.52, + "pocketCarveMin": 2, + "pocketCarveMax": 3, + "pocketMaxRadius": 3, + "maskPadMin": -1, + "maskPadMax": -1, + "maskSets": [ + "medium" + ], + "maskTake": 0 + }, + { + "startId": 131, + "endId": 139, + "boxCountLow": 4, + "boxCountHigh": 5, + "minAllowedPushes": 18, + "minAllowedTurns": 6, + "minAllowedBranching": 2, + "minGoalDistance": 3, + "minBoxDistance": 3, + "minWallDistance": 2, + "reverseDepthScale": 1.39, + "reverseBreadthScale": 1.46, + "pocketCarveMin": 1, + "pocketCarveMax": 2, + "pocketMaxRadius": 3, + "maskPadMin": -1, + "maskPadMax": -1, + "maskSets": [ + "medium" + ], + "maskTake": 0 + }, + { + "startId": 140, + "endId": 140, + "boxCountLow": 5, + "boxCountHigh": 5, + "minAllowedPushes": 21, + "minAllowedTurns": 8, + "minAllowedBranching": 3, + "minGoalDistance": 3, + "minBoxDistance": 3, + "minWallDistance": 2, + "reverseDepthScale": 1.54, + "reverseBreadthScale": 1.56, + "pocketCarveMin": 2, + "pocketCarveMax": 3, + "pocketMaxRadius": 3, + "maskPadMin": -1, + "maskPadMax": -1, + "maskSets": [ + "medium" + ], + "maskTake": 0 + }, + { + "startId": 141, + "endId": 149, + "boxCountLow": 4, + "boxCountHigh": 5, + "minAllowedPushes": 20, + "minAllowedTurns": 6, + "minAllowedBranching": 2, + "minGoalDistance": 3, + "minBoxDistance": 3, + "minWallDistance": 2, + "reverseDepthScale": 1.42, + "reverseBreadthScale": 1.49, + "pocketCarveMin": 1, + "pocketCarveMax": 2, + "pocketMaxRadius": 3, + "maskPadMin": -1, + "maskPadMax": -1, + "maskSets": [ + "medium" + ], + "maskTake": 0 + }, + { + "startId": 150, + "endId": 150, + "boxCountLow": 5, + "boxCountHigh": 5, + "minAllowedPushes": 23, + "minAllowedTurns": 8, + "minAllowedBranching": 3, + "minGoalDistance": 3, + "minBoxDistance": 3, + "minWallDistance": 2, + "reverseDepthScale": 1.57, + "reverseBreadthScale": 1.59, + "pocketCarveMin": 2, + "pocketCarveMax": 3, + "pocketMaxRadius": 3, + "maskPadMin": -1, + "maskPadMax": -1, + "maskSets": [ + "medium" + ], + "maskTake": 0 + }, + { + "startId": 151, + "endId": 159, + "boxCountLow": 4, + "boxCountHigh": 5, + "minAllowedPushes": 21, + "minAllowedTurns": 7, + "minAllowedBranching": 2, + "minGoalDistance": 3, + "minBoxDistance": 3, + "minWallDistance": 2, + "reverseDepthScale": 1.45, + "reverseBreadthScale": 1.52, + "pocketCarveMin": 1, + "pocketCarveMax": 2, + "pocketMaxRadius": 3, + "maskPadMin": -1, + "maskPadMax": -1, + "maskSets": [ + "medium", + "micro" + ], + "maskTake": 0 + }, + { + "startId": 160, + "endId": 160, + "boxCountLow": 5, + "boxCountHigh": 5, + "minAllowedPushes": 24, + "minAllowedTurns": 9, + "minAllowedBranching": 3, + "minGoalDistance": 3, + "minBoxDistance": 3, + "minWallDistance": 2, + "reverseDepthScale": 1.6, + "reverseBreadthScale": 1.62, + "pocketCarveMin": 2, + "pocketCarveMax": 3, + "pocketMaxRadius": 3, + "maskPadMin": -1, + "maskPadMax": -1, + "maskSets": [ + "medium", + "micro" + ], + "maskTake": 0 + }, + { + "startId": 161, + "endId": 169, + "boxCountLow": 4, + "boxCountHigh": 5, + "minAllowedPushes": 22, + "minAllowedTurns": 7, + "minAllowedBranching": 2, + "minGoalDistance": 3, + "minBoxDistance": 3, + "minWallDistance": 2, + "reverseDepthScale": 1.48, + "reverseBreadthScale": 1.56, + "pocketCarveMin": 1, + "pocketCarveMax": 2, + "pocketMaxRadius": 3, + "maskPadMin": -1, + "maskPadMax": -1, + "maskSets": [ + "medium", + "micro" + ], + "maskTake": 0 + }, + { + "startId": 170, + "endId": 170, + "boxCountLow": 5, + "boxCountHigh": 5, + "minAllowedPushes": 25, + "minAllowedTurns": 9, + "minAllowedBranching": 3, + "minGoalDistance": 3, + "minBoxDistance": 3, + "minWallDistance": 2, + "reverseDepthScale": 1.63, + "reverseBreadthScale": 1.66, + "pocketCarveMin": 2, + "pocketCarveMax": 3, + "pocketMaxRadius": 3, + "maskPadMin": -1, + "maskPadMax": -1, + "maskSets": [ + "medium", + "micro" + ], + "maskTake": 0 + }, + { + "startId": 171, + "endId": 179, + "boxCountLow": 4, + "boxCountHigh": 5, + "minAllowedPushes": 23, + "minAllowedTurns": 7, + "minAllowedBranching": 2, + "minGoalDistance": 3, + "minBoxDistance": 3, + "minWallDistance": 2, + "reverseDepthScale": 1.51, + "reverseBreadthScale": 1.6, + "pocketCarveMin": 1, + "pocketCarveMax": 2, + "pocketMaxRadius": 3, + "maskPadMin": -1, + "maskPadMax": -1, + "maskSets": [ + "medium", + "micro" + ], + "maskTake": 0 + }, + { + "startId": 180, + "endId": 180, + "boxCountLow": 5, + "boxCountHigh": 5, + "minAllowedPushes": 26, + "minAllowedTurns": 9, + "minAllowedBranching": 3, + "minGoalDistance": 3, + "minBoxDistance": 3, + "minWallDistance": 2, + "reverseDepthScale": 1.66, + "reverseBreadthScale": 1.7, + "pocketCarveMin": 2, + "pocketCarveMax": 3, + "pocketMaxRadius": 3, + "maskPadMin": -1, + "maskPadMax": -1, + "maskSets": [ + "medium", + "micro" + ], + "maskTake": 0 + }, + { + "startId": 181, + "endId": 189, + "boxCountLow": 4, + "boxCountHigh": 5, + "minAllowedPushes": 24, + "minAllowedTurns": 8, + "minAllowedBranching": 3, + "minGoalDistance": 3, + "minBoxDistance": 3, + "minWallDistance": 2, + "reverseDepthScale": 1.54, + "reverseBreadthScale": 1.63, + "pocketCarveMin": 1, + "pocketCarveMax": 2, + "pocketMaxRadius": 3, + "maskPadMin": -1, + "maskPadMax": -1, + "maskSets": [ + "medium", + "micro" + ], + "maskTake": 0 + }, + { + "startId": 190, + "endId": 190, + "boxCountLow": 5, + "boxCountHigh": 5, + "minAllowedPushes": 27, + "minAllowedTurns": 10, + "minAllowedBranching": 4, + "minGoalDistance": 3, + "minBoxDistance": 3, + "minWallDistance": 2, + "reverseDepthScale": 1.69, + "reverseBreadthScale": 1.73, + "pocketCarveMin": 2, + "pocketCarveMax": 3, + "pocketMaxRadius": 3, + "maskPadMin": -1, + "maskPadMax": -1, + "maskSets": [ + "medium", + "micro" + ], + "maskTake": 0 + }, + { + "startId": 191, + "endId": 199, + "boxCountLow": 4, + "boxCountHigh": 5, + "minAllowedPushes": 25, + "minAllowedTurns": 8, + "minAllowedBranching": 3, + "minGoalDistance": 3, + "minBoxDistance": 3, + "minWallDistance": 2, + "reverseDepthScale": 1.57, + "reverseBreadthScale": 1.67, + "pocketCarveMin": 1, + "pocketCarveMax": 2, + "pocketMaxRadius": 3, + "maskPadMin": -1, + "maskPadMax": -1, + "maskSets": [ + "medium", + "micro" + ], + "maskTake": 0 + }, + { + "startId": 200, + "endId": 200, + "boxCountLow": 5, + "boxCountHigh": 5, + "minAllowedPushes": 28, + "minAllowedTurns": 10, + "minAllowedBranching": 4, + "minGoalDistance": 3, + "minBoxDistance": 3, + "minWallDistance": 2, + "reverseDepthScale": 1.72, + "reverseBreadthScale": 1.77, + "pocketCarveMin": 2, + "pocketCarveMax": 3, + "pocketMaxRadius": 3, + "maskPadMin": -1, + "maskPadMax": -1, + "maskSets": [ + "medium", + "micro" + ], + "maskTake": 0 + }, + { + "startId": 201, + "endId": 209, + "boxCountLow": 4, + "boxCountHigh": 5, + "minAllowedPushes": 27, + "minAllowedTurns": 8, + "minAllowedBranching": 3, + "minGoalDistance": 3, + "minBoxDistance": 3, + "minWallDistance": 2, + "reverseDepthScale": 1.6, + "reverseBreadthScale": 1.7, + "pocketCarveMin": 2, + "pocketCarveMax": 3, + "pocketMaxRadius": 3, + "maskPadMin": -2, + "maskPadMax": -2, + "maskSets": [ + "medium", + "large" + ], + "maskTake": 0 + }, + { + "startId": 210, + "endId": 210, + "boxCountLow": 5, + "boxCountHigh": 5, + "minAllowedPushes": 31, + "minAllowedTurns": 10, + "minAllowedBranching": 4, + "minGoalDistance": 3, + "minBoxDistance": 3, + "minWallDistance": 2, + "reverseDepthScale": 1.75, + "reverseBreadthScale": 1.8, + "pocketCarveMin": 3, + "pocketCarveMax": 4, + "pocketMaxRadius": 3, + "maskPadMin": -2, + "maskPadMax": -2, + "maskSets": [ + "medium", + "large" + ], + "maskTake": 0 + }, + { + "startId": 211, + "endId": 219, + "boxCountLow": 4, + "boxCountHigh": 5, + "minAllowedPushes": 28, + "minAllowedTurns": 9, + "minAllowedBranching": 3, + "minGoalDistance": 3, + "minBoxDistance": 3, + "minWallDistance": 2, + "reverseDepthScale": 1.63, + "reverseBreadthScale": 1.74, + "pocketCarveMin": 2, + "pocketCarveMax": 3, + "pocketMaxRadius": 3, + "maskPadMin": -2, + "maskPadMax": -2, + "maskSets": [ + "medium", + "large" + ], + "maskTake": 0 + }, + { + "startId": 220, + "endId": 220, + "boxCountLow": 5, + "boxCountHigh": 5, + "minAllowedPushes": 32, + "minAllowedTurns": 11, + "minAllowedBranching": 4, + "minGoalDistance": 3, + "minBoxDistance": 3, + "minWallDistance": 2, + "reverseDepthScale": 1.78, + "reverseBreadthScale": 1.84, + "pocketCarveMin": 3, + "pocketCarveMax": 4, + "pocketMaxRadius": 3, + "maskPadMin": -2, + "maskPadMax": -2, + "maskSets": [ + "medium", + "large" + ], + "maskTake": 0 + }, + { + "startId": 221, + "endId": 229, + "boxCountLow": 4, + "boxCountHigh": 5, + "minAllowedPushes": 29, + "minAllowedTurns": 9, + "minAllowedBranching": 3, + "minGoalDistance": 3, + "minBoxDistance": 3, + "minWallDistance": 2, + "reverseDepthScale": 1.66, + "reverseBreadthScale": 1.77, + "pocketCarveMin": 2, + "pocketCarveMax": 3, + "pocketMaxRadius": 3, + "maskPadMin": -2, + "maskPadMax": -2, + "maskSets": [ + "medium", + "large" + ], + "maskTake": 0 + }, + { + "startId": 230, + "endId": 230, + "boxCountLow": 5, + "boxCountHigh": 5, + "minAllowedPushes": 33, + "minAllowedTurns": 11, + "minAllowedBranching": 4, + "minGoalDistance": 3, + "minBoxDistance": 3, + "minWallDistance": 2, + "reverseDepthScale": 1.81, + "reverseBreadthScale": 1.87, + "pocketCarveMin": 3, + "pocketCarveMax": 4, + "pocketMaxRadius": 3, + "maskPadMin": -2, + "maskPadMax": -2, + "maskSets": [ + "medium", + "large" + ], + "maskTake": 0 + }, + { + "startId": 231, + "endId": 239, + "boxCountLow": 4, + "boxCountHigh": 5, + "minAllowedPushes": 30, + "minAllowedTurns": 9, + "minAllowedBranching": 3, + "minGoalDistance": 3, + "minBoxDistance": 3, + "minWallDistance": 2, + "reverseDepthScale": 1.69, + "reverseBreadthScale": 1.81, + "pocketCarveMin": 2, + "pocketCarveMax": 3, + "pocketMaxRadius": 3, + "maskPadMin": -2, + "maskPadMax": -2, + "maskSets": [ + "medium", + "large" + ], + "maskTake": 0 + }, + { + "startId": 240, + "endId": 240, + "boxCountLow": 5, + "boxCountHigh": 5, + "minAllowedPushes": 34, + "minAllowedTurns": 11, + "minAllowedBranching": 4, + "minGoalDistance": 3, + "minBoxDistance": 3, + "minWallDistance": 2, + "reverseDepthScale": 1.84, + "reverseBreadthScale": 1.91, + "pocketCarveMin": 3, + "pocketCarveMax": 4, + "pocketMaxRadius": 3, + "maskPadMin": -2, + "maskPadMax": -2, + "maskSets": [ + "medium", + "large" + ], + "maskTake": 0 + }, + { + "startId": 241, + "endId": 249, + "boxCountLow": 4, + "boxCountHigh": 5, + "minAllowedPushes": 31, + "minAllowedTurns": 10, + "minAllowedBranching": 4, + "minGoalDistance": 3, + "minBoxDistance": 3, + "minWallDistance": 2, + "reverseDepthScale": 1.72, + "reverseBreadthScale": 1.84, + "pocketCarveMin": 2, + "pocketCarveMax": 3, + "pocketMaxRadius": 3, + "maskPadMin": -2, + "maskPadMax": -2, + "maskSets": [ + "medium", + "large" + ], + "maskTake": 0 + }, + { + "startId": 250, + "endId": 250, + "boxCountLow": 5, + "boxCountHigh": 5, + "minAllowedPushes": 35, + "minAllowedTurns": 12, + "minAllowedBranching": 5, + "minGoalDistance": 3, + "minBoxDistance": 3, + "minWallDistance": 2, + "reverseDepthScale": 1.87, + "reverseBreadthScale": 1.94, + "pocketCarveMin": 3, + "pocketCarveMax": 4, + "pocketMaxRadius": 3, + "maskPadMin": -2, + "maskPadMax": -2, + "maskSets": [ + "medium", + "large" + ], + "maskTake": 0 + }, + { + "startId": 251, + "endId": 259, + "boxCountLow": 4, + "boxCountHigh": 5, + "minAllowedPushes": 32, + "minAllowedTurns": 10, + "minAllowedBranching": 4, + "minGoalDistance": 3, + "minBoxDistance": 3, + "minWallDistance": 2, + "reverseDepthScale": 1.75, + "reverseBreadthScale": 1.88, + "pocketCarveMin": 2, + "pocketCarveMax": 3, + "pocketMaxRadius": 3, + "maskPadMin": -2, + "maskPadMax": -2, + "maskSets": [ + "large" + ], + "maskTake": 0 + }, + { + "startId": 260, + "endId": 260, + "boxCountLow": 5, + "boxCountHigh": 5, + "minAllowedPushes": 36, + "minAllowedTurns": 12, + "minAllowedBranching": 5, + "minGoalDistance": 3, + "minBoxDistance": 3, + "minWallDistance": 2, + "reverseDepthScale": 1.9, + "reverseBreadthScale": 1.98, + "pocketCarveMin": 3, + "pocketCarveMax": 4, + "pocketMaxRadius": 3, + "maskPadMin": -2, + "maskPadMax": -2, + "maskSets": [ + "large" + ], + "maskTake": 0 + }, + { + "startId": 261, + "endId": 269, + "boxCountLow": 4, + "boxCountHigh": 5, + "minAllowedPushes": 33, + "minAllowedTurns": 10, + "minAllowedBranching": 4, + "minGoalDistance": 3, + "minBoxDistance": 3, + "minWallDistance": 2, + "reverseDepthScale": 1.78, + "reverseBreadthScale": 1.91, + "pocketCarveMin": 2, + "pocketCarveMax": 3, + "pocketMaxRadius": 3, + "maskPadMin": -2, + "maskPadMax": -2, + "maskSets": [ + "large" + ], + "maskTake": 0 + }, + { + "startId": 270, + "endId": 270, + "boxCountLow": 5, + "boxCountHigh": 5, + "minAllowedPushes": 37, + "minAllowedTurns": 12, + "minAllowedBranching": 5, + "minGoalDistance": 3, + "minBoxDistance": 3, + "minWallDistance": 2, + "reverseDepthScale": 1.93, + "reverseBreadthScale": 2.01, + "pocketCarveMin": 3, + "pocketCarveMax": 4, + "pocketMaxRadius": 3, + "maskPadMin": -2, + "maskPadMax": -2, + "maskSets": [ + "large" + ], + "maskTake": 0 + }, + { + "startId": 271, + "endId": 279, + "boxCountLow": 4, + "boxCountHigh": 5, + "minAllowedPushes": 35, + "minAllowedTurns": 11, + "minAllowedBranching": 4, + "minGoalDistance": 3, + "minBoxDistance": 3, + "minWallDistance": 2, + "reverseDepthScale": 1.81, + "reverseBreadthScale": 1.95, + "pocketCarveMin": 2, + "pocketCarveMax": 3, + "pocketMaxRadius": 3, + "maskPadMin": -2, + "maskPadMax": -2, + "maskSets": [ + "large" + ], + "maskTake": 0 + }, + { + "startId": 280, + "endId": 280, + "boxCountLow": 5, + "boxCountHigh": 5, + "minAllowedPushes": 39, + "minAllowedTurns": 13, + "minAllowedBranching": 5, + "minGoalDistance": 3, + "minBoxDistance": 3, + "minWallDistance": 2, + "reverseDepthScale": 1.96, + "reverseBreadthScale": 2.04, + "pocketCarveMin": 3, + "pocketCarveMax": 4, + "pocketMaxRadius": 3, + "maskPadMin": -2, + "maskPadMax": -2, + "maskSets": [ + "large" + ], + "maskTake": 0 + }, + { + "startId": 281, + "endId": 289, + "boxCountLow": 4, + "boxCountHigh": 5, + "minAllowedPushes": 36, + "minAllowedTurns": 11, + "minAllowedBranching": 4, + "minGoalDistance": 3, + "minBoxDistance": 3, + "minWallDistance": 2, + "reverseDepthScale": 1.84, + "reverseBreadthScale": 1.98, + "pocketCarveMin": 2, + "pocketCarveMax": 3, + "pocketMaxRadius": 3, + "maskPadMin": -2, + "maskPadMax": -2, + "maskSets": [ + "large" + ], + "maskTake": 0 + }, + { + "startId": 290, + "endId": 290, + "boxCountLow": 5, + "boxCountHigh": 5, + "minAllowedPushes": 40, + "minAllowedTurns": 13, + "minAllowedBranching": 5, + "minGoalDistance": 3, + "minBoxDistance": 3, + "minWallDistance": 2, + "reverseDepthScale": 1.99, + "reverseBreadthScale": 2.08, + "pocketCarveMin": 3, + "pocketCarveMax": 4, + "pocketMaxRadius": 3, + "maskPadMin": -2, + "maskPadMax": -2, + "maskSets": [ + "large" + ], + "maskTake": 0 + }, + { + "startId": 291, + "endId": 299, + "boxCountLow": 4, + "boxCountHigh": 5, + "minAllowedPushes": 37, + "minAllowedTurns": 11, + "minAllowedBranching": 4, + "minGoalDistance": 3, + "minBoxDistance": 3, + "minWallDistance": 2, + "reverseDepthScale": 1.87, + "reverseBreadthScale": 2.02, + "pocketCarveMin": 2, + "pocketCarveMax": 3, + "pocketMaxRadius": 3, + "maskPadMin": -2, + "maskPadMax": -2, + "maskSets": [ + "large" + ], + "maskTake": 0 + }, + { + "startId": 300, + "endId": 300, + "boxCountLow": 5, + "boxCountHigh": 5, + "minAllowedPushes": 41, + "minAllowedTurns": 13, + "minAllowedBranching": 5, + "minGoalDistance": 3, + "minBoxDistance": 3, + "minWallDistance": 2, + "reverseDepthScale": 2.02, + "reverseBreadthScale": 2.12, + "pocketCarveMin": 3, + "pocketCarveMax": 4, + "pocketMaxRadius": 3, + "maskPadMin": -2, + "maskPadMax": -2, + "maskSets": [ + "large" + ], + "maskTake": 0 + }, + { + "startId": 301, + "endId": 309, + "boxCountLow": 4, + "boxCountHigh": 5, + "minAllowedPushes": 38, + "minAllowedTurns": 12, + "minAllowedBranching": 5, + "minGoalDistance": 3, + "minBoxDistance": 3, + "minWallDistance": 2, + "reverseDepthScale": 1.9, + "reverseBreadthScale": 2.05, + "pocketCarveMin": 3, + "pocketCarveMax": 4, + "pocketMaxRadius": 3, + "maskPadMin": -2, + "maskPadMax": -2, + "maskSets": [ + "large" + ], + "maskTake": 0 + }, + { + "startId": 310, + "endId": 310, + "boxCountLow": 5, + "boxCountHigh": 5, + "minAllowedPushes": 42, + "minAllowedTurns": 14, + "minAllowedBranching": 6, + "minGoalDistance": 3, + "minBoxDistance": 3, + "minWallDistance": 2, + "reverseDepthScale": 2.05, + "reverseBreadthScale": 2.15, + "pocketCarveMin": 4, + "pocketCarveMax": 4, + "pocketMaxRadius": 3, + "maskPadMin": -2, + "maskPadMax": -2, + "maskSets": [ + "large" + ], + "maskTake": 0 + }, + { + "startId": 311, + "endId": 319, + "boxCountLow": 4, + "boxCountHigh": 5, + "minAllowedPushes": 39, + "minAllowedTurns": 12, + "minAllowedBranching": 5, + "minGoalDistance": 3, + "minBoxDistance": 3, + "minWallDistance": 2, + "reverseDepthScale": 1.93, + "reverseBreadthScale": 2.08, + "pocketCarveMin": 3, + "pocketCarveMax": 4, + "pocketMaxRadius": 3, + "maskPadMin": -2, + "maskPadMax": -2, + "maskSets": [ + "large" + ], + "maskTake": 0 + }, + { + "startId": 320, + "endId": 320, + "boxCountLow": 5, + "boxCountHigh": 5, + "minAllowedPushes": 43, + "minAllowedTurns": 14, + "minAllowedBranching": 6, + "minGoalDistance": 3, + "minBoxDistance": 3, + "minWallDistance": 2, + "reverseDepthScale": 2.08, + "reverseBreadthScale": 2.19, + "pocketCarveMin": 4, + "pocketCarveMax": 4, + "pocketMaxRadius": 3, + "maskPadMin": -2, + "maskPadMax": -2, + "maskSets": [ + "large" + ], + "maskTake": 0 + }, + { + "startId": 321, + "endId": 329, + "boxCountLow": 4, + "boxCountHigh": 5, + "minAllowedPushes": 40, + "minAllowedTurns": 12, + "minAllowedBranching": 5, + "minGoalDistance": 3, + "minBoxDistance": 3, + "minWallDistance": 2, + "reverseDepthScale": 1.96, + "reverseBreadthScale": 2.12, + "pocketCarveMin": 3, + "pocketCarveMax": 4, + "pocketMaxRadius": 3, + "maskPadMin": -2, + "maskPadMax": -2, + "maskSets": [ + "large" + ], + "maskTake": 0 + }, + { + "startId": 330, + "endId": 330, + "boxCountLow": 5, + "boxCountHigh": 5, + "minAllowedPushes": 44, + "minAllowedTurns": 14, + "minAllowedBranching": 6, + "minGoalDistance": 3, + "minBoxDistance": 3, + "minWallDistance": 2, + "reverseDepthScale": 2.11, + "reverseBreadthScale": 2.22, + "pocketCarveMin": 4, + "pocketCarveMax": 4, + "pocketMaxRadius": 3, + "maskPadMin": -2, + "maskPadMax": -2, + "maskSets": [ + "large" + ], + "maskTake": 0 + }, + { + "startId": 331, + "endId": 339, + "boxCountLow": 4, + "boxCountHigh": 5, + "minAllowedPushes": 41, + "minAllowedTurns": 12, + "minAllowedBranching": 5, + "minGoalDistance": 3, + "minBoxDistance": 3, + "minWallDistance": 2, + "reverseDepthScale": 1.99, + "reverseBreadthScale": 2.16, + "pocketCarveMin": 3, + "pocketCarveMax": 4, + "pocketMaxRadius": 3, + "maskPadMin": -2, + "maskPadMax": -2, + "maskSets": [ + "large" + ], + "maskTake": 0 + }, + { + "startId": 340, + "endId": 340, + "boxCountLow": 5, + "boxCountHigh": 5, + "minAllowedPushes": 45, + "minAllowedTurns": 14, + "minAllowedBranching": 6, + "minGoalDistance": 3, + "minBoxDistance": 3, + "minWallDistance": 2, + "reverseDepthScale": 2.14, + "reverseBreadthScale": 2.26, + "pocketCarveMin": 4, + "pocketCarveMax": 4, + "pocketMaxRadius": 3, + "maskPadMin": -2, + "maskPadMax": -2, + "maskSets": [ + "large" + ], + "maskTake": 0 + }, + { + "startId": 341, + "endId": 349, + "boxCountLow": 4, + "boxCountHigh": 5, + "minAllowedPushes": 43, + "minAllowedTurns": 12, + "minAllowedBranching": 5, + "minGoalDistance": 3, + "minBoxDistance": 3, + "minWallDistance": 2, + "reverseDepthScale": 2.02, + "reverseBreadthScale": 2.19, + "pocketCarveMin": 3, + "pocketCarveMax": 4, + "pocketMaxRadius": 3, + "maskPadMin": -2, + "maskPadMax": -2, + "maskSets": [ + "large" + ], + "maskTake": 0 + }, + { + "startId": 350, + "endId": 350, + "boxCountLow": 5, + "boxCountHigh": 5, + "minAllowedPushes": 47, + "minAllowedTurns": 14, + "minAllowedBranching": 6, + "minGoalDistance": 3, + "minBoxDistance": 3, + "minWallDistance": 2, + "reverseDepthScale": 2.17, + "reverseBreadthScale": 2.29, + "pocketCarveMin": 4, + "pocketCarveMax": 4, + "pocketMaxRadius": 3, + "maskPadMin": -2, + "maskPadMax": -2, + "maskSets": [ + "large" + ], + "maskTake": 0 + }, + { + "startId": 351, + "endId": 359, + "boxCountLow": 4, + "boxCountHigh": 5, + "minAllowedPushes": 44, + "minAllowedTurns": 12, + "minAllowedBranching": 5, + "minGoalDistance": 3, + "minBoxDistance": 3, + "minWallDistance": 2, + "reverseDepthScale": 2.05, + "reverseBreadthScale": 2.23, + "pocketCarveMin": 3, + "pocketCarveMax": 4, + "pocketMaxRadius": 3, + "maskPadMin": -2, + "maskPadMax": -2, + "maskSets": [ + "large" + ], + "maskTake": 0 + }, + { + "startId": 360, + "endId": 360, + "boxCountLow": 5, + "boxCountHigh": 5, + "minAllowedPushes": 48, + "minAllowedTurns": 14, + "minAllowedBranching": 6, + "minGoalDistance": 3, + "minBoxDistance": 3, + "minWallDistance": 2, + "reverseDepthScale": 2.2, + "reverseBreadthScale": 2.33, + "pocketCarveMin": 4, + "pocketCarveMax": 4, + "pocketMaxRadius": 3, + "maskPadMin": -2, + "maskPadMax": -2, + "maskSets": [ + "large" + ], + "maskTake": 0 + }, + { + "startId": 361, + "endId": 369, + "boxCountLow": 4, + "boxCountHigh": 5, + "minAllowedPushes": 45, + "minAllowedTurns": 12, + "minAllowedBranching": 6, + "minGoalDistance": 3, + "minBoxDistance": 3, + "minWallDistance": 2, + "reverseDepthScale": 2.08, + "reverseBreadthScale": 2.26, + "pocketCarveMin": 3, + "pocketCarveMax": 4, + "pocketMaxRadius": 3, + "maskPadMin": -2, + "maskPadMax": -2, + "maskSets": [ + "large" + ], + "maskTake": 0 + }, + { + "startId": 370, + "endId": 370, + "boxCountLow": 5, + "boxCountHigh": 5, + "minAllowedPushes": 49, + "minAllowedTurns": 14, + "minAllowedBranching": 7, + "minGoalDistance": 3, + "minBoxDistance": 3, + "minWallDistance": 2, + "reverseDepthScale": 2.23, + "reverseBreadthScale": 2.36, + "pocketCarveMin": 4, + "pocketCarveMax": 4, + "pocketMaxRadius": 3, + "maskPadMin": -2, + "maskPadMax": -2, + "maskSets": [ + "large" + ], + "maskTake": 0 + }, + { + "startId": 371, + "endId": 379, + "boxCountLow": 4, + "boxCountHigh": 5, + "minAllowedPushes": 46, + "minAllowedTurns": 12, + "minAllowedBranching": 6, + "minGoalDistance": 3, + "minBoxDistance": 3, + "minWallDistance": 2, + "reverseDepthScale": 2.11, + "reverseBreadthScale": 2.29, + "pocketCarveMin": 3, + "pocketCarveMax": 4, + "pocketMaxRadius": 3, + "maskPadMin": -2, + "maskPadMax": -2, + "maskSets": [ + "large" + ], + "maskTake": 0 + }, + { + "startId": 380, + "endId": 380, + "boxCountLow": 5, + "boxCountHigh": 5, + "minAllowedPushes": 50, + "minAllowedTurns": 14, + "minAllowedBranching": 7, + "minGoalDistance": 3, + "minBoxDistance": 3, + "minWallDistance": 2, + "reverseDepthScale": 2.26, + "reverseBreadthScale": 2.4, + "pocketCarveMin": 4, + "pocketCarveMax": 4, + "pocketMaxRadius": 3, + "maskPadMin": -2, + "maskPadMax": -2, + "maskSets": [ + "large" + ], + "maskTake": 0 + }, + { + "startId": 381, + "endId": 389, + "boxCountLow": 4, + "boxCountHigh": 5, + "minAllowedPushes": 47, + "minAllowedTurns": 12, + "minAllowedBranching": 6, + "minGoalDistance": 3, + "minBoxDistance": 3, + "minWallDistance": 2, + "reverseDepthScale": 2.14, + "reverseBreadthScale": 2.33, + "pocketCarveMin": 3, + "pocketCarveMax": 4, + "pocketMaxRadius": 3, + "maskPadMin": -2, + "maskPadMax": -2, + "maskSets": [ + "large" + ], + "maskTake": 0 + }, + { + "startId": 390, + "endId": 390, + "boxCountLow": 5, + "boxCountHigh": 5, + "minAllowedPushes": 51, + "minAllowedTurns": 14, + "minAllowedBranching": 7, + "minGoalDistance": 3, + "minBoxDistance": 3, + "minWallDistance": 2, + "reverseDepthScale": 2.29, + "reverseBreadthScale": 2.43, + "pocketCarveMin": 4, + "pocketCarveMax": 4, + "pocketMaxRadius": 3, + "maskPadMin": -2, + "maskPadMax": -2, + "maskSets": [ + "large" + ], + "maskTake": 0 + }, + { + "startId": 391, + "endId": 399, + "boxCountLow": 4, + "boxCountHigh": 5, + "minAllowedPushes": 48, + "minAllowedTurns": 12, + "minAllowedBranching": 6, + "minGoalDistance": 3, + "minBoxDistance": 3, + "minWallDistance": 2, + "reverseDepthScale": 2.17, + "reverseBreadthScale": 2.37, + "pocketCarveMin": 3, + "pocketCarveMax": 4, + "pocketMaxRadius": 3, + "maskPadMin": -2, + "maskPadMax": -2, + "maskSets": [ + "large" + ], + "maskTake": 0 + }, + { + "startId": 400, + "endId": 400, + "boxCountLow": 5, + "boxCountHigh": 5, + "minAllowedPushes": 52, + "minAllowedTurns": 14, + "minAllowedBranching": 7, + "minGoalDistance": 3, + "minBoxDistance": 3, + "minWallDistance": 2, + "reverseDepthScale": 2.32, + "reverseBreadthScale": 2.47, + "pocketCarveMin": 4, + "pocketCarveMax": 4, + "pocketMaxRadius": 3, + "maskPadMin": -2, + "maskPadMax": -2, + "maskSets": [ + "large" + ], + "maskTake": 0 + }, + { + "startId": 401, + "endId": 409, + "boxCountLow": 4, + "boxCountHigh": 5, + "minAllowedPushes": 50, + "minAllowedTurns": 12, + "minAllowedBranching": 6, + "minGoalDistance": 3, + "minBoxDistance": 3, + "minWallDistance": 2, + "reverseDepthScale": 2.2, + "reverseBreadthScale": 2.4, + "pocketCarveMin": 3, + "pocketCarveMax": 4, + "pocketMaxRadius": 3, + "maskPadMin": -2, + "maskPadMax": -2, + "maskSets": [ + "large" + ], + "maskTake": 0 + }, + { + "startId": 410, + "endId": 410, + "boxCountLow": 5, + "boxCountHigh": 5, + "minAllowedPushes": 54, + "minAllowedTurns": 14, + "minAllowedBranching": 7, + "minGoalDistance": 3, + "minBoxDistance": 3, + "minWallDistance": 2, + "reverseDepthScale": 2.35, + "reverseBreadthScale": 2.5, + "pocketCarveMin": 4, + "pocketCarveMax": 4, + "pocketMaxRadius": 3, + "maskPadMin": -2, + "maskPadMax": -2, + "maskSets": [ + "large" + ], + "maskTake": 0 + }, + { + "startId": 411, + "endId": 419, + "boxCountLow": 4, + "boxCountHigh": 5, + "minAllowedPushes": 51, + "minAllowedTurns": 12, + "minAllowedBranching": 6, + "minGoalDistance": 3, + "minBoxDistance": 3, + "minWallDistance": 2, + "reverseDepthScale": 2.23, + "reverseBreadthScale": 2.44, + "pocketCarveMin": 3, + "pocketCarveMax": 4, + "pocketMaxRadius": 3, + "maskPadMin": -2, + "maskPadMax": -2, + "maskSets": [ + "large" + ], + "maskTake": 0 + }, + { + "startId": 420, + "endId": 420, + "boxCountLow": 5, + "boxCountHigh": 5, + "minAllowedPushes": 55, + "minAllowedTurns": 14, + "minAllowedBranching": 7, + "minGoalDistance": 3, + "minBoxDistance": 3, + "minWallDistance": 2, + "reverseDepthScale": 2.38, + "reverseBreadthScale": 2.54, + "pocketCarveMin": 4, + "pocketCarveMax": 4, + "pocketMaxRadius": 3, + "maskPadMin": -2, + "maskPadMax": -2, + "maskSets": [ + "large" + ], + "maskTake": 0 + }, + { + "startId": 421, + "endId": 429, + "boxCountLow": 4, + "boxCountHigh": 5, + "minAllowedPushes": 52, + "minAllowedTurns": 12, + "minAllowedBranching": 6, + "minGoalDistance": 3, + "minBoxDistance": 3, + "minWallDistance": 2, + "reverseDepthScale": 2.26, + "reverseBreadthScale": 2.47, + "pocketCarveMin": 3, + "pocketCarveMax": 4, + "pocketMaxRadius": 3, + "maskPadMin": -2, + "maskPadMax": -2, + "maskSets": [ + "large" + ], + "maskTake": 0 + }, + { + "startId": 430, + "endId": 430, + "boxCountLow": 5, + "boxCountHigh": 5, + "minAllowedPushes": 56, + "minAllowedTurns": 14, + "minAllowedBranching": 7, + "minGoalDistance": 3, + "minBoxDistance": 3, + "minWallDistance": 2, + "reverseDepthScale": 2.41, + "reverseBreadthScale": 2.57, + "pocketCarveMin": 4, + "pocketCarveMax": 4, + "pocketMaxRadius": 3, + "maskPadMin": -2, + "maskPadMax": -2, + "maskSets": [ + "large" + ], + "maskTake": 0 + }, + { + "startId": 431, + "endId": 439, + "boxCountLow": 4, + "boxCountHigh": 5, + "minAllowedPushes": 53, + "minAllowedTurns": 12, + "minAllowedBranching": 6, + "minGoalDistance": 3, + "minBoxDistance": 3, + "minWallDistance": 2, + "reverseDepthScale": 2.29, + "reverseBreadthScale": 2.5, + "pocketCarveMin": 3, + "pocketCarveMax": 4, + "pocketMaxRadius": 3, + "maskPadMin": -2, + "maskPadMax": -2, + "maskSets": [ + "large" + ], + "maskTake": 0 + }, + { + "startId": 440, + "endId": 440, + "boxCountLow": 5, + "boxCountHigh": 5, + "minAllowedPushes": 57, + "minAllowedTurns": 14, + "minAllowedBranching": 7, + "minGoalDistance": 3, + "minBoxDistance": 3, + "minWallDistance": 2, + "reverseDepthScale": 2.44, + "reverseBreadthScale": 2.6, + "pocketCarveMin": 4, + "pocketCarveMax": 4, + "pocketMaxRadius": 3, + "maskPadMin": -2, + "maskPadMax": -2, + "maskSets": [ + "large" + ], + "maskTake": 0 + }, + { + "startId": 441, + "endId": 449, + "boxCountLow": 4, + "boxCountHigh": 5, + "minAllowedPushes": 54, + "minAllowedTurns": 12, + "minAllowedBranching": 6, + "minGoalDistance": 3, + "minBoxDistance": 3, + "minWallDistance": 2, + "reverseDepthScale": 2.32, + "reverseBreadthScale": 2.54, + "pocketCarveMin": 3, + "pocketCarveMax": 4, + "pocketMaxRadius": 3, + "maskPadMin": -2, + "maskPadMax": -2, + "maskSets": [ + "large" + ], + "maskTake": 0 + }, + { + "startId": 450, + "endId": 450, + "boxCountLow": 5, + "boxCountHigh": 5, + "minAllowedPushes": 58, + "minAllowedTurns": 14, + "minAllowedBranching": 7, + "minGoalDistance": 3, + "minBoxDistance": 3, + "minWallDistance": 2, + "reverseDepthScale": 2.47, + "reverseBreadthScale": 2.64, + "pocketCarveMin": 4, + "pocketCarveMax": 4, + "pocketMaxRadius": 3, + "maskPadMin": -2, + "maskPadMax": -2, + "maskSets": [ + "large" + ], + "maskTake": 0 + }, + { + "startId": 451, + "endId": 459, + "boxCountLow": 4, + "boxCountHigh": 5, + "minAllowedPushes": 55, + "minAllowedTurns": 12, + "minAllowedBranching": 6, + "minGoalDistance": 3, + "minBoxDistance": 3, + "minWallDistance": 2, + "reverseDepthScale": 2.35, + "reverseBreadthScale": 2.58, + "pocketCarveMin": 3, + "pocketCarveMax": 4, + "pocketMaxRadius": 3, + "maskPadMin": -2, + "maskPadMax": -2, + "maskSets": [ + "large" + ], + "maskTake": 0 + }, + { + "startId": 460, + "endId": 460, + "boxCountLow": 5, + "boxCountHigh": 5, + "minAllowedPushes": 59, + "minAllowedTurns": 14, + "minAllowedBranching": 7, + "minGoalDistance": 3, + "minBoxDistance": 3, + "minWallDistance": 2, + "reverseDepthScale": 2.5, + "reverseBreadthScale": 2.68, + "pocketCarveMin": 4, + "pocketCarveMax": 4, + "pocketMaxRadius": 3, + "maskPadMin": -2, + "maskPadMax": -2, + "maskSets": [ + "large" + ], + "maskTake": 0 + }, + { + "startId": 461, + "endId": 469, + "boxCountLow": 4, + "boxCountHigh": 5, + "minAllowedPushes": 55, + "minAllowedTurns": 12, + "minAllowedBranching": 6, + "minGoalDistance": 3, + "minBoxDistance": 3, + "minWallDistance": 2, + "reverseDepthScale": 2.38, + "reverseBreadthScale": 2.61, + "pocketCarveMin": 3, + "pocketCarveMax": 4, + "pocketMaxRadius": 3, + "maskPadMin": -2, + "maskPadMax": -2, + "maskSets": [ + "large" + ], + "maskTake": 0 + }, + { + "startId": 470, + "endId": 470, + "boxCountLow": 5, + "boxCountHigh": 5, + "minAllowedPushes": 59, + "minAllowedTurns": 14, + "minAllowedBranching": 7, + "minGoalDistance": 3, + "minBoxDistance": 3, + "minWallDistance": 2, + "reverseDepthScale": 2.53, + "reverseBreadthScale": 2.71, + "pocketCarveMin": 4, + "pocketCarveMax": 4, + "pocketMaxRadius": 3, + "maskPadMin": -2, + "maskPadMax": -2, + "maskSets": [ + "large" + ], + "maskTake": 0 + }, + { + "startId": 471, + "endId": 479, + "boxCountLow": 4, + "boxCountHigh": 5, + "minAllowedPushes": 55, + "minAllowedTurns": 12, + "minAllowedBranching": 6, + "minGoalDistance": 3, + "minBoxDistance": 3, + "minWallDistance": 2, + "reverseDepthScale": 2.41, + "reverseBreadthScale": 2.65, + "pocketCarveMin": 3, + "pocketCarveMax": 4, + "pocketMaxRadius": 3, + "maskPadMin": -2, + "maskPadMax": -2, + "maskSets": [ + "large" + ], + "maskTake": 0 + }, + { + "startId": 480, + "endId": 480, + "boxCountLow": 5, + "boxCountHigh": 5, + "minAllowedPushes": 59, + "minAllowedTurns": 14, + "minAllowedBranching": 7, + "minGoalDistance": 3, + "minBoxDistance": 3, + "minWallDistance": 2, + "reverseDepthScale": 2.56, + "reverseBreadthScale": 2.75, + "pocketCarveMin": 4, + "pocketCarveMax": 4, + "pocketMaxRadius": 3, + "maskPadMin": -2, + "maskPadMax": -2, + "maskSets": [ + "large" + ], + "maskTake": 0 + }, + { + "startId": 481, + "endId": 489, + "boxCountLow": 4, + "boxCountHigh": 5, + "minAllowedPushes": 55, + "minAllowedTurns": 12, + "minAllowedBranching": 6, + "minGoalDistance": 3, + "minBoxDistance": 3, + "minWallDistance": 2, + "reverseDepthScale": 2.44, + "reverseBreadthScale": 2.68, + "pocketCarveMin": 3, + "pocketCarveMax": 4, + "pocketMaxRadius": 3, + "maskPadMin": -2, + "maskPadMax": -2, + "maskSets": [ + "large" + ], + "maskTake": 0 + }, + { + "startId": 490, + "endId": 490, + "boxCountLow": 5, + "boxCountHigh": 5, + "minAllowedPushes": 59, + "minAllowedTurns": 14, + "minAllowedBranching": 7, + "minGoalDistance": 3, + "minBoxDistance": 3, + "minWallDistance": 2, + "reverseDepthScale": 2.59, + "reverseBreadthScale": 2.78, + "pocketCarveMin": 4, + "pocketCarveMax": 4, + "pocketMaxRadius": 3, + "maskPadMin": -2, + "maskPadMax": -2, + "maskSets": [ + "large" + ], + "maskTake": 0 + }, + { + "startId": 491, + "endId": 499, + "boxCountLow": 4, + "boxCountHigh": 5, + "minAllowedPushes": 55, + "minAllowedTurns": 12, + "minAllowedBranching": 6, + "minGoalDistance": 3, + "minBoxDistance": 3, + "minWallDistance": 2, + "reverseDepthScale": 2.47, + "reverseBreadthScale": 2.71, + "pocketCarveMin": 3, + "pocketCarveMax": 4, + "pocketMaxRadius": 3, + "maskPadMin": -2, + "maskPadMax": -2, + "maskSets": [ + "large" + ], + "maskTake": 0 + }, + { + "startId": 500, + "endId": 500, + "boxCountLow": 5, + "boxCountHigh": 5, + "minAllowedPushes": 59, + "minAllowedTurns": 14, + "minAllowedBranching": 7, + "minGoalDistance": 3, + "minBoxDistance": 3, + "minWallDistance": 2, + "reverseDepthScale": 2.62, + "reverseBreadthScale": 2.81, + "pocketCarveMin": 4, + "pocketCarveMax": 4, + "pocketMaxRadius": 3, + "maskPadMin": -2, + "maskPadMax": -2, + "maskSets": [ + "large" + ], "maskTake": 0 } ] -} +} \ No newline at end of file