<feed xmlns='http://www.w3.org/2005/Atom'>
<title>living-village.git/src/LivingVillage.Desktop/MapGen.fs, branch main</title>
<subtitle>Unnamed repository; edit this file 'description' to name the repository.
</subtitle>
<id>http://git.somhairle.bid/living-village.git/atom?h=main</id>
<link rel='self' href='http://git.somhairle.bid/living-village.git/atom?h=main'/>
<link rel='alternate' type='text/html' href='http://git.somhairle.bid/living-village.git/'/>
<updated>2026-09-22T04:41:06+00:00</updated>
<entry>
<title>feat(desktop): P30 512 民居增密 + 乡村空区填充 + 主路柔化</title>
<updated>2026-09-22T04:41:06+00:00</updated>
<author>
<name>Somhairle H. Marisol</name>
<email>muqiu-han@outlook.com</email>
</author>
<published>2026-09-22T04:41:06+00:00</published>
<link rel='alternate' type='text/html' href='http://git.somhairle.bid/living-village.git/commit/?id=92bcc9b9fc4eeea4f11913a0de2a34811b262dfd'/>
<id>urn:sha1:92bcc9b9fc4eeea4f11913a0de2a34811b262dfd</id>
<content type='text'>
- MapGen（仅大图尺寸自适应分支，默认 64x48/256x192 不进入、不消费额外 RNG）：
  ① ExtraRiversideHouses 16 -&gt; 30，组团 2-5 座；含基础岸屋的路段优先布组并为每座孤立
     基础民居贴格配对，placeGroup 试排后按「与既有/同组民居足迹间隙 &lt;=2」过滤，孤立单屋不落地。
     512 seed4242：组团民居 24 -&gt; 45，规模 [5;4x6;3x2;2x3]，0 组 &lt;2 座。
  ② 新增 GroundTile.PaddyField=4/VegetablePlot=5（成熟 tile；非水可通行）+ Result.Groves
     （纯视觉）+ Result.Farmhouses（门贴院落路、计入 BFS）；18x14 确定性网格铺田块/树丛/农舍，
     离水 &gt;=3 格、避开路网/核心/民居。草地瓦片 96.3% -&gt; 83.9%，水田 11595 + 菜畦 12877 格。
  ③ Result.MainRoadCenter 逐列中心线，value noise（scale 130、幅度 ±3）确定性缓弯，
     相邻列步长 &lt;=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 锁定不变。
</content>
</entry>
<entry>
<title>feat(desktop): P29 512 聚落组团 + 夜景灯光径向光晕</title>
<updated>2026-09-22T04:10:42+00:00</updated>
<author>
<name>Somhairle H. Marisol</name>
<email>muqiu-han@outlook.com</email>
</author>
<published>2026-09-22T04:10:42+00:00</published>
<link rel='alternate' type='text/html' href='http://git.somhairle.bid/living-village.git/commit/?id=a70a057fce7afa5787b2d4a037d7016f1120ef6a'/>
<id>urn:sha1:a70a057fce7afa5787b2d4a037d7016f1120ef6a</id>
<content type='text'>
- 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-*。
</content>
</entry>
<entry>
<title>feat(mapgen): P28 512 沿河民居加密至 16 并宽度 2/3/4 分层</title>
<updated>2026-09-22T03:17:43+00:00</updated>
<author>
<name>Somhairle H. Marisol</name>
<email>muqiu-han@outlook.com</email>
</author>
<published>2026-09-22T03:17:43+00:00</published>
<link rel='alternate' type='text/html' href='http://git.somhairle.bid/living-village.git/commit/?id=26afb04feb9a7bec3162eccf64f1df04bfda4def'/>
<id>urn:sha1:26afb04feb9a7bec3162eccf64f1df04bfda4def</id>
<content type='text'>
- ExtraRiversideHouses 10 -&gt; 16（沿河 +6 座），宽度加权 2/3/4 形成聚落层次
- 仅 large 分支执行、默认图不消耗 RNG：64x48=6042052、256x192=1284656962 锁定不变
- 新增 LargeMapHouseDensityHierarchyOnlyGrowsLargeMaps 回归
</content>
</entry>
<entry>
<title>feat(mapgen): P26 512 大图河岸装饰（护岸石垒/芦苇/垂柳）仅视觉层，不挡通行</title>
<updated>2026-09-22T01:24:28+00:00</updated>
<author>
<name>Somhairle H. Marisol</name>
<email>muqiu-han@outlook.com</email>
</author>
<published>2026-09-22T01:24:28+00:00</published>
<link rel='alternate' type='text/html' href='http://git.somhairle.bid/living-village.git/commit/?id=dbce686019230c7a1105f5cc4b7b258698201128'/>
<id>urn:sha1:dbce686019230c7a1105f5cc4b7b258698201128</id>
<content type='text'>
</content>
</entry>
<entry>
<title>fix(mapgen): 大图关闭孤立装饰石块，杜绝草地上游离石板 tile（P25）</title>
<updated>2026-09-22T01:00:11+00:00</updated>
<author>
<name>Somhairle H. Marisol</name>
<email>muqiu-han@outlook.com</email>
</author>
<published>2026-09-22T01:00:11+00:00</published>
<link rel='alternate' type='text/html' href='http://git.somhairle.bid/living-village.git/commit/?id=91b7204d45f4f11d9cd75afcfbea9bd7034a3de4'/>
<id>urn:sha1:91b7204d45f4f11d9cd75afcfbea9bd7034a3de4</id>
<content type='text'>
- 新增 Params.DecorativeStones（默认 true）；paramsForSize 对 &gt;256x192 关闭，
  512x384 不再产生 292 个孤立石板（stone 非路网计数归零，石块全部属于路网）。
- 64x48/256x192 保持开启，checksum 6042052/1284656962 不变。
- 新增 NoIsolatedStoneTiles / DecorativeStonesDisabledOnLargeMaps 回归；Desktop 134 -&gt; 136。
</content>
</entry>
<entry>
<title>feat(mapgen): 512x384 沿河民居加密到 18 座且门全部可达（P24）</title>
<updated>2026-09-22T00:35:11+00:00</updated>
<author>
<name>Somhairle H. Marisol</name>
<email>muqiu-han@outlook.com</email>
</author>
<published>2026-09-22T00:35:11+00:00</published>
<link rel='alternate' type='text/html' href='http://git.somhairle.bid/living-village.git/commit/?id=09310370365220bc9b9c560d8947cd7abc36d14f'/>
<id>urn:sha1:09310370365220bc9b9c560d8947cd7abc36d14f</id>
<content type='text'>
- Params.ExtraRiversideHouses（默认 0）；paramsForSize 仅对 &gt;256x192 设为 10，
  从既有路网泊松散布 3x2 民居并接门入网（structureRng 确定性），512x384 共 18 座。
- 64x48/256x192 仍 4 座、checksum 6042052/1284656962 不变（新增用例锁定）。
- 新增 512 民居数量/可达/确定性用例；Desktop 130 -&gt; 134。
</content>
</entry>
<entry>
<title>feat(mapgen): 512x384 尺寸自适应参数与扩程回归（P23）</title>
<updated>2026-09-21T20:37:59+00:00</updated>
<author>
<name>Somhairle H. Marisol</name>
<email>muqiu-han@outlook.com</email>
</author>
<published>2026-09-21T20:37:59+00:00</published>
<link rel='alternate' type='text/html' href='http://git.somhairle.bid/living-village.git/commit/?id=1724ce6b659850907d3bf5dc4daff70137804cf2'/>
<id>urn:sha1:1724ce6b659850907d3bf5dc4daff70137804cf2</id>
<content type='text'>
- paramsForSize：河道数量随高度约每 96 行一条（64x48/256x192 仍 2 条，512x384 得 4 条），
  第 3 条起在核心上/下方逐层外扩，互不重叠且不压核心。
- 噪声特征尺度封顶 4x，避免 512x384 退化成过度平滑的放大图。
- 64x48/256x192 生成结果逐字节不变（新增 checksum 锁定用例）。
- 新增 512x384 同 seed 逐字节一致/异 seed 分化/四河道连续/30 spawn 与桥两岸可达用例。
- Desktop 测试 124 -&gt; 130。
</content>
</entry>
<entry>
<title>feat(mapgen): 生成器序列化 + 世界站位接入（P20 第三步 A）</title>
<updated>2026-09-21T18:57:12+00:00</updated>
<author>
<name>Somhairle H. Marisol</name>
<email>muqiu-han@outlook.com</email>
</author>
<published>2026-09-21T18:57:12+00:00</published>
<link rel='alternate' type='text/html' href='http://git.somhairle.bid/living-village.git/commit/?id=d06656aa968ccb2769ba7c90c97f57f2818bb828'/>
<id>urn:sha1:d06656aa968ccb2769ba7c90c97f57f2818bb828</id>
<content type='text'>
- MapGen.serialize：生成结果的确定性序列化（尺寸/seed/瓦片/Rivers/Bridges/
  Paths/Buildings），同 seed 逐字节一致，供回归与跨机核对。
- WorldBootstrap.initialWorldWithPlacement：显式站位建世界；旧 64x48 路径
  （initialWorld/initialWorldWithOccupation）字节口径不变。
- WorldBootstrap.initialWorldInMap：用生成器核心可达区做站位，30 spawn 全落
  可达核心；新增 serialization/placement 两条测试。
- fsproj：MapGen 先于 WorldBootstrap 编译。
- Desktop 119-&gt;121，Kernel 90 不变。
</content>
</entry>
<entry>
<title>feat(mapgen): 河道连续性不变量 + 桥/石板路网/沿河民居（P20 第二步）</title>
<updated>2026-09-21T18:43:39+00:00</updated>
<author>
<name>Somhairle H. Marisol</name>
<email>muqiu-han@outlook.com</email>
</author>
<published>2026-09-21T18:43:39+00:00</published>
<link rel='alternate' type='text/html' href='http://git.somhairle.bid/living-village.git/commit/?id=d3c0ef17cb1c4d30c1d586e2a5b616f58bd3d875'/>
<id>urn:sha1:d3c0ef17cb1c4d30c1d586e2a5b616f58bd3d875</id>
<content type='text'>
- 河道改为贯穿全图连续水带（每列一段、宽度 &gt;= RiverWidth），置于核心区上下
  两侧且不相交；新增不变量测试：逐列水段数恒定、每段宽度下限、任意水格
  &gt;=2 个水邻居（禁止断裂缺口与孤立水点）。
- Result 新增 Rivers/Bridges/Paths/Buildings/BridgeCrossingsOk；每河 2 座桥、
  横贯主路 + 垂直连接路 + 远岸路 + 白墙黑瓦民居（门朝路）。
- 公开 isWalkable/floodFill；ReachabilityOk 现覆盖 30 spawn + 所有门 + 所有桥面，
  BridgeCrossingsOk 保证每桥两岸同连通域。
- 回归：Desktop 115-&gt;119、Kernel 90 不变；final_digest 与基线一致。
</content>
</entry>
<entry>
<title>feat(mapgen): 参数化确定性生成器与视口裁剪（P20 第一步）</title>
<updated>2026-09-21T18:28:31+00:00</updated>
<author>
<name>Somhairle H. Marisol</name>
<email>muqiu-han@outlook.com</email>
</author>
<published>2026-09-21T18:28:31+00:00</published>
<link rel='alternate' type='text/html' href='http://git.somhairle.bid/living-village.git/commit/?id=ef78374c316587fb585b72e6d427cd6e61203655'/>
<id>urn:sha1:ef78374c316587fb585b72e6d427cd6e61203655</id>
<content type='text'>
- 新增纯函数 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-&gt;115、Kernel 89-&gt;90；final_digest 与基线一致。
</content>
</entry>
</feed>
