英文原文正文为项目原始 README(英文),本站后续会翻译为中文,当前仅剔除图片与无关章节并统一排版。
锈蚀厄运
一个用 Rust 编写的小型 Doom 1 & 2 渲染器。大部分代码是在我大约六年前学习这门语言时编写的,所以它可能不是最好的 Rust 代码示例!欢迎提交 PR。
代码主要基于非常有用的 Doom Wiki 和 非官方 Doom 规格。它 不是 将原始 Doom C 源码移植到 Rust;我一直尽力使代码尽可能符合 Rust 习惯用法,并且很久没有看过原始代码了。
注意:你需要一个 WAD 文件来尝试此程序。如果你没有游戏,可以获取一个 共享版。
截图
构建说明
Rust Doom 应该总能在最新稳定版的 Rust 上构建(也在 beta 和 nightly 上测试过),你可以使用 Rust 网站 上描述的任何方法安装。
要构建,在项目根目录(有 Cargo.toml 的地方)运行 cargo:
cargo build --release
请注意,您需要一个 WAD 文件(其中包含游戏的关卡和艺术资源)。如果您拥有该游戏(或者愿意花几块钱购买),您可以在游戏文件夹中找到 WAD 文件。如果没有,您可以使用网络上流传的共享版 WAD。或者,尽管我不了解相关情况,您也许可以在互联网上一些不太正当的地方免费获取原版。
将 WAD 文件复制到仓库根目录(Cargo.toml 所在位置)。然后,可以运行:
target/release/rs_doom --iwad your_wad_file.wad
没有任何标志时,它将尝试加载 'doom1.wad' 的第一级。您可以使用标志指定加载的关卡、视野(FOV)和分辨率偏好。运行 '-h' 获取选项列表。
目标
(可能会更改)
- 现代 OpenGL 3 渲染器。 没有即时模式操作:全部是 VBO 和着色器。与某些 GL 移植版本不同,地板实际上是从 BSP 计算出的凸多边形渲染的。这样做的缺点(或根据你的观点看是优点)是一些视觉故障(如 slime trails)不会出现。
- 正确的 256 色调色板。 使用原始调色板和色彩映射以复制原始光照效果(大多数情况下你会注意到物体在可见步骤中变暗,并且变暗的同时颜色也更灰)。在片元着色器中进行 256 色调色板查找是极具时代感的。
- 自由飞行摄像机。 鼠标和键盘控制,实现完整的六自由度。
- 100% 安全代码。 任何地方都没有讨厌的
unsafe代码块。
待办事项
- BSP -> 凸子区转换。
- 地板和天花板纹理映射。
- 墙面纹理映射。
- 墙面纹理对齐。
- 可滚动墙面。
- 动画地板。
- 动画墙面。
- 光照效果(闪烁、闪光、光晕等)。
- 天空渲染。
- 精灵渲染。
- 正确的玩家移动(下落等)。
- 玩家与地板碰撞。
- 玩家与墙壁的碰撞。
- 精灵与玩家以及精灵与精灵的碰撞。
- 精灵动画。
- BSP视锥体裁剪。
本站来源与版权声明
- 本文标题:rust-doom - 一个用 Rust 编写的 Doom 渲染器
- 本文链接:https://cn121.com/gameengine/cristicbz-rust-doom.html
- 原项目:cristicbz/rust-doom 版权归原作者 cristicbz 及贡献者所有
- 收录信息:本站于 2026-10-18 收录本项目,本页所列协议与仓库指标均为收录当时的状态;该日期之后原项目的版本更新与协议变更,本页不作同步。
- 开源协议:收录时本项目采用 Apache-2.0(查看 LICENSE 原文),本站转载其原始文档(未改动文字,仅剔除图片与无关章节);使用、修改、分发请以该仓库 LICENSE 原文为准。本站对原文仅作排版与图片地址适配, 并保留原项目的 NOTICE 与署名要求。
- 站点出处:本文首发于 OneTwoOne,收录自 GitHub 开源项目 cristicbz/rust-doom。
- 内容说明:本页正文为原项目 README 原文(英文),本站后续会翻译为中文(当前尚未译出),仅剔除了图片与赞助等无关章节、并把相对链接改为绝对地址;页首简介为机器翻译自仓库描述。
- 引用声明:商业转载、第三方聚合或 AI 检索训练引用时,请务必保留以上来源出处、本文永久链接,以及原项目的版权声明与许可信息。
- 下架通道:若原项目此后变更或收紧了许可协议、或作者/权利人认为本站的收录方式(译文、排版适配、简介翻译等)超出其授权范围,请通过 xyd3302001@163.com 发送下架通知,并附上项目地址与本页链接。本站核实后将第一时间删除本页内容,或改为不复制原文的目录性收录;署名更正等其他要求可一并提出。