Skip to content
Aaron edited this page Jun 16, 2019 · 24 revisions

What is OpenTESArena?

OpenTESArena is an open-source engine re-implementation for the game "The Elder Scrolls: Arena" by Bethesda Softworks, being developed from scratch in modern C++. It requires a copy of the original data from the floppy disk version to run (available on the Bethesda website here).

Documentation about the technical details behind Arena is either hard to find or non-existent, so for decoding many of the original file formats, either researching patterns in the data itself or adapting other existing open-source tools is necessary. Thankfully, the Arena manual is an excellent resource for understanding the game's rules and design.

Scope

This is a rough list of features acting as the long-term roadmap. Features may be added, removed, or iterated on as time goes by, so they might come and go from here depending on how the project is progressing. Of course the higher priority items like the renderer, data formats, level data, etc. are to be done first, and the more gameplay-focused items like NPC interaction and spells are to be done afterwards.

Renderer

  • Walls
  • Floors and ceilings
  • Raised platforms
  • Diagonal walls
  • Edges
  • Chasms
  • Doors (swinging, raising, sliding)
  • Transparent walls
  • Fading walls
  • Sprites
  • Transparent sprites
  • Lights
  • Night light textures
  • Distant sky (mountains, sun, clouds, stars)
  • Water and lava
  • Y-shearing

Renderer optimizations

  • Back-to-front transparent voxel rendering
  • Loop unrolling
  • Nearest-neighbor mipmapping
  • Occlusion buffer
  • Projected vertex reuse
  • SSE2
  • Struct of arrays format
  • Wall texture rotation

Data formats

  • CEL (character question sky animations)
  • CFA (entity and spell animations)
  • CIF (various textures)
  • COL (palettes)
  • DAT (font files)
  • DFA (static entity animations)
  • EXE unpacking
  • FLC (cinematics)
  • IMG (various textures)
  • INF (map info)
  • MIF (map data)
  • RCI (water/lava)
  • RMD (wilderness map data)
  • SET (wall textures)
  • VOC (sound)
  • XMI/XFM (music)

Level data

  • Voxel data
  • Sprite data
  • Sound/text triggers
  • Miscellaneous (locked doors, spawn locations, loot locations, ...)
  • Main quest locations
  • Interior locations
  • Interior <-> interior transitions
  • Interior <-> exterior transitions
  • Exterior <-> wilderness transitions
  • Premade cities
  • City generation
  • Dungeon generation
  • Wilderness generation
  • City building names
  • Wilderness building names

Gameplay

  • Automap
  • Automap notes
  • Character creation
  • Character classes
  • Character stats/traits/specials
  • Cinematics
  • Clicking in game world
  • Collision detection
  • Jumping
  • Swimming
  • Chasm climbing
  • Inventory
  • Items (equipment, potions, quest items, ...)
  • Journal
  • Hostile NPCs
  • Wandering NPCs
  • NPC name generation
  • NPC conversations
  • NPC services (bartender, blacksmith, priest, wizard)
  • NPC color variation
  • Crime (lockpicking, pickpocketing, guards)
  • Melee weapon animations
  • Ranged weapon animation
  • Main quest
  • Random quests
  • Holidays
  • Camping
  • World map locations
  • Province map searching
  • Fast traveling
  • City entrance jingle
  • Spells
  • Weather (rain, snow)
  • Saving/loading

Other

  • Modern interface mode
  • Options menu
  • 3D sound
  • Floppy version support
  • CD version support
  • Original save support
  • Key bindings
  • Localization
You can’t perform that action at this time.