glowplug Posted May 5, 2023 Share Posted May 5, 2023 Inspired by Subnautica, I'm developing an underwater mod for Oblivion. Due to differences in the engines, there are various issues that need to be addressed.Problem: Oblivion does not have an underwater air cell/pocket.Solution: Scuba gear...err no...Problem: Scuba gear requires an equipment slot that could conflict with other mods.Solution: A magical item instead of scuba gear.The item will provide a limited breathing time but will have upgrades for longer breathing.Returning to a vehicle or the surface will restore the item's air supply.Problem: The collision mesh required for an underwater vehicle will drive through ground mesh and any other object.Solution: A network of travel paths automated through use of linear interpolation algorithms.This could be changed to player driven controls but then it is up to you to follow the tunnels and caves without driving through them.Which would you prefer, automated or self drive? Link to comment Share on other sites More sharing options...
RomanR Posted May 5, 2023 Share Posted May 5, 2023 If I may I would make some notices: "Problem: Scuba gear requires an equipment slot that could conflict with other mods."If it consits of air tank and mask, can hair and quiver slot be used? There is also Back Weapon slot, but I don't know how it will look like. "Problem: The collision mesh required for an underwater vehicle will drive through ground mesh and any other object."When I was trying to add flying to my custom version of dragon race mod, I was advised by Drake the Dragon to use SetVelocity commands as they take care of collisions too. I made my script using SetVelocity and SetVerticalVelocity, but as I found they are working only while actor is in air, I used IsOnGround function and when used classic SetPos to lift my dragon a little, which added "scratching a ground effect". Flying added is very simple and while flying you can't do anything else (except changing equip), but for me is still enjoyable. Maybe they will work underwater too? "Which would you prefer, automated or self drive?"Both, just for sure if Havok will act weirdly. Link to comment Share on other sites More sharing options...
glowplug Posted May 6, 2023 Author Share Posted May 6, 2023 Thanks RomanR, great feedback. What it can do is use 'IsUnderWater' to add the breathing code (if not Argonian) as well as use MenuQue for the semi-opaque goggles. This does not require an equipment slot meaning no risk of conflicts - avoid 'if anything can go wrong it will'. I won't restrict it to the mod's cells due to the following... The mod can do the network of travel for quests as automated. A bonus can be gaining a 'Summon Submarine' on one of the quests - if people want to use that to play 'Twenty Thousand Leagues Under the Terrain' then good luck to them. IE, both, as you suggest. There's a boat mod that had code to stop us 'running aground' but would lock the boat the spot making it useless. I don't know whether that was fixed but I'd much rather spend time on other things and let people sail right under Cyrodiil. Link to comment Share on other sites More sharing options...
glowplug Posted May 6, 2023 Author Share Posted May 6, 2023 As quick as I posted, I remembered that a submarine, as it name states, should be 'under water'. If people summon it on some of Cyrodiil's lakes, then the next cell is probably going to be 'under terrain'. If the code makes it drop 1000 units or whatever to make it stay underwater but under terrain then what else can the code do, teleport player and sub to somewhere else?The only problem is 'GetCellWaterType == 0' - should the code record previous cell and put them back there? Link to comment Share on other sites More sharing options...
RomanR Posted May 6, 2023 Share Posted May 6, 2023 (edited) In my opinion GetCellWaterType isn't much suitable as it returns 0 for both non-water and standard water, at least without using commands to complement it - like GetWaterHeight or similar. I also must revise my first post - and not in good way, unfortunately. As I lifted some restrictions in my flying function to be enabled when on water or underwater, I got these results: 1. SetVelocity commands doesn't work - my flying dragon didn't move a inch.2. When I falled back to standard SetPos approach (my function has this option for emergency), I was teleported right on water surface (regardless if exterior or interior). I was able to move, but not up or down.Still I was testing it only on living actor (as I didn't have another suitable "test object"), so your submarine still can be OK, but in light of my tests any non-automated way chance to work right is quite grim. So for summoning I would go teleporting submarine to hand-placed markers way to avoid such problems. Edit: Is it me or in vanilla Oblivion doesn't exist any sort of land vehicle? As if Cyrodiilians doesn't know a thing about a wheel. Edited May 6, 2023 by RomanR Link to comment Share on other sites More sharing options...
glowplug Posted May 6, 2023 Author Share Posted May 6, 2023 Again, thanks for the feedback RomanR. I wasn't thinking as the 'summon spaceship' that I did for Nagasteim puts it in the air above us. Summon submarine, however, would have to resolve the nearest water as well as interpret viable transform. I think that code to establish water height to terrain height relative to player coordinates would resolve this but I will need to test it. Link to comment Share on other sites More sharing options...
Recommended Posts