文章摘要
1996年发布的《雷神之锤》面临三大技术变革:3D显卡兴起、互联网发展及操作系统更迭。微软推动Windows 95/NT取代DOS,id Software创新性地开发了同时兼容DOS和Windows的quake.exe单文件程序,并利用DJGPP编译器实现32位寻址,还能在Windows 95下调用更优的TCP/IP协议栈。
文章总结
《quake.exe如何实现TCP/IP协议栈》
1996年6月发布的《雷神之锤》在其生命周期中经历了三次技术浪潮冲击。除了3D硬件加速卡的兴起和互联网的发展,操作系统更迭使游戏开发者陷入两难境地。
随着微软力推Windows 95和Windows NT,传统的MS-DOS系统逐渐被取代。1996至1997年间,DOS市场份额骤降50%。暴雪北方等开发商选择全力投入Windows 95平台开发《暗黑破坏神》等独占游戏,而id Software则另辟蹊径,打造了能同时运行在DOS和Windows系统的quake.exe单一程序文件。
技术实现亮点: 1. 跨平台编译技术 quake.exe本质是DOS可执行文件,但通过DJGPP编译器(替代DOOM时代的Watcom)实现了Alpha服务器上的交叉编译。其核心在于DJGPP的DPMI(DOS保护模式接口)客户端能同时兼容DJGPP和Windows 95的DPMI服务端。
- 网络协议支持差异
- DOS环境:仅支持通过PDIPX.EXE加载IPX协议(需额外TSR程序),TCP/IP协议因缺乏原生栈支持几乎不可用
- Windows 95环境:通过Mpath公司的"Chunnel"技术桥接至系统自带的Winsock协议栈
- Chunnel技术解析 这套由Mpath开发的专有系统包含多个组件:
- qlaunch.exe:主加载程序
- quakeudp.dll:核心桥接模块(对接wsock32.dll)
- genvxd.dll:虚拟设备驱动管理器
- mgenvxd.vxd:通过中断0x48实现DOS与Win32通信
技术演进: 1996年12月后,id Software放弃DOS版本,推出的winquake.exe等后续版本直接调用Windows的wsock32.dll,这套复杂的技术方案就此退出历史舞台。
(注:文中保留了关键技术人员访谈、技术细节和时间节点,删减了部分开发者轶事和次要技术描述)
评论总结
总结评论内容:
- 关于英法海底隧道命名来源的讨论
- 观点:隧道命名可能受到同期其他工程成就的启发
- 引用:"The British guy named Henry might have named it after another feat of engineering"(afandian)
- 引用:"I didn't work on the Chunnel. That was mainly a British guy named Henry"(afandian)
- 对Windows 95网络功能的观察
- 观点:Windows 95内置TCP/IP功能影响了第三方软件市场
- 引用:"this is win95 where they shipped it inside the os and put some company out of business"(sroussey)
- 早期计算机技术的个人经历分享
- 观点:作者分享了早期DIY计算机外设的经历
- 引用:"I learned to solder as a pre-teen so I could make a nullmodem"(ggambetta)
- 引用:"I learned that resistors were a thing when I made a parallel port sound card"(ggambetta)
- 对Windows 95虚拟化技术的讨论
- 观点:Windows 95的虚拟x86模式与现代虚拟机概念不同
- 引用:"Virtual x86 mode had little to do with what we nowadays think of when someone says 'virtual machine'"(nikanj)
- 对DJGPP开发历史的探讨
- 观点:DJGPP主要是由DJ Delorie个人开发,对其贡献表示赞赏
- 引用:"DJGPP was always open source so I bet he got some contributors"(skrebbel)
- 引用:"DJGPP was spectacularly good back in the day"(skrebbel)