上世纪90年代中期堪称个人电脑史上变革最为剧烈的时期。3D加速卡的问世、从纯文本界面的DOS系统向图形化Windows 95的过渡,以及互联网的兴起——这些变革几乎同时发生。这种快速变迁的格局给游戏开发者带来了巨大挑战,他们必须考虑为DOS、Windows 95或双平台开发游戏。

法比安·桑格拉德(Fabien Sanglard)在技术解析中指出,初代《雷神之锤》(Quake)如何实现了TCP/IP协议支持,并成为当时极少数采用同一可执行文件即原生支持双操作系统的游戏。同期诸多作品如《辐射》(Fallout)、《侠盗猎车手》(Grand Theft Auto)与《真人快打3》(Mortal Komba 3)均需分别提供DOS和Windows 95版本的可执行文件。然而id Software公司坚持让《雷神之锤》采用统一代码库,并要求游戏支持互联网通信协议TCP/IP。当时通过互联网进行多人联机尚属创新概念,真正的多人游戏通常仅限于家庭或办公局域网环境。
要同时满足这两项技术要求并非易事。在游戏开发时期,DOS系统已显老态,需要大量技术突破才能充分发挥当时硬件性能,尤其是突破640KB内存限制。为突破DOS局限,游戏开始搭载DPMI扩展程序,例如Watcom公司的DOS/4GW或CWSDPMI。这些扩展程序提供标准化内存接口、多任务处理等功能,实质上相当于微型内核,可视为DOS的替代方案。通常游戏会搭载特定的DPMI服务器并作为其唯一客户端。
在《雷神之锤》开发过程中,id公司决定从《毁灭战士》(Doom)使用的专有Watcom编译器转向开源djgpp工具链,以期简化跨平台开发。值得一提的是,该游戏甚至曾移植到DEC Alpha架构。不同于常规方案,id要求djgpp工程师确保其DPMI客户端同时支持Windows 95内置的DPMI服务器与CWSDPMI。
核心矛盾在于:虽然DPMI是标准规范,但其技术规范直到90年代末才最终定型。这意味着客户端软件通常只能适配特定服务器。但djgpp团队成功攻克难题,正如微软资深内核工程师雷蒙德·陈(Raymond Chen)所言:“程序在非原生扩展程序环境下仍能稳定运行,这个现象既令人惊叹又理所当然——取决于你从哪个角度看待。”
《雷神之锤》虽然内置了原生TCP/IP支持,但由于跨平台需求,必须找到与Windows 95的Winsock传输层交互的方案。加之游戏内匹配/服务器浏览器在当时尚属新兴概念,id公司与Mpath Interactive合作,将其Mplayer匹配软件集成至游戏中,实现了双重要求的同步突破。
Mplayer软件包含两大模块:可自动检测已安装兼容游戏并显示游戏房间的“Gizmo”浏览器,以及负责与Windows的TCP/IP协议栈通信的“Chunnel”通道组件。为完善跨平台兼容性,《雷神之锤》还搭载了Mpath公司的genvxd.dll虚拟设备驱动,该驱动能将采用BSD套接字函数调用的DOS网络功能转译为Windows 95的Winsock接口。至此,《雷神之锤》终于实现在DOS与Windows双平台的无缝运行,无需分别安装不同版本。



