[HN Gopher] Show HN: Iron-Wolf - Wolfenstein 3D source port in Rust
___________________________________________________________________
Show HN: Iron-Wolf - Wolfenstein 3D source port in Rust
The goal is to have a pixel, mod-friendly perfect recreation of
Wolfenstein 3D in Rust.
Author : ragnaroekX
Score : 74 points
Date : 2026-02-21 15:52 UTC (1 days ago)
(HTM) web link (github.com)
(TXT) w3m dump (github.com)
| vunderba wrote:
| Nice job. Couple notes for the web version:
|
| - Once started the shareware game on Chromium browsers seems to
| flicker like crazy which displays the "B.J. Blazkowicz" face.
|
| - You missed adding the classic code that everyone knows, M-L-I!
| Freak_NL wrote:
| The flickering happens in Firefox too.
| midzer wrote:
| Can confirm the flicker.
|
| I did a WASM port of the shareware from
| https://github.com/fabiangreffrath/wolf4sdl playable at
| https://midzer.de/wasm/wolfenstein/
| ragnaroekX wrote:
| Flickering is fixed now. It was introduced with the late
| feature of animating BJ face on the start...
| amelius wrote:
| Wolfenstein is peanuts compared to writing your own doubly linked
| list.
| klaussilveira wrote:
| Somewhat related: https://github.com/Henrique194/iron-doom
| xeonmc wrote:
| Game would be considered too politically incendiary if released
| today.
| yorwba wrote:
| Or the other way around. Wolfenstein 3D was first banned in
| Germany in 1994, but unbanned in 2018:
| https://arstechnica.com/gaming/2018/08/german-ratings-board-...
| legitster wrote:
| Wolfenstein 3D was pretty squarely a WWII fantasy shooter. Only
| later does it get into the alternate history post-war stuff
| which does get somewhat more squarely political.
|
| I think it cuts both ways. The Wolfenstein franchise has
| obviously relished in violence against Nazis, but also
| inadvertently is part of the trend of glorifying them.
| TehCorwiz wrote:
| The first game has zombies with guns in their chest and a
| mecha hitler.
| bombcar wrote:
| Someone's not up to date on the History Channel
| documentaries about WWII!
| beemboy wrote:
| Sweet memories...
| yuppiepuppie wrote:
| This is cool! Wolfenstein will always have a place in my heart.
|
| You should add it to https://hnarcade.com
| hexo wrote:
| again?
| ninkendo wrote:
| Was this translated automatically from C? I picked a spot totally
| at random and saw in https://github.com/Ragnaroek/iron-
| wolf/blob/main/src/act1.rs in place_item_type:
| let mut found_info = None; for info in &STAT_INFO {
| if info.kind == item_type { found_info =
| Some(info); break; } }
|
| When typically in rust this is just: let
| found_info = STAT_INFO.iter().find(|info| info.kind() ==
| item_type);
|
| Now I want to go through and feng shui all the code to look more
| like idiomatic rust just to waste some time on a saturday...
| klaussilveira wrote:
| As a non-Rust guy, I keep writing the example above. I didn't
| even know about the second option!
|
| If you do that, please share a link so I can learn from you!
| This is awesome!
| DauntingPear7 wrote:
| Look into rust iterators and their associated functions for
| rust specific implementation. Additionally look into
| functional programming a la lambda calculus and Haskell for
| the extreme end of this type of programming if you'd like to
| learn more about it
| derwiki wrote:
| Sounds like something an LLM agent might be good at?
| ragnaroekX wrote:
| It probably would. But this port was mostly done to
| understand Wolfenstein 3D in detail, not for the source port
| itself. I could have generated big parts of the code. But I
| would have learning by doing that.
| ragnaroekX wrote:
| Yes, the code is _very, very_ close to the C-Code. All over the
| place.
| MaulingMonkey wrote:
| (equivalent C file: https://github.com/id-
| Software/wolf3d/blob/master/WOLFSRC/WL... )
|
| > Was this translated automatically from C?
|
| I'll note that when I convert code between languages, I often
| go out of my way to minimize on-the-fly refactoring, instead
| relying on a much more mechanical, 1:1 style. The result might
| not be idiomatic in the target language, but the bugs tend to
| be a bit fewer and shallower, and it assists with debugging the
| unfamiliar code when there _are_ bugs - careful side-by-side
| comparison will make the mistakes clear even when I don 't
| actually yet grok what the code is _doing_.
|
| That's not to say that the code should be left in such a state
| permanently, but I'll note there's significantly more changes
| in function structure than I'd personally put into an initial
| C-to-Rust rewrite.
|
| The author of this rewrite appears to be taking a different
| approach, understanding the codebase in detail and porting it
| bit by bit, refactoring at least some along the way. Here's the
| commit that introduced that fn, doesn't look like automatic
| translation to me: https://github.com/Ragnaroek/iron-
| wolf/commit/9014fcd6eb7b10...
| hamza_q_ wrote:
| Cool! I did an incomplete version in Rust a while back as well.
| Not a source port, tried to recreate the game from scratch
| myself, without looking at the C src code
|
| https://github.com/hamzaq2000/wolf3d-reimpl-rs
| iberator wrote:
| is it faster than original?
|
| Port it to 286, and then claim RUST victory
| Grimblewald wrote:
| Oh man for a second i though ironwolf, the vr game, was about to
| see some love.
| karhuton wrote:
| Stein means rock. Wolfenstein is something like Wolf's rock.
|
| Eisen means Iron. You could name it Wolfeneisen?
___________________________________________________________________
(page generated 2026-02-22 16:01 UTC)