{"id":13436854,"url":"https://github.com/cristicbz/rust-doom","last_synced_at":"2025-05-15T08:05:46.351Z","repository":{"id":20914487,"uuid":"24202335","full_name":"cristicbz/rust-doom","owner":"cristicbz","description":"A Doom Renderer written in Rust.","archived":false,"fork":false,"pushed_at":"2024-01-29T16:03:40.000Z","size":18428,"stargazers_count":2361,"open_issues_count":7,"forks_count":100,"subscribers_count":44,"default_branch":"master","last_synced_at":"2025-04-14T13:07:38.026Z","etag":null,"topics":["doom","game","glium","glutin","opengl","rendering","retro","rust","wad"],"latest_commit_sha":null,"homepage":null,"language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cristicbz.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":"cristicbz"}},"created_at":"2014-09-18T19:40:35.000Z","updated_at":"2025-04-13T16:11:51.000Z","dependencies_parsed_at":"2024-09-29T03:00:52.841Z","dependency_job_id":"e7069b4e-996f-43da-a42b-91a177e6e2b7","html_url":"https://github.com/cristicbz/rust-doom","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cristicbz%2Frust-doom","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cristicbz%2Frust-doom/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cristicbz%2Frust-doom/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cristicbz%2Frust-doom/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cristicbz","download_url":"https://codeload.github.com/cristicbz/rust-doom/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254301431,"owners_count":22047904,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["doom","game","glium","glutin","opengl","rendering","retro","rust","wad"],"created_at":"2024-07-31T03:00:52.580Z","updated_at":"2025-05-15T08:05:46.298Z","avatar_url":"https://github.com/cristicbz.png","language":"Rust","funding_links":["https://github.com/sponsors/cristicbz"],"categories":["Applications","Rust","应用","应用 Applications","应用程序 Applications"],"sub_categories":["Games","游戏","游戏 Games"],"readme":"[![Build Status](https://travis-ci.org/cristicbz/rust-doom.svg?branch=master)](https://travis-ci.org/cristicbz/rust-doom)\n\nRust Doom\n=========\n\nA little Doom 1 \u0026 2 Renderer written in [Rust](https://github.com/rust-lang/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.\n\nThe code is mostly based on the endlessly useful [Doom Wiki](http://doomwiki.org) and the [Unofficial Doom Specs](http://www.gamers.org/dhs/helpdocs/dmsp1666.html). 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.\n\n*Note: You need a WAD file to try this. Get a [shareware one](http://www.pc-freak.net/files/doom-wad-files/Doom1.WAD) if you don't own the game.*\n\n## Screenshots\n![Zig-zag Screenshot](assets/screenshots/readme2.png)\n![Doom 2 Screenshot](assets/screenshots/readme1.png)\n\n### Build Instructions\nRust 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](https://www.rust-lang.org/downloads.html).\n\nTo build, run [cargo](http://crates.io) in the project's root (where Cargo.toml is):\n```\ncargo build --release\n```\n\nNote 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](http://distro.ibiblio.org/pub/linux/distributions/slitaz/sources/packages/d/doom1.wad) 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.\n\nCopy the WAD file to the repo root (where Cargo.toml is). Then, to run:\n```\ntarget/release/rs_doom --iwad your_wad_file.wad\n```\n\nWithout any flags it will try to load the first level of 'doom1.wad'. You can\nspecify which level to load, FOV and resolution preferences using the flags. Run\nwith '-h' for a list of options.\n\n## Goals\n_(subject to change)_\n\n* **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](http://doom.wikia.com/wiki/Slime_trail)) don't show up.\n* **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.\n* **Free flying camera.** Mouse \u0026 keyboard control for full 6 degrees of freedom.\n* **100% safe code.** No pesky `unsafe` blocks anywhere.\n\n## Todo\n* [x] BSP -\u003e convex subsector conversion.\n* [x] Flats (floors \u0026 ceiling) texture mapping.\n* [x] Wall texture mapping.\n* [x] Wall texture alignment.\n* [x] Scrolling walls.\n* [x] Animated flats.\n* [x] Animated walls.\n* [x] Lighting effects (flickering, flashing, glow etc.)\n* [x] Sky rendering.\n* [x] Sprite rendering.\n* [x] Correct player movement (falling etc.)\n* [x] Player-flat collisions.\n* [x] Player-wall collisions.\n* [ ] Sprite-player and sprite-sprite collisions.\n* [ ] Sprite animations.\n* [ ] BSP frustum culling.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcristicbz%2Frust-doom","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcristicbz%2Frust-doom","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcristicbz%2Frust-doom/lists"}