Open-Awesome
CategoriesAlternativesStacksSelf-HostedExplore
Open-Awesome

© 2026 Open-Awesome. Curated for the developer elite.

TermsPrivacyAboutGitHubRSS
  1. Home
  2. Rust
  3. rust-doom

rust-doom

Apache-2.0Rust

A Doom 1 & 2 renderer written in Rust, featuring a modern OpenGL 3+ pipeline and 100% safe code.

GitHubGitHub
2.4k stars106 forks0 contributors

What is rust-doom?

Rust Doom is a renderer for Doom 1 and 2 written entirely in Rust, implementing the game's graphics pipeline from scratch using modern OpenGL. It solves the problem of recreating classic Doom visuals with contemporary, safe code practices, avoiding direct ports of the original C source.

Target Audience

Rust developers interested in graphics programming, game engine enthusiasts, and those learning low-level rendering techniques through a well-known retro game.

Value Proposition

Developers choose Rust Doom for its 100% safe Rust implementation, modern OpenGL 3+ approach, and educational value as a clean-room reimplementation that avoids legacy code pitfalls.

Overview

A Doom Renderer written in Rust.

Use Cases

Best For

  • Learning Rust through graphics programming projects
  • Studying BSP-based rendering techniques
  • Exploring retro game engine architecture
  • Implementing modern OpenGL in a constrained palette environment
  • Building safe, idiomatic Rust game prototypes
  • Understanding Doom's rendering pipeline without original source code

Not Ideal For

  • Teams needing a complete, production-ready Doom engine with features like multiplayer, mod support, or full gameplay mechanics
  • Developers looking for a plug-and-play solution to play Doom without managing external WAD files or complex build setups
  • Projects prioritizing extensive documentation and active community support over educational value

Pros & Cons

Pros

Modern OpenGL Pipeline

Uses VBOs and shaders instead of immediate mode, rendering floors as convex polygons from BSP data for a contemporary graphics approach, as detailed in the goals.

Accurate Visual Reproduction

Implements the original 256-color palette and colormaps via fragment shader lookups, replicating classic lighting effects authentically, based on README descriptions.

100% Safe Rust Code

Contains no unsafe blocks, emphasizing Rust's memory safety guarantees and idiomatic practices, as highlighted in the project goals.

Educational Clean-Room Design

Built from scratch using Doom Wiki and specs rather than porting C code, making it a valuable resource for learning rendering techniques and Rust.

Cons

Incomplete Gameplay Features

Missing key elements like sprite-player collisions, sprite animations, and BSP frustum culling, as admitted in the todo list, limiting it as a full game engine.

External Asset Dependency

Requires users to provide their own WAD file from the original game, adding setup complexity and potential sourcing hurdles, noted in the build instructions.

Potentially Suboptimal Code

Author admits it was written while learning Rust and might not be the best example, indicating possible inefficiencies or non-idiomatic patterns in the codebase.

Frequently Asked Questions

Quick Stats

Stars2,413
Forks106
Contributors0
Open Issues5
Last commit2 years ago
CreatedSince 2014

Tags

#doom#opengl#game#retro#rendering#rust#graphics-rendering#learning-project#game-engine#retro-gaming

Built With

C
Cargo
R
Rust
O
OpenGL 3

Included in

Rust56.6k
Auto-fetched 5 hours ago

Related Projects

ArnisArnis

Generate any location from the real world in Minecraft with a high level of detail.

Stars17,093
Forks1,419
Last commit7 days ago
cityboundcitybound

A work-in-progress, open-source, multi-player city simulation game.

Stars8,140
Forks362
Last commit3 years ago
LudusaviLudusavi

Backup tool for PC game saves

Stars5,996
Forks124
Last commit26 days ago
GitTypeGitType

A CLI code-typing game that turns your source code into typing challenges

Stars1,520
Forks42
Last commit1 day ago
Community-curated · Updated weekly · 100% open source

Found a gem we're missing?

Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.

Submit a projectStar on GitHub