Welcome to a review of the OpenMW developent during the summer of 2020. A very unusual summer period for most of us. Development has been as stable as anytime though, so let’s dig in.
The big thing for the month of June was the merging of Object Paging, covered in the last “OpenMW Spotlight” post. We will not cover this feature any more today, since we already made an in-depth post about it. Without further ado, allow us to present the goodies!
3rd person view has seen lots of improvements lately, including an “over-the-shoulder”-camera option, thanks to Petr Mikheev. During the last month he has continued to work on this feature, also including a more modern vanity camera feature which includes an optional Skyrim-style variant. Have a look here for some example GIF-files of the 3rd person view improvements!
akortunov has been bugfixing like crazy, especially during the month of June, and refactored quite a few parts of the codebase. Lately, he has been working on making his old grass handling more relevant by making it support animated grass. Hopefully, it can be made to play well with our new active grid paging feature too.
elsid has, other than maintaining the AI navigation feature of the engine, been fixing various sound issues. He also has an open pull request which is supposed to make the engine load sound files in a separate thread to improve performance.
unelsson and psi29a have been working together on making OpenMW support animations when using the Dae/Collada 3d model format. This is a very important task to be done if this engine is ever going to become the FLOSS RPG game engine it strives to be. Psi29a started doing the research on how the feature should be implemented, and nelsson continued his work. Moreover, we should mention that nelsson sent a few pull requests directly to OpenSceneGraph (our dependency used for rendering), to improve Dae/Collada support even more.
fr3dz10’s old merge request for color changes in keywords in dialogue window was merged in June. He has also been experimenting with the physics engine, trying to make the physics run in a separate thread instead of the main thread. Really interesting!
wareya has been working on the movement solver for quite some time, trying to emulate the movement from vanilla Morrowind as much as possible. During the past months, he started doing a rewrite of his older pull request.
Mads Buvik Sandvei, aka Foal, is working on a very interesting feature, namely support for VR. He has shown great progress already. You can follow his progress on his merge request here.
Assumeru, aka Evil Eye, has been doing some under-the-hood changes to how scripting affects records in saves. This solved twoissues we’ve had for a long time. No longer will you be able to wear Ordinator armor without concequence!
This is just a short review of what has been going on during the summer. There has been a lot more going on of course, but we tried to sum up the more interesting changes.
we hope you are all having a pleasant time with the new release! While you’re busy killing vicious cliff racers, our team is busy with further improving the engine and the editor.
There is one particular feature that recently got merged that we want to bring to your attention: object paging. What’s that, you ask? Well, object paging is a system developed by bzzt, the man behind the improved distant-land feature introduced in the latest release. This system takes several objects that are close to each other and merges them into a single object. This is done in real time during gameplay and shouldn’t be noticeable to the end user. But we can hear you thinking: why should I care about this? – Because it reduces draw calls! – Okay, and …? – Because draw calls are the main bottleneck if you want to display statics (buildings, rocks, trees, etc.) over a larger distance. – Wait! Are you saying … distant land with distant statics? – Yes, we are.
One feature that was developed in the same merge request as object paging is the “active-grid object paging”. It is basically the same feature, but applied to the player’s active cell(s). This means that the system will not only merge objects in distant cells, but also those in the cells your character is located in. This increases performance, especially in draw-heavy areas like cities and towns. Yay!
There is an issue with this feature as of now however, which is why we decided to set the “active-grid object paging” setting to “false” by default. The issue is that OpenMW still has a hard limit of 8 lights per object, a limitation inherent in the old fixed-function pipeline of Morrowind that OpenMW faithfully supports for legacy reasons. The limitation is sometimes an issue even without object paging, but you don’t generally notice it with vanilla Morrowind’s assets. If you start to merge several objects into a single one however, the limitation really starts to show: Lights will pop up and disappear frequently which simply looks bad. Once the light limit is removed (for which there exists a sizeable work in progress), active-grid object paging will become a lot more interesting.
The feature can now be tested in all freshly baked nightly builds in your neighbourhood. There are still things that need to be addressed in future merge requests. For example, we still don’t have a system to generate lower-detail meshes from high-detail ones to be used in the distance. This isn’t really an issue if you’re mostly using vanilla assets as they are very low in detail for modern standards anyway. For mods that use high-detail assets, however, this might be an issue. Work will continue on this. In any case, please help us out by installing the latest nightly build for your operating system and putting object paging to the acid test!
After over a year of development, the OpenMW team is proud to announce the release of version 0.46.0! Grab it from our Downloads Page for all supported operating systems. This release, potentially the largest ever since the move to OpenSceneGraph, finally reintroduces the long-awaited real-time shadows and also introduces a new improved navigation mesh-based AI pathfinding system based on recastnavigation library, among tons of other improvements.
Mod compatibility has been significantly improved in this release, and you can expect dozens of mods that worked poorly previously to become playable starting with this version.
Check out the release video by the splendiferous johnnyhostile and see below for the full list of changes. The corresponding OpenMW-CS release video is planned to follow soon.
One more thing: one of our major contributors, Capostrophic, has recently started a Patreon. AnyOldName3 (our resident Master of Shadows) also has a Patreon and psi29a, OpenMW’s new project lead also has a Patreon. So consider supporting them if you want to help OpenMW grow. Other contributors accept donations as well: you can find links to their Patreon pages in our FAQ. Don’t forget to support the software that helps make this all possible: OpenSceneGraph, OpenAL-Soft and SDL2 to name a few.
To use generic Linux binaries, Qt4 and libpng12 must be installed on your system
On macOS, launching OpenMW from OpenMW-CS requires OpenMW.app and OpenMW-CS.app to be siblings
Shadows and the new navigation system are not yet perfect and they will get further tuning and refining – particularly in the area of performance when it comes to the shadows – in the subsequent releases
0.45.0 Regression Fixes:
Slowfall magic effect no longer erroneously resets the player jumping flag used for GetPCJumping script function (#4775) – Capostrophic
Attacking and landing no longer causes issues with the idle animation (#4847) – akortunov
Actors outside of the actor processing range are now invisible immediately upon loading (#4860) – akortunov
AiTravel no longer ceases execution erroneously if the AI processing range too low (#4979) – akortunov
Actors with their AI disabled, including those out of the AI processing range, can no longer drown (#4980) – akortunov
Collision shapes of dead actors no longer prevent hitting a different actor through them (#4990) – akortunov
Offered prices are now only capped in the barter window (#5028) – Capostrophic
Ranged weapon critical hits are now vanilla-friendly (#5067) – Capostrophic
Interiors of Illusion puzzle in Sotha Sil Expanded mod is solvable (#4778) – Capostrophic
Blizzard weather particles origin is no longer a direction perpendicular to Red Mountain (#4783) – Capostrophic
First person sneaking animation is no longer very slow (#4787) – Capostrophic
Sneaking and running stances are handled correctly when the player character is airborne (#4797) – Capostrophic
Object collisions are updated correctly immediately after it is teleported if the cell didn’t change fixing issues in Sotha Sil Expanded mod (#4800) – Capostrophic
The player character should no longer be able to rest before taking falling damage (#4802) – Capostrophic
Stray special characters are allowed before a Begin statement in scripts (#4803) – Capostrophic
Particle systems with no sizes defined in their models are valid (#4804) – akortunov
Optional: NPC movement speed calculations take race Weight into account by default (#4805) – Utopium
Nodes named Bip01 now have higher priority than nodes named Root Bone when the movement accumulator node is determined, fixing Raki creature movement in Skyrim: Home of the Nords (#4810) – Capostrophic
Like in vanilla, but only as a last resort, creatures will try to use the sounds of their “model-sakes” that were loaded earlier (#4813) – Capostrophic
Journal instruction now affects the quest status even if it sets the quest index to a lower value (#4815) – Capostrophic
SetJournalIndex no longer changes the quest status (#4815) – Capostrophic
Spell absorption effect absorbs both harmful and beneficial effects once again (#4820) – Capostrophic
Jail progress bar’s behavior is more intuitive and has better performance (#4823) – akortunov
NiUVController only updates the texture slots that use the defined UV set (#4827) – akortunov
Looping VFX caused by potion effects are now shown for NPCs (#4828) – akortunov
A NiLODNode can be the root node of a mesh with particles (#4837) – akortunov
Let’s just jump right into it! We’ve recently forked off 0.46.0 into its own branch and started our release candidate (RC) process. This will be officially our biggest release yet! If you would like to help us test, feel free to join us on the forums, IRC or Discord.