Skip to content
Aaron edited this page Jan 31, 2021 · 69 revisions

What is OpenTESArena?

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.

Roadmap

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.

0.12.0 - Oct. 10, 2020

  • 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

0.13.0

  • Chunk system to replace fixed-size game world (#181)
  • Texture system redesign to decouple SDL2 from texture management and allow greater support for other image formats (PNG, etc.) (#192)

0.14.0

  • Weather effects (rain, snow, lightning)
  • Redesign existing software renderer to be "classic" renderer closer to the original game (8-bit paletted, dithering)
  • Renderer API redesign to support future renderers (public 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.)

0.15.0

  • Entity interaction support (entity types, selection, placeholder UI for conversation just shows entity type)
  • Initial combat implementation and AI (player health from class, enemies run towards player)
  • Items and player inventory implementation (picking up/dropping items, loot corpses, not quest items)
  • Enemy loot tables (based on level)
  • Key locks implementation (pick up key and open associated door)
  • Preliminary work on "modern" software ray tracer (simple shading, not intended to be feature-complete)

0.16.0

  • More player stats (attributes, stat calculation, weight, stamina, etc.)
  • NPC conversation support (citizen name, ask directions, rumors/work, empty merchant inventories)
  • NPC name generation
  • Camping
  • Finish "modern" software ray tracer implementation (lights, shading, etc.)

TBD

  • Automap notes
  • Character class traits/specials
  • Character class questions
  • Collision detection (+ climbing, jumping, swimming)
  • Crime (pickpocketing, guards)
  • Holidays
  • Keymappings
    • Predefined keymaps for English, French, and German keyboards (just like original Arena. See AZERTY and QWERTZ strings in the executable for reference).
    • The ability to remap keys to anything the user desires
  • Loading/saving
  • Lockpicking
  • Logbook
  • NPC merchant item tables (tavern, blacksmith, wizard)
  • NPC services (tavern room, temple healing, equipment repair)
  • Quests
  • Spells/enchantments

Wishlist

  • "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
  • Gamepad support
  • Localization
  • UI scaling

Clone this wiki locally