
明日方舟关卡地图数据管道实战ArknightsGameResource的map.json与levels.json如何配合【免费下载链接】ArknightsGameResource明日方舟客户端素材项目地址: https://gitcode.com/gh_mirrors/ar/ArknightsGameResourceArknightsGameResource是一个明日方舟客户端素材仓库其中最实用的部分是两条关卡数据管道map.json 存放全部关卡的相机视角参数levels.json 则聚合了 4200 个关卡的地图网格、出生点与终点信息。本文将带你读懂这两份文件如何配合以及它们背后的生成脚本如何从游戏原始数据中自动炼出结构化关卡地图。 仓库里有什么除了本文的主角仓库还按用途组织了大量素材目录目录/文件内容gamedata/游戏原始数据excel 配置表、关卡 JSON、剧情文本等map/3088 张关卡地图背景图320x180avatar/、portrait/、skin/干员头像、半身像、立绘skill/、item/、enemy/技能图标、物品图标、敌人立绘file_dict.json全仓库文件 MD5 清单用于校验更新这个仓库原本服务于浊心斯卡蒂 bot见 README.md因此数据结构天然适合程序化读取关卡的场景。 关卡地图数据的三条流水线仓库根目录的两个 Python 脚本就是整条管道的核心levels_gen.py → 生成汇总版 levels.jsonlevels_split_gen.py → 生成 generated_level_data/ 目录每个关卡单独一个 JSON 文件它们共享同一套处理逻辑流程可以概括为三步第 1 步从 excel 配置表收集关卡清单levels_gen.py 从四张配置表中提取所有可玩关卡gamedata/excel/stage_table.json—— 主线关卡gamedata/excel/roguelike_topic_table.json—— 肉鸽关卡gamedata/excel/sandbox_perm_table.json—— 沙箱关卡gamedata/excel/handbook_info_table.json—— 干员档案关卡此外还会扫描gamedata/levels/下的符文关卡、活动符文关卡与危机合约目录把文件名直接当作levelId使用。每个关卡得到name中文名、code如 0-1、stageId与levelId四个字段。第 2 步解析地图网格与敌我出生点以主线 0-1 的源文件 gamedata/levels/obt/main/level_main_00-01.json 为例游戏原始数据里mapData.map是一张索引矩阵mapData.tiles才是真正的格子定义。管道做的关键工作有坐标翻转游戏内部行坐标从下往上数脚本用height - row - 1换算回常规从上到下的视角标记出生点/终点遍历routes中的startPosition/endPosition在对应格子上打上isStart/isEnd标记压缩格子信息每个格子只保留下游真正需要的字段——heightType地形高度、buildableType能否造塔、tileKey格子类型如tile_forbidden和出生/终点标记。第 3 步用 map.json 拼接相机视角这是 map.json 与 levels.json 配合的关键一环。map.json 是一个包含 3094 个键值对的字典键是levelId如obt/main/level_sub_05-4-1值是两个三维坐标点{ obt/main/level_sub_05-4-1: [ [0.0, -5.6, -8.92], [0.7989417447890186, -6.1, -9.784485156868895] ] }这两个点代表战斗开始时相机的初始位置与结束位置。管道会按levelId到 map.json 中查找如果找不到常见于困难模式会回退到同关卡的普通模式视角levels_gen.py 中的level_tough → level_main替换逻辑。查不到视角的关卡会被直接跳过保证输出数据完整可用。 levels.json 一条记录长什么样最终产物是一个 JSON 数组4223 条记录以主线 0-1坍塌为例{ name: 坍塌, code: 0-1, levelId: obt/main/level_main_00-01, stageId: main_00-01, width: 9, height: 6, tiles: [ [ { heightType: 1, buildableType: 0, tileKey: tile_forbidden, isStart: false, isEnd: false } ] ], view: [ [0.0, -4.81, -7.74], [0.594, -5.31, -8.622] ] }tiles是按行组织的二维数组行数等于height。下游程序拿到它后可以直接按buildableType绘制可部署区、按isStart/isEnd渲染敌我入口再借助view还原 3D 战场视角——map.json 提供看哪里levels.json 提供看什么两者互补。⚡ 按需加载用 levels_split_gen.py 拆分大文件levels.json 单文件约 72MB对只关心个别关卡的程序来说偏大。levels_split_gen.py 走的是同一套处理逻辑但把每个关卡写成独立文件输出到generated_level_data/目录文件名形如main_00-01-obt--main--level-main-00-01.json可按stageId精准读取避免每次加载整个大数组。 如何判断素材是否过期version 文件记录素材抓取的时间戳与提交号当前为26-09-18-14-18-57_b6fbbc可据此判断是否需要更新素材file_dict.json 提供全部文件的 MD5 哈希表方便在增量同步时快速发现新增或变更的内容。✅ 小结文件角色规模map.json关卡相机视角levelId → 两个 3D 点3094 个关卡levels.json关卡网格 出生点/终点 视角4223 个关卡levels_gen.py / levels_split_gen.py数据管道收集 → 解析 → 拼接—如果你需要程序化读取明日方舟关卡地图数据——无论是做地图预览、bot 寻路还是数据分析这套excel 配置表 关卡 JSON → levels.json map.json的管道就是现成的起点先查stageId定位关卡再读tiles重建网格最后用view渲染视角即可。【免费下载链接】ArknightsGameResource明日方舟客户端素材项目地址: https://gitcode.com/gh_mirrors/ar/ArknightsGameResource创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考