YouDoNotKnowMyName Posted November 14, 2020 Share Posted November 14, 2020 Good evening everybody! Just a few things I was wondering about: If an NPC (for whatever reason) walks through a load door from the exterior worldspace into an interior cell and then through a different load door back out into the exterior worldspace, does the game "calculate" the actual time it would take the NPCs to move through that interior before comming out into the worldspace again? Or do they just "appear" at the other load door as soon as they entered the first load door? If the NPC actually "moves" through the interior cell, could the player encounter them when entering the cell theselves? take things like turrets, traps, enemies in the interior cell into account, or are those things just ignored? Link to comment Share on other sites More sharing options...
JimmyRJump Posted November 14, 2020 Share Posted November 14, 2020 It depends on the game's A.I. as far as I know. The NPC is transported into the other cell just like your character is when fast travelling. But, NPCs are 'steered' by the A.I. and as such their 'chosen' path is as predictable or unpredictable as the A.I.'s behaviour. NPCs usually have a set behaviour that is almost always the same for the individual NPC. Traps and turrets are not triggered if said traps and turrets belong to the same faction as the NPC. If not, then the A.I. will trigger those traps and turrets against the intruder. The same goes for other NPCs that don't belong to the same faction. They will either ignore one-another (when the factions are not each other's enemies) or try to kill each other when the factions are at odds with one-another. Link to comment Share on other sites More sharing options...
YouDoNotKnowMyName Posted November 14, 2020 Author Share Posted November 14, 2020 It depends on the game's A.I. as far as I know. The NPC is transported into the other cell just like your character is when fast travelling. But, NPCs are 'steered' by the A.I. and as such their 'chosen' path is as predictable or unpredictable as the A.I.'s behaviour. NPCs usually have a set behaviour that is almost always the same for the individual NPC. Traps and turrets are not triggered if said traps and turrets belong to the same faction as the NPC. If not, then the A.I. will trigger those traps and turrets against the intruder. The same goes for other NPCs that don't belong to the same faction. They will either ignore one-another (when the factions are not each other's enemies) or try to kill each other when the factions are at odds with one-another.I know that.What I was asking is that if an NPC "moved" through a interior cell (and the player is in an exterior cell, so the interior cell is not loaded), would all of these things still apply? Link to comment Share on other sites More sharing options...
SKKmods Posted November 15, 2020 Share Posted November 15, 2020 Actor AI movement in unloaded space is XYZ start point to XYZ destination point straightline moment over time factored by their movement speed. Yes both worldspace and interior cell XYZ deltas should be included in time-speed-distance calculations. But outside of the the uGridsToLoad and fLODFadeOutMultActors around the player, as noting is loaded actor AI packages will not know about obstacles, hostile actors, mines or ANYTHING because they are not loaded. So combat does not take place outside of the players uGridsToLoad. Link to comment Share on other sites More sharing options...
YouDoNotKnowMyName Posted November 15, 2020 Author Share Posted November 15, 2020 Actor AI movement in unloaded space is XYZ start point to XYZ destination point straightline moment over time factored by their movement speed. Yes both worldspace and interior cell XYZ deltas should be included in time-speed-distance calculations. But outside of the the uGridsToLoad and fLODFadeOutMultActors around the player, as noting is loaded actor AI packages will not know about obstacles, hostile actors, mines or ANYTHING because they are not loaded. So combat does not take place outside of the players uGridsToLoad.So, if an NPC moves from the loaded exterior through an unloaded interior to a different area of the loaded exterior, the time spent in the interior will not get "calculated", because the interior isn't loaded, so as far as the game engine is concerned, it doesn't exist, right? And if an NPC would be set to go from let's say Spectacle Island to Sancutary, I wouldn't encounter them somewhere on the road in between (unless I was "walking with them" from the beginning and they would always be "loaded"), right? Link to comment Share on other sites More sharing options...
SKKmods Posted November 15, 2020 Share Posted November 15, 2020 Either you misunderstand or my language is unclear: "Yes both worldspace and interior cell XYZ deltas should be included in time-speed-distance calculations." XYZ coordinates exist regardless of load state. Objects do not exit if unloaded. I assume that if an AI package travel target is non persistent and unloaded, the AI travel package stores the targets XYZ coordinates to calculate translations because I have packages that keep moving on non persistent unloaded linkedref targets. OR making an object an AI package target makes it persistent for that duration. Link to comment Share on other sites More sharing options...
YouDoNotKnowMyName Posted November 15, 2020 Author Share Posted November 15, 2020 Ah ok!Got it! So regardless if a cell is loaded or not, NPCs can go through it and the time/distance/speed thing will get applied. Another question / scenario:Imagine that an NPC moves from a exterior, into an unloaded interior and then back out again.Imagine that that interior is very large and the NPC would take a few minutes to walk through it. If the player was to enter (or COC) into that interior, would the player see the NPC? Link to comment Share on other sites More sharing options...
SKKmods Posted November 15, 2020 Share Posted November 15, 2020 Yes because at a specific point in time the actor will be calculated at a specific XYZ point in worldspace. If that is within the uGridsToLoad around the player the actor will be loaded. It will not be a continiously smooth translation predictable to the nearest game unit due to the game engine update/tick rate. It would probably be best to invest in setting up some datalogged spawn/package/target tests to understand these scenarios. I spend moe time doing that stuff than cranking out actual solutions: Debug.Trace("SKK_AIMovementTest " + Utility.GetCurrentGameTime() + " Loaded " + Target.Is3dLoaded() + " " + Target.GetWorldspace() + " " + Target.GetParentCell() + " XYZ " + Target.GetPositionX() as Int + "," + Target.GetPositionY() as Int + "," + Target.GetPositionZ() as Int ) Link to comment Share on other sites More sharing options...
Recommended Posts