openmw issueshttps://gitlab.com/OpenMW/openmw/-/issues2024-02-12T15:15:40Zhttps://gitlab.com/OpenMW/openmw/-/issues/7271Add missing settings to launcher2024-02-12T15:15:40ZCody GlassmanAdd missing settings to launcherSome important settings in launcher are missing in launcher:
Stereo:
- [ ] stereo enabled
- [ ] multiview
- [ ] shared shadow maps
Camera:
- [ ] fov
- [ ] first person fov
- [ ] reverse z
Gui:
- [x] font size
- [x] scaling factor
Sha...Some important settings in launcher are missing in launcher:
Stereo:
- [ ] stereo enabled
- [ ] multiview
- [ ] shared shadow maps
Camera:
- [ ] fov
- [ ] first person fov
- [ ] reverse z
Gui:
- [x] font size
- [x] scaling factor
Shaders:
- [ ] force shaders
- [ ] force per pixel lighting
- [ ] clamp lighting
- [x] maximum light distance
- [x] light fade start
- [x] max lights
Groundcover:
- [ ] enabled
- [ ] density
- [ ] rendering distance
- [ ] stomp mode
- [ ] stomp intensity
Terrain:
- [ ] lod factor
- [ ] vertex lod mod
This is a good beginner task.https://gitlab.com/OpenMW/openmw/-/issues/7248Extend searching in the console with regex and toggleable case-sensitivity2023-08-05T10:11:07ZShi HanExtend searching in the console with regex and toggleable case-sensitivityContinuing this thread:
\
https://gitlab.com/OpenMW/openmw/-/merge_requests/2759#note_1289094297
Searching through the console output with regex could be very handy in long debugging & testing sessions.Continuing this thread:
\
https://gitlab.com/OpenMW/openmw/-/merge_requests/2759#note_1289094297
Searching through the console output with regex could be very handy in long debugging & testing sessions.openmw-0.49https://gitlab.com/OpenMW/openmw/-/issues/7207Dehardcode global variables2023-02-14T13:46:20ZelsidDehardcode global variablesOpenMW refers to global variables by their hardcoded names as they are defined in Morrowind content files. This prevents from loading content files for other games without loading Morrowind files. For example Oblivion.esm doesn't have `d...OpenMW refers to global variables by their hardcoded names as they are defined in Morrowind content files. This prevents from loading content files for other games without loading Morrowind files. For example Oblivion.esm doesn't have `dayspassed` but it has `GameDaysPassed`. It sould be possible to specify a custom name for a variable representing the same meaning.
Some of variables may not have alternatives with the same meaning. For them we should separate logic but this is out of the scope for this issue. Let's assume if variable is specific to Morrowind mechanics, there is no need to make it work for Oblivion etc.
The set of cutomizable variables should be as small as possible. This set must be defined for each game to be run by OpenMW.
The first step is to define constant variables of custom type for all hardcoded string literals representing global variables. Once we list them in a single place it should be clear to see the scope.https://gitlab.com/OpenMW/openmw/-/issues/7187[Postprocessing] Profiling2023-02-26T02:58:02ZCody Glassman[Postprocessing] ProfilingAdd a tab to the Postprocessor HUD for profiling stats. We will move this to Tracy UI if we ever move to that (https://gitlab.com/OpenMW/openmw/-/merge_requests/2485).
Adding to default profiling menu builtin to OSG is not an option. I...Add a tab to the Postprocessor HUD for profiling stats. We will move this to Tracy UI if we ever move to that (https://gitlab.com/OpenMW/openmw/-/merge_requests/2485).
Adding to default profiling menu builtin to OSG is not an option. It is cluttered and as is.
Timing a draw in OpenGL is actually a bit of a challenge, this task appears deceptively simple.
At bare minimum we will need the time for every pass and the time for each shader as a whole. This isn't necessarily the sum of the passes.https://gitlab.com/OpenMW/openmw/-/issues/7160Editor: Moving the Response column of Topicinfos in a better place2023-07-13T04:58:19ZNelsson HuotariEditor: Moving the Response column of Topicinfos in a better placeInstead of #4356 we should move the response column so that's the order is Modified, Topic, Response, Actor.Instead of #4356 we should move the response column so that's the order is Modified, Topic, Response, Actor.https://gitlab.com/OpenMW/openmw/-/issues/7090Allow configuring light flicker/pulse animation speed2023-07-13T05:05:42ZjtuuAllow configuring light flicker/pulse animation speedThis is a feature request. It would be nice if the animation speed of flickering/pulsing lights could be configured in the game's settings and/or config file. The reason for this is simply because I think the default speed is too fast an...This is a feature request. It would be nice if the animation speed of flickering/pulsing lights could be configured in the game's settings and/or config file. The reason for this is simply because I think the default speed is too fast and I would like to make it slower.
[To be extra specific, I am talking about these values.](https://gitlab.com/OpenMW/openmw/-/blob/06e21f45f35cead471764187b28324b999edb82b/components/sceneutil/lightcontroller.cpp#L52)https://gitlab.com/OpenMW/openmw/-/issues/7073Cope with `settings.cfg` and `openmw.cfg` being edited while applications are...2024-02-07T02:21:54ZAnyOldName3Cope with `settings.cfg` and `openmw.cfg` being edited while applications are openApparently, users expect applications to cope with their config files being edited under them these days - we have *loads* of support requests about config entries reappearing, and this is the only way it could be happening as we don't s...Apparently, users expect applications to cope with their config files being edited under them these days - we have *loads* of support requests about config entries reappearing, and this is the only way it could be happening as we don't save them anywhere else. It's bad for UX if things people expect to happen don't.https://gitlab.com/OpenMW/openmw/-/issues/6956Reset to defaults button for in game menu?2022-12-04T18:52:28ZBASEDNWAHReset to defaults button for in game menu?Sorry if this is not correct part of gitlab for a suggestion?
Can we please have this button added in the in game menu? It would be very useful. For example with sound settings or others it would be great to be able to just click a butt...Sorry if this is not correct part of gitlab for a suggestion?
Can we please have this button added in the in game menu? It would be very useful. For example with sound settings or others it would be great to be able to just click a button and put in game settings back to their default.
EDIT: To be clear I didn't mean one button to change every single setting back. I meant one for each section. For example Lights already has a "reset to defaults" button but audio doesn't.https://gitlab.com/OpenMW/openmw/-/issues/6906Allow to bind GMSTs for YAML-based localization system2023-11-16T12:45:39ZAndrei KortunovAllow to bind GMSTs for YAML-based localization systemNow we localize only OpenMW-specific texts via YAML, most of UI still uses string GMSTs, which have a text only for one language.
In theory, we can use something like this:
1. Add a support for tags with fallback text to YAML files:
```...Now we localize only OpenMW-specific texts via YAML, most of UI still uses string GMSTs, which have a text only for one language.
In theory, we can use something like this:
1. Add a support for tags with fallback text to YAML files:
```
EnchantmentNameTooltip: "#{sEnchantmentHelp8:Name you give the spell.}"
```
2. Add a setting to specify which language content files have (English by default)
3. Use this setting to build a journal index and to define a locale-specific ordering (e.g. in the spells window) by using the ICU.
4. During localization loading, if YAML file's language matches content files language, resolve its tags to GMSTs values, otherwise resolve them to fallback text on given language.
In this case it preferred locale matches content language, GMST values will be used, otherwise a YAML text for preferred locale will be used. If content files use a language for which we do not have a locale, all localization settings just use default (English) values. In this case a "GMST values + English OpenMW-specific stings" approach - which we have now - still will be used.
Suggested approach has some limitations:
1. If we want new setting to be configurable in-game, it is unclear how to set it. Probably it will be enough to have a combobox with languages used by known popular Morrowind translations, not sure about it.
2. In theory, different content files may use different languages, so loaded GMSTs may be mixed (e.g. part of values may use an English language and the rest can use a Russian language). In this case they all will be treated as values on language specified in settings.
3. Different Bethesda's games have different GMSTs, so we will need to use game-specific localization files.
4. GMST's in our store have the lower case, it should be taken in account.
5. If we ship YAML files with OpenMW, fallback texts should not contain any copyrighted data.https://gitlab.com/OpenMW/openmw/-/issues/6888Add switch for armor degradation fix2022-11-18T07:50:36ZvitAdd switch for armor degradation fixPlease add switch to enable armor degradation.
It is a "decision bug" of original.
In Oblivion it's degradate. In game too many powerful creatures and ignore their damage makes game too easy.Please add switch to enable armor degradation.
It is a "decision bug" of original.
In Oblivion it's degradate. In game too many powerful creatures and ignore their damage makes game too easy.openmw-0.48https://gitlab.com/OpenMW/openmw/-/issues/6851Game AI is too smart*/dumb*2023-07-13T08:19:20ZMikhailGame AI is too smart*/dumb*Some examples of game breaking behaviour:
* NPCs use bare-hands against enemies with normal-weapon resistance (example: companions fight Dremora with hand-to-hand instead of weapon, ruins game immersion)
* NPCs mages select best* spell (...Some examples of game breaking behaviour:
* NPCs use bare-hands against enemies with normal-weapon resistance (example: companions fight Dremora with hand-to-hand instead of weapon, ruins game immersion)
* NPCs mages select best* spell (always* ruin mages/bosses fight experience, check/compare fight vs snowy granius)
* NPCs never use spells against enemies with specific resistance (Nord vs Frost Antronach, this is game breaking because completely negate benefits of being Nord)
* Usually any element theme boss, instead of casting amazing spells, decide to fight melee
All those issues caused by code in spellpriority.cpp and aicombataction.cpphttps://gitlab.com/OpenMW/openmw/-/issues/6828Drop creatures spawned by leveled lists when the list is deleted2022-06-23T17:01:53ZEvil EyeDrop creatures spawned by leveled lists when the list is deletedWhen we drop a reference in https://gitlab.com/OpenMW/openmw/-/blob/ede09309a6dc68bde19be3e77d7adaf6923cc063/apps/openmw/mwworld/cellstore.cpp#L219 and that reference is a leveled creature, we don't delete any objects that list might hav...When we drop a reference in https://gitlab.com/OpenMW/openmw/-/blob/ede09309a6dc68bde19be3e77d7adaf6923cc063/apps/openmw/mwworld/cellstore.cpp#L219 and that reference is a leveled creature, we don't delete any objects that list might have spawned. If the `CreatureLevListCustomData`'s `mSpawn` is false, the actor referenced by `mSpawnActorId` can be deleted.
Just a QoL improvement for people who update their mods mid-save.https://gitlab.com/OpenMW/openmw/-/issues/6823Animation layering for osgAnimation formats2023-06-19T06:41:28ZNelsson HuotariAnimation layering for osgAnimation formatsosgAnimation supports animation blending (giving weigths to certain animations), but the bridge between OpenMW engine animation layering and osgAnimation isn't yet implemented. We need to at least have things like upper and lower body an...osgAnimation supports animation blending (giving weigths to certain animations), but the bridge between OpenMW engine animation layering and osgAnimation isn't yet implemented. We need to at least have things like upper and lower body animations separated, e.g. attack and movement animations played simultaneously.openmw-0.48https://gitlab.com/OpenMW/openmw/-/issues/6791OpenMW-CS: Clone all bodyparts when cloning a race2022-12-04T18:36:37ZStainlessStainswynterskai@stains.euOpenMW-CS: Clone all bodyparts when cloning a raceVersion of OpenMW:0.47.0
When cloning a race, OpenMW-CS doesn't assigns body parts to the new cloned race. If this is possible, I think it were good if the CS assigns the body parts of the original race to the cloned one, so the user do...Version of OpenMW:0.47.0
When cloning a race, OpenMW-CS doesn't assigns body parts to the new cloned race. If this is possible, I think it were good if the CS assigns the body parts of the original race to the cloned one, so the user doesn't have to do it themselves. If the user wants to assign other body parts, they can assign them manually so that this doesn't make a difference. I think the original CS handles this the same way.https://gitlab.com/OpenMW/openmw/-/issues/6751Debug drawing interface2022-08-28T12:30:48ZMattDebug drawing interfaceI was looking for an existing issue/feature request and couldn't find anything, so..
I often find my self wanting to draw something to see what I'm doing, so I would propose a system that allows to add things to draw later during the re...I was looking for an existing issue/feature request and couldn't find anything, so..
I often find my self wanting to draw something to see what I'm doing, so I would propose a system that allows to add things to draw later during the rendering pass, it should be only drawn if the developer/debug mode is active (Quake/Source equivalent in using "developer 2" in the console) otherwise discard the operation, so essentially its just a queue to be drawn later allowing to queue them from lets say mechanics.
As for the interface I was thinking of something like:
```cpp
class DebugDrawing
{
void drawPoint(Vec3 pos, Vec3 color);
void drawBox(Vec3 mins, Vec3 maxs, Vec3 color);
void drawText(Vec3 pos, const std::string& msg);
...
}
```
So I can use this anywhere in code like following:
```cpp
MWBase::Environment::get().getDebugDraw()->drawPoint(actor.getCellRef().getPosition(), Vec3{1.f, 1.f, 1.f});
```
I believe this would be also a nice thing for Lua to make debugging scripts/logic easier, printing to the console only helps very little in a 3d context.https://gitlab.com/OpenMW/openmw/-/issues/6739[Lua] More UI widget types2022-12-04T18:38:21Zuramer[Lua] More UI widget typesPlanned types which are still missing:
- [ ] Button. Can be emulated with text, but hard to implement highlights and correct focusing without a separate type
- [ ] Table. Can't align input form-like content without it, for example the se...Planned types which are still missing:
- [ ] Button. Can be emulated with text, but hard to implement highlights and correct focusing without a separate type
- [ ] Table. Can't align input form-like content without it, for example the settings menu.
- [ ] Select. A dropdown menu to select from a list of options.
- [ ] Slider.
- [ ] Window. Already in the codebase, but needs some refinement.
- [ ] ScrollBoxhttps://gitlab.com/OpenMW/openmw/-/issues/6713Add more uniform parameters to shaders for more interesting effects2023-02-07T18:10:10ZJoshua Barrettojoshua.s.barretto@gmail.comAdd more uniform parameters to shaders for more interesting effectsOpenMW currently includes only the bare minimum information in the shaders to deal with the built-in rendering modes. However, custom shaders often require more information and having this information be available (perhaps behind a setti...OpenMW currently includes only the bare minimum information in the shaders to deal with the built-in rendering modes. However, custom shaders often require more information and having this information be available (perhaps behind a setting to avoid pessimising the performance of vanilla setups) would allow for more interesting shader effects.
In particular:
- Rendering 'mode' (rendering a reflection texture vs the map vs the character window)
- The water level (the post-processing MR has this already in the form of `omw.waterLevel`)
- Whether the current space is interior or exterior and, if possible, what kind of interior it is (building vs cave, for example)
- The current time of day
- The current simulation time
- Whether the current object is a character or a static asset
- Classification of objects (currently difficult to do without NIF tags, but heuristics seem plausible to determine things like whether an object is a tree or not)
- A low resolution heightmap texture of the world
There are many more parameters that would be useful, but the above would be a good start and would make developing more interesting shader mods easier.
Additionally, the addition of a noise texture accessible to most shaders would be very useful for those looking to add extra effects on top of the world (procedural normal-mapping for distant terrain, for example).https://gitlab.com/OpenMW/openmw/-/issues/6707The OpenCS selection interface should highlight selection candidates during s...2022-04-21T14:47:13ZJoshua Barrettojoshua.s.barretto@gmail.comThe OpenCS selection interface should highlight selection candidates during selectionWhen dragging a new selection sphere/cube, objects that are contained within the final sphere/cube will be selected.
However, due to the fixed perspective, It's not intuitively clear which objects fall within the selection area until th...When dragging a new selection sphere/cube, objects that are contained within the final sphere/cube will be selected.
However, due to the fixed perspective, It's not intuitively clear which objects fall within the selection area until the mouse is released. As a result, if the wrong set of objects was selected, the user is forced to click + drag again to try to select the right objects. This can result in a frustrating hit & miss cycle of trying to select the correct objects.
A solution to this would be to indicate which objects are candidates for selection (i.e: would be included in the selection if the mouse were to be released) before the mouse is released, giving the user a visual indication at to whether they need to grow or shrink the selection box.https://gitlab.com/OpenMW/openmw/-/issues/6706Save the size of the Options window2022-06-20T14:54:55ZuramerSave the size of the Options windowWith https://gitlab.com/OpenMW/openmw/-/merge_requests/1731 arriving, the default size of the options window will be inconvenient to use. It's already resizable by the user, but annoyingly resets to default size after restarting the game...With https://gitlab.com/OpenMW/openmw/-/merge_requests/1731 arriving, the default size of the options window will be inconvenient to use. It's already resizable by the user, but annoyingly resets to default size after restarting the game.
We should save it the same way we currently do other UI positions and sizes - in `settings.cfg`, `[Windows]` sectionopenmw-0.48https://gitlab.com/OpenMW/openmw/-/issues/6628Lua API for RTT viewports2023-08-22T13:13:40ZCody GlassmanLua API for RTT viewportsHaving the ability to setup viewports would be quite powerful. Currently the only use for vanilla UI is rendering the character doll (and character creation). Uses go beyond this, like having a window to showcase various character animat...Having the ability to setup viewports would be quite powerful. Currently the only use for vanilla UI is rendering the character doll (and character creation). Uses go beyond this, like having a window to showcase various character animations, Skyrim-like item and spell previews, and Oblivion animated character doll.
The existing code for the character doll is insufficient for our needs, but it will be a good reference point to get idea of what needs to be done. Essentially we'll need ability to manipulate a camera, add meshes, and add lights. This viewport should have a texture render target.
In simplest form I'm imagining something like this.
```lua
local ui = require('openmw.ui')
local scene = require('openmw.scene')
local util = require('openmw.util')
-- setup a camera and scene
local camera = scene.camera {
update = false, -- static scene, don't run update traversals
clear = util.COLOR.rgba(1,1,1,1),
}
-- Setup required matrices, type of lens and where we are looking
camera:setProjectionAsPerspective(fov, aspect, near, far)
camera:setViewAsLookAt(eye, center, up)
-- Add a sun
camera:addNode(scene:createDirectionalLight(diffuse, ambient, dir))
-- Add in a iron tanto mesh with no transforms (at origin)
camera:addNode(scene:loadMesh('meshes/w/iron_tanto.nif'))
-- Texture is specific to a camera, not any UI element, display it to a UI using standard Image type
local content = ui.content {
{
type = ui.TYPE.Image
props = {
resource = camera.renderTarget
size = util.vector2(256,256)
}
}
}
```Cody GlassmanCody Glassman