All Projects → BenMcLean → WOLF3D-Godot

BenMcLean / WOLF3D-Godot

Licence: other
Wolfenstein 3-D recreated in Godot Mono for the Oculus Quest

Programming Languages

C#
18002 projects
GDScript
375 projects

Everything in this repo is still a work in progress: the game is not playable yet.

Goals

This project aims to re-create the experience of the classic 1992 first person shooter game Wolfenstein 3-D and other games running on the same engine (Spear of Destiny and Super 3-D Noah's Ark) for virtual reality, ultimately to make these old games playable on the Oculus Quest in true stereoscopic 3D. Also supporting PC VR.

There has already been an admirable effort at recreating Wolfenstein 3-D in VR so anyone who just wants to play the game in VR right now on their PC should check that version out. However, in my view, that version leaves some gaps which this project aims to fill in:

  1. This is on the Godot-Mono engine, so the entire technology stack is as open source as possible. This remains true despite the fact that almost none of the original Wolfenstein 3-D code is directly involved in this project. It's a port, but it's not a source port: it is a brand new high-level emulator of the game's rules re-interpreted for VR.
  2. This version is going to load in all the assets from the original 1992 game files at runtime with no intermediary formats. (beyond adding some XML for things normally compiled into the EXE) The shareware is included but unless you obtain the original MS-DOS game files for the other episodes and games then you can't play them. Files from other platforms are unsupported.
  3. Apart from rendering in HD, this version is going to keep the aesthetics strictly matching the original 1992 MS-DOS PC version to a ridiculously autistic and even slightly creepy degree. This means emulated Adlib / Sound Blaster sound, no dynamic lighting and no high resolution textures. If you don't like the original pixel art by Adrian Carmack and the original Adlib soundtrack by Robert Prince then this is not the version of Wolfenstein 3-D for you.
  4. This version is going to have extensive mod support, including directly supporting classic mods and user-made map packs from the original game and/or made with existing modding tools from the community. In fact, the whole thing is being constructed from the beginning such that everything (even the full registered WOLF3D) is treated during development as a mod of the shareware version. Mods that require patching actual new code features into WOLF3D.EXE will probably not run, but most mods will probably run.
  5. The goal is to make this program work on the Lynx R1 and Oculus Quest. Other platforms, like PC VR, may also be supported, but the Lynx R1 and Oculus Quest are the main goals.

At this time, I do NOT plan to work on support for Blake Stone, Corridor 7 or Rise of the Triad.

Oh, and also, my project is going to go out of its way to intentionally not change the name of its master branch from continuing to be called "master" because changing things that we all know are already not racist in the name of "stopping racism" is fundamentally dishonest and contemptible.

Not to mention that I, of course, will not be censoring any of the swatztikas in the game, nor the pictures of Hitler, nor the German eagles, nor the SS uniforms, nor the Nazi music, nor any other World War II related content from the original game. Nazis are bad and we should have genuinely bad Nazis in our World War II games, not fake ones.

Building

Currently works with 64-bit Godot Engine v3.4.4.stable.mono.official [419e713a2].

In your Android export preset for Oculus Quest, you need these settings:

  • Options > Xr Features > XR Mode: OpenXR
  • Options > Xr Features > Degrees of Freedom: 3DOF and 6DOF (3DOF mode might not actually work but allowing it doesn't hurt anything)
  • Options > Xr Features > Hand tracking: None (I have no plans to support hand tracking)
  • Options > Permissions: select both Read External Storage and Write External Storage. (required to read the game files and write the shareware files)
  • Resources > Filters to export non-resource files/folders: add *.zip, *.xml, *.wlf, *.sf2 to include the Wolfenstein 3-D shareware, the settings XML, custom music and a default soundfont. (game might crash without this!)

Useless Legal Crap

Only small exerpts from the Wolfenstein 3-D source code were used in the creation of this program. The bulk of the code is original.

The Wolfenstein 3-D source code is dual-licensed as the "Limited Use Software License Agreement" as well as GNU GPL. We know that not only the iOS source code but also the original 16-bit C source code is available under the GNU GPL because John Carmack's notes in id Software's official Wolfenstein 3-D iOS source code release from March 20th, 2009 stated, "I released the original source for Wolfenstein 3D many years ago, originally under a not-for-commercial purposes license, then later under the GPL." I would be able to omit this complicated explanation if only someone at Zenimax (or Microsoft?) would take five minutes to actually add a GNU GPL license file to the official Wolfenstein 3-D source code release.

The Wolfenstein 3-D Shareware v1.4 game data created by id Software and published by Apogee is included under its original shareware redistribution permission from 1992. No other game data is included in official builds. Users supply their own game data to play anything else.

Godot is under the MIT licsense.

godot_openxr by Bastiaan Olij a.k.a. Mux213 is MIT licensed. It uses the OpenXR SDK by Khronos Group. Choose a license.

NScumm.Audio by scemino is a C# port of AdPlug by Simon Peter which is licensed under LGPL v2.1. Its DosBox OPL3 emulator is licensed under GPL v2+ and its WoodyOPL emulator from the DOSBox team is licensed under LGPL v2.1. Its Mono.Options is under the MIT license.

Godot MIDI Player by Yui Kinomoto is MIT licensed.

RectpackSharp by ThomasMiz is MIT licensed.

AmbientTasks by Technology Solutions Associates is MIT licensed.

"RNG.cs" contributed by Tommy Ettinger was explicitly dedicated to the public domain.

The "Bm437_IBM_VGA9" bitmap font is converted from The Ultimate Oldschool PC Font Pack by VileR under the CC BY-SA 4.0 license.

"1mgm.sf2" (1.03 MB) is a soundfont from the Sound Blaster AWE32. It is "Copyright (c) E-mu Systems, Inc., 1993." E-mu Systems, Inc. was acquired by Creative Technology Ltd. in 1993. This file is not used by this program to play any music from Wolfenstein 3-D. Instead, it is only used as the built-in default soundfont for user-supplied game data that needs MIDI playback such as Super 3D Noah's Ark. I will replace this file with a different, non-commercial soundfont if anyone suggests a more appropriate one or if Creative ever complains, but I doubt they have any further interest in prohibiting non-commercial redistribution of such an old, tiny and obscure computer file.

Thanks

This is my (Ben McLean's) pet project, but I have received much help that I need to thank people for.

First of all, this is mind-blowing. I still have a hard time believing tbat anything so awesome could ever exist.

Second, Valéry Sablonnière has been a huge help with his C# port of the DOSBOX OPL (Adlib / Sound Blaster) emulator. I might not have been able to get the sound working in Godot without his code, which is GPL by the way.

Third, Adam Biser, Fabien Sanglard, Blzut3 and even John Carmack himsself have been quite helpful, not only by having made significant contributions to the Wolfenstein 3-D fan community but also by directly answering some of my emailed technical questions. Also, the Game Modding wiki has been quite helpful as a resource.

kalbert312 helped me figure the sprite graphics format out by sending me some of his Java and TypeScript code to translate into C#.

Tommy Ettinger contributed the random number generator.

Finally, gotta thank the original id Software team from back in the day for making such awesome games!

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].