DDO 阅读 API
一款基于人工智能的探索工具 龙与地下城 游戏数据。询问有关物品、法术、NPC、任务、增强树、战利品表等的问题,并直接从游戏的客户端文件中获取答案。
在引擎盖下,a。NET web API读取DDO的 .dat 文件,并通过HTTP公开它们。MCP(模型上下文协议)桥将API连接到Claude Code(或任何兼容MCP的AI代理),因此您可以通过对话方式查询游戏数据,而不是挖掘原始文件。API还包括内置的 项目查看器 在浏览器中呈现DDO样式项工具提示面板。
它做什么
API加载DDO的客户端数据文件(gamelogic、general、sound、local_English、surfaces、animation、cells、maps、mesh和highres纹理),并通过HTTP公开其内容。它为以下对象提供端点:
- Db属性 --解析的属性集合来自
client_gamelogic.dat,具有基于名称的查找、weenie类型浏览、增强树和宝藏表 - EntityDesc --EntityDesc对象来自
client_gamelogic.dat - 图像 --从dat文件中提取并提供PNG图像,包括复合项目图标
- 声音 --声音元数据来自
client_general.dat - 食谱 --按配料项目查找制作食谱
- 原始数据访问 --按ID从任何dat文件中读取原始二进制对象
- ID范围 --列出已知的对象类型ID范围
- 缓存管理 --重建gamelogic索引、检查缓存状态或下载完整索引
- 项目查看器 --浏览器通过DDO工具提示模拟面板呈现项目页面
先决条件
- DDO已安装 -《龙与地下城在线》的本地安装(API直接从游戏的
.dat文件) - .NET 10 SDK
- Git Bash或兼容的shell —
run.sh使用bash和Windowsreg查找DDO安装路径的命令 - Node.js --用于OpenAPI到MCP桥
- 克劳德代码 --AI代理CLI
npm install -g @anthropic-ai/claude-code适用于Docker模式(./run.sh --docker),你还需要 Docker 桌面版.
快速开始
克隆仓库并运行安装脚本:
git clone https://github.com/morrikan/ddo-dat-api.git
cd ddo-dat-api
./run.sh什么 run.sh 是否
- 查询Windows注册表以查找DDO安装目录
- 通过构建和运行API
dotnet run(或使用Docker--docker) - 等待API可用
- 保存OpenAPI模式并为Claude设置MCP服务器
- 打开Swagger UI并启动Claude Code
如果注册表查找失败(例如非标准安装位置),请设置 INSTALL_PATH 手动输入 run.sh 或在 DatSource.cs.
API运行后,可在 http://localhost:5138 Swagger用户界面位于 http://localhost:5138/swagger.
性能说明
索引生成通常在 3-4分钟 在本地运行时。 在Docker模式下,可能需要30分钟以上 由于卷装载开销。
索引以以下格式保存到磁盘 indexcache.json 并自动加载到后续的初创公司,因此此成本只支付一次(或在游戏补丁之后)。您可以随时通过以下方式触发重建 POST /Cache/Rebuild.
API终点
| 端点 | 方法 | 描述 |
|---|---|---|
/DbProperties/{id} | GET | 按ID获取已解析的属性集合 |
/DbProperties/IdsForName?name= | GET | 按名称查找对象ID |
/DbProperties/WeenieTypeCounts | GET | 获取每种weenie类型的计数 |
/DbProperties/ByWeenieType/{weenieType} | GET | 列出给定weenie类型的对象 |
/DbProperties/EnhancementTrees | GET | 列出所有增强树 |
/DbProperties/TreasureTables | GET | 列出所有宝表ID |
/DbProperties/Search | POST | 按关键字/正则表达式模式搜索对象 |
/Strings/{table}/{key} | GET | 按表和键ID查找本地化字符串 |
/Set/{setId} | GET | 通过SetBonus_ID获取一组奖励条目 |
/EntityDesc/{id} | GET | 按ID获取EntityDesc对象 |
/Image/{id} | GET | 按ID获取PNG图像 |
/Image/Icon/{id} | GET | 获取复合项目图标(底层+背景+魔术边框+项目图标) |
/Recipe/ForItem/{id} | 获取 | 获取所有使用物品作为配料的制作食谱 |
/Sound/{id} | GET | 按ID获取声音元数据 |
/RawDat/{dat}/{id} | GET | 从特定数据文件读取原始字节 |
/RawDat/IdRanges | GET | 列出已知的对象类型ID范围 |
/Cache/Rebuild | POST | 触发完全缓存/索引重建 |
/Cache/Metadata | GET | 获取索引时间戳、版本和大小 |
/Cache/Download | GET | 下载完整索引 |
/Item/id/{id} | GET | 在浏览器中渲染项目页面(见下文) |
ID可以十六进制形式提供(前缀为 0x)或者作为纯整数。
项目查看器
GET /Item/id/{id} 为任何可配置的项目呈现浏览器页面。该页面有两列:
- 左 --一个结构化的字段/值表,列出名称、类型、统计数据、绑定、效果、增强槽、设置奖金、食谱等
- 正确的 --DDO风格的工具提示模拟面板,反映了游戏中的检查窗口,包括物品图标、伤害/护甲统计、效果列表、增强槽和耐久性页脚
支持的项目类型:
| 类型 | 注释 |
|---|---|
| 武器 | 伤害线、暴击力、攻击/伤害能力模组、手性、增强加值 |
| 护盾 | 护盾加成、最大dex加成、DR、护甲检查惩罚、法术失败、护盾重击伤害 |
| 护甲 | 护甲加成、最大指数加成、护甲检查惩罚、法术失败 |
| 珠宝/服装 | 槽标识(戒指、脖子、小饰品、斗篷等) |
| 增强 | 增强类型、装备效果、设置奖励(血统) |
所有类型显示:最低等级、绑定、点击法术(带图标、施法者等级、充电、充值)、效果、增强槽位、设置奖励、材料、耐用性、重量和食谱。
例子: http://localhost:5138/Item/id/0x7902F2C7
项目结构
ddo-dat-api/
├── run.sh # Setup script (registry lookup, build, MCP setup, launch Claude)
├── render-panel.mjs # Puppeteer script for screenshot testing the item viewer panel
├── CLAUDE.md # AI agent instructions and property display rules
├── .claude/skills/ # AI workflow skills (name lookup, property rendering, etc.)
└── src/DdoDatApi/
├── dockerfile # Multi-stage .NET 10 build (for --docker mode)
├── Program.cs # App entry point, Swagger config
├── DatSource.cs # Loads all dat files via VoK.Sdk
├── Controllers/ # API endpoints + EffectResolver (effect instantiation logic)
├── Caching/ # Index builder (IndexLoader) and static cache holder (DatCache)
├── Converters/ # JSON property converters
├── Models/ # DTOs and view models
└── Views/Item/ # Razor view for the item viewer pagerender-panel.mjs
一个Puppeter脚本,导航到项目页面并将模拟面板的屏幕截图保存到 temp/render-{id}.png。可用于在开发过程中直观地验证工具提示面板。
node render-panel.mjs
# e.g. node render-panel.mjs 0x7902F2C7许可证
本项目不隶属于Standing Stone Games或Daybreak Game Company,也不受其认可。
