summaryrefslogtreecommitdiff
path: root/src/LivingVillage.Desktop/MapGen.fs
Commit message (Collapse)AuthorAgeFilesLines
* feat(desktop): P30 512 民居增密 + 乡村空区填充 + 主路柔化Somhairle H. Marisol13 days1-46/+300
| | | | | | | | | | | | | | | | | | | - MapGen(仅大图尺寸自适应分支,默认 64x48/256x192 不进入、不消费额外 RNG): ① ExtraRiversideHouses 16 -> 30,组团 2-5 座;含基础岸屋的路段优先布组并为每座孤立 基础民居贴格配对,placeGroup 试排后按「与既有/同组民居足迹间隙 <=2」过滤,孤立单屋不落地。 512 seed4242:组团民居 24 -> 45,规模 [5;4x6;3x2;2x3],0 组 <2 座。 ② 新增 GroundTile.PaddyField=4/VegetablePlot=5(成熟 tile;非水可通行)+ Result.Groves (纯视觉)+ Result.Farmhouses(门贴院落路、计入 BFS);18x14 确定性网格铺田块/树丛/农舍, 离水 >=3 格、避开路网/核心/民居。草地瓦片 96.3% -> 83.9%,水田 11595 + 菜畦 12877 格。 ③ Result.MainRoadCenter 逐列中心线,value noise(scale 130、幅度 ±3)确定性缓弯, 相邻列步长 <=1、遇弯补格保证 4 连通;默认图主街仍笔直。 - VillageArt:水田/菜畦/树丛/农舍渲染(复用成熟 sprite 与同一立面纯函数)、农舍门窗计入夜光、 新增 drawMapRegion 局部真实离屏渲染。 - Game:P30 证据钩子 LV_MAPGEN_P30_SHOT=1(整图 3072x2304 day/night + 田块/主路 512x256@4px)。 - 回归 +5:组团规模/空区填充/田块合规/农舍可达确定性/主路确定性弯曲。 Kernel 92 / Desktop 156 全绿;Release 0 警告 0 错误; final_digest=953775FAEB2F… 3 次一致、performance_determinism=PASS; 64x48=6042052、256x192=1284656962 锁定不变。
* feat(desktop): P29 512 聚落组团 + 夜景灯光径向光晕Somhairle H. Marisol13 days1-51/+114
| | | | | | | | | | | | - MapGen:仅大图新增 ClusterSeed(group seeding)与组团布屋——512 沿横向石板路 (主街+河岸路)成排成组:组内 2-4 座/1 格间隙、组间 4-6 格空档,宽度 2/3/4 分层; 垂柳改为确定性成丛(2-3 株/丛、丛间 3-5 格空档)。独立 clusterRng 不触碰 structureRng,默认图仍不消费 RNG,64x48=6042052 / 256x192=1284656962 锁定不变。 - VillageArt:新增 lanternFalloff(二次 1-(d/r)^2,半径 0 处最大、边缘 0、严格单调无平台); lanternGlowLayers 按该衰减逐环累积 alpha;drawNightGlows 对桥头灯笼+民居门窗画半径 4 tile 的柔和径向光晕,整图取证与实机 DrawWorldView 共用同一套纯函数。 - 回归 +6:组团行/成丛/衰减/光源确定性;Desktop 151、Kernel 92 全绿,Release 0/0, final_digest=953775FAEB2F… 3 次一致。证据帧见 art/p29-*。
* feat(mapgen): P28 512 沿河民居加密至 16 并宽度 2/3/4 分层Somhairle H. Marisol13 days1-9/+14
| | | | | | - ExtraRiversideHouses 10 -> 16(沿河 +6 座),宽度加权 2/3/4 形成聚落层次 - 仅 large 分支执行、默认图不消耗 RNG:64x48=6042052、256x192=1284656962 锁定不变 - 新增 LargeMapHouseDensityHierarchyOnlyGrowsLargeMaps 回归
* feat(mapgen): P26 512 ↵Somhairle H. Marisol13 days1-3/+88
| | | | 大图河岸装饰(护岸石垒/芦苇/垂柳)仅视觉层,不挡通行
* fix(mapgen): 大图关闭孤立装饰石块,杜绝草地上游离石板 ↵Somhairle H. Marisol13 days1-17/+23
| | | | | | | | | tile(P25) - 新增 Params.DecorativeStones(默认 true);paramsForSize 对 >256x192 关闭, 512x384 不再产生 292 个孤立石板(stone 非路网计数归零,石块全部属于路网)。 - 64x48/256x192 保持开启,checksum 6042052/1284656962 不变。 - 新增 NoIsolatedStoneTiles / DecorativeStonesDisabledOnLargeMaps 回归;Desktop 134 -> 136。
* feat(mapgen): 512x384 沿河民居加密到 18 座且门全部可达(P24)Somhairle H. Marisol13 days1-3/+52
| | | | | | | - Params.ExtraRiversideHouses(默认 0);paramsForSize 仅对 >256x192 设为 10, 从既有路网泊松散布 3x2 民居并接门入网(structureRng 确定性),512x384 共 18 座。 - 64x48/256x192 仍 4 座、checksum 6042052/1284656962 不变(新增用例锁定)。 - 新增 512 民居数量/可达/确定性用例;Desktop 130 -> 134。
* feat(mapgen): 512x384 尺寸自适应参数与扩程回归(P23)Somhairle H. Marisol13 days1-5/+30
| | | | | | | | | - paramsForSize:河道数量随高度约每 96 行一条(64x48/256x192 仍 2 条,512x384 得 4 条), 第 3 条起在核心上/下方逐层外扩,互不重叠且不压核心。 - 噪声特征尺度封顶 4x,避免 512x384 退化成过度平滑的放大图。 - 64x48/256x192 生成结果逐字节不变(新增 checksum 锁定用例)。 - 新增 512x384 同 seed 逐字节一致/异 seed 分化/四河道连续/30 spawn 与桥两岸可达用例。 - Desktop 测试 124 -> 130。
* feat(mapgen): 生成器序列化 + 世界站位接入(P20 第三步 A)Somhairle H. Marisol13 days1-0/+24
| | | | | | | | | | | - MapGen.serialize:生成结果的确定性序列化(尺寸/seed/瓦片/Rivers/Bridges/ Paths/Buildings),同 seed 逐字节一致,供回归与跨机核对。 - WorldBootstrap.initialWorldWithPlacement:显式站位建世界;旧 64x48 路径 (initialWorld/initialWorldWithOccupation)字节口径不变。 - WorldBootstrap.initialWorldInMap:用生成器核心可达区做站位,30 spawn 全落 可达核心;新增 serialization/placement 两条测试。 - fsproj:MapGen 先于 WorldBootstrap 编译。 - Desktop 119->121,Kernel 90 不变。
* feat(mapgen): 河道连续性不变量 + 桥/石板路网/沿河民居(P20 ↵p20-map-gen-foundationSomhairle H. Marisol13 days1-39/+147
| | | | | | | | | | | | | 第二步) - 河道改为贯穿全图连续水带(每列一段、宽度 >= RiverWidth),置于核心区上下 两侧且不相交;新增不变量测试:逐列水段数恒定、每段宽度下限、任意水格 >=2 个水邻居(禁止断裂缺口与孤立水点)。 - Result 新增 Rivers/Bridges/Paths/Buildings/BridgeCrossingsOk;每河 2 座桥、 横贯主路 + 垂直连接路 + 远岸路 + 白墙黑瓦民居(门朝路)。 - 公开 isWalkable/floodFill;ReachabilityOk 现覆盖 30 spawn + 所有门 + 所有桥面, BridgeCrossingsOk 保证每桥两岸同连通域。 - 回归:Desktop 115->119、Kernel 90 不变;final_digest 与基线一致。
* feat(mapgen): 参数化确定性生成器与视口裁剪(P20 第一步)Somhairle H. Marisol13 days1-0/+249
- 新增纯函数 MapGen:尺寸参数化(默认 64x48,可 256x192),splitmix64 随机游走河道 + 2-3 octave value noise + 泊松式布点;核心区整平后以 BFS 校验 5x6=30 个 spawn 全部可达,不可达确定性修整并复验。 - visibleTileRange/visibleTileCount 纯函数,drawWorld 改为调用之(行为不变); drawMapFitted/drawMapViewport 仅证据用。 - 存档沿用 v2/v3 边界字段,补参数化边界 round-trip 测试,未改 Sim 语义。 - 回归:Desktop 109->115、Kernel 89->90;final_digest 与基线一致。