Possible Scripting Solution to the x-axis bug

Post » Tue Jun 19, 2012 12:33 pm

Okay... I've mentioned possibly using scripting before to bypass the x-axis bug... but in a general kind of way... This is still a general kind of way, but a few more details, and definitely requires a scripter beyond my meager skills (still working through learning papyrus)...

So I figured it was time for a dedicated thread to this...

The goal of this method is to;
1. Preserve the 'open world' feeling of the TES games for players
2. Make modders lives a bit easier on world space transfers and avoid making 'bottleneck transfer' locations, as well as having LOD rendered across the world spaces.

The script
I say 'Script' but expect it will most likely need to be several scripts and/or quests to make this work correctly. For purposes of the original post here I will simply refer to it in the singular.

The Script would need to do the following;
1. Check the x coordinates of the PC - if it is in either cell -63/63, check to see if there is a world space to teleport to (See World Space Slicing below). If there is not, allow them to continue to -64/63 cells and the invisible borders (nothing happens)
2. If there is, get the y and z coordinates of the PC -- Then teleport the PC to the matching y/z coordinates at the -1/1 cell in the new world space
--- A. Get the weather of the current world space, set the weather in the new world space.

This, should work for NPC's and Critters as well (The weather bit only applies to the PC - stating the obvious)


World Space (Height Map) Slicing
Since the x-axis bug is very specific, this make this idea considerably easier that other implementations from other mod projects dealing with large unusually shaped world spaces. Why? Because we know the cutoff point before the havoc animations go ballistic is at -64 and 64.

So how does that make this easier for large world spaces that have to be cut up to avoid the x-axis bug? It's a straight line. When splitting up the large world spaces (Height Maps), create a 1 cell overlap between them; i.e. -64 & 64 in each world space are the same slice of land.

That single slice of land is 'no mans land', it'll be there just as a visual reference for PC's... and to be the trigger for the script.


Loading Screen
People have demonstrated they can change the loading screens... What I would suggest, if possible, is to change them from the full screen to a simple message box ("you have traveled far' or some such as the message). This would/should decrease the annoyance/immersion breaking aspect of a loading screen. Yes, a message box still breaks it, but not as much as a full screen black screen with some random Skyrim commentary/images.


Which way to handle the script
1. Create a teleport activator that is the entirety of the 'no mans land' cell along the x-axis
--- Problem - Bouncing back and forth between the 'teleport area' - If the script is set to a giant rectangle in the 'no mans land' slice of the world spaces, then hitting the teleport activator on accident may get irritating fast... especially if you're in a fight and bouncing around.

2. Attach the script to the PC directly
--- Frequency and method of checking the conditions that would fire of the teleport... and the same issue of bouncing back and forth between world spaces on accident/during a fight


In both cases, there would need to be a check (IsInCombat type of thing) that either prevents the teleport from firing off until combat is over (+ 15 seconds or so, that way the player can loot the body) or teleports the combatant with the PC so the fight can continue.

Also to consider; which method to best allow NPC/Critter teleportation? Which method is 'cleaner' to implement and doesn't svck up unnecessary system resources?

I think the 'giant teleporting rectangle of doom' is probably the easier and cleaner method, but the immediate question is will it work with the current navmesh bug? if not, then scripts attached to PC/NPC/Critter might need doing until/if it's fixed (correctly) by Bethesda.


So can someone with far more script-fu than I perhaps work out the script(s)/quest(s) we would need to attach this have this attach/fire off a PC/NPC/Critter?


Any other comments suggestions?


EDIT: Adding this section
Map Markers across world spaces
Unless it's changed/I'm mis-remembering, you will have to have a parent world space and your sliced up map will have to be children of it for map markers (or any really) to show up/work/fast travel to/from.

If I remember correctly though, you can have a 'blank' world space (i.e. name only) and attach your divided up world spaces to it, thus allowing map markers/quest markers/fast travel points/etc to function correctly.
User avatar
Nikki Lawrence
 
Posts: 3317
Joined: Sat Jul 01, 2006 2:27 am

Post » Wed Jun 20, 2012 12:32 am

Good idea breaking up the threads as this is quite specific to a workaround. I am going to go the split world space route as I have a fair bit of artistic freedom with Mesogea to allow me to do this.

What would be a great help would be to give an idea of how to slice the world. Starting from a single 16x16 map in RAW format from L3dt how can that be put into the game with working/matching LOD? What process would need to be followed to get 4x16 slice of a 16x16 map and have LOD one quad on either side, so they would be 16x6 quad slices, 4 quads across as operable land and 1 east, 1 west as pure LOD.

Does anyone have a step by step way of doing this?
User avatar
sas
 
Posts: 3435
Joined: Thu Aug 03, 2006 8:40 am

Post » Wed Jun 20, 2012 1:13 am

Good idea breaking up the threads as this is quite specific to a workaround. I am going to go the split world space route as I have a fair bit of artistic freedom with Mesogea to allow me to do this.

What would be a great help would be to give an idea of how to slice the world. Starting from a single 16x16 map in RAW format from L3dt how can that be put into the game with working/matching LOD? What process would need to be followed to get 4x16 slice of a 16x16 map and have LOD one quad on either side, so they would be 16x6 quad slices, 4 quads across as operable land and 1 east, 1 west as pure LOD.

Does anyone have a step by step way of doing this?

Not a step by step, at least I doubt anyone has tried/done this specific method yet...and this is going from memory of multiple discussions about teleporting between world spaces, LOD generation, HM creation... so I may have some steps wrong/misunderstood, but I hope the ideas come across correctly.

I would imagine though you'd have to;
1. Determine total number of cells along your x-axis your map is
2. Decide where you're initial 0,0
3. From initial 0,0 count out cells to -64/64 to determine how many world spaces you'll need.
4. Determined & mark in some way where the -64/64 'ends' of each world space are
5. Load Height Map into favorite editor, cut the world space into each separate world space you need at the right locations
6. Pull Height Map back into CK, make LOD's for each world space (and this part _should_ have your LOD's correct coming from other world spaces.
7. At the -64 / 64 'ends' of each world space, where they will connect, create your teleport activation 'zone' along the entire x-axis in the the entire cell of -64 and/or 64.

That won't solve the problem of accidentally bouncing back and forth, NPC/Critter crossings, or load screen, but it's a start on getting them in and working...
User avatar
Dina Boudreau
 
Posts: 3410
Joined: Thu Jan 04, 2007 10:59 pm

Post » Tue Jun 19, 2012 4:30 pm

I am in a good position with Mesogea as I can redesign the map (within reason) so I can place rivers at crucial points, substantial rivers, heights, cliffs, mountains etc that would be realistically impassable. I can then provide bottle necks at river fords, bridges, mountain passes and so forth, so I would not need to do a full 16 quad line of cells for teleporting.

My issue however is that my world is current a 16x16 quad RAW image that I import using TESannwyn then do the LOD via Oscape. I need therefore to create 4 worldspaces running 64-64 cells across zero. I suppose I could call them Mesogea1 Mesogea2, etc.

So from producing the single RAW image, is there a way of slicing it into 4 strips allowing for another quad either side of the strip for distant LOD?

Once I can get this working and working well, there will be a blueprint for others who want to do the same, such as an All Tamriel map.
User avatar
kennedy
 
Posts: 3299
Joined: Mon Oct 16, 2006 1:53 am

Post » Tue Jun 19, 2012 6:10 pm

>snip - Glad to hear this part for you!<

So from producing the single RAW image, is there a way of slicing it into 4 strips allowing for another quad either side of the strip for distant LOD?

Once I can get this working and working well, there will be a blueprint for others who want to do the same, such as an All Tamriel map.

I've asked Lightwave if it's possible he can add determining the cell width of a HM and being able to chop it up for you... He's been busy as hell lately, so not sure when he'd be able to even look into doing this (if it's even easily implementable!).

Ask Maegfaer how he got the was able to determine the 4quad width for the ME map, apply that to your own...

The fun part? Whatever method you or I or anyone else comes up with to determine the width (slice points if you like), the actual height map editing I think is going to have to be manual (I'm not familiar with l3dt(?)).

I am looking into this... just there's not a lot too look into, this is really a very niche of a niche of a niche of niche thing... hrmmm.. I wonder if google earth may have a way of doing this... anyways, I'll keep looking for solutions, maybe someone else will have some idea(s) in the meantime.

Sorry, best I can offer at the moment. :(
User avatar
Devin Sluis
 
Posts: 3389
Joined: Wed Oct 24, 2007 4:22 am


Return to V - Skyrim