OpenMW 0.49.0 Released!
After almost 3 years of development, we’re thrilled to release OpenMW version 0.49.0—our largest and most ambitious update yet!
This new release brings a hefty number of additions to our Lua scripting API, further polish to every single area of the engine—animations and lighting in particular—and it is the first one that goes beyond Morrowind! Be sure to read below for the full list of changes.
Known Issues
- On macOS, launching OpenMW from OpenMW-CS requires ‘OpenMW.app’ and ‘OpenMW-CS.app’ to 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, share the freeze dump with us
- [#8012] Combat music does not start during pause (e.g., during the dialogue that is scripted to start combat)
- [#8233] Hardware antialiasing may cause driver timeouts on AMD GPUs of the RX 6000 and 7000 series; this is a driver bug AMD is yet to address
- [#8345] OpenMW-CS might crash randomly on Linux and macOS during global search or saving; this is possibly a bug in Qt 6
- [#8464] Shader rendering is tinted red on Apple Silicon; enable per-pixel lighting to prevent that
Removed Features
- [#6624] Support for pre-0.45.0 saved games. Saves made in 0.45.0 up to 0.49.0 RC remain compatible. Use 0.48.0 to convert older saves
- [#7394] Virtual filesystem case-sensitivity support
- [#7720] Broken 360**°** screenshot support
- [#8214] Script blacklisting used in the
--script-alloption and OpenMW-CS script verifier, which served no purpose
AI and Pathfinding
Fixes
- [#2623] Actors prioritise Bound and Summon spells more
- [#4207] Actors prioritise healing spells and potions much less
- [#5065] Actors no longer attempt pathfinding while playing scripted animations
- [#5129] Actors back up smoother during ranged combat
- [#5413] Actors don’t yell taunts when engaging in combat against new allies of their current enemies
- [#5755] Friendly hit counter doesn't increment during combat and resets after it
- [#6313] High Fight rating allies no longer become hostile when the player has multiple allies
- [#6574] Navmeshes are no longer generated for very distant exterior cells, preventing a crash
Animations
New Features
- [#6009] Animation blending: optional, moddable animation transition smoothing for both NIF and Collada files
- [#6823] Animation layering support for Collada files (previously erroneously attributed to 0.48.0)
Fixes
- [#4127] Segments of attack wind-up and release are played continuously and are thus less choppy
- [#4610] Weapons can no longer be unequipped during an attack, which ensures bound weapons appear after spellcasting animation ends
- [#4742] Finished scripted animations no longer cause the same animations played afterwards as non-scripted animations to get stuck
- [#4743] Scripted animations that can't loop are no longer automatically disabled
- [#4822] Individual NPC body parts can have their own animations
- [#5062] Accumulated animation movement is no longer discarded in favour of manual movement
This makes movement match Morrowind more closely, e.g. third-person camera sways for beast race characters - [#5066] Playing an ongoing scripted animation group with a script no longer restarts it
- [#5371] Animations are no longer enabled for x prefix NIF files without x prefix NIF files when they are used as models
Configuration and VFS
Fixes
- [#6085] Replaced the remaining usage of Boost filesystem library with C++ standard filesystem library
- [#6876] Improved setting validation with automatic value adjustment
- [#7092] Archive files of the same name are no longer overridden in reverse order
- [#7924] On Windows, crash catcher now generates a full memory dump if the
OPENMW_FULL_MEMDUMPenvironment variable is set - [#8567] Paths passed to the applications through the command line support token replacement
- [#8567] Passed relative paths are relative to the current working directory
ESM Format and Saved Games
New Features
- [#2566] Proper NAM9 subrecord handling for item stack counts
- [#7477] Magic effect negative light flag support. Not to be confused with normal negative lights, this flag merely inverts the effect's colour
- [#7608] Saved game dependency warning now lists the missing dependencies
- [#7618] Saved game info includes the game day and player health
Fixes
- [#5977] Removed pre-0.43.0 save knockdown state handling, which had side effects in newer saves
- [#6025] Subrecords can now overlap the records that follow them, allowing some plugins to load properly
- [#6754] NPCs that use default skeleton models use the skeleton requested by their race record
- [#7134] Saves with invalid last generated RefNum some OpenMW builds could export can no longer be loaded
- [#7204] Missing actor script links are discarded upon loading to prevent runtime problems
- [#7553] If multiple faction reactions are defined for a faction, the lowest reaction is used
- [#7654] Invalid enchantment effect data is discarded upon loading
- [#8021] Fixed incomplete player cell reference reset when a new game is started during an active game session
Gameplay
New Features
- [#1415] Infinite fall failsafe for interiors
Fixes
- [#3438] Overhauled melee hit target selection to match Morrowind much closer
- [#4204] Only actors with a base health of 0 are prevented from floating up upon cell reloading
- [#4508] Identical enchanted items' effects can stack
- [#4683] Temporary crime disposition changes are properly applied
- [#4754] Ammunition can now be equipped partially
- [#5057] Melee hit success evaluation now occurs at weapon release rather than apparent target impact
- [#5714] On Touch range effects cast by non-actors always explode
- [#6156] On Touch spells explode from the correct position
Graphics
New Features
- [#3537] Shader water ripples
- [#5492] Precipitation occlusion
- [#5926] Water transparency is based on vertical depth rather than the distance to the camera
- [#6188] Specular lighting for all light sources
- [#6447] Improved object paging LOD node handling
- [#6979] Object paging automatically uses meshes intended for MGE XE LOD generation
- [#7129] Restored non-adaptive vsync option, which, unlike adaptive vsync, is not disabled when the frame rate gets too low
- [#7180] Water shader normal map is now overridable
- [#7292] Support for and Morrowind.ini settings, which control the visibility of ripples emitted by precipitation
Fixes
- [#3842] The first rather than the last instance of every bone found in an object's subgraph is used for skinning
- [#4898, #7585] Sunlight direction in exterior and interior cells now matches Morrowind, which improves accuracy and hides some vanilla asset lighting seam issues
Indoor shadows continue to align with the sunlight and might look more conspicuous - [#5280] Non-skinned geometry is no longer included in skinned body parts
- [#5883] Idle actors now also emit water ripples
- [#6190] Sunlight ("moonlight") specularity is no longer disabled for objects and terrain during nighttime
- [#6190] Water specularity is no longer subdued harshly during the morning and the evening
- [#6240] The same texture file can now be reused for different texture types without them getting confused on enchanted items
NIF Format
New Features
- [#5173]
NiFogPropertysupport. It is a property often used to disable fogging for parts of the model - [#6945] S3TC-compressed and BGR format
NiPixelDataembedded image support - [#7634]
NiParticleBombsupport. It is a particle effect used to simulate explosions
Fixes
- [#6550] Environment maps are assigned to the affected node's immediate children to ensure certain armour meshes can properly use them
- [#7380]
NiZBufferPropertycan really disable depth testing this time - [#7763] Extra data flags are no longer handled for nested nodes
- [#7780] Non-ASCII NIF strings are properly handled
- [#8231]
NiCollisionSwitchnodes should no longer be accidentally optimised out by active grid object paging or in general
Physics
Fixes
- [#6027] Collision shapes are no longer merged for the entire object and are generated in a more optimal way
This improves the performance of very complex meshes and prevents breakage when objects have more than 21 thousand triangles - [#7009] Falling actors no longer teleport to the ground without taking any damage when their cell is reloaded
- [#7077] Empty Collada collision shapes no longer cause a crash
- [#7763] Collision shapes track the scale of animated nodes
- [#7763] Bounding box nodes are detected based on the node name rather than unused flags
- [#7763] Detected bounding boxes no longer override non-actor collision shapes
- [#7950] Fixed a potential crash when an object is removed from the scene in the middle of physics simulation
- [#8048] Invalid extent bounding boxes are replaced with autogenerated bounding boxes
Post-Processing
New Features
- Dropdown menus as shader setting control type
- API version shader uniform
- Frame number shader uniform
- Sky and ambient colour shader uniforms
- Render targets can be persistent across frames, which allows temporal effect support
Fixes
- [#7145, #7146, #7202] Fixed various problems with exposed normals
- [#7168] Average luminance is now based on a rescaled power-of-two resolution render target, which gives more accurate results
- [#7354] Disabling post-processing in-game will no longer cause a crash when reverse Z depth buffer and soft particles are disabled
- [#7364] Post-processing is reflected in saved game previews
- [#7487] Shader compilation errors caused by intentionally unsupported Clamp wrap mode are more informative
- [#7587] Invalid dynamic shader entries should no longer cause crashes upon reloading the game
- [] Inactive post-processing shaders are now sorted alphabetically
Scripting: mwscript
New Features
- [#6983]
Get/Set/ModPCVisionBonusfunctions, which interact with the base value of the Night-Eye magic effect - [#7058]
TestModels(T3D) instruction, which is used for testing the loading of every single model used by your game content - [#7194]
OutputRefInfo(ORI) debug instruction now also prints the object's currently bound textures. Missing textures are not bound - [#7609]
AllowWerewolfForceGreetingvariable, which controls whether 'ForceGreeting' works if the player is in werewolf form - [#7625]
AddItem,RemoveItem,StartScript,StopScriptandAddTopicprovide more helpful warnings if the relevant records are not available
Fixes
- [#3846] Unquoted string arguments that start with a period or a minus are supported in more cases
- [#4289] Disabling objects that have no placed instances is now allowed
- [#4816]
GetWeaponDrawnstarts returning 1 when the weapon is attached, rather than the moment you enter combat stance - [#4996] Redundant function arguments are ignored in a generalised way (but not yet ignored in expressions)
- [#6716] Comparison operator parsing is more restrictive in terms of white space and less restrictive in terms of allowed special characters
This means combinations such as>!<<=and> =are now parsed as greater-than - [#6807] Special characters at the start of the line are ignored
- [#6987]
Set/ModBlindnessinstructions, which interact with the base value of Blind magic effect, no longer have a visual effect
Scripting: OpenMW-Lua
For a full overview of the current state of OpenMW-Lua beyond the limits of the comprehensive yet brief list below, please consult the scripting API reference.
Now Dehardcoded
- [#7538] Skill and level progression
- Player input controls
- Exploration, combat, and death music
New Interfaces and Packages
- [#6726] Object manipulations: creation, teleportation and removal
- Custom Activator, Armor, Book, Clothing, Light, Miscellaneous, Potion and Weapon records can be created and spawned
- [#7142] Overhauled mwscript bindings, previously limited to local variables; the new API supports global scripts
- [#7648] Saved game interactions
- [#7805] New script context: menu scripts, which can run when no game is loaded and interact with main menu functionality
- [#8109] Crimes: allows triggering built-in crime events
- Animations (
openmw.animation): various controls for actor and object animations that are also used internally - Custom input actions as a part of overhauled input package (
openmw.input) - Factions: access to NPCs' faction-related mechanics
- Magic: access to spells and individual effects active on every actor
- Music and sounds (
openmw.ambient): allows scripts to play music and sounds - Quests: journal access and interaction API that exposes functionality previously reserved to mwscript
- UI stack interaction: allows adding and removing the original UI windows as well as unpausing individual GUI modes
- Virtual filesystem (
openmw.vfs): read-only access to loaded data directories - YAML file loading and decoding ()
New Bindings
- [#6727, #6795, #7468, #7964] Armor, Birthsign, Class, Clothing, Dialogue, Enchantment, Faction, Levelled Creature, Light, Magic Effect, Race, Spell and Static records
- Skills, attributes and magic schools as non-standard ESM records
- Imported and validated Morrowind.ini settings as game setting records
- [#7916] Active AI package distance, duration, repeat flag, and Wander package idle chances (all assignable to new packages)
- Global AI, god mode, collision and mwscript scripting debug toggles (toggleable)
- [#7860] Actor AI ratings (writable)
- Actor and container encumbrance and capacity
- Actor barter gold, offered services and travel destinations
- Actor death process flags
- [#8087] Actor essential and respawn flags
- Actor fleeing status
- Actor record IDs
- Cell "can rest" flag
If not otherwise noted, the exposed information is read-only.
Interfaces listed above provide bindings not listed here.
New Utility Functions
- [#6971] Number remapping and rounding
- Closest navmesh position based on provided object position and parameters
- Deep UI element update and destruction
- Unicode handling library
- Whether AI is currently being processed for a specific actor
- World-to-view coordinate conversion
New Events and Engine Handlers
- Actor death
- Object activation (in global scripts)
Standard activation can now be overridden - Object teleportation
- Mouse input
New packages and interfaces provide other events and handlers not listed here.
Other New Features
- [#7091] Local script attachment now supports custom initialisation data
- [#7245] New AI package assignments no longer have to cancel previous assignments
- Camera toggling source tag support
- In-game profiler (second page of F10 debug window)
- Storage data lifetime can be set manually
- Events can contain object lists
- Table setting value support
- Teal declarations
- UI elements can be implemented as layout children, allowing for better optimisations and state tracking
- You can now reload all scripts
- You can now reset the actor's currently selected enchanted item/spell. Selecting a new spell also resets the currently selected enchanted item
- Rendering ray casts can now ignore certain objects
- Vector swizzling
Fixes
- [#6146] Item equipment properly sets the relevant mwscript variables
- [#6893] Disabled and deleted objects are handled in a way consistent with mwscript
- [#7449] Fixed type validation in
cell:getAll - [#7469] Fixed a potential crash when an orphan UI element is destroyed
- [#7546] To improve lore accuracy, Morrowind now starts on Fredas in the Lua calendar
- [#7627] Internal content library execution failures should no longer cause crashes
- [#7787, #8099] Script memory allocation and compiled byte code loading errors should no longer cause crashes
Other
- [#6149] Lua documentation now shows the relevant Lua API revision
- Contents of containers (exposed as
content) are now additionally exposed asinventoryfor consistency with actor inventories - Control switch bindings have been moved from input API to player API (input API counterparts are deprecated)
- Deprecated cell
isQuasiExteriorflag binding (usecell.hasTag("QuasiExterior")) - Object rotations are now exposed as quaternions rather than Euler angles
- The
toggle sneaksetting has been moved to the in-game settings for the dehardcoded input controls,OMWControls - Various getter functions now have a get prefix; the original bindings are deprecated
Sound and Media
Building OpenMW with FFmpeg 5.1.1 and above is now supported.
Fixes
- [#4382] Default sound output device changes are now tracked
- [#5849] Landing sound will no longer constantly restart due to paralysis
- [#5944] In third-person view, the camera can now optionally be used as the sound listener
- [#6402] Thunder sound effects are now interrupted indoors
- [#6645] Shield hit sound now plays when the shield is hit rather than based on an unused animation text key
- [#6986] Sound magic effect makes a noise
- [#7172] Empty Explore playlist is allowed to interrupt Battle music
- [#7568] Combat music no longer interrupts scripted music
User Interface
MyGUI 3.4.3 is now the minimum requirement for building OpenMW.
New Features
- [#6933] High-resolution cursor replacer support
- [#6995] Duration strings used in effect and light source duration (
show effect durationsetting) are now localised - [#7125] Console command history is preserved across game sessions
- [#7130] MyGUI logging verbosity is now configurable (matches global logging verbosity)
- [#7214, #7248] In-game console search
- [#7554] Shoulder buttons of controllers can now be used to navigate menus
- [#7923] Nameless higher ranks are no longer shown in faction tooltips
- [#7971] Time Played is now displayed in a more intuitive format and is no longer behind a setting
Fixes
- [#4710] Fixed focus tooltip position for partially offscreen objects
- [#5870] Selected object is reset in the console if it turns unavailable
- [#6222] Global map cell size is capped at 50 pixels as excessive cell size can cause problems
- [#6427] Actor health bar is kept visible when damage is dealt continuously
- [#6661] Saved games that do not have a valid preview image no longer cause crashes or break the saved game dialogue
- [#6758] The Settings window is now rendered over the main menu and its video
- [#6985] Built-in Mystic Cards font now aligns non-punctuation characters by width and includes Latin letters with diacritics
- [#6973] Training time advancement now happens after the screen fades out
Launcher and Wizard
Building the Qt tools and the editor under Qt 6 is now supported (#6491) and our first-party packages use Qt 6. Building under Qt 5.15 is still possible but it is deprecated due to its standard support ending.
New Features
- [#6411] Localisation support
- [#6922, #7709] Revised and optimised launcher UI
- [#7606] Extended selection in archive and data directory lists
- [#7936] Built-in icons have been converted to SVG format and are now scalable
- [#7985] Windows 11 Dark Mode support
- [#8130] New context menu option: copy the selected data directory paths
- [#8130] New context menu option: open the selected data directory
- [#8286] openmw.cfg will no longer be overwritten if it already contains all the settings that were going to be written
Fixes
- [#6846] Launcher, bulletobjecttool and navmeshtool properly support portable OpenMW configurations
- [#7103, #7733] Content files are once again properly overridden based on data directory priority
- [#7502, #8085] Data directory autodetection and insertion should be much less unreliable
- [#7840] The default viewing distance is no longer inappropriately rounded
- [#7891] User-provided shadow map resolutions are no longer overridden
- [#7993] Tribunal is no longer force-enabled if Bloodmoon is enabled
OpenMW-CS
New Features
- [#3501] Axial locking support for instance movement/rotation (X, Y and Z shortcuts)
- [#7161] Dragging a topic to the topic responses table instantly creates a new response to that topic
- [#7499] Dragging a record to a table generates a record filter relevant to that record
- [#7985] Windows 11 Dark Mode support
- Terrain height equalisation brush
- Reference snapping: you can now pick a snap target for the instances you move (see documentation)
- Instance cloning: Shift-C duplicates the selected object instances
- Magic effect projectile speed can now be edited (admittedly, it does not currently affect anything in-game)
- Spell, potion, and ingredient effect verification
- Object instance verifier reports duplicate RefNums, which are known to sometimes happen and cause problems
- Tab cycles the camera mode
- Ctrl-<number> shortcuts create groups of selected instances that can be re-selected using <number> shortcuts
- G, V and R shortcuts toggle move/scale/rotate submodes
- Space resets the current selection
- H temporarily hides the selected instances (Alt-H makes them visible)
UX Improvements
- [#7160] Topic response text column has been moved closer to the left
- [#7953] Icons are now scalable and support using colours from alternative colour schemes
Tables and the script editor also react better to rescaling and alternative colour schemes - [#8141] The four instance snap-down modes have been combined into the most useful one (originally
Drop to Collision Separately) - Improved Preferences window and operation progress bar layout
- Left Click was swapped with Middle Click in default selection, navigation and Open action shortcuts
Fixes
- [#5859] User openmw-cs.cfg no longer claims that it is settings.cfg
- [#6939] Table subview columns are automatically resized based on their contents
- [#7447] Fixed a crash when a cell of a different type is dragged into the scene view
- [#7707] Terrain flags are properly handled and saved, ensuring exported terrain Morrowind/Construction Set compatibility
- [#7721] Any printable character is allowed to be used in created record IDs, like commas and apostrophes often used in cell IDs
- [#7753] NPCs in the scene view are scaled based on their height and weight
- [#7765] Fixed stability problems of undoing/redoing the changes of the Touch command introduced in 0.48.0
- [#7785] Affected skills and attributes are reset if a spell effect that cannot affect the relevant stat is assigned
The Elder Scrolls IV and Beyond
Leveraging community research, we’ve begun prototyping support for Oblivion (2006), Skyrim, Fallout 3, Fallout: New Vegas and Fallout 4, games based on later revisions of Bethesda's open-world game engine. Their game files can be enabled as "mods" for Morrowind or the OpenMW Example Suite in the launcher. The console can then be used to teleport to their locations. Early support includes very basic "walking simulator" functionality.
Extended NIF support currently requires the load unsupported nif files setting to be added to the [Models] section of settings.cfg and set to true. OpenMW-CS does not currently support newer NIF formats or loading TES4 format content files.
Archives
- [#7292] BA2 reading support; 0.49.0 can read Fallout 4, Fallout 4 next-gen update and Fallout 76 BA2s
- Significant optimisations to compressed BSA loading
ESM and Scene
- Initial engine integration of the TES4 ESM file format reader: world loading and terrain heightmap rendering
- Various objects are loaded into the scene: statics, light sources, items, doors, containers, flora, etc.
- Initial NPC rendering; currently very primitive and exclusive to Oblivion, 2011 Skyrim and Fallout 4
- Basic book reading and door interaction mechanics
NIF and Rendering
- Complete parsing of all official NIF files from Oblivion, Skyrim, and Fallout 3/NV/4/76 based on the research by NifTools contributors and ousnius
- Basic textured geometry rendering support for the official files: includes diffuse mapping, normal mapping, glow mapping and Oblivion diffuse parallax mapping, as well as soft effect and refraction flag support and [#7777] basic support for shader material files used in Fallout 4 and 76