AnnoDomine

AnnoDomine

Port Wolfenstein3D (MS-DOS, C) to Rust (Cross-OS, Controller-Support)

Hi there.

First of all, my name is Dominic. I am a software developer from Germany.

This project is about converting/porting id Software’s Wolfenstein 3D from C into Rust.

The GitHub repository is public: GitHub - AnnoDomine/wolf3d: The original open source release of Wolfenstein 3D · GitHub
There you can follow the progress step by step.


Vision

I am relatively new to Rust and am becoming more and more a fan of it.
As I like dev videos on YouTube, I saw a lot of “code-review” videos of the Doom code.
But Doom is not the only masterpiece from id. They have created tons of awesome games within the Wolfenstein series, and especially Wolfenstein 3D.
I thought about diving deep into the Wolfenstein 3D C code, extracting every single line and definition, comparing 1st- and 3rd-party libs, and rewriting Wolfenstein 3D in Rust.

What can I say, from vision to decision :slight_smile:

Tech Stack

I do not think I have to talk a lot about the tech stack. I mean, we have C as the base language and Rust as the target language.
So our tech stack is:

  • C
  • Rust

Roadmap

Basically, there is no specific roadmap. There is more of a goal list which defines each single major integration:

  1. Initialize the project
  2. Bring the first picture
  3. Main menu and settings
  4. Keyboard input (incl. controller support) and sound
  5. We can see, we can walk, we can shoot (Dev room)
  6. Level 1 - ready - fight
  7. Enemies everywhere
  8. Now I can kill and interact with the environment
  9. Rest of the levels
  10. German censorship (as it was in the 90s)
  11. Thoughts about the project, what I learned, and possible improvements

What’s next

I created this post to document the single steps. I do not know how often I will update this post and how often I can work on this project.

Where Next?

Popular Game Dev topics Top

New
First poster: bot
Sony Unveils ‘Spatial Reality Display’ with Eye-tracking for Glasses-free 3D Viewing. Sony recently unveiled Spatial Reality Display, a ...
New
New
First poster: Carter
HIGH-FIDELITY DIGITAL HUMANS IN MINUTES Bringing compelling real-time digital humans to life is incredibly challenging and time-consuming...
New
First poster: bot
SNKRX is an arcade shooter roguelite where you control a snake of heroes that automatically attack nearby enemies. Combine different hero...
New
AstonJ
https://www.powerlanguage.co.uk/wordle/ You have to start by entering a word (rather than just random characters) Here’s today’s (...
New
First poster: bot
Develop for Playdate. It’s yellow. It fits in your pocket. There’s a crank. It comes with 24 free games to get you started. Say hi to Pl...
New
New
New
m0dE
Modd.io is a collaborative game editor that runs in the browser. It’s like Figma for game dev. We made this engine low-code and multipla...
New

Other popular topics Top

PragmaticBookshelf
Machine learning can be intimidating, with its reliance on math and algorithms that most programmers don't encounter in their regular wor...
New
DevotionGeo
I know that these benchmarks might not be the exact picture of real-world scenario, but still I expect a Rust web framework performing a ...
New
Rainer
My first contact with Erlang was about 2 years ago when I used RabbitMQ, which is written in Erlang, for my job. This made me curious and...
New
AstonJ
In case anyone else is wondering why Ruby 3 doesn’t show when you do asdf list-all ruby :man_facepalming: do this first: asdf plugin-upd...
New
New
First poster: AstonJ
Jan | Rethink the Computer. Jan turns your computer into an AI machine by running LLMs locally on your computer. It’s a privacy-focus, l...
New
PragmaticBookshelf
Explore the power of Ash Framework by modeling and building the domain for a real-world web application. Rebecca Le @sevenseacat and ...
New
AstonJ
Curious what kind of results others are getting, I think actually prefer the 7B model to the 32B model, not only is it faster but the qua...
New
PragmaticBookshelf
Use advanced functional programming principles, practical Domain-Driven Design techniques, and production-ready Elixir code to build scal...
New
xiji2646-netizen
Woke up to this today: Claude Code’s complete source code exposed via npm source map. Not a snippet. All 512,000 lines. 1,900 TypeScript ...
New