Open-source re-implementation of The Elder Scrolls: Arena.
This open-source project aims to be a modern engine re-implementation for "The Elder Scrolls: Arena" from 1994 by Bethesda Softworks. It is written in C++17 and uses SDL2, WildMIDI for music, and OpenAL Soft for sound and mixing. There is support for Windows, Linux, and macOS.
No actual gameplay yet, but all locations and interiors can be accessed for testing. Citizens wander around cities and the wilderness but cannot be interacted with. Fast traveling works and you can go to any city or dungeon on the world map. Collision detection is barebones (just enough for playtesting) and needs work. Character creation works but character questions and player attributes are not implemented. Some of the in-game interface icons work; for example, left clicking the map icon goes to the automap, and right clicking it goes to the world map.
Controls: - WASD - move and turn. Hold LCtrl to strafe. - Esc - pause menu - Tab - character sheet - F - draw/sheathe weapon - G - hold and click voxel to destroy - L - logbook - M - world map - N - automap - V - status - F2 - player position - F4 - debug profiler - PrintScreen - screenshot
Inspired by OpenXcom and OpenMW, this started out as a simplistic ray tracing tech demo in early 2016, and is now steadily inching closer to something akin to the original game. I am using a clean-room approach for understanding Arena's algorithms and data structures, the details of which can be found in the wiki. It is a behavioral approximation project, not about matching machine instructions, and quality-of-life changes are made where they make sense.
There are two versions of Arena: the floppy disk version (which Bethesda released for free) and the CD version. The user must acquire their own copy of Arena because OpenTESArena is a standalone engine and does not contain content.
OpenTESArena is MIT-licensed.
Check out CONTRIBUTING.md for more details on how to assist with development.
If you would like music played in-game, see Music setup below. The engine uses
ArenaPathand
MidiConfigfrom the options file to find where the game files and MIDI config are.
datafolder.
options-default.txtin the
optionsfolder and change
ArenaPathto where you put the
ARENA/
ARENACDfolder.
If you see an error about missing MSVCP141.dll or similar, download and run the Visual C++ Redistributable Installer for Windows: - 64-bit (recommended): vcredist.x64.exe - 32-bit: vcredist.x86.exe
If you see a warning about
alcOpenDevice()failing, or there is no sound, download the OpenAL 1.1 Windows Installer and run oalinst.exe.
Arena106Setup.zip
Arena106.exeis a self-extracting RAR file. Use a tool such as The Unarchiver to extract it into a folder of data files.
.dmgand copy OpenTESArena to the
Applicationsfolder or another location
Contents/Resources/dataand copy in the files for Arena that you extracted earlier
Applicationsfolder or wherever you have the app installed and open OpenTESArena. If you have Gatekeeper turned on (the default for macOS), you will need to do the following:
Substitute
with the current version number (0.#.0), and with the desired architecture (
32or
64).
bash sudo apt-get install wget unzip rar wget https://cdnstatic.bethsoft.com/elderscrolls.com/assets/files/tes/extras/Arena106Setup.zip wget https://github.com/afritz1/OpenTESArena/releases/download/opentesarena-/opentesarena--Linux.tar.gz tar xvzf opentesarena--Linux.tar.gz cd opentesarena--Linux/data unzip ../../Arena106Setup.zip rar x Arena106.exe cd .. ./run.sh
options-default.txtcomes with releases and stores default settings.
options-changes.txtis generated in your user prefs folder and stores user-specific settings, and you can either create it yourself or let the program create it. For now, you can change things like
ArenaPathin
options-default.txt, but in the future, a wizard will take care of this instead. The prefs folders are: - Windows:
/AppData/Roaming/OpenTESArena/options/- Linux:
~/.config/OpenTESArena/options/- macOS:
~/Library/Preferences/OpenTESArena/options/
Arena uses MIDI files for music, so the user must have MIDI sound patches in order to have music play in-game.
The easiest way is to download one of the eawpats packages (zip, tar.gz) and place the extracted eawpats folder into the OpenTESArena
datafolder.
If you would like to use a different sound patches library like OPL3, edit
MidiConfigin the options file to point to the MIDI
.cfgfile for that library.
buildfolder in the project's top-level directory.
build. In a Unix terminal, the command might look like:
bash cd build cmake .. make -j4
dataand
optionsfolders are in the same folder as the executable. If not, then copy them from the project's root folder.
MidiConfigand
ArenaPathin the options file point to valid locations on your computer (i.e.,
data/eawpats/timidity.cfgand
data/ARENArespectively).
If you struggle, here are some more detailed guides:
- Building with Visual Studio (Windows)
- Building with MSYS2 (Windows)
If there is a bug or technical problem in the program, check out the issues tab!
The Unofficial Elder Scrolls Pages are a great resource for information all about Arena. Various tools like WinArena and BSATool allow for browsing Arena's content, and there is a very detailed manual as well. I also recommend the Lazy Game Review on YouTube for a humorous overview of the game's history and gameplay.
Project YouTube channel: https://www.youtube.com/channel/UCJpmkgtHRIxR7aOpi909GKw