Clone or download
Type Name Latest commit message Commit time
Failed to load latest commit information.
acsvm ACSVM: Fix stack realloc init Jan 2, 2019
base Fixed Heretic weapon drawing. Added "fullscreenoffset" to "weaponinfo". Jan 20, 2019
changelogs Fixed Heretic weapon drawing. Added "fullscreenoffset" to "weaponinfo". Jan 20, 2019
cmake Fix CMake; make window caption UTF-8 again Oct 21, 2017
dev-cpp Eliminate redundant eternity directory in trunk. Nov 1, 2009
docs Added a text which lists all files with the current version number in… Aug 2, 2017
eecrashreport Update URL used for report feature for new DW forums system May 5, 2017
libpng Supposedly fix CMake Jan 12, 2019
macosx Added back bundled ZLIB into the Xcode project Jan 3, 2019
midiproc Fix I_IsWindows10OrHigher Jan 12, 2019
small Eliminate redundant eternity directory in trunk. Nov 1, 2009
snes_spc Fixed two warnings in the SNES_SPC library code Oct 20, 2018
source Fixed Heretic weapon drawing. Added "fullscreenoffset" to "weaponinfo". Jan 20, 2019
tools Small adjustment needed to vapordemo launcher. May 1, 2011
user * Some rearrangement in the project to put Win32-specific files in th… Nov 8, 2013
vc2015 Fix I_IsWindows10OrHigher Jan 12, 2019
vc2017 Fix I_IsWindows10OrHigher Jan 12, 2019
zlib Supposedly fix CMake Jan 12, 2019
.gitignore Update zlib and libpng Jan 2, 2019
AUTHORS Updated AUTHORS Apr 8, 2017
CMakeLists.txt Fix CMake not setting -std=c++17 Apr 8, 2018
COPYING Upgrade license to GPLv3 or higher. Dec 29, 2013
COPYING-EE Rephrase section 1 term A to avoid sovereignty issue by naming the WI… Jan 8, 2014
README.adoc Updated Xcode compilation instructions Jun 20, 2018


The Eternity Engine

Eternity is an advanced DOOM source port maintained by James “Quasar” Haley, descended from Simon “fraggle” Howard’s SMMU. It has a whole host of advanced features for editors and players alike, including:

  • ACS, including many of ZDoom’s enhancements

  • EDF, Eternity Definition File, a language to define and modify monsters, decorations, sounds, text strings, menus, terrain types, and other kinds of data.

  • ENDOOM and animated startup screen support.

  • High-resolution support (practically unlimited).

  • Support for Master Levels and No Rest for the Living, allowing to play them without command line options.

  • Portals which can be used to create skyboxes and fake 3D architecture. Linked portal allow objects to pass through them, as well.

  • PNG support

  • Aided with SDL 2, Eternity is very portable and runs on a large range of operating systems: Windows (confirmed as low as XP, and all the way through Windows 10), Linux, Mac OS X, FreeBSD, OpenBSD, and more.

  • Heretic, Hexen, and Strife support in-progress.

For more on its features, check out the Eternity Engine Wiki.

Eternity Engine is maintained using the Git version control system, and the canonical source of the repository is available at GitHub.


There are four ways available for building Eternity: CMake, Visual Studio, Xcode files, and Homebrew, for Unix, Windows, and both Mac OS X respectively.

Building with CMake

CMake should be capable of generating build files for all platforms, but it is most commonly used only for Unix OSes and not thoroughly tested outside of it.

  1. If you haven’t already, extract the source *.zip file or clone the Git repository, in the top-level directory you should see a CMakeLists.txt file. You should be in this directory.

  2. Create a new empty directory and change to it, eg: mkdir build followed by cd build. You cannot do an in-tree build.

  3. Run CMake. Usually you will want to run cmake .., but you might want to change the generator with a special command, for example:

    cmake .. -G "Unix Makefiles"
    cmake .. -DCMAKE_BUILD_TYPE=Debug -DCMAKE_PREFIX_PATH=C:\sdk\x64 -G "NMake Makefiles"
    cmake .. -DCMAKE_BUILD_TYPE=MinSizRel -G "Visual Studio 15 2017 Win64"
  4. Run your build tool. On Unix, you probably want to just run make.

As an optional final step, you can create a binary installation package with CPack. For Windows, it will collect all the needed runtime libraries and bundle it with the Eternity engine. Some examples:

cpack -G ZIP
cpack -G DEB
cpack -G RPM
cpack -G STGZ

Building with Xcode

You need Mac OS X 10.7 or more to run Eternity.

  • Open Xcode and load macosx/EternityEngine.xcodeproj. This builds the main game executable. Any dependencies should be automatically downloaded.

  • If you want to build the full package, open macosx/launcher/EternityLaunch.xcodeproj. It depends on EternityEngine.xcodeproj to generate the executable which gets bundled in the user-friendly app package.

  • To actually make distributable app builds, don’t use the master Git branch. Instead go to the "release-mac" branch, updating it from master as necessary. First you need to produce a release Eternity executable. Load EternityEngine.xcodeproj and build an archive. Export it as a folder release and copy the "eternity" executable into macosx/builds/ (create the "builds" subdirectory if missing). Now close EternityEngine.xcodeproj and open EternityLaunch.xcodeproj. You’ll need to replace my code signing with yours, or keep it unsigned if you’re not enrolled in Apple’s developer programme. Build an archive and export it as a developer ID signed application (or unsigned). You will then obtain a valid .app package.

Building with Homebrew (OS X Mavericks and up)

The benefit of Homebrew compilation is that you don’t need to "install" Eternity like a standard Mac application. However, this will require some extra work. You will also need to run Eternity as you would in Unix.

These instructions are written with the assumption that the user has already set up Homebrew and the required dependencies. Please note that as of the latest Mavericks updates, GCC is no longer required. If you are using an older cmake release folder, you will need to create a new one.

  • You will need the following libraries:

  • Follow the cmake instructions.

    cmake .. -DCMAKE_BUILD_TYPE=Release

Building with Visual Studio (2015 and up)

These instructions are written with the assumption that the user has already set up Visual Studio.

  1. Acquire the following libraries:

  2. Extract them to a folder of your choosing, eg. C:\Libs.

  3. Open Eternity.sln from the vc2015 (or higher) folder.

  4. Select View → Property Manager (if it is not there you will need to enable it from Tools → Customize → Commands: Menu bar → View → Add Command → View → Property Manager).

  5. If you wish to build for 32-bit then open Release | Win32 or Debug | Win32 and double click Microsoft.Cpp.Win32.user. If you wish to build for 64-bit then open Release | x64 or Debug | x64 and double click Microsoft.Cpp.x64.user. Do this for both if you plan on building both.

  6. Under the User Macros section, click Add Macro.

  7. Enter SDL2_0 for the name, and the directory you extracted SDL2.0 to as the value, eg. C:\Libs\SDL2-2.0.7.

  8. Tick Set this macro as an environment variable in the build environment and click OK.

  9. Repeat the above 2 steps for SDLMIXER2_0 (C:\Libs\SDL2_mixer-2.0.2) and SDLNET2_0 (C:\Libs\SDL2_net-2.0.1).

  10. Click OK to close the property pages window.

  11. Right click Microsoft.Cpp.Win32.user, or Microsoft.Cpp.x64.user, or both, and select Save.

  12. Select whether or not you want to compile using Debug or Release config.

  13. Select Build → Build Solution and Eternity will begin compilation. If successful, you will find it in vc201x\Debug or vc201x\Release.

  14. Place the dependencies required (the dlls present in the 3 arch-appropriate SDL lib folders) in this folder, as well as the folder base\ from the repository root.