refactor(map-gen/preset): 纠正固定地图“象限(quadrant)”错误认知,实现 File1..File6 独立版本(Variants)自动选择与世界图连通匹配 #42
Loading…
Reference in New Issue
No description provided.
Delete Branch "%!s(<nil>)"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
背景与认知纠正
此前在工程注释(
src/game/acts.ts:11)与 UI(src/scene/act-scene.ts的quadrantSelect)中,误将LvlPrest.txt中的File1..File6(如第一幕罗格营地的TownN1.ds1、TownE1.ds1、TownS1.ds1、TownW1.ds1)定义为“营地的四个象限(quadrants)”,并误认为需要将它们拼接缝合。经过核查,这一认知是错误的:
Levels.txt中,第一幕城镇总尺寸定义为57 × 41;而TownN1、TownE1、TownS1、TownW1四个 DS1 文件各自的解码尺寸均恰好是 57 × 41,每一个文件本身就是一张完整的罗格营地全景图。LvlPrest.txt的表头字段明确定义为Files(The amount of versions the map has)与File 1 to File 6(The location of the ds1 versions)。N1/E1/S1/W1分别对应通往鲜血荒地(Blood Moor)的出口朝向(North/East/South/West)。暗黑2原版逻辑(Oracle / Ground Truth)
在官方 D2 源码(
D2Common/DRLG/DrlgPreset.cpp中的DRLGPRESET_GenerateLevel)中:Files > 1)时,引擎在单局游戏生成世界时,依据地图种子(Seed % Files)或根据与相邻野外地图(鲜血荒地)衔接大门的朝向,自动抽选其中唯一一个匹配的完整版本实例化为该局的城镇。差异点与当前缺陷
quadrant(象限)术语,误导了地图拼装与世界连通的设计思路。TownE1)。解决建议与改造方案
acts.ts、d2map.ts、act-scene.ts中的quadrant(象限)全面重命名为variant/presetVersion(版本变体)。TownE1),废除界面上的手动象限选择。LutW.ds1西门 vsLutN.ds1北门),依据与碎石荒地(Rocky Waste)的对接方位实现自动化单版本匹配。fix(map-gen/preset): 固定地图多 DS1 象限未拼接缝合,城镇场景被割裂为独立孤岛子场景to refactor(map-gen/preset): 纠正固定地图“象限(quadrant)”错误认知,实现 File1..File6 独立版本(Variants)自动选择与世界图连通匹配已在分支
fix/issue-42中真实修复并验证通过。Commit:
a01cffa验证项:
tests/variants.test.ts)npx tsc --noEmit)