All Projects → cristicbz → Rust Doom

cristicbz / Rust Doom

Licence: apache-2.0
A Doom Renderer written in Rust.

Programming Languages

rust
11053 projects
python
139335 projects - #7 most used programming language
GLSL
2045 projects

Projects that are alternatives of or similar to Rust Doom

Doomretro
The classic, refined DOOM source port. For Windows PC.
Stars: ✭ 349 (-82.96%)
Mutual labels:  game, retro, doom
Doomsday Engine
A portable, enhanced source port of Doom, Heretic and Hexen.
Stars: ✭ 175 (-91.46%)
Mutual labels:  game, doom, opengl
Flux
A real-time physically based rendering engine written in C++ and OpenGL
Stars: ✭ 171 (-91.65%)
Mutual labels:  game, opengl, rendering
Glumpy
Python+Numpy+OpenGL: fast, scalable and beautiful scientific visualization
Stars: ✭ 882 (-56.93%)
Mutual labels:  game, opengl, rendering
Hilo3d
Hilo3d, a WebGL Rendering Engine.
Stars: ✭ 123 (-93.99%)
Mutual labels:  game, rendering
Betterspades
BetterSpades, an Ace of Spades client targeted at low end systems (GL/ES 1.1). Runs on your grandmother's rig!
Stars: ✭ 112 (-94.53%)
Mutual labels:  game, opengl
Herebedragons
A basic 3D scene implemented with various engines, frameworks or APIs.
Stars: ✭ 1,616 (-21.09%)
Mutual labels:  opengl, rendering
Minijvm
Develop iOS Android app in java, Cross platform java virtual machine , the minimal jvm .
Stars: ✭ 127 (-93.8%)
Mutual labels:  game, opengl
Physics3d
A 3D physics engine
Stars: ✭ 101 (-95.07%)
Mutual labels:  opengl, rendering
Openage
Free (as in freedom) open source clone of the Age of Empires II engine 🚀
Stars: ✭ 10,712 (+423.05%)
Mutual labels:  game, opengl
Cute Deferred Shading
Cute little deferred shading implementation.
Stars: ✭ 129 (-93.7%)
Mutual labels:  opengl, rendering
Raz
Modern & multiplatform game engine in C++17
Stars: ✭ 161 (-92.14%)
Mutual labels:  opengl, rendering
Voxelman
Plugin-based client-server voxel game engine written in D language
Stars: ✭ 105 (-94.87%)
Mutual labels:  game, opengl
Teeworlds
A retro multiplayer shooter
Stars: ✭ 1,712 (-16.41%)
Mutual labels:  game, opengl
Tinyraycaster
486 lines of C++: old-school FPS in a weekend
Stars: ✭ 1,383 (-32.47%)
Mutual labels:  opengl, rendering
Tinyrenderer
A brief computer graphics / rendering course
Stars: ✭ 11,776 (+475%)
Mutual labels:  opengl, rendering
Diligentsamples
Sample projects demonstrating the usage of Diligent Engine
Stars: ✭ 138 (-93.26%)
Mutual labels:  opengl, rendering
Diligentengine
A modern cross-platform low-level graphics library and rendering framework
Stars: ✭ 2,142 (+4.59%)
Mutual labels:  opengl, rendering
Ore Infinium
Ore Infinium, Open Source multiplayer Terraria-inspired Sci-fi game, focused on technology, devices and researching. Written in Kotlin (JVM), LibGDX. Cross platform
Stars: ✭ 139 (-93.21%)
Mutual labels:  game, opengl
Rubeus
A cross platform 2D game engine written in C++ for beginners
Stars: ✭ 159 (-92.24%)
Mutual labels:  game, opengl

Build Status

Rust Doom

A little Doom 1 & 2 Renderer written in Rust. Mostly written while I was learning the language starting around 6 years ago, so it might not the best example of Rust code! PR-s are welcome.

The code is mostly based on the endlessly useful Doom Wiki and the Unofficial Doom Specs. It is not a port of the original Doom C source code into Rust; I've been doing my best to make the code as idiomatic as possible and have not looked at the original in a long time.

Note: You need a WAD file to try this. Get a shareware one if you don't own the game.

Screenshots

Zig-zag Screenshot Doom 2 Screenshot

Build Instructions

Rust Doom should always build on the latest stable version of Rust (but is also tested on beta and nightly), which you can install using any of the methods described on the Rust website.

To build, run cargo in the project's root (where Cargo.toml is):

cargo build --release

Note that you'll need a WAD file (which contains the game's levels and art assets). If you own the game (or are willing to buy it for a few quid/bucks), you'll find the WAD in your game folder. If not, you can use the shareware ones floating around on the interwebs. Or, though I would not know of such things, you may be able to obtain the originals for free in less.... savoury parts of the internet.

Copy the WAD file to the repo root (where Cargo.toml is). Then, to run:

target/release/rs_doom --iwad your_wad_file.wad

Without any flags it will try to load the first level of 'doom1.wad'. You can specify which level to load, FOV and resolution preferences using the flags. Run with '-h' for a list of options.

Goals

(subject to change)

  • Modern OpenGL 3+ renderer. No immediate mode shenanigans: it's all VBO-s and shaders. Unlike some GL ports, the floors are actually rendered as convex polygons computed from the BSP. The downside of this (or upside depending on your perspective) is that some visual glitches (like slime trails) don't show up.
  • Correct 256 color palette. Uses the original palette and colormaps to replicate the original lighting effects (mostly you'll notice things get darker in visible steps and they also get greyer as they get darker). Doing 256 color palette lookups in a fragment shader is wonderfully anachronistic.
  • Free flying camera. Mouse & keyboard control for full 6 degrees of freedom.
  • 100% safe code. No pesky unsafe blocks anywhere.

Todo

  • BSP -> convex subsector conversion.
  • Flats (floors & ceiling) texture mapping.
  • Wall texture mapping.
  • Wall texture alignment.
  • Scrolling walls.
  • Animated flats.
  • Animated walls.
  • Lighting effects (flickering, flashing, glow etc.)
  • Sky rendering.
  • Sprite rendering.
  • Correct player movement (falling etc.)
  • Player-flat collisions.
  • Player-wall collisions.
  • Sprite-player and sprite-sprite collisions.
  • Sprite animations.
  • BSP frustum culling.
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].