open-sourcegamerogueliketurn-basedrpg type: concept 创建: 2026-04-10 更新: 2026-04-10

Dungeon Crawl Stone Soup

经典 Roguelike 地下城探索游戏,融合战术战斗与魔法,以多样性技能与神祇系统著称。

基本信息

项目 内容
GitHub https://github.com/crawl/crawl
语言 C++(~412K LOC,310 个 .cc 文件)
构建系统 Make(Tiles: make TILES=y,Console: make
渲染/引擎 自研渲染器(ASCII + Tiles 双模式,SDL2 图形界面)
许可 GPLv2+
社区 tavern.dcss.io 论坛、Discord、Reddit r/dcss、IRC #crawl
起源 Linley's Dungeon Crawl(2005 最终版 v4.1),2006 年起由 Stone Soup 团队继续开发

核心技术点

庞大 C++ 代码库(~412K LOC)

  • 310 个 .cc 源文件,单体结构而非微服务
  • 最大文件:mon-cast.cc(9936行)、player.cc(9514行)、beam.cc(7982行)
  • 典型模块文件:dungeon.cc(7712行)、god-abil.cc(7403行)、describe.cc(7690行)
  • AppHdr.h 核心游戏头文件定义所有主要数据结构

双模式渲染系统

  • Console/ASCII 模式:纯文本渲染,无需外部依赖
  • Tiles 模式:SDL2 + SDL_image + libpng 图形化界面,支持 GUI tiles 显示
  • 构建选项:TILES=y 启用图形,Linux/Windows/macOS/Android 多平台

手绘关卡系统(Vaults)

  • 关卡由 .des 文件定义(crawl-ref/source/dat/des/),位于 arrival/branches/portals/sprint/test/variable 等子目录
  • mapdef.cc(6421行)处理 .des 语法解析与地图实例化
  • 支持随机化手绘关卡组合,支持 TUTORIAL 关卡引导新玩家
  • 关卡编译器(.des → 编译格式)位于 source/util/Makefile

数据驱动设计

  • art-data.txt:神器数据配置
  • branch-data.h/json.h:分支(地下城层级)数据
  • item-def.h + item-name.cc:物品定义与命名
  • book-data.h:魔法书数据
  • bane-data.h:怪物弱点数据

第三方依赖(嵌入式或系统库)

用途
Lua 游戏内脚本与用户宏
PCRE 正则表达式
SQLite 数据库引擎(存档)
SDL/SDL_image Tiles 图形渲染
libpng Tiles 图片加载

构建系统

  • 顶层 crawl-ref/source/Makefile,各子模块独立 Makefile(contrib/util/rltiles/webserver/
  • git submodule 管理第三方依赖(不能用 tarball,必须用 git clone)
  • 支持 ccache 加速增量编译
  • Android 原生支持(android-project/

玩法特点

种族与职业组合

  • 多种族(Human、Elf、Dwarf、Orc 等)+ 多职业(Fighter、Mage、Priest 等)
  • 技能系统覆盖战斗、魔法、炼金、祷告、徒手格斗等

神祇系统

  • 17+ 可信仰神祇(如 Gozag、Ru、Ashenzari 等),每个神提供独特能力与约束
  • god-abil.cc(7403行)处理神祇能力授予
  • describe-god.cc 处理神祇描述

地下城层级(Branches)

  • Zot(最终目标)、Dungeon、Lair、Orc、Elven Halls、Shoals 等多个分支
  • branch-data.h 定义分支结构与难度递进

在线多人

  • 官方服务器 crawl.develz.org 提供在线游戏(WebTiles 浏览器版 + SSH 终端版)
  • 玩家可旁观他人游戏

地图编辑器

  • .des 文件手工制作关卡,无需重新编译游戏即可测试
  • 贡献者指南详细说明 Vault 制作流程

对公司 AI 游戏的参考价值

方向 启示
数据驱动游戏内容 C++ 逻辑与 .des/.txt 数据文件完全分离,设计师可独立创作关卡/物品/怪物而不改代码
双模式渲染 Tiles + Console 共用同一游戏逻辑层,UI 层解耦;可作为 AI 游戏双入口参考(CLI + GUI)
技能系统设计 多维度技能树(战斗/魔法/宗教/炼金),技能之间有协同与约束关系,可用于 AI 角色能力设计
神祇/契约系统 17+ 神祇提供差异化玩法路径,每个神附带能力+禁忌;可作为 AI 角色"性格/价值观"设计原型
庞大代码库管理 310 个 .cc 文件 412K LOC 单体结构,通过一致的命名规范与模块划分组织;适合学习大型 C++ 项目结构
关卡 Vault 系统 手绘随机关卡设计模式,结合手工质量与程序化组合;可作为 AI 地图生成的训练数据来源
社区驱动开发 20 年持续迭代,CREDITS.txt 列出大量贡献者;开源游戏长期维护模式参考

相关 Wiki 页面