核心语言:C++ 主导的底层架构
传奇服务端与客户端的底层源码主要由 C++ 编写,辅以 Delphi 和 C 语言。这一组合构成了从网络通信到游戏逻辑的完整技术栈。
服务端(Server)语言构成
• C++:承担核心负载。M2Server(主控制器)、LoginGate(登录网关)、RunGate(游戏网关)等关键模块均采用 C++ 开发,负责多线程处理、怪物AI、战斗计算及数据库交互。
- Delphi:早期版本(特别是 DBC2000 数据库时代)的常见选择。许多老版本的 SelGate(角色网关)和 DBServer(数据库服务)由 Delphi 编写,因其数据库操作便捷性被广泛采用。
- C:部分底层网络库或工具类程序可能涉及 C 语言。
客户端(Client)语言
- C++:绝对主力。游戏主程序(Mir2.exe / Mir3.exe)基于 C++ 配合 DirectX 实现图形渲染、音效播放及网络封包处理。
- 脚本扩展:虽然底层是 C++,但游戏内的任务、NPC对话、物品使用等逻辑普遍采用自定义的脚本语言(如 GOM 的 GeeScript、GEE 的脚本引擎),这些脚本由引擎解析执行,而非直接编译进二进制文件。
配套工具与数据库语言
• 工具类程序:地图编辑器(MapEditor)、怪物编辑器(MonGen)等资源工具多为 Delphi 或 C++ Builder 开发,因其快速界面构建能力。
- 数据库:早期使用 DBC2000(Paradox 数据库),数据文件通过 Delphi 的 BDE 组件访问;现代版本逐步转向 SQLite、MySQL 或 Access。
脚本与配置:非源码的“逻辑层”
玩家常接触的“修改源码”通常并非修改 C++ 代码,而是操作以下内容:
- 脚本语言:位于 Mir200\Envir\ 下的 NPC 脚本(.txt)、任务脚本(QManage.txt)等。这些是引擎解析的文本指令,用于定义游戏玩法。
- 配置文件:!Setup.txt、数据库字段(如 HeroDB 中的 GamePoint)等,用于调整参数。
引擎差异与源码获取
• 官方源码:盛大官方代码未公开,流传的“源码”多为第三方基于反编译或自研的引擎(如 GOM、GEE、V8),其内核仍为 C++。
- 二次开发:基于开源引擎(如 GeeM2)进行功能扩展时,主要工作仍在 C++ 层,脚本层用于实现具体业务逻辑。
技术总结:传奇的硬核代码是 C++,Delphi 负责历史遗留模块,真正的“改版本”大多是在写脚本和配置,而非直接编译 C++ 源码。

