Jump to content

R&D XCOM Map Alterations


Amineri

Recommended Posts

  • Replies 473
  • Created
  • Last Reply

Top Posters In This Topic

Use the roof patch I posted in Map Cleanup. The roof bugs are 100% solvable, I just need to create the patches.

Also, I cannot reproduce the alien pod material fix. I was tweaking and removing some of the files and in some occasions the pods got their material.

 

The log says that some meshes are not loaded. Damaged walls may not leave halfcover chunks.

Edited by LiQuiD911
Link to comment
Share on other sites

LiQuiD911, I was talking about binary data in Texture2D objects.

 

Judging by its definition, NetIndex is native private constant initialized somewhere in c++ code most probably when cooking. "editconst" means that is is visible in Editor but not changeable and noexport means that it is defined manually in some c++ header file.

 

Can you point me directly to two or thee objects (upk files and full names) with the known NetIndex value?

Edited by wghost81
Link to comment
Share on other sites

Just use the log I posted, it's from URB_GasStation.UPK

 

[0016.10] Error: (AddNetObject) Objects StaticMesh FX_Trash.Blowing.Trash_A and RB_BodySetup FX_Trash.Trash_Explosion.Trash_Debris_B:RB_BodySetup_1 have duplicate NetIndex 1090
[0016.10] Error: (AddNetObject) Objects StaticMesh FX_Trash.Blowing.Trash_B and RB_BodySetup FX_Trash.Trash_Explosion.Trash_Debris_C:RB_BodySetup_2 have duplicate NetIndex 1091
[0016.10] Error: (AddNetObject) Objects StaticMesh FX_Trash.Blowing.Trash_C and RB_BodySetup FX_Trash.Trash_Explosion.Trash_Debris_D:RB_BodySetup_3 have duplicate NetIndex 1092
[0016.10] Error: (AddNetObject) Objects StaticMesh FX_Trash.Blowing.Trash_D and RB_BodySetup FX_Trash.Trash_Explosion.Trash_Debris_E:RB_BodySetup_4 have duplicate NetIndex 1093

Link to comment
Share on other sites

For the patches to the map files, is it possible to just add a path to the tfc files in the EU folders? That would be easier than a bunch of file operations finding and copying the tfc files to EW's CookedPCConsole in the Long War installer.

Link to comment
Share on other sites

No, they have to be renamed and copied.

 

We can potentially rewrite all the offsets in EU map files to point to the new EW textures, but this will take ages, because there are tons of textures and we'll need to find the offsets first. Renaming the textures looks like the least painful way now.

Edited by wghost81
Link to comment
Share on other sites

I have an interesting piece of news here.

While looking into NetIndex problem I discovered a very interesting thing: this number is what we call PrevObjRef. It occupies the very first 4 bytes of serialized data. Script packages have this number equal to the Export Table Index of previous export object, so we decided that this was some internal linker info, some kind of enumerator local to the package. But now it turns out that this number is in fact the NetIndex and that it is unique between all the packages. Crazy.

I know where to find all the packages list, but I don't know where to find NetIndexes table or even if it exists or how to find max used NetIndex value. But I'll keep on searching.

So, LiQuiD911, if you know the name of the object, you can change its NetIndex by writing at the beginning of its data:

OBJECT=FX_Trash.Blowing.Trash_A
UNSIGNED=1090 // 4 bytes of NetIndex

UPD: After doing some more research I can't say for sure if NetIndex is globally unique. But it sure is unique for some of the object. It also gets assigned on Net Replication, so it can be dynamic.

Edited by wghost81
Link to comment
Share on other sites

After doing some research I can say that 4 bytes of every export object serialized data are indeed a NetIndex.

 

I tried to understand the NetIndex by looking closely at map packages. That's what I found.

 

TheWorld.PersistentLevel objects have negative NetIndex values. This is probably related to the fact that all PersistentLevel objects are instances in the World. Objects of the same Type have identical NetIndex values.

 

Objects outside TheWorld.PersistentLevel have ForcedExport flag set. Those appear to be a collection of various game assets, cooked directly into the package to decrease its loading time. All of them can be traced back to parent object of Package type, which has NetIndex=-1 and also has non-zero package GUID and NetObjectCount=1. NetObjects[0] appears to hold some flags and 4 bytes in between GUID and NetObjects[0] are different for each package, but I can't understand what exactly they represent.

 

Child objects of each Package object appear to have unique NetIndex values. I.e. different objects in one upk file can have the same NetIndex values, but only if they belong to different packages. For example, in URB_GasStation.upk objects FX_Trash.Blowing.Trash_A and FX_Vehicle_Destruction.P_Car_Explosion.ParticleModuleSize_9 share the same NetIndex=1090, but they belong to different packages: FX_Trash and FX_Vehicle_Destruction respectively. This explains the fact that all the objects inside script packages have NetIndex=ObjRef-1.

 

Since both URB_GasStation.upk:FX_Trash.Blowing.Trash_A and Weapon_FragGrenade_SF.upk:FX_Trash.Trash_Explosion.Trash_Debris_B belong to the same package FX_Trash, I assume that those indeed have to have different NetIndex values.

 

I googled some bits and pieces of related unreal code and came to the conclusion that NetIndex is assigned by Linker and is unique to the package (not upk file, but uncooked package which name can be obtained by looking for objects of Package type inside upk file). While loading packages, NetIndex is taken directly from the upk file, if the file is cooked. Net Replication can also assign NetIndex to an object, but I haven't looked into this closely.

 

BTW, I wonder what'll happen if we set all the duplicated NetIndexes to -1.

Edited by wghost81
Link to comment
Share on other sites

  • Recently Browsing   0 members

    • No registered users viewing this page.

×
×
  • Create New...