| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
|
| |
- VillageArt: 新增 splitmix/hash2/tileIsWater 与 cc0BridgeTiles/cc0BoatTile/
cc0LanternTiles/cc0StallTiles/cc0ReedTiles,drawWorld cc0 分支叠加五类元素
- 奇偶 spacing 边界:摆放守卫 spacing<2 返回空集,消除 spacing=1 同余重叠
- nightLightTilesWith(includeRoadLanterns) + drawNightGlows 新参数;
旧 nightLightTiles 语义不变,Game.fs riverscape 分支按 cc0 开启路灯光晕
- LV_P39_SHOT 证据 hook:Update 准备、Draw 落盘(PrepareP39Shot/CaptureP39Shot)
- 不写瓦片/不改可达性/不动 Sim.step
|
| |
|
|
|
|
|
|
|
|
|
| |
- cc0-tiles.png 由 4 格扩到 12 格:0-3 仍 Kenney 地面,4-11 为自绘构件
(4 水A/5 水B/6 屋脊/7 屋檐/8 木构墙/9 木格窗/10 栏杆/11 门)
- 自绘 2 相位水面 cc0WaterTileIndexAt=(tick/32+x+2y)%2,单帧覆盖双相位;
河道与水田/水网共用;江南 fallback 不变
- drawWorld 接入:cc0 模式下民居屋顶/墙/窗/门、桥栏杆、水面走真素材,其余道具仍江南
- AssetPackTests 更新图集尺寸(12 格)+整数缩放,新增构件索引与双水相位用例
- docs/素材来源.md 记录自绘清单;同步 assets-and-licenses 与维护说明 P34 小节
- docs/evidence/p34-*.png 昼/夜/2x 特写/水波/对照(check-no-white-blocks 0 命中)
|
| |
|
|
|
|
|
|
|
|
|
|
| |
真实像素素材样板(地面+角色竖直切片)
- 修复 make-cc0-art.py 地块取样间距:packed sheet 无间距(16px pitch),旧 17px 误采错格
- 重选草地/石板格 (9,8)/(10,8)/(4,8)/(4,9),整数 2x NEAREST 重建 cc0-tiles.png
- VillageArt 暴露 selectedGround/CharacterAtlasRelativePath 纯函数,保留 LV_ASSET_PACK=cc0
开关与程序绘制江南图集 fallback
- 新增 AssetPackTests:图集加载尺寸、整数倍缩放、开关/回退断言
- docs/素材来源.md 记录来源/许可/sha256/构建/开关;同步 assets-and-licenses 与维护说明 P33 小节
- docs/evidence/p33-atlas-*.png 昼/夜/2x 特写/程序绘制对照(check-no-white-blocks 0 命中)
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- 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 锁定不变。
|
| |
|
|
|
|
|
|
|
|
|
|
| |
- 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-*。
|
| |
|
|
|
|
|
|
| |
民居第二变体强化配色与轮廓(青灰挑檐色阶 + 竖长格栅窗 + 绿院门)
- make-jiangnan-art.py slot 28/29/30:B 变体改用亮青灰瓦色阶、竖长木格栅窗、绿双扇院门
- VillageArt 变体 B 渲染:挑檐多叠一层、向两侧各出一格(水面之上不叠),墙身统一格栅窗
- 仅绘制分支,瓦片/可达性零改动
|
| |
|
|
| |
大图河岸装饰(护岸石垒/芦苇/垂柳)仅视觉层,不挡通行
|
| |
|
|
| |
民居立面第二变体(挑檐/木格栅窗/院门)沿河沿路交替
|
| |
|
|
|
|
|
| |
村民可见性日志钩子(P24)
- drawMapStructures 用 RoofRidge/RoofEave + WallWood/WallWindow + Door 精灵替换原矩形色块。
- LV_NPC_VISIBLE_LOG=1 每秒打印 visible-npcs=K of 30,作为大世界村民渲染证据。
|
| |
|
|
|
|
|
|
|
|
|
|
| |
第三步 B)
- Game:默认 256x192 生成器世界(核心可达区站位),LV_LEGACY_MAP=1 /
LV_MAP_SCALE>1 / LV_MAP_TOUR=1 回退旧路径;StartNewGame 走同一站位。
- VillageArt.drawWorld 新增 pixel 与 mapGen option:Some 时按生成器瓦片绘地面
并叠加桥面/沿河民居/门,跳过 64x48 样例平面与道具;水波沿用 waterFrameTickAt。
- 新增 bridgeLanternTiles;夜间 LanternGlow 沿用既有预乘同心圆(无过曝白芯),
生成器世界用桥头灯笼。
- 新增 LV_RIVERSCAPE_TOUR 真走位巡游与 LV_RECORD_NAME 录屏前缀(证据用)。
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
第二步)
- 河道改为贯穿全图连续水带(每列一段、宽度 >= RiverWidth),置于核心区上下
两侧且不相交;新增不变量测试:逐列水段数恒定、每段宽度下限、任意水格
>=2 个水邻居(禁止断裂缺口与孤立水点)。
- Result 新增 Rivers/Bridges/Paths/Buildings/BridgeCrossingsOk;每河 2 座桥、
横贯主路 + 垂直连接路 + 远岸路 + 白墙黑瓦民居(门朝路)。
- 公开 isWalkable/floodFill;ReachabilityOk 现覆盖 30 spawn + 所有门 + 所有桥面,
BridgeCrossingsOk 保证每桥两岸同连通域。
- 回归:Desktop 115->119、Kernel 90 不变;final_digest 与基线一致。
|
| |
|
|
|
|
|
|
|
|
| |
- 新增纯函数 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 与基线一致。
|
| |
|
|
| |
tick 节奏)
|
| |
|
|
| |
街边中式细节物(石灯笼/水缸/摊贩摊位)图集扩展 28 格
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
预乘并改径向层叠,消除夜间纯白方块
- 新增 VillageArt.premultiply:MonoGame SpriteBatch 默认预乘混合,直传
Color(r,g,b,a) 会直接加 rgb 导致多层暖色饱和成 75x75 纯白块
- lanternGlowLayers 用同心圆 pixel run 做径向衰减,逐层预乘,只在
RiverLantern 实体处绘制
- 水面相位改 waterFrameTickAt=(tick/32+x+2y)%3,同一帧相邻砖相位不同
- 炊烟改为 drawWorld 末尾独立一遍,位置 offsetTile 0 -3,画在屋瓦/竹子之上
- 角色脚底对齐 characterFeetOffset=16 并加预乘椭圆接触阴影
- 补全 Interaction.itemName 的 ItemKind 匹配(否则非 Food 交易会崩溃且告警)
|
| |
|
|
|
|
|
|
|
|
| |
- 角色图集每个 (变体,方向) 由 2 帧扩到 6 帧(4 走路 + 2 待机呼吸),
cellIndex=(variant*4+direction)*6+frame,图集 3840x48
- 世界图集扩到 25 格 800x32:水面第 3 相 WaterSpriteC(slot 21)、
炊烟三帧 SmokeSpriteA/B/C(slot 22-24)
- 帧选择为纯函数:walk=(tick/4)%4、idle=(tick/24)%2、
water=(tick/32)%3、smoke=(tick/40)%3
- 重生成 jiangnan/cc0 图集(脚本可复现,逐字节一致)
|
| |
|
|
| |
ProceduralMap 纯函数生成器:splitmix64 随机游走河道(三条西→东,宽 3,穿核心禁入)、三倍频值噪声草地/泥炭变化、泊松式最小距离布点(800 次尝试),村核矩形(24..38 x 16..34)由生成器不变式保证可通行;VillageArt 于大世界模式下按 terrain code 逐格绘制(可视化范围裁剪,无每帧分配);Game 新增 LV_MAP_SCALE(默认 1,表示规模倍数)与 LV_MAP_TOUR 巡游采样(八个地标位置含角/中心/河带);快照回归断言:同 seed 逐字节一致、异 seed 必然差异、核心矩形无水面。
|
| |
|
|
| |
VillageArt 支持 CC0 素材包切换(环境变量 LV_ASSET_PACK=cc0):Kenney 地块替代草地(棋盘双绿)/石径纹理,Puny 角色图集(与江南人物同 cell 几何)替换五变体角色;水面/屋檐/桥/灯笼/竹丛等江南图块保留并存于同一场景,江南图集仍作为水与建筑纹理源;未设环境变量时行为与既有路径一致(全部既有测试不变)。
|
| |
|
|
| |
人物图集 5 变体 x 4 向 x 4 帧(2560x48,全部经 make-jiangnan-art.py 原创,四种腿步:站立/左跨/站立微跳/右跨镜像);animationFrame 按 tick/4 mod 4 确定性取帧(16 tick 一循环,禁实时时钟);快照式回归断言四帧循环与逐帧图集列映射,主角同规则。
|
| |
|
|
| |
新增 TitleScreen 纯布局模块(确定性、可测):五段暮色渐变天幕、黛瓦屋脊/檐口轮廓带(复用图集 8/9 号地块)、水面倒影带(1 号地块)、岸边灯笼光晕、江南水乡四倍大字标题;主菜单改为纵向简洁排布浮于其上,子页面板按内容自适应高度,去除全屏暗色遮罩大黑块。Xvfb 截图像素自查通过。
|
| |
|
|
| |
人物图集扩至五套变体(1280x48):靛蓝袍配布巾、褐衫配发髻马甲、翠衫配发簪红巾、灰袍配瓜皮帽,主角专属斗笠独立第五套;村民按 id 取模四种服饰轮转,永不与主角同装,四向两帧动画保持。
|
| |
|
|
| |
图集新增柳树(垂枝两段)、灌木、花丛、芦苇、石凳、灯笼七类图块并经复制规则进构建;场景加入两株垂柳、两丛灌木、两处花丛、水中两簇芦苇、河畔石凳与两盏岸边灯笼,芦苇立于水面、灯笼立于岸道,全部入图集无程序几何占位。
|
| |
|
|
| |
场景改为沿村蜿蜒水带(北岸凸湾、中段横贯、南段收窄),南北两岸石板路沿河展开,木桥三块纵跨全河连接民居门前石径;水面新增第二张波纹图块,按世界 tick/32 取模确定性交替,绘制无新增每帧分配。
|
| |
|
|
| |
新增屋脊/檐口/木构粉墙/格窗/木门五个地块图块,可进屋民居以门为锚点绘制四宽三高完整立面(黛瓦正脊、檐口层次、木构白墙、格窗与木门);新增 planFootprint 供生成阻挡判定,村民不会刷在建筑图块上。
|
| |
|
|
|
|
|
|
| |
- scripts/make-jiangnan-art.py 生成三张原创透明 PNG:世界 256x32、角色 1024x48、内景 392x96
- VillageArt.fs 移除进程内像素烘焙,改为 BaseDirectory 加载图集并校验尺寸
- 内景渲染改用图集(地板/墙/窗/桌/床/屏/毯/柜),新增玩家专属 StrawHat 变体
- 内景新增地毯与柜子装饰,角色按 FeetPosition 定位
- fsproj 随包复制三张 PNG;m6c-package.sh 校验三张 PNG 进入交付包
|
| |
|
|
|
|
|
|
|
|
| |
完成江南村庄场景、角色表现和中文界面的 M6c 交付范围。
新增 CJK 字形图集、中文文案与运行时加载,补充民居情境交互和确定性村庄美术表现。
更新资源复制与 Linux/macOS 打包校验,加入 188 字符清单、资源许可说明和对应原型测试。
补充江南美术方向与 M6c 交付说明,并保持原有模拟内核和桌面构建入口不变。
|
|
|
[Change Nature]
This commit adds the Task 3a desktop presentation data slice.
[New Capability]
- Defines immutable Jiangnan props, water and paving tiles, NPC variants, directions, and two-frame animation metadata.
- Provides formal Chinese scene, menu, status, and missing-glyph text layout primitives.
[Implementation]
- Keeps the new modules pure and deterministic with no GUI, network, or global mutable state.
- Adds focused prototype tests, F# compile ordering, and asset/license boundary documentation.
[Impact]
- Extends desktop presentation APIs without modifying Kernel or Game.fs.
- Leaves GUI rendering integration for Task 3b.
|