This is an in-progress modern open-source engine for the 1994 DOS game The Elder Scrolls: Arena by Bethesda Softworks. The goal is to replicate all aspects of the original game with a clean-room approach while making quality-of-life changes along the way. Details on Arena's inner-workings can be found in the wiki. No game assets are distributed.
Player movement is nearly feature-complete - currently you can jump, climb out of chasms, and swim, but stairsteps are unsolved. Enemies can be killed but their AI is not yet implemented. Items in containers can be picked up and found in the player's inventory but cannot be equipped yet. All world map locations are implemented and the player can fast travel to them. Citizens wander around and have their names generated but conversations are not yet implemented. Character creation is mostly implemented except for class generation questions.
- Move
- Modern mode - W/A/S/D
- Classic mode - W/S. Hold LCtrl for A/D
- Turn
- Modern mode - mouselook
- Classic mode - A/D
- Jump - spacebar
- Activate
- Modern mode - E
- Classic mode - left mouse button
- Draw weapon - F
- Attack
- Modern mode - right mouse button
- Classic mode - hold right mouse button and move mouse in a direction
- Inspect
- Modern mode - left mouse button
- Classic mode - right mouse button
- Esc - pause menu
- Tab - character sheet
- V - character status
- M - world map
- N - local map
- L - logbook
- F2 - player position
- F4 - debug display
- PrintScreen - screenshot
- (debug) Force open locked door / destroy voxel: hold G then Activate
Windows
Download The Elder Scrolls: Arena on Steam
- Alternate downloads: GOG, Bethesda website
- Get latest Windows build
- Extract the
.zip
Copy game assets path (skip if Steam library is default C:\Program Files (x86)\Steam\steamapps\common\
)
- In your Steam library, right-click The Elder Scrolls: Arena then select Manage -> Browse local files
- Open
ARENA
folder then highlight the current directory path and copy with Ctrl+C - Back in the OpenTESArena release folder, open
options/options-default.txt
and paste the game directory afterArenaPaths=
- Example:
ArenaPaths=C:\Program Files (x86)\Steam\steamapps\common\The Elder Scrolls Arena\ARENA
- Example:
- Download eawpats
- Extract the
.zip
- Copy the extracted
eawpats
folder inside the OpenTESArenadata
folder- If you'd like a different sound patches library like OPL3, edit the value of
MidiConfig
inoptions/options-default.txt
so it points to the MIDI.cfg
file for that library
- If you'd like a different sound patches library like OPL3, edit the value of
- Sudden exit on startup / Missing MSVCP141.dll error
- Download and run latest Visual C++ Redistributable with "X64" Architecture vc_redist.x64.exe
- No sound,
alcOpenDevice()
warnings- Download OpenAL 1.1 Windows Installer (zip) and run
oalinst.exe
- Download OpenAL 1.1 Windows Installer (zip) and run
Linux (Debian-based)
sudo apt-get install wget unzip rar
wget https://cdnstatic.bethsoft.com/elderscrolls.com/assets/files/tes/extras/Arena106Setup.zip
Replace <version>
with the latest build number (#.##.#
) and <arch>
with an architecture (x86-64
, rpi4
) available on the Releases page.
wget https://github.com/afritz1/OpenTESArena/releases/download/opentesarena-<version>/opentesarena-<version>-linux_<arch>.tar.gz
tar xvzf opentesarena-<version>-linux_<arch>.tar.gz
cd opentesarena-<version>-linux_<arch>/data
unzip ../../Arena106Setup.zip
rar x Arena106.exe
- Download eawpats
- Extract the
.tar.gz
- Copy the extracted
eawpats
folder inside the OpenTESArenadata
folder- If you'd like a different sound patches library like OPL3, edit the value of
MidiConfig
inoptions/options-default.txt
so it points to the MIDI.cfg
file for that library
- If you'd like a different sound patches library like OPL3, edit the value of
cd ..
./run.sh
macOS
- Get the full game from the Bethesda website
- Extract
Arena106Setup.zip
Arena106.exe
is a self-extracting RAR file. Use a tool such as The Unarchiver to extract it into a folder of data files
- Download the latest macOS build
- Open the
.dmg
and copyotesa.app
to theApplications
folder or another location you prefer - Right-click on the .app and choose "Show Package Contents"
- Navigate to
Contents/Resources/data
and copy in the files for Arena that you extracted earlier
- Download eawpats
- Extract the
.tar.gz
- Copy the extracted
eawpats
folder inside the sameContents/Resources/data
folder inotesa.app
- If you'd like a different sound patches library like OPL3, edit the value of
MidiConfig
inoptions/options-default.txt
so it points to the MIDI.cfg
file for that library
- If you'd like a different sound patches library like OPL3, edit the value of
- Return to the
Applications
folder or wherever you have the app installed and openotesa.app
. If you have Gatekeeper turned on (the default for macOS), you will need to do the following:- Right-click on the app and choose "Open"
- In the warning that appears saying that it is from an unidentified developer, choose "Open"
- The app will start. In the future, you can just double-click on the app without having to go through these steps
options-changes.txt
is created in your user prefs folder the first time OpenTESArena runs and stores values that differ from the ones in options-default.txt
.
- Windows:
<username>/AppData/Roaming/OpenTESArena/options/
- Linux:
~/.config/OpenTESArena/options/
- macOS:
~/Library/Preferences/OpenTESArena/options/
- Git
- CMake
- OpenAL Soft 1.19.1
- SDL 2.0.10
- WildMIDI 0.4.4 (required for music)
sudo apt-get install git g++ cmake libsdl2-dev libopenal-dev libwildmidi-dev
git clone https://github.com/afritz1/OpenTESArena
cd OpenTESArena
- Navigate to the root of the repository
- Use CMake to generate your project file. In a Unix terminal, the commands might look like:
where
mkdir build cd build cmake -DCMAKE_BUILD_TYPE=<?> .. make -j8
CMAKE_BUILD_TYPE
is one ofDebug
|ReleaseGenericNoLTO
|ReleaseGeneric
|ReleaseNative
- For maximum compatibility, use
ReleaseGeneric
- For maximum speed only compatible with your specific CPU, use
ReleaseNative
- For maximum compatibility, use
- Warning: Jolt Physics enables CPU features which may cause illegal instruction errors. You can set these
OFF
in CMake (more information)-DUSE_SSE4_1=OFF -DUSE_SSE4_2=OFF -DUSE_AVX=OFF -DUSE_AVX2=OFF -DUSE_AVX512=OFF -DUSE_LZCNT=OFF -DUSE_TZCNT=OFF -DUSE_F16C=OFF -DUSE_FMADD=OFF
- Navigate to the directory where the executable was built. When using an IDE like Visual Studio, this is a folder in your build directory named after your
CMAKE_BUILD_TYPE
- Make sure that
MidiConfig
andArenaPaths
inoptions/options-default.txt
point to valid locations on your computer (i.e.,data/eawpats/timidity.cfg
anddata/ARENA
respectively) - Run the
otesa
binary- On Windows you may need to copy the .dlls that came with SDL2, OpenAL Soft, and WildMIDI to this directory. OpenAL Soft's
soft_oal.dll
must be renamed toOpenAL32.dll
. A post-build command will fix this eventually
- On Windows you may need to copy the .dlls that came with SDL2, OpenAL Soft, and WildMIDI to this directory. OpenAL Soft's
Other options:
- Automated install & build using Visual Studio/CMake/Git/vcpkg (Windows)
- Building with Visual Studio (Windows)
- Building with MSYS2 (Windows)
Check out CONTRIBUTING.md for details on how to assist with development.
- Unofficial Elder Scrolls Pages - a great resource for information about Arena
- Various tools like WinArena and BSATool for browsing Arena's assets
- The Elder Scrolls: Arena manual