Stealth

Feedback on past, current, and future development.
Post Reply
Laicus
Posts: 88
Joined: 29 Apr 2018, 08:35

Stealth

Post by Laicus » 09 May 2019, 13:28

Apologize for my bad English, I write with the help of Google translate.
For those who prefer the stealth style of the game, there are at least four annoying things in Morrowind (actually much more):
1. When a player does not sneak, enemies see him with their nape
2. It is impossible to hide when detected (except for invisibility, but this is temporary and cheat, the chameleon is generally mega cheat, but this is another story)
3. When player attack in stealth mode, mobs have no reaction to the attacked allies and to the corpses
4. In stealth mode, it is impossible to climb even on small obstacles

I made a mod that allows you to "bounce" a little (quickly move upwards) in stealth mode, but if a player is very close to the ceiling, he passes through it (I think this is an OpenMW glitch), and if he stays in the air for a while (if the obstacle is lower than the height of the jump) the stealth is turned off and the enemies again see the player with their backs, if it happened at close range, it would be normal (reaction to the sound), but at a great distance it is very stupid.
And in general, local ai is no good at all.)
Last edited by Laicus on 14 May 2019, 14:54, edited 4 times in total.

Laicus
Posts: 88
Joined: 29 Apr 2018, 08:35

Re: Stealth

Post by Laicus » 13 May 2019, 09:13

Is it possible to at least disable the restriction on the jump when you sneak? It's just ridiculous and very inconvenient.
Although, it would have been better to have the opportunity to climb small obstacles without leaving the stealth mode, or at least the auto-jump, ala Minecraft.

User avatar
raevol
Posts: 3084
Joined: 07 Aug 2011, 01:12
Location: Caldera

Re: Stealth

Post by raevol » 14 May 2019, 04:46

Hi Laicus-

The sort of things you are asking for would have to be added post-1.0, and through functionality that will need to be developed as part of de-hardcoding the current game mechanics. The vision for 1.0 is to exactly replicate the vanilla engine mechanics, but to enable these sort of changes through mods after 1.0 is released.

Laicus
Posts: 88
Joined: 29 Apr 2018, 08:35

Re: Stealth

Post by Laicus » 02 Jun 2020, 16:15

I found a very funny bug. The spell / ability "Blind" has an effect only on the front. For example, I added the ability "Blind" equal to 75 (you can set a million, it does not matter) to one hostile NPC and made his parameter "Sneak" equal to 5 (I checked with 0 too), the NPC turned out to be almost blind, even when I approach (not in stealth mode) to this NPC on the meter, he does not see me, and we can even talk, he will answer "Who is here?", but when I start bypassing this NPC (leaving the field of view), the NPC detects me, but if I am in stealth mode, the NPC does not detect me either from the front or from behind, as it should. It turns out that the spell "Blind" works almost exactly as I need to correct the NPCs who see behind their backs, but only the exact opposite - their eyes move to the back of their heads. :lol:

User avatar
akortunov
Posts: 751
Joined: 13 Mar 2017, 13:49
Location: Samara, Russian Federation

Re: Stealth

Post by akortunov » 02 Jun 2020, 16:46

The only difference which depends on angle is to use fSneakViewMult (1.5) or fSneakNoViewMult (0.5) GMST, and all formulas here come from Morrowind.
And in both cases Blind affects result in the same way.

Code: Select all

npcTerm = npcSneak + 0.2 * npcAgility + 0.1 * npcLuck - npcBlind
npcFatigueTerm = fFatigueBase - fFatigueMult * (1 - normalisedFatigue)
 
using NPC normalisedFatigue

if PC is behind NPC (180 degrees):
    y = npcTerm * npcFatigueTerm * fSneakNoViewMult
else:
    y = npcTerm * npcFatigueTerm * fSneakViewMult
Note that "npcBlind" is not normalized here, so check how the original engine works here.

Laicus
Posts: 88
Joined: 29 Apr 2018, 08:35

Re: Stealth

Post by Laicus » 02 Jun 2020, 17:02

akortunov wrote:
02 Jun 2020, 16:46

Code: Select all

npcTerm = npcSneak + 0.2 * npcAgility + 0.1 * npcLuck - npcBlind
npcFatigueTerm = fFatigueBase - fFatigueMult * (1 - normalisedFatigue)
 
using NPC normalisedFatigue

if PC is behind NPC (180 degrees):
    y = npcTerm * npcFatigueTerm * fSneakNoViewMult
else:
    y = npcTerm * npcFatigueTerm * fSneakViewMult
I do not see in these formulas the answer to why a blind NPC does not see in front, but sees with his back. If "Blind" is high and "Sneak" is low, "y" will be negative. "y" is the probability of detection?

User avatar
akortunov
Posts: 751
Joined: 13 Mar 2017, 13:49
Location: Samara, Russian Federation

Re: Stealth

Post by akortunov » 02 Jun 2020, 17:05

Laicus wrote:
02 Jun 2020, 17:02
"y" is the probability of detection?
https://wiki.openmw.org/index.php?title ... _Behaviour
The "NPC awareness check".
Note that fSneakNoViewMult/fSneakViewMult increase the modulo of the value, so with negative npcTerm it is simpler to detect player when he is behind NPC.

Laicus
Posts: 88
Joined: 29 Apr 2018, 08:35

Re: Stealth

Post by Laicus » 02 Jun 2020, 22:50

akortunov wrote:
02 Jun 2020, 17:05
Note that fSneakNoViewMult/fSneakViewMult increase the modulo of the value, so with negative npcTerm it is simpler to detect player when he is behind NPC.
Ugh, I thought for a long time, but finally it came, "x", without stealth and chameleon, is 0, and "y", when you are behind the enemy, almost does not play a role, because" fSneakNoViewMult "by default is very small, and in my mod it was even smaller, and it turns out, it helps when you sneak up, but when walking and with a negative" y", on the contrary, it facilitates detection. :o

I would love to change it:

Code: Select all

if sneaking:
    sneakTerm = fSneakSkillMult * sneak + 0.2 * agility + 0.1 * luck + bootWeight * fSneakBootMult
else:
    sneakTerm = 0
to something like this:

Code: Select all

if sneaking:
    sneakTerm = fSneakSkillMult * sneak + 0.2 * agility + 0.1 * luck + bootWeight * fSneakBootMult
else:
    sneakTerm = 0.5 * (fSneakSkillMult * sneak + 0.2 * agility + 0.1 * luck + bootWeight * fSneakBootMult)


Post Reply