CD Code Digest Hub /DOOM 3

术语与缩写速查

9 分钟阅读 5 个章节

本表统一 Wiki 中容易混用的引擎术语。定义只覆盖本快照中的用法;详细条件、失败路径和精确源码引用以链接页面为准,不把同名通用技术概念直接套入 DOOM 3 BFG。

帧、模拟与并发#

术语本 Wiki 中的含义不要混淆为
idCommonLocal / Common进程组合根,负责初始化、外层帧、绘制和关闭某个具体游戏对象或独立通用库
Session菜单、 lobby、加载、进入/退出游戏等会话状态编排idGameLocal 内的一张地图或一次比赛
idGameLocalDOOM 3 权威游戏状态与每 tic 模拟的实现渲染系统或 SWF 菜单
外层 frameidCommonLocal::Frame 的一次执行,idLib::frameNumber 随之递增一个固定时长游戏 tic
game tic一次游戏模拟步进;一次外层 frame 可运行零个或多个GPU 帧或网络快照
usercmd带客户端/服务端时间的输入命令,供游戏和 Classic 消费已经完成的网络快照
gameReturn_tGame/Draw 工作单元向主线程返回的会话命令和呈现相关结果可随时读写的无锁消息队列
SMP本代码中 Game/Draw 与渲染后端等工作的重叠执行模式所有子系统都线程安全或全部并行

依据:外层帧计数见 common_frame.cpp:367-373,tic/Draw 与工作提交见 common_frame.cpp:86-178,返回值构造见 Game_local.cpp:2473-2488。详见启动帧循环与游戏运行时。

资源与渲染#

术语本 Wiki 中的含义
VFS / idFileSystem统一 loose file、.resources 和生成缓存等资源查找的虚拟文件系统
Decl / idDeclManager材质、实体、声音等命名声明的注册、惰性解析和复用层
.resources带索引的资源容器,不等于操作系统目录或 Classic WAD
idRenderWorld游戏侧更新实体、灯、area 和可见性所用的场景定义接口
idRenderSystem初始化渲染管理器、消费 command buffers 并驱动 GPU 的接口
viewDef一次 view 的前端参数及相机/场景上下文
renderEntityDef / renderLightDefRenderWorld 中实体与灯的呈现状态,不是 gameplay entity 本身
command bufferDraw/前端生成的渲染命令流,后端在受控边界消费
area / portal地图空间分区及其连接,用于可见性、交互和声音路径
PVSPotentially Visible Set;在相关路径中表示潜在可见集合,不等于最终 draw 列表
Interaction灯光与实体表面的配对及缓存数据,供后续光照绘制使用

资源证据见 FileSystem.cpp:2780-2844 与 DeclManager.cpp:1130-1164 DeclManager.cpp:2365-2404;渲染接口与命令缓冲见 RenderWorld.h:273-335 和 RenderSystem.h:265-283。详见文件声明、渲染架构与可见性光照。

实体、脚本与运动#

术语本 Wiki 中的含义
entityDef / idDict从声明或 map entity 取得的键值参数集合,可继续选择 C++ 类和脚本对象
idEntityDOOM 3 游戏实体基类,连接 think、事件、物理、动画和 Present
dormant降低非活动实体模拟/呈现工作的状态机制,不等于销毁
idThread脚本 VM 上协作式执行的线程对象,不是操作系统线程
idClip / idClipModel游戏层空间索引与碰撞查询对象
collision model / CMneo/cm 管理的碰撞几何与查询,不等同于可视 render model
team主实体及绑定部件的组合运动单位,有专门的内部 clip 禁用和受阻恢复流程
animator channel动画混合通道;本实现有 5 个 channel,每个最多混合 3 项
jointMods对动画骨架 joint 的修改/覆盖数据,Walk IK 等路径会写入
AASArea Awareness System,供 AI area 与路由查询使用的导航数据和运行时

脚本协作线程见 Script_Thread.cpp:544-555 Script_Thread.cpp:659-688,Clip 链接与查询见 Clip.cpp:630-660 Clip.cpp:1141-1207,动画与 AAS 的精确条件见动画、IK 与 AI 导航。实体生命周期见实体与地图,脚本 VM 见事件与脚本。

持久化与网络#

术语本 Wiki 中的含义
savegame通过对象登记和序列化恢复游戏对象图的持久化格式
idSerializer位级读写辅助层,可被网络等路径复用;不自动提供 savegame 对象恢复
render demo记录并重放 render/sound 命令的演示,不是完整游戏状态快照
snapshothost 向 client 发送的游戏状态视图,可按已确认 base 做 delta
base / ack某 peer 已确认的快照基线及确认信息,用于后续 delta 和重发管理
lobby管理 peers、可靠消息和快照传输的会话传输/成员关系层
prediction keyclient 用来识别预测生成实体的键;本快照匹配后的完整接管代码未启用
PVS handle / visMask网络路径中的可见性句柄与实体掩码字段;当前实体掩码均为 ~0U,不能据此声称已按 PVS 过滤复制

对象图恢复见 gamesys/SaveGame.cpp:162-193,render demo 边界见持久化页,快照和预测限制见网络页及其就近源码引用。

UI、音频与 Classic#

术语本 Wiki 中的含义
windowDef原生 .gui 的顶层窗口定义,由 idWindow 解析
SWF本引擎实现的 Flash 资源/时间线/ActionScript 子集运行时,不是完整 Flash 兼容层
BSWFgenerated/ 下的 SWF 二进制缓存,带格式版本和源时间校验
native function注册给 SWF 脚本调用的 C++ 函数,例如 updateMenuDisplay
sound shader描述样本列表、循环、空间化和音量等参数的声明
emittersound world 中持有一个或多个逻辑 channel 的发声器
逻辑 channel记录 shader、样本和起止时间的播放状态;失去硬件 voice 后仍可存在
hardware voice实际提交 XAudio2 buffers 的 voice;其停止和回收具有异步边界
.idwav含格式、amplitude 和音频 buffers 的生成样本缓存
Globals / ::gClassic 每个玩家的经典 DOOM 全局状态,由 DoomLib::SetPlayer 选择
DoomInterface宿主驱动 Classic Startup/Poll/Tic/Frame/Shutdown 的桥接对象

GUI 与 SWF 证据见 UserInterface.cpp:316-391 和 SWF_Load.cpp:130-144;逻辑/硬件声音分离见 snd_emitter.cpp:154-165 snd_emitter.cpp:758-813;Classic 玩家状态与桥接见 doomlib.cpp:140-154 doominterface.cpp:68-127。详见GUI/SWF、音频和DOOM Classic。

返回总目录或架构总览。