-
Notifications
You must be signed in to change notification settings - Fork 86
Home
OpenTESArena is an open-source engine re-implementation for "The Elder Scrolls: Arena" by Bethesda Softworks, being developed from scratch in modern C++. It requires a copy of the original game data from either the floppy disk version (available on the official website here) or the CD version in order to play.
Early on, documentation about Arena's technical details was either hard to find or non-existent, but thanks to the efforts of several contributors, this wiki now contains a large collection of information regarding all aspects of the game, and continues to be revised from time to time.
The Arena manual is also an excellent resource for understanding the game's rules and design. However, not all of the stated values are accurately reproduced in-game. Therefore, the behavior of the original executable is preferred for tie-breaking and new quality-of-life changes are based off of it as well.
Features may come and go from here, or be moved around, depending on how the project is progressing. This list is not exhaustive. Several other features like support for all of the original game's major data formats and city generation, wild generation, and main quest dungeons are already implemented.
- Initial citizen spawning and color variation support
- Puddle reflections
- Voiced cinematic support (CD version only)
- Music library system (user-defined MIDI filenames in text file)
- City entrance jingle
- Chunk system to replace fixed-size game world
- Texture system redesign to decouple SDL2 from texture management and allow greater support for other image formats (PNG, etc.)
- Redesign existing software renderer to be "classic" renderer closer to the original game
- Initial work on dedicated "modern" software ray tracer (not intended to be feature-complete)
- Renderer API redesign to support the above (texture handle allocation, intermediate chunk render format, per-frame data via RenderFrameSettings, etc.)
- UI rendering redesign (less hardcoded per-panel, draw call lists, vector space, anchoring, etc.)
- Weather effects (rain, snow, lightning)
- Entity interaction support (entity types, selection, initial placeholder UI)
- Initial item implementation and player inventory (picking up/dropping items)
- Initial combat implementation and AI
- Initial player stats (health, attributes, weight, etc.)
- Initial NPC service support (tavern room, temple healing, equipment repair)
- NPC conversation support
- Automap notes
- Camping
- Character class traits/specials
- Character class questions
- Collision detection (+ climbing, jumping, swimming)
- Crime (pickpocketing, guards)
- Holidays
- Loading/saving
- Lockpicking/keys
- Logbook
- Loot tables
- NPC item tables (tavern, blacksmith, wizard)
- NPC name generation
- Quests
- Spells/enchantments
- "Classic" software renderer features
- Paletted (8-bit textures only)
- Point texture filtering + mipmapping
- Dithering
- "Modern" software ray tracer features
- True color (32-bit textures)
- 3D camera
- Trilinear texture filtering + mipmapping
- Ray cast hard shadows
- Ambient occlusion
- Vulkan ray tracer
- Compute shaders for compatibility with more GPUs (no ray tracing hardware required)
- Global illumination
- Temporal super-sampling
- Automap zoom-in/out
- Original save support
- Key bindings
- Gamepad support
- Localization
- UI scaling