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 ![]()
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:
- Initialize the project
- Bring the first picture
- Main menu and settings
- Keyboard input (incl. controller support) and sound
- We can see, we can walk, we can shoot (Dev room)
- Level 1 - ready - fight
- Enemies everywhere
- Now I can kill and interact with the environment
- Rest of the levels
- German censorship (as it was in the 90s)
- 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.
Popular Game Dev topics
Other popular topics
Categories:
Sub Categories:
Popular Portals
- /elixir
- /rust
- /wasm
- /ruby
- /erlang
- /phoenix
- /keyboards
- /python
- /js
- /rails
- /security
- /go
- /swift
- /vim
- /clojure
- /java
- /emacs
- /haskell
- /svelte
- /typescript
- /onivim
- /kotlin
- /c-plus-plus
- /crystal
- /tailwind
- /react
- /gleam
- /ocaml
- /elm
- /flutter
- /vscode
- /ash
- /html
- /deepseek
- /opensuse
- /zig
- /centos
- /php
- /scala
- /react-native
- /lisp
- /sublime-text
- /textmate
- /nixos
- /debian
- /agda
- /deno
- /django
- /kubuntu
- /arch-linux
- /nodejs
- /spring
- /ubuntu
- /revery
- /manjaro
- /julia
- /lua
- /diversity
- /markdown
- /slackware









