A recreation of the classic Doom2D game from the late DOS era, a simulacrum of a parody - just as it should be.
This open-source, multiplatform project has been developed from the ground up to recreate the original game while significantly enhancing gameplay, graphics, and introducing several new gamemodes. It features support for high-resolution graphics, improved AI, numerous fixes, and most importantly online multiplayer, revitalizing one of the biggest cult classics of ex-USSR.
Pre-built binaries of the latest commit (snapshot) are currently available for the following operating systems:
- Windows: Download a ZIP-archive, either Windows x64 (64-bit) or Windows x86 (32-bit). Windows XP and newer is supported.
- Android: Download the Android APK. Android 4.0.1 and higher is supported.
- macOS: Download the macOS App. Intel and Apple silicon Mac computers running macOS >= 11.0 are supported.
This game is a fair-use parody, licensed strictly under terms of the GNU General Public License v3.0.
Join our Telegram chatroom and Discord server to discuss the development of the project.
This repository is a place for everyone. If you want to contribute or need help, please join our Telegram and Discord servers.
For any possible build of Doom2D Forever you will need:
- FPC >= 3.1.1
- libenet >= 1.3.13
Please follow the instructions below to be able to build the project from source:
Clone the project, and change your current working directory to project root.
Create the tmp
and bin
directories and then run:
cd src/game
fpc -O1 -g -gl -dDISABLE_SOUND -dUSE_SYSTUB -dUSE_GLSTUB -FE../../bin -FU../../tmp Doom2DF.lpr
If that command succeeds, you have a working FPC and libenet installation.
Switch | What it does |
---|---|
-dUSE_SDL2 |
Build with SDL 2.0.x |
-dUSE_SDL |
Build with SDL 1.2.x |
-dUSE_SYSSTUB |
Disable I/O management |
Switch | What it does |
---|---|
-dUSE_OPENGL |
Build with desktop OpenGL 2.x |
-dUSE_GLES1 |
Build with mobile OpenGLES 1.1 |
-dUSE_GLSTUB |
Disable rendering |
Switch | What it does |
---|---|
-dUSE_FMOD |
Build with FMOD Ex (4.30.22, other versions may fail) |
-dUSE_SDLMIXER |
Build with SDL_mixer |
-dUSE_OPENAL |
Build with OpenAL 1.1 |
-dUSE_SOUNDSTUB |
Build with sound stub |
-dDISABLE_SOUND |
Disable sound management |
Switch | What it does |
---|---|
-dUSE_SDL2 |
Build with SDL 2.0.x for WAV support |
-dUSE_SDL |
Build with SDL 1.2.x for WAV support |
-dUSE_VORBIS |
Build with libvorbis |
-dUSE_FLUIDSYNTH |
Build with libfluidsynth |
-dUSE_MODPLUG |
Build with libmodplug |
-dUSE_XMP |
Build with linxmp |
-dUSE_MPG123 |
Build with libmpg123 |
-dUSE_OPUS |
Build with libopus |
-dUSE_GME |
Build with libgme |
-dOPENAL_SINGLETHREADED |
Don't use threads for OpenAL |
Switch | What it does |
---|---|
-dSDL2_NODPI |
Build for old libSDL2 |
-dUSE_MINIUPNPC |
Build with libminiupnpc for automatic server port forwarding via UPnP |
-dENABLE_HOLMES |
Build with in-game map debugger |
-dHEADLESS |
Build as headless executable for dedicated servers |
--gdb
: prevents the game from handling exceptions.
Currently, OpenGLES depends uncoditionally on SDL2.
Currently, Android support depends unconditionally on SDL2.
Windows binaries will require the appropriate DLLs (SDL2.dll, SDL2_mixer.dll or FMODex.dll, ENet.dll, miniupnpc.dll) unless you choose to link them statically.
It's now possible to link Windows' LibJIT and ENet as static libs.
Switch | What it does |
---|---|
-dLIBJIT_WINDOZE_STATIC |
Static LibJIT |
-dLIBENET_WINDOZE_STATIC |
Static ENet |
-dLIBMINIUPNPC_WINDOZE_STATIC |
Static MiniUPnPC |
-dVORBIS_WINDOZE_STATIC |
Static libogg/libvorbis (only in AL builds) |
-dOPUS_WINDOZE_STATIC |
Static libogg/libopus (only in AL builds) |