本页目录

毁灭公爵3D 源代码(Duke Nukem 3D v1.5)

dukenukem3d · videogamepreservation/dukenukem3d

这是 3D Realms 于 2003 年 4 月发布的《毁灭公爵3D》(Duke Nukem 3D)v1.5 CD 版完整源代码,以 C++ 编写,并按 GPL 授权。README 说明游戏数据文件仍归 3D Realms 版权所有,不得再分发,仅可用于个人娱乐或教育用途;具体构建步骤需...

动作游戏 射击 自研引擎 C 音频系统 渲染技术 中级
★ Stars 331 Forks 80 License 未明确 更新 2026-11-07

国内开发环境适配

Windows
官方声明支持
Linux
官方声明支持
macOS
官方声明支持
引擎 / 框架:自研引擎 暂无中文教程标记 未标记站长实测
国内编译需准备 CMake、SDL3、OpenAL、OpenGL 与 FFmpeg 5.1+ 开发包,部分发行版可能提供 LGPL-only 的 FFmpeg 构建;Linux 明确仅支持 GCC。游戏数据需自备(Steam/GOG/原 CD),并需将 AvP 数据文件与目录名全部改为小写;依赖下载与 Windows 构建细节待核验。

中文项目介绍

NakedAVP 是把 2000 年的《异形大战铁血战士 经典版》(Aliens Versus Predator Gold)搬到现代系统上的非官方移植项目。原作由 Rebellion Developments 开发、Fox Interactive 发行;本项目则以 icculus 早年发布的 Linux / macOS 移植代码为基础,把平台层迁移到 SDL3,并面向 Linux、macOS 与 Windows 三个平台。

需要先说明的是,这并非一个「开箱即玩」的完整游戏发行版:仓库只提供引擎源码与移植层,运行前必须自备原版游戏数据。README 中明确写着「Previously missing features are still missing. Multiplayer, etc.」——多人对战等在原移植中就没有完成的功能,这里依旧没有实现。

如果把项目拆开来看,它由三部分构成:一是当年游戏自身的引擎逻辑,二是 icculus 移植带来的跨平台外壳,三是本项目新引入的 SDL3 与 FFmpeg 依赖。对外部使用者来说,理解这三层的关系,比记住构建命令更重要。

核心功能

现代平台上的原生运行

不再依赖老旧的系统接口,改用 SDL3 处理窗口、输入等平台相关事务,可在当前的 Linux、macOS 与 Windows 环境中编译运行。

影片播放支持

只要原版游戏的影片文件存在,就能播放全动态视频。全屏过场动画使用 Bink(`.bik`),游戏内的视频屏幕使用 Smacker(`.smk`),两者统一交给 FFmpeg 解码。

不捆绑任何专有内容

仓库既不附带游戏资源,也不分发 Bink / Smacker 的 SDK 二进制,避免把闭源素材混进源码树。

保留原版数据校验手段

README 附录列出了 Gold 版的文件 MD5 清单,覆盖 `avp_huds/*.rif`(HUD 资源)、`avp_rifs/*.rif`(关卡/剧本)、`fastfile/*.ffl`(声音、贴图包)等,可用来核对安装是否完整。

明确的边界

多人模式等缺失功能没有被补上,项目也没有声称补上。

技术架构分析

技术要点

项目使用 C 语言编写,构建系统为 CMake,运行时依赖 SDL3、OpenAL 与 OpenGL,影片解码依赖 FFmpeg。几个容易被忽略的细节:

  • FFmpeg 只用于 Bink 与 Smacker 影片解码,不参与游戏其它子系统;因此缺少影片文件时,游戏本体仍应能启动。
  • FFmpeg 开发包必须提供 libavformat、libavcodec、libavutil、libswscale、libswresample 五个组件,且版本要求 5.1 或更新。
  • CMake 配置阶段优先使用 pkg-config 查找依赖,同时也支持常规的头文件/库目录探测方式,便于在 pkg-config 不完善的平台上构建。
  • 若发行版政策或授权要求,可使用仅含 LGPL 组件的 FFmpeg 构建。
  • 在 Linux 上官方只支持 GCC 编译。

构建与运行

典型的构建流程非常常规:

$ cd <avp-source-code>
$ mkdir build
$ cd build
$ cmake ..
$ make

顺利的话会产出名为 avp 的可执行文件。前提是系统已安装 CMake、SDL3、OpenAL、OpenGL 以及上述 FFmpeg 开发库。

运行方面,游戏数据是必需的,合法获取途径包括 GOG、Steam 上的《Aliens versus Predator Classic 2000》,或原版 CD 安装介质。数据准备有两条硬性要求:

  1. 所有游戏数据、文件与目录名必须改成小写,否则引擎无法定位资源。
  2. 要么把 avp 可执行文件复制到游戏数据目录中,要么通过 AVP_DATA 环境变量指向数据目录。

平台相关的数据目录约定为:macOS 使用 /Users/$USER/Library/Application Support/AliensVsPredator/;GNU/Linux 及其他 *NIX / BSD 使用 /usr/local/games/AliensVsPredator。本地用户设置则单独保存在 ~/.avp。

补充说明

适用人群与学习建议

这个仓库更适合对「老游戏源码移植」感兴趣的开发者:可以观察一份 2000 年代的 C 引擎如何被剥离平台相关代码、替换为 SDL3,以及如何把 FFmpeg 这类现代解码库嵌入旧的影片播放路径。阅读时建议先关注平台抽象层与构建脚本,再回头看 FFmpeg 的接入点,最后对照附录 MD5 清单理解原版资源目录的组织方式。

如果你只是想直接玩游戏,需要先确认能合法获得原版数据,并接受多人模式缺失这一现状。

开源许可证与版权说明

许可证标识:未明确。源码、资源与依赖许可可能不同,请以官方仓库为准。本站仅做索引,不托管源码。

相似项目