The OpenMW team is proud to announce the release of version 0.51.0 of our open-source engine!
This release allows modders to create magic effects through our scripting API and introduces terrain vertex painting to our content file editor. It also fixes many Lua-related crashes and addresses a few minor annoyances with gamepad menu navigation introduced in the previous release.
Note: this only lists the changes and common issues to be aware of. Read the full announcement on our website.
Known Issues
- On macOS, launching OpenMW from OpenMW-CS requires
OpenMW.appandOpenMW-CS.appto be siblings. - [#7511] On Windows, a freeze may be reported if engine startup takes too long; ignoring the message is usually harmless, as it should eventually disappear, but if it doesn't, please share the freeze dump with us
- [#8233] Hardware antialiasing may cause driver timeouts on AMD GPUs of the RX 6000 and 7000 series; this is a driver bug AMD has yet to address
- [#8255] On Intel GPUs, the game may freeze visually while still responding to input. This is a driver bug; as a workaround, you may need to install an older version of the driver
- [#8464] Red tint on macOS. Some of it can be mitigated by enabling per-pixel lighting
Dialogue
New Features
- [#7297] Support for topic marking (MRK) files from Russian Morrowind; they override the keywords used for implicit topic highlighting
- [#8956] The
iGreetDurationandfGreetDistanceResetgame settings are now used in voiced greeting logic
Fixes
- [#7340] The Should Attack filter now passes for actors that are already in combat; this concerns actors that are not normally hostile, like guards
- [#8760] Implicit topic highlighting supports single-character topics
- [#8978] Added support for custom word separators required for Polish Morrowind topic highlighting (brackets and parentheses)
- Mixed implicit/explicit topic highlighting is properly supported
Gameplay
New Features
- [#8731]
Hand to Hand Hit 2sound is now used - [#8801] More controller buttons can be used for actions
Fixes
- [#7605] Creatures that cannot equip items can use enchanted items
- [#8123] Various restrictions on equipping weapons during an attack were lifted (e.g., equipping ammunition)
- [#8692] The above extends to switching between enchanted items while casting a spell
- [#8765] Diseased actors may infect actors other than the player
- [#8847] Stretched collision box detection is more accurate
- [#8926] Weapon swish sound has been restored for thrown projectiles
- [#8929] Old effects now stick around for a frame when they're re-cast; this makes Weakness to Magicka increase its own magnitude
- [#8949] Instant effects are no longer applied twice
- [#8975] Stat modifiers are reset when werewolf modifiers are applied
- [#9062] Staggering an actor when they're unequipping a weapon and intend to re-equip it will no longer break their combat animation state
- [#9078] Preview mode is disabled when the
preview if stand stillsetting is disabled
Graphics
- [#9001] Exclusive fixed-function pipeline rendering mode and the legacy lighting method have been removed
New Features
- [#6885] BC6H and BC7 compression are now supported for DDS files, as long as our OpenSceneGraph fork is used; this requires driver support and may not apply to all platforms
- [#8826] Sunlight direction is exposed to post-processing
- [#9030] Camera projection offset is configurable through Lua, which allows implementing techniques such as temporal antialiasing
Fixes
- [#6439] Fixed moon rendering: moon shadow colour and moon phase transparency are now used
- [#8351] Malformed NIF models are much less likely to cause freezes or crashes and will instead be gracefully rejected
- [#8657] Fixed a preloading-related crash on exit if startup was interrupted by non-graceful error handling (e.g., missing GUI layout files)
- [#8820] Non-carriable light sources like the scripted Trueflame light are properly detected again (0.50.0 regression)
- [#8854] Shaders from the post-processing chain that disable the sunglare will no longer disable it if post-processing is disabled
- [#8864] At storm wind speed, rain and snow properly produce ripples and no longer follow the camera, while heavy wind no longer makes rain look chaotic
- [#8884] Object paging no longer discards LOD centre data, making LOD level selection more reliable
- [#8924] Unnecessary hand-to-hand transition is skipped when you run out of thrown ammunition
- [#8930] Fixed a crash when a Gamebryo mesh has an extra data link that doesn't point to anything
- [#8983] Unequipping ammunition when preparing a ranged attack no longer cancels it immediately
- [#8985] Visual effects no longer make objects that use their model non-interactable
- [#8988] Particles are inverted vertically to match Morrowind
- [#8996] Fixed a crash when skinning data references a vertex that does not exist (the mesh will be rejected)
- [#9026] Thrown projectiles are rotated towards their movement direction again
Scripting: mwscript
New Features
- [#7830] Global script targets that don't come from a content file are now preserved (unlike Morrowind)
Fixes
- [#6494] Global variable reading is more consistent between ARM and x86_64 platforms. This ensures Raven Rock buildings don't show up earlier than intended on Android and macOS
- [#8129] Parsing of unquoted string literals as MessageBox button arguments is more consistent with Morrowind
- [#8732] MessageBox formatting supports more notation specifiers and flags
Scripting: OpenMW-Lua
For a full overview of the current state of OpenMW-Lua, please consult the scripting API reference.
New Context
- [#8987] Load context
Scripts that use this work-in-progress context run once, immediately after all content files are loaded. It exposes the loaded records as mutable data. It is related to—but not to be confused with—the existing custom record creation functionality (world.createRecord). Records injected via the load context are not serialised into saves.
The API reference provides the full list of exposed types and the types createRecordDraft is implemented for. New in 0.51.0:
- [#8791] Custom magic effect records (must be injected through the context)
- Custom ingredients are currently also exclusive to the context
- [#8342] Custom spells and enchantments can be created both via the context and during runtime
- [#8911, #8998] Custom container, creature, door, probe and static records can also be created during runtime
- Potion effect lists can be generated from a table
New Bindings
- [#2903] Barter gold
- [#8076] Dialogue filter conditions
- [#8725] Localised cell names
- [#8796] Potion autocalc flag
- [#8816] Werewolf transformation
- [#8841] Time advancement
- [#8962] Various flags for magic effects, as well as projectile speed
- [#9010] Object starting cell
- [#9013] Actor reputation
New Events and Handlers
Other New Features
- [#8644] Spawned visual effects that are not attached to an object can be referred to by name, looped, and removed
- [#9002] Unrecognised widget and layout fields now trigger warnings to help prevent mistakes
Fixes
- [#8110]
sound.sayrespects the subtitles setting - [#8601] Very long script settings pages are no longer prone to crashes
- [#8693] Extreme widget sizes and positions are now clamped to very large values to help prevent crashes
- [#8699] Moving items should no longer produce orphan script references that cause crashes during processing
- [#8718] Empty RefId fields are consistently exposed as nil
- [#8769] Addressed more potential memory allocation crashes
- [#8775]
nearby.castRaywill no longer crash when a table-like object is used as the ignore list - [#8779] Skill experience will no longer progress beyond 100% when the skill is maxed out and therefore cannot be increased
- [#8789] Faction reputation requirement binding has been renamed from
factionReactiontofactionReputation; the old binding is deprecated - [#8802] Removing UI layout children will no longer leave orphan references in the layout that cause crashes upon reloading
- [#8840] To prevent crashes, widgets will no longer accept table-like objects as properties
- [#8917] Gold stacks are properly spawned
- [#8955] Items moved from restocking stacks are properly turned into new stacks for the purposes of object identification
- [#8980] Fixed a crash when the player is teleported while a menu is open
- [#9018] Passing a thrust attack to actor controls no longer breaks the game
- [#9048] Escort packages can be properly started through the AI interface
- [#9085] Fixed a freeze when teleportation occurs while item unequipment is scheduled
- Unequip handler properly unequips slots
User Interface
New Features
- [#8705] Unexplored map colour palette is loaded from a texture that can be overridden
- [#8774] Changing the active controller window in container views also changes the focused window
- [#8788] Script settings window font and colours rely on relevant settings
- [#8902] Controller navigation is now possible in the quick keys menu spell selection
- [#8913] Gamma slider shows its value
- [#8957] The
iMaxInfoDistgame setting is used as the menu mode activation distance
Fixes
- [#8733] Controller trigger press thresholds for menu navigation are now configurable and lower by default to ensure compatibility with the Steam Deck
- [#8770] When controller tooltips are visible for spells, the cursor is hidden
- [#8771] Controller item focus is no longer reset inappropriately
- [#8786] Fixed various issues with door marker update
- [#8797] Equipping items with the relevant controller action will no longer cause two or three similar sounds to play at the same time
- [#8799] Show Controller Tooltips By Default setting is now persistent: tooltips will always be enabled when you open a menu
- [#8833] Resizing item and spell views when controller tooltips are on will no longer break the UI or crash the game
- [#8946] Spell effect icon sorting and visibility is based on the earliest effect source
OpenMW-CS, Launcher and Tools
New Features
- [#721] Editor: Right-to-left subview placement option
- [#2316] ESSImporter: Script target conversion
- [#5197] Editor: Terrain vertex painting
- [#7152] Editor: Global search regular expression validation
- [#7399] Wizard: Steam and GOG Galaxy installation auto-detection
- [#7493] Launcher: Config directory list (Settings -> Miscellaneous)
- [#8392] Editor: Selected objects are rotated around a shared centre
- [#8874] ESMTool: Rotations for door destinations and cell references are printed
- [#9027] Launcher, Wizard: Bulgarian translation
Fixes
- [#4769] Editor: Edit ID action is disabled for IDs that don't correspond to a record
- [#7595] Editor: Bump-mapped objects are properly rendered in the scene view
- [#8270] Editor: Scene view is no longer inappropriately transparent on Wayland and handles scaling better
- [#8345] Editor: Operations like global search and saving are faster and should no longer randomly crash, especially on non-Windows systems
- [#8842] When the
--load-savegamecommand-line option is used, the save’s character profile and slot will be detected based on file equivalence rather than an exact path match - [#8999] The wizard no longer adds every directory in the installation list to the config file and properly avoids duplicating existing directories