summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* docs: overnight tick 19:17 时间戳修正Somhairle H. Marisol12 days1-2/+2
|
* docs: overnight tick 20:44 独立复验记录Somhairle H. Marisol12 days1-0/+8
|
* docs: overnight tick 20:07 独立复验记录Somhairle H. Marisol12 days1-0/+6
|
* docs: overnight tick 19:50 独立复验记录Somhairle H. Marisol13 days1-0/+6
|
* docs: overnight tick 18:58 — HEAD bb2e026 visual re-verify (day/night ↵Somhairle H. Marisol13 days1-0/+6
| | | | frames, vision+white-block OK)
* docs: overnight tick 18:55 — HEAD bb2e026 re-verified ↵Somhairle H. Marisol13 days1-0/+13
| | | | (build/tests/determinism green), no dispatch
* docs: overnight tick 18:52 — HEAD 357f1ac re-verified (build/tests green), ↵Somhairle H. Marisol13 days1-0/+8
| | | | no dispatch
* docs: overnight tick 18:30 — HEAD 380cb82 re-verified, no dispatchSomhairle H. Marisol13 days1-0/+8
|
* docs: overnight tick 18:30 — HEAD 380cb82 re-verified ↵Somhairle H. Marisol13 days1-0/+8
| | | | (build/tests/determinism green), no dispatch
* docs: overnight tick 18:15 — HEAD e5c7f69 re-verified ↵Somhairle H. Marisol13 days1-0/+10
| | | | (build/tests/determinism green), no dispatch
* docs: overnight tick 18:00 — HEAD c52083a re-verified, P30 evidence ↵Somhairle H. Marisol13 days1-0/+10
| | | | regenerated + vision recheck, no dispatch
* docs: overnight tick 17:45 — cgit web readback, mac package audit ↵Somhairle H. Marisol13 days1-0/+9
| | | | (source_commit=1b0724d unsigned), P31 evidence recheck; no dispatch
* docs: overnight tick 17:15 — HEAD 44efaea re-verified (build/tests/digest ↵Somhairle H. Marisol13 days1-2/+16
| | | | all green), no new dispatch (writer quota unavailable)
* docs: fix tick 16:52 status layoutSomhairle H. Marisol13 days1-1/+1
|
* docs: overnight tick 16:52 — P31 verified+merged (main=b3d1cb3), ↵Somhairle H. Marisol13 days1-101/+10
| | | | profession system P-a..d complete
* Merge remote-tracking branch 'origin/main'Somhairle H. Marisol13 days0-0/+0
|\
| * docs: overnight tick 15:40 — P31 (profession P-d story+dialogue bias) ↵Somhairle H. Marisol13 days1-0/+10
| | | | | | | | dispatched, no merge this tick
* | docs: overnight tick 15:40 — P31 dispatched (replay of f13505b onto merged ↵Somhairle H. Marisol13 days1-0/+10
| | | | | | | | P31)
* | docs: P31 maintenance notes (dialogue bias + four storylines)Somhairle H. Marisol13 days1-0/+47
| | | | | | | | | | | | Change points, evidence commands, frozen gates restated: kernel 119 / desktop 160 green, digest 953775FAEB2F unchanged, 64x48/256x192 checksums pinned, M3 files untouched; art/ evidence kept out of the repo.
* | feat(desktop): P31 step4 story progress display + evidence shotsSomhairle H. Marisol13 days4-2/+191
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - Task panel (T key): a storyline row per occupation, e.g. ju-qing-xian: shui-wei-yu-shou-cheng, zou-fang-zhong (line name + stage name); absent for occupation-free saves. - Occupation select page: minimal hint line showing the selected occupation's storyline name. - Evidence hook LV_STORY_SHOT=1 (+LV_STORY_OCCUPATION, LV_STORY_STAGE): boots a real world through the standard bootstrap, advances the story via the real dialogue pipeline (chooseDialogueWith bias + Story.onDialogue + StoryAnnal append), opens the task panel and saves one back-buffer frame, then exits. 4 Xvfb shots (farmer/fisher/peddler/scholar) captured under art/ (gitignored, not committed). - 4 new desktop tests (156 -> 160): panel storyline lines, bias + story advance through M5Interaction, no-occupation path stays story-free.
* | feat(kernel,desktop): P31 step3 story annals + identity entry + glyph atlasSomhairle H. Marisol13 days11-26/+226
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - Sim.AnnalKind gains StoryAnnal (summary lives in the existing Summary field); WorldSave v3 serializes it with the new 'story' token. v1/v2 saves never contain the token and stay byte-identical; v3 save -> load -> save roundtrips byte-for-byte (tested). - Occupation.Story.identitySummaryOf: plain chronicle-style identity line written to the yearbook at game start (design section 3), e.g. yi-da-yu-wei-sheng. - Desktop: story summaries render in the chronicle panel; StartNewGame appends the identity annal; chooseIntent now routes responses through Occupation.biasResponse and advances the storyline (one stage per player dialogue) with the summary appended as a StoryAnnal. - M5View gains Seed (world seed source for the story start-day hash). - Chinese copy synced into requiredUiLabels; cjk-glyphs.txt + CjkGlyphAtlas.characterTable extended 238 -> 307 glyphs (384x480), atlas regenerated with the deterministic script. - 4 new kernel tests (115 -> 119); performance digest unchanged.
* | feat(kernel): P31 step2 story stage state machineSomhairle H. Marisol13 days3-0/+334
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - Occupation.Story: three-segment arc per occupation (accept task -> visit households -> conclude), driven one stage per player dialogue with day gates derived from the same splitmix pattern as the daily task pool (start day = hash(seed ^ storySeed, day 0) mod 3 + 2, range [2,4]). - relationMeanToPlayer: decayed valence mean over acquainted NPCs only (same decay formula as Sim.relationMatrix); no acquaintances = 0. - Three endings (warm/plain/distant) chosen by deterministic thresholds (>=0.3 / >=0.0 / <0); ending text is fixed at the concluding dialogue. - onDialogue returns (state, summary text option) for the caller to write into the yearbook; StoryStage itself is unchanged (0..3) and already roundtrips through the existing v3 occupation segment. - 14 new kernel tests (101 -> 115); performance digest unchanged.
* | feat(kernel): P31 step1 occupation dialogue response biasSomhairle H. Marisol13 days4-4/+193
|/ | | | | | | | | | | | | - Occupation.biasResponse: deterministic pure remap over Sim.responseFor; no occupation = byte-identical pass-through (all intents x personalities). farmer AskHelp Refused->Helpful; fisher SmallTalk Reserved->Friendly; peddler SmallTalk Reserved->Bargaining; scholar Joke fully overridden to Reserved (documented total-override semantics, opposite of personality). - Sim.responseFor made public (same pure function, reused as the base path). - Sim.chooseDialogueWith: extracted body of chooseDialogue with an injectable respond function; chooseDialogue keeps identity semantics unchanged. - Sim.appendAnnal made public for the upcoming story annal writes. - 9 new kernel tests (92 -> 101); performance digest unchanged.
* docs: overnight tick 14:15 — P30 merged(dabc5d0), M3 phase2 50/50 PASS, M3 ↵Somhairle H. Marisol13 days1-0/+11
| | | | gate closed
* merge: P30 512 民居增密+田块空区填充+主路柔化(Hermes ↵Somhairle H. Marisol13 days5-56/+632
|\ | | | | | | 复验通过 92/156, digest PASS)
| * feat(desktop): P30 512 民居增密 + 乡村空区填充 + 主路柔化Somhairle H. Marisol13 days5-56/+632
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - 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 锁定不变。
* | docs: overnight tick 12:47 — M3 phase1 PASS 30/30, phase2 runningSomhairle H. Marisol13 days1-0/+10
| |
* | docs: overnight tick 12:33 — M3 25/30, P30 activeSomhairle H. Marisol13 days1-0/+10
| |
* | docs: overnight tick 12:25 — P29 merged(4034f55), P30 dispatched ↵Somhairle H. Marisol13 days1-0/+12
|/ | | | ses_f38ab2ab4, M3 16/30
* merge: P29 512 沿河组团化 + 夜景灯光径向光晕(lanternFalloff ↵Somhairle H. Marisol13 days6-84/+378
|\ | | | | | | 二次衰减/桥头与门窗 halo)— Hermes 复验通过
| * feat(desktop): P29 512 聚落组团 + 夜景灯光径向光晕Somhairle H. Marisol13 days6-84/+378
| | | | | | | | | | | | | | | | | | | | | | | | - 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-*。
* | docs: P29 dispatched (cluster/halo) ses_f38be81faffe3Somhairle H. Marisol13 days1-0/+4
|/
* docs: overnight tick 11:56 — P28 merged(b2a6701), visual leftover P29 ↵Somhairle H. Marisol13 days1-1/+10
| | | | candidates, M3 12/30
* merge: P28 民居第二变体强化 + 512 ↵Somhairle H. Marisol13 days9-53/+247
|\ | | | | | | 沿河加密(青灰挑檐B/竖长格栅窗/绿院门,2/3/4 宽分层 16 座外环)— Hermes 复验通过
| * docs: P28 Desktop 计数修正为 145;忽略证据目录 art/Somhairle H. Marisol13 days2-1/+2
| |
| * docs: P28 512 大图民居观感整改小节(变更点/取证命令/锁定 ↵Somhairle H. Marisol13 days1-0/+66
| | | | | | | | checksum)
| * test(desktop): P28 断言变体 B 挑檐亮度显著高于变体 A 屋脊Somhairle H. Marisol13 days1-0/+53
| | | | | | | | - 直接解码 world 图集 slot 8/28 平均亮度,防配色差异被回退抹平
| * feat(desktop): P28 整图夜景取证(真实 tint + 月光 veil)Somhairle H. Marisol13 days1-9/+26
| | | | | | | | | | - LV_MAPGEN_NIGHT=1 时整图按 23:30 的 WorldTint 与 golden/moonlight veil 渲染 - RenderMapGen 参数化 tint/veil tick,与 DrawWorldView 共用同一套纯函数
| * feat(desktop): P28 整图 2px/tile 真实帧取证钩子Somhairle H. Marisol13 days1-0/+18
| | | | | | | | | | - LV_MAPGEN_FIT_WIDTH/HEIGHT 额外渲染整图到指定像素目标(1024x768 -> 恰 2px/tile) - 仅取证模式触发,不进入正常游戏循环
| * feat(mapgen): P28 512 沿河民居加密至 16 并宽度 2/3/4 分层Somhairle H. Marisol13 days2-9/+29
| | | | | | | | | | | | - ExtraRiversideHouses 10 -> 16(沿河 +6 座),宽度加权 2/3/4 形成聚落层次 - 仅 large 分支执行、默认图不消耗 RNG:64x48=6042052、256x192=1284656962 锁定不变 - 新增 LargeMapHouseDensityHierarchyOnlyGrowsLargeMaps 回归
| * feat(desktop): P28 ↵Somhairle H. Marisol13 days3-37/+56
| | | | | | | | | | | | | | | | 民居第二变体强化配色与轮廓(青灰挑檐色阶 + 竖长格栅窗 + 绿院门) - make-jiangnan-art.py slot 28/29/30:B 变体改用亮青灰瓦色阶、竖长木格栅窗、绿双扇院门 - VillageArt 变体 B 渲染:挑檐多叠一层、向两侧各出一格(水面之上不叠),墙身统一格栅窗 - 仅绘制分支,瓦片/可达性零改动
* | docs: overnight tick 11:35 — P27 merged(1b0724d), M3 50x20 rebatch ↵Somhairle H. Marisol13 days1-1/+10
|/ | | | launched, P28 dispatched
* merge: P27 Rumor 长局成本修复(去装箱扫描 + O(1) 裁剪 + ↵Somhairle H. Marisol13 days9-15/+260
|\ | | | | | | rumor-bench)— Hermes 复验通过
| * docs: P27 小节补全修复后指标与等价性/门槛Somhairle H. Marisol13 days1-0/+30
| | | | | | | | | | | | | | | | 补 P27 修复策略(扫描去装箱 + 裁剪判定 O(1))、修复前后基准对照 (60 天 alloc -64%、ms -28%)、retained_id_checksum 前后一致、 5 天双跑 WorldSave 逐字节相同、digest/PASS 与 Kernel 92/Desktop 143 门槛; 并记录全模拟 --cost-probe 基本持平的原因(逐 tick NPC 快照分配主导, 谣言子系统占比小,留给后续单)。已验证命令补 --rumor-bench。
| * perf(kernel): P27 第二步 — Rumor 扫描去装箱 + 裁剪判定 O(1)Somhairle H. Marisol13 days5-14/+70
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 两条互相独立、均不改变保留集合与查询结果的优化: 1) 扫描去装箱:latestRumorFor / rumorIsDuplicate 用 `=` 比较 [<Struct>] 的 NpcId/RumorId(含 RumorId option)会走泛型结构相等并逐条装箱(实测 ~24 B/条, Sim.chat 单独测得 N=16000 时 393,736 B/次、随 N 线性)。改为先解构底层 int/int64 再比较;Parent 用 int64 option 比较替代 RumorId option 结构相等。 语义完全等价,扫描不再逐条分配。 2) 裁剪判定 O(1):World 新增派生镜像 RumorCount/RumorOldestDay(不参与存档, 读档由列表经 rumorWorkingSetStats 重建)。appendRumor 用「count+1>capacity 或 min(oldest,day)<cutoff」O(1) 判定,仅真需裁剪时才走 trimRumors;旧 consRumor 每次追加都 rumorsNeedTrim 全表扫一遍。条件与 needTrim 逐字等价,保留集合相同。 等价性验证:5 天 2000 聊天/天跑两遍 WorldSave.save 逐字节相同, RumorCount/RumorOldestDay 与对列表重算一致(count=8000、oldest_day=1)。 Kernel 长跑基准 30 NPC × 2000 聊天/天(--rumor-bench D 30 2000): days 修复前 alloc / ms 修复后 alloc / ms 3 930,716,456 / 1626.7 482,716,192 / 1511.3 30 13,419,045,864 / 12182.5 4,884,067,640 / 8879.6 60 27,297,668,608 / 23769.7 9,774,660,360 / 17078.2 60 天分配 -64%、耗时 -28%,retained_id_checksum=927964000 前后一致。 门槛:final_digest=953775FAEB2F... 三次一致、performance_determinism=PASS; Kernel 92 / Desktop 143 全绿;--cost-probe 1/5 天 18.7s/18.8GB、90.4s/94.6GB (全模拟分配由逐 tick NPC 快照主导,谣言子系统占比很小,故全模拟基本持平)。
| * perf(kernel): P27 第一步 — Rumor 长跑基准与修复前量化Somhairle H. Marisol13 days4-1/+160
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 新增 Kernel 层 Rumor 长跑基准(RumorBench.fs + headless --rumor-bench [days npcs chats_per_day]),把「聊天→生成/追溯谣言」路径从 Sim.step 的 NPC 快照分配解耦,隔离测量谣言工作集随世界年龄的分配/耗时;同 Config 的 retained_id_checksum 证明确定性。 复核 M3-1 前提:World.Rumors 已被 M6a(d94ec2d/cc850bf)按 3 天保留窗口收敛, 单日成本平稳(1/5/10 天 ≈18.7/18.1/19.8s、≈19GB/天),超线性项消失。 剩余 Rumor 成本 = 每次聊天的两条 O(N) 扫描 latestRumorFor/rumorIsDuplicate, 且 [<Struct>] NpcId/RumorId 用 = 比较会逐条装箱(Sim.chat 单独测得 N=16000 时 393,736 B/次、随 N 线性)。 修复前基准(30 NPC,--rumor-bench D 30 2000): 3d chat_calls=6000 retained=6000 alloc=930,716,456 ms=1626.7 30d chat_calls=60000 retained=8000 alloc=13,419,045,864 ms=12182.5 60d chat_calls=120000 retained=8000 alloc=27,297,668,608 ms=23769.7 (60d 工作集稳定 8000,不随年龄增长。) docs/维护说明.md 新增 P27 小节记录上述现状与量级。不改任何模拟语义。
* | docs: overnight tick 10:30 — P26 merged(b377e75), P27 rumor-perf dispatchedSomhairle H. Marisol13 days1-1/+8
|/
* merge: P26 美术整改(民居第二变体/河岸装饰/夜月光/HUD ↵Somhairle H. Marisol13 days12-27/+449
|\ | | | | | | 双景可读)— Hermes 复验通过
| * docs: P26 范围外遗留事项(另开一单)Somhairle H. Marisol13 days1-0/+4
| |
| * docs: P26 美术整改小节与 512 昼夜取证命令Somhairle H. Marisol13 days1-0/+54
| |