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
Not sure how much I missed but: Anyone else been watching it?
New
New
First poster: bot
Already in an Xbox developer program and looking for the GDKX or related resources to build and publish to Xbox consoles? GDKX (confiden...
New
AstonJ
Pretty incredible - and I think it gives a good glimpse of what the next gen (PS6 etc) will be able to pull off with ease: ...
New
New
dev232
Installed Mac Ports on OSX High Sierra sudo port install gcc11 libsdl2 openssl glfw libsdl2_gfx libsdl2_image libsdl2_mixer libsdl2_net...
New
ksspeedstar
For about two weeks we have had the problem that Google / Android are rejecting apps for updates with the following statement: We found...
New
grlnwrld
Founder, Barcelonam Spain I am looking for web game devs with experience in Javascript / React and backend (Dynamo/GraphQL) for a Gamifi...
New
bic
Hello everybody :slight_smile: I’m making a tool with the goal to help creating branching dialogues for game development. I want to make...
New
CommunityNews
Open-source implementation of the classic GTA engine now running directly in your browser. Experience the reVC technology demo on DOS.Zon...
New

Other popular topics Top

PragmaticBookshelf
Brace yourself for a fun challenge: build a photorealistic 3D renderer from scratch! In just a couple of weeks, build a ray tracer that r...
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
AstonJ
This looks like a stunning keycap set :orange_heart: A LEGENDARY KEYBOARD LIVES ON When you bought an Apple Macintosh computer in the e...
New
PragmaticBookshelf
Use WebRTC to build web applications that stream media and data in real time directly from one user to another, all in the browser. ...
New
PragmaticBookshelf
Author Spotlight Rebecca Skinner @RebeccaSkinner Welcome to our latest author spotlight, where we sit down with Rebecca Skinner, auth...
New
New
husaindevelop
Inside our android webview app, we are trying to paste the copied content from another app eg (notes) using navigator.clipboard.readtext ...
New
PragmaticBookshelf
Author Spotlight: VM Brasseur @vmbrasseur We have a treat for you today! We turn the spotlight onto Open Source as we sit down with V...
New
PragmaticBookshelf
Author Spotlight: Peter Ullrich @PJUllrich Data is at the core of every business, but it is useless if nobody can access and analyze ...
New
PragmaticBookshelf
Use advanced functional programming principles, practical Domain-Driven Design techniques, and production-ready Elixir code to build scal...
New