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

AstonJ
Anything stand out for anyone? A few live-streams out there:
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
AstonJ
I’ve been trying to get a PS5 for ages!! I’m on Amazon’s waiting list but haven’t heard anything from them. It’s the first PlayStation s...
New
CommunityNews
Nintendo Is Removing Switch Emulation Videos On Steam Deck. Recently, a video showcasing how well the Steam Deck can emulate the Nintend...
New
LoL_Sam
Hey everyone! My name is Sam and I represent Legends of Learning - a platform for game based learning in schools, and a marketplace for ...
New
GiuseS84
Hi guys, I’ve developed a free game on Google Play Store, could you tell me what you think? The game is called “Structures: a building p...
New
New
RobertRichards
Hair Salon Games for Girls Fun Girls Hair Saloon game is mainly developed for kids. This game allows users to select virtual avatars to ...
New
bozigame
Hello Friends. First of all, I am very happy to share my excitement with you. After months of hard work, I have released my first game. I...
New
grearch
So l dont know how many of you know dragon ball but this is a hypothetical game that has to do with the dragon ball series.I want to tell...
New

Other popular topics Top

AstonJ
If it’s a mechanical keyboard, which switches do you have? Would you recommend it? Why? What will your next keyboard be? Pics always w...
New
PragmaticBookshelf
Free and open source software is the default choice for the technologies that run our world, and it’s built and maintained by people like...
New
PragmaticBookshelf
Write Elixir tests that you can be proud of. Dive into Elixir’s test philosophy and gain mastery over the terminology and concepts that u...
New
dimitarvp
Small essay with thoughts on macOS vs. Linux: I know @Exadra37 is just waiting around the corner to scream at me “I TOLD YOU SO!!!” but I...
New
PragmaticBookshelf
Tailwind CSS is an exciting new CSS framework that allows you to design your site by composing simple utility classes to create complex e...
New
mafinar
This is going to be a long an frequently posted thread. While talking to a friend of mine who has taken data structure and algorithm cou...
New
PragmaticBookshelf
Author Spotlight Rebecca Skinner @RebeccaSkinner Welcome to our latest author spotlight, where we sit down with Rebecca Skinner, auth...
New
AnfaengerAlex
Hello, I’m a beginner in Android development and I’m facing an issue with my project setup. In my build.gradle.kts file, I have the foll...
New
PragmaticBookshelf
Overarching tutorial for Python beginner and intermediate developers that teaches web development with the Flask framework. Miguel Gr...
New
PragmaticBookshelf
Fight complexity and reclaim the original spirit of agility by learning to simplify how you develop software. The result: a more humane a...
New