Jump to content

Drakous79

Supporter
  • Posts

    765
  • Joined

  • Last visited

Everything posted by Drakous79

  1. It may look crazy to start this thread so close to XCOM 2 release date, but I feel it is something we should try to solve. Missing or incomplete cached shader maps may be the only obstacle keeping us from new models without animations. If you ever tinkered with mats, you could see similar compile error in game's Launch.log: Log: Missing cached shader map for material CHH_Soldiers, compiling. Log: Can't compile CHH_Soldiers with seekfree loading path on console, will attempt to use default material instead Warning: Warning, Failed to compile Material Instance CHH_Lv1MedFem_MOD.Materials.MInst_Lv1MedFem with Base CHH_Soldiers for platform PC-D3D-SM3, Default Material will be used in game. Basically the log is saying, that CHH_Soldiers material defined in CHH_Lv1MedFem_MOD.Materials.MInst_Lv1MedFem does not have its shader map in RefShaderCache-PC-D3D-SM3.upk. What is shader map? What the cache? Hopeffuly following quotes can explain. I am not certain how relevant they are, because this all is new to me. XCOM's RefShaderCache-PC-D3D-SM3.upk It is compressed upk containing Name, Import and Export table and loads of serialized data. NameTable contains names of material parameters. Maybe you know CMOD and CMODB referred by scripts changing armor tint. ImportTable has two entries: 0xFFFFFFFF (-1) ( FF FF FF FF ): Class'Engine.ShaderCache' 0xFFFFFFFE (-2) ( FE FF FF FF ): Package'Engine' ExportTable has one entry: 0x00000001 (1) ( 01 00 00 00 ): ShaderCache'CacheObject' Serialized data consist of concatenated chunks of shaders and material shader maps. EU and EW RefShaderCache-PC-D3D-SM3.upk header differs: EU LicenseeVersion: 59 / NameCount: 1563EW LicenseeVersion: 64 / NameCount: 1796 Material and material instance object format There are some default properties and parameters. Interesting part is at the end, after <None> tag. I compared EU / EW Soldier_FemaleKevlar_SF.upk, because armor material (CHH_Soldiers) fails, but country flags (CHH_Flags) are working. EU and EW CHH_Flags parent material contains the same GUID. The last 4 bytes seem to be the same for all or most materials in given upk file, but are different in other upk files, where is CHH_Flags parent material defined. CHH_Flags parent material: // EU CHH_Flags <None> 01 00 00 00 // 1 entry follows 31 97 D4 1F A8 78 73 46 96 4C 32 1C 64 C7 5D 91 // GUID in RefShaderCache-PC-D3D-SM3.upk 01 00 00 00 // 1 entry follows 01 00 00 00 // 1 entry (or texture) follows B0 03 00 00 // ExportTable; Texture2D'GEN_MaterialParents.Textures.Flags_DIF' 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 E8 3F 89 40 // <<< The same for the most or all materials in given upk file. // EW CHH_Flags <None> 00 00 00 00 00 00 00 00 01 00 00 00 // 1 entry follows 31 97 D4 1F A8 78 73 46 96 4C 32 1C 64 C7 5D 91 // <<< The same as in EU version 01 00 00 00 // 1 entry follows 01 00 00 00 // 1 entry (or texture) follows C6 03 00 00 // ExportTable; Texture2D'GEN_MaterialParents.Textures.Flags_DIF' 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 68 15 65 38 // <<< Different GUID 31 97 D4 1F A8 78 73 46 96 4C 32 1C 64 C7 5D 91 is present in 1 chunk (material shader map) inside EW RefShaderCache-PC-D3D-SM3.upk. CHH_Soldiers parent material: // EU CHH_Soldiers <None> 00 00 00 00 00 00 00 00 01 00 00 00 // 1 entry follows 7C A9 4E 6C 1B DD 0B 47 A1 45 75 AB A2 38 CC 32 // GUID in RefShaderCache-PC-D3D-SM3.upk 01 00 00 00 // 1 entry follows 03 00 00 00 // 3 entries (or textures) follow 86 FF FF FF // ImportTable; Texture2D'GEN_MaterialParents.Textures.Default_Normal' AF 03 00 00 // ExportTable; Texture2D'GEN_MaterialParents.Textures.Default_Spec' 87 FF FF FF // ImportTable; Texture2D'GEN_MaterialParents.Textures.Default_Diff' 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 03 00 00 00 // 3 entries follow 00 00 00 00 01 00 00 00 00 00 80 3F 00 00 80 3F // LinearColor? 00 00 00 00 02 00 00 00 00 00 80 3F 00 00 80 3F // LinearColor? 00 00 00 00 00 00 00 00 00 00 80 3F 00 00 80 3F // LinearColor? E8 3F 89 40 // EW CHH_Soldiers <None> 00 00 00 00 00 00 00 00 01 00 00 00 // 1 entry follows 16 0C C4 39 3E 29 7F 47 9D EF 6C E1 AE 45 44 10 // <<< Different 01 00 00 00 // 1 entry follows 03 00 00 00 // 3 entries (or textures) follow 87 FF FF FF // ImportTable; Texture2D'GEN_MaterialParents.Textures.Default_Normal' C5 03 00 00 // ExportTable; Texture2D'GEN_MaterialParents.Textures.Default_Spec' 88 FF FF FF // ImportTable; Texture2D'GEN_MaterialParents.Textures.Default_Diff' 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 03 00 00 00 // 3 entries follow 00 00 00 00 01 00 00 00 00 00 80 3F 00 00 80 3F // LinearColor? 00 00 00 00 02 00 00 00 00 00 80 3F 00 00 80 3F // LinearColor? 00 00 00 00 00 00 00 00 00 00 80 3F 00 00 80 3F // LinearColor? 68 15 65 38 // <<< Different GUID 16 0C C4 39 3E 29 7F 47 9D EF 6C E1 AE 45 44 10 is in 13 chunks (material shader maps) inside EW RefShaderCache-PC-D3D-SM3.upk. Could be different maps for soldiers, SHIVs, weapons, cinematics, civilians, I don't know for sure atm. What next? I don't know, what communication is going on between the material and shader cache file, what is the logic. Does the mat querry the cache file, or does the cache file just assigns shader map to it? How does the cache file knows, which material needs shader map? Maybe next step is to utilize UDK, create a package with a material, cook it, backup shader cache file, add a texture to the material, recook, compare cache files to find out where those chunks begin and end and then copy some chunks from EU to EW shader cache.
  2. Seems dead, but since you kind of revived it, someone might give it another try :)
  3. You can run umodel with switches like -noanim. If I recall, animations were an obstacle, when I tried. But it is definitely possible to take exported *.ps* and rename it to *.psk, import to Blender, save as *.fbx, import to UDK, cook, use as streaming map in the game. Also materials weren't working in the game. Licensing number or shaders issue.
  4. That reminded me of ZX Spectrum, how one had to change tapes, loader programm and then the game hehe. Modd it? Definitely, with scissors.
  5. If I'd have to choose, where to share info and discuss XCOM 2 mods, it'd be here on Nexus. Also what Zyxpsilon and tracktwo said is very true. Great forum, Wiki and a part of modding history. Guess we can wait and see, if the need is right or none.
  6. Wow, that is cool. I wonder what mods are under development.
  7. Inspired by SpazmoJones' magic in Enhanced Soldier Customization (for Long War) mod and XCOM 2 character customization YouTube video, I've started to explore EU/EW customization options again. Here is some info on integers - need to sort it in my head too. Warning, maybe old news for someone. --- Quick recap of tokens (Hex values XCOM Modding at Nexus Wiki): 0x25 IntZero (size 1 byte, value 0)0x26 IntOne (size 1 byte, value 1)0x2C IntConstByte (size 1 byte, value <= 255)0x?? IntConstShort (size 2 bytes, value <= 65535)0x1D IntConst (size 4 bytes, value <= 4294967295) Four byte integer code 1D FF FF FF FF can hold values like: 1 - 4 integers <= 255 (4x 1 byte)1 - 2 integers <= 255 and 1 integer <= 65535 (2x 1 byte and 1x 2 bytes)1 integer <= 255 and 1 integer <= 16777215 (1x 1 byte and 1x 3 bytes)2 integers <= 65535 (2x 2 bytes)1 integer <= 4294967295 (1x 4 bytes)A number of stored integers depends on your needs (amount and size of desired ints). I'd like to store 4 ints <= 255 in NewIdx now, 4 various indexes to one color palette without going crazy with checkpoint records. Setting all four values for the first time is easy. Just set all four bytes. // PatcherGUI code 0F 00 <.NewIdx> // NewIdx = 1D <%b 10> <%b 20> <%b 30> <%b 40> // 757274895 // Decompiled code NewIdx = 757274895; Or alternatively: // PatcherGUI code 0F 00 <.NewIdx> // NewIdx = 92 92 92 // + + + 94 // << shift left 1D <%u 40> 2C <%b 24> // (40 << 24) 16 94 // << shift left 1D <%u 30> 2C <%b 16> // (30 << 16) 16 16 94 // << shift left 1D <%u 20> 2C <%b 8> // (20 << 8) 16 16 1D <%u 10> // 10 16 // Decompiled code NewIdx = (((40 << 24) + (30 << 16)) + (20 << 8)) + 10; 3 of 4 values must be shifted, so they land at the correct byte. How to shift is set by a direction and a number of bits. the 1st byte - no shiftthe 2nd byte - shift in a direction by 1 byte (8 bits)the 3rd byte - shift in a direction by 2 bytes (16 bits)the 4th byte - shift in a direction by 3 bytes (24 bits)Tokens: 0x94 LessLess_IntInt - shift left0x95 GreaterGreater_IntInt - shift rightShifting is quite fun, because Unreal Engine 3 uses little endian approach (reads a lot of stuff from right to left; backwards). As it may be good and effective for machines, it is confusing and not so comfortable for non-programming human beings. Lets check integer code again so we can understand the magic of bitwise operations: 0A 14 1E 28 // in byte code 10 20 30 40 // decimal values order in byte code 28 1E 14 0A // in the game 40 30 20 10 // decimal values order in the game // NewIdx shifted by 0 = 10 // NewIdx shifted by 8 = 20 // NewIdx shifted by 16 = 30 // NewIdx shifted by 24 = 40 . Setting just single value is more tricky. I'll show it on example, where is 10 20 30 40 set in the code. & (and) operator with a mask is used on already set integer and compared with help | (or) operator with new shifted value. In the mask I will FF all values I don't want to change and 00 the value I want to change, the third byte as defined in byte code to 33 in this case. The mask follows byte code values order. // PatcherGUI code 0F 00 <.NewIdx> // NewIdx = 9E // | OR 9C // & AND 00 <.NewIdx> 1D FF FF 00 FF // (NewIdx & -16711681) the mask 16 94 // << shift left 1D <%u 33> 2C <%b 16> // (33 << 16) 16 16 // Decompiled code NewIdx = (NewIdx & -16711681) | (33 << 16); The | (or) operator looks at each bit and returns 1 if the bit is 1 in either of the inputs. In this case I masked 30 with zeros, so the result is: 00000000 | 00100001 = 00100001 // 0 | 33 = 33Without the mask would happen this: 00011110 | 00100001 = 00111111 // 30 | 33 = 63Shoud be possible to invert the mask, FF the value to change and use & (and) operator instead, but I haven't tried it. Or to multiply the third value of NewIdx by zero first and then just add the shifted value. Tokens: 0x9C And_IntInt - &0x9D Xor_IntInt - ^0x9E Or_IntInt - | Retrieving values is done with help of shifts and masks too. While setting values requires shift to the left, reading values requires shift to the right :smile: If you know Ultima Online, that would be Por Ort Grav words of powah. The mask is simple this time, just FF (255 in decimal). NewInt variable in the next example isn't used in the game, but I used it to demonstrate the retrieval in the code. I'm using LogInternal heavily and checking real time log (Steam's launch parameter -log). Here goes the code: // PatcherGUI code 0F 00 <.NewInt> // NewInt = 9C // & AND 00 <.NewIdx> 2C FF // (NewIdx & 255) 16 0F 00 <.NewInt> // NewInt = 9C // & AND 95 // >> shift right 00 <.NewIdx> 2C <%b 8> 16 2C FF // ((NewIdx >> 8) & 255) 16 0F 00 <.NewInt> // NewInt = 9C // & AND 95 // >> shift right 00 <.NewIdx> 2C <%b 16> 16 2C FF // ((NewIdx >> 16) & 255) 16 0F 00 <.NewInt> // NewInt = 9C // & AND 95 // >> shift right 00 <.NewIdx> 2C <%b 24> 16 2C FF // ((NewIdx >> 24) & 255) 16 // Decompiled code NewInt = (NewIdx & 255); NewInt = ((NewIdx >> 8) & 255); NewInt = ((NewIdx >> 16) & 255); NewInt = ((NewIdx >> 24) & 255); // --- // PatcherGUI code E7 // LogInternal A8 // Join strings 1F <%t "********** D79 debug ********** XGCustomizeUI.AdvanceArmorTint NewIdx 16 ="> 38 53 // IntToString 9C // & AND 95 // >> shift right 00 <.NewIdx> 2C <%b 16> 16 2C <%b 255> 16 16 // Close join strings 16 // Close LogInternal // Decompiled code LogInternal("********** D79 debug ********** XGCustomizeUI.AdvanceArmorTint NewIdx 16=" @ string((NewIdx >> 16) & 255)); You can use 2C <%b 255> // instead of 2C FF for better orientation in pseudo code. Well, that would be all. Hopefully I understand it right, but if you see some inaccurate or wrong info, feel free to correct or explain :smile: 4 values instead of one, that may be armor's primary, secondary, weapon's and helmet color stored. One link with good explanation of AND, OR and shift operations: Bitwise operation at Wikipedia. --- Edit: Corrected speculation part about inverting the mask in Setting just single value section and added Wikipedia link to Bitwise operation.
  8. Great! :) Nexus feels like a home and would be nice to stay.
  9. New XCOM is on the way and I can't wait to play it and try the SDK. I have few things I want to do :) like Ultra Violet glasses. But a question came on my mind. Where will we discuss XCOM 2 modding? Is the game going to have its own Nexus forum?
  10. After the first mission you can choose what to research. At that point I choose Xenobiology, so I can later capture live aliens and get to alien base as soon as possible. If I remember it well, it is Xenobiology, Arc Thrower, build Alien Containment, capture sectoid or thinman, then capture outsider (yellow crystal one), research outsider's shard, build a key to the base. But it is also important to launch satelittes = more money and staff and good tool to reduce panic at the end of the month. Just keep in mind it takes few days until a satelitte reaches orbit, so launch them in time. Like 27th day. Also passing a mission is bad, because ignoring flying or landed UFOs or not responding to abductions raises panic too. You can shoot down an UFO and then ignore it if you have to. Or fly to a mission, jump in and then retreat. Well, I hope I am right about retreating, because I have never tried it. That mod you are using, have you read what it is supposed to do? You can use Google translator to better understand mod's description. Maybe it is designed to make your game harder :smile: --- You could mod panic yourself. It is not hard and well documented. If you play Enemy Within, then there is DefaultGameCore.ini in Steam\steamapps\common\XCom-Enemy-Unknown\XEW\XComGame\Config\ folder. Also you will need PatcherGUI to enable INI loading. In that INI file are panic values: ;Panic Values PANIC_TERROR_CONTINENT=2 PANIC_TERROR_COUNTRY=2 PANIC_UFO_SHOOTDOWN=-1 PANIC_UFO_ASSAULT=-1 PANIC_SAT_DESTROYED_CONTINENT=1 PANIC_SAT_DESTROYED_COUNTRY=2 PANIC_SAT_ADDED_COUNTRY=-2 PANIC_SAT_ADDED_CONTINENT=0 PANIC_ALIENBASE_CONQUERED=-2 PANIC_ALIENBASE_CONQUERED_CLASSIC_AND_IMPOSSIBLE=-1 PANIC_EXALT_RAIDED=-1 PANIC_EXALT_RAIDED_CLASSIC_AND_IMPOSSIBLE=-1 PANIC_UFO_IGNORED=2 PANIC_UFO_ESCAPED=1 PANIC_ABDUCTION_COUNTRY_EASY=1 PANIC_ABDUCTION_COUNTRY_NORMAL=1 PANIC_ABDUCTION_COUNTRY_HARD=1 PANIC_ABDUCTION_COUNTRY_CLASSIC=2 PANIC_ABDUCTION_CONTINENT_EASY=1 PANIC_ABDUCTION_CONTINENT_NORMAL=1 PANIC_ABDUCTION_CONTINENT_HARD=1 PANIC_ABDUCTION_CONTINENT_CLASSIC=1 PANIC_ABDUCTION_THWARTED_CONTINENT=0 PANIC_ABDUCTION_THWARTED_COUNTRY=-3 STARTING_PANIC_EASY=0 STARTING_PANIC_NORMAL=0 STARTING_PANIC_HARD=8 STARTING_PANIC_CLASSIC=16 PANIC_DEFECT_THRESHHOLD_EASY=5 PANIC_DEFECT_THRESHHOLD_NORMAL=5 PANIC_DEFECT_THRESHHOLD_HARD=5 PANIC_DEFECT_THRESHHOLD_CLASSIC=5 PANIC_DEFECT_THRESHHOLD_NOT_HELPED_EASY=5 PANIC_DEFECT_THRESHHOLD_NOT_HELPED_NORMAL=5 PANIC_DEFECT_THRESHHOLD_NOT_HELPED_HARD=5 PANIC_DEFECT_THRESHHOLD_NOT_HELPED_CLASSIC=5 PANIC_DEFECTIONS_PER_MONTH_EASY=1 PANIC_DEFECTIONS_PER_MONTH_NORMAL=2 PANIC_DEFECTIONS_PER_MONTH_HARD=3 PANIC_DEFECTIONS_PER_MONTH_CLASSIC=8 PANIC_DEFECT_CHANCE_PER_BLOCK_EASY=10 PANIC_DEFECT_CHANCE_PER_BLOCK_NORMAL=10 PANIC_DEFECT_CHANCE_PER_BLOCK_HARD=10 PANIC_DEFECT_CHANCE_PER_BLOCK_CLASSIC=10 SAT_HELP_DEFECT=1 ;If country has satellite, "Chance of Leaving"*SAT_HELP_DEFECT SAT_HELP_DEFECT=1 SAT_HELP_DEFECT=1 SAT_HELP_DEFECT=1 SAT_NEARBY_HELP_DEFECT=1 ;Else If continent has one or more satellite, "Chance of Leaving"*SAT_NEARBY_HELP_DEFECT SAT_NEARBY_HELP_DEFECT=1 SAT_NEARBY_HELP_DEFECT=1 SAT_NEARBY_HELP_DEFECT=1 SAT_PANIC_REDUCTION_PER_MONTH=1 ;If a country has a satellite, it will remove panic once a month, but the chance of this happening is PANIC_REDUCTION_CHANCE SAT_PANIC_REDUCTION_PER_MONTH=1 SAT_PANIC_REDUCTION_PER_MONTH=1 SAT_PANIC_REDUCTION_PER_MONTH=1 They are documented in Nexus Wiki article http://wiki.tesnexus.com/index.php/DefaultGameCore.ini_settings_-_XCOM:EU_2012#PANIC_Base_Values See? PANIC_ALIENBASE_CONQUERED=-2 means worldwide -2 reduction. Also there are 4 lines for some values: STARTING_PANIC_EASY=0 STARTING_PANIC_NORMAL=0 STARTING_PANIC_HARD=8 STARTING_PANIC_CLASSIC=16 So you should mod the one you choosed to play: Easy Normal Classic Impossible Don't forget to remove the mod you wrote about, if you decide to do it yourself.
  11. Good is to shoot down every UFO if possible. Try to win every mission. Launch satelittes before end of a month to control the most panicked countries. Also do research ... Xenobiology, then stuff to capture live alien and so on, so you have an option to assault alien base before end of the second or the third month. This will help alot, because taking their base reduce panic in all countries. After the base you should have enough satellites to stop worrying.
  12. I am sorry to dig up old thread, but you can see LogInternal function's output in log's window. Just put -log switch into launch options of the game (Steam / Library / right click on XCOM: Enemy Uknown and select Properties / General Tab, Set Launch Options button).
  13. Amineri, thanks for the explanation. I suspect there's an error in female titan skeleton mesh, because its MIC isn't accepting ini's UV coordinates. There's Lv3MedMale_DIF texture mapped to flag's area and is always positioned at U=0 and V=0. When I compare EW P3 and EU P6 skeletal meshes, EW's has smaller size, like something is missing, not just bHasVertexColors=true. Zyxpsilon, I fear that rescaling issue can't be solved by scripts. In armor's model is defined, what area of texture is used. For flags it is 256x128 px at position xy (UV) 0. We can change U and V with scripts, because it is defined by scalar parameters in material, but width and height is hardcoded in the model. Texture mapping.
  14. Well done guys, you are fast. I'd recommend doing UI flags in exact dimensions, that will be used in the game, because every rescaling takes away some quallity. I am bad in explaining :sad: but I can see details. Posted about those deformations, because thought it will save us some work later. I'd go with 256x160 as the original and render it to bitmap. Then crop the height to 128 to get UI version. Reload. Rescale the height to 128 to get Flags_DIF version. Crop the width to 208 and rescale it back to 256 is good too, different approach. Speaking of details, every flag in Flags_DIF texture has 2 px border (as Amineri mentioned already). "Perfect" asset would have 252x124 true flag data + 2px border :smile: Man, you rock. You've done so much before I even got any free time. What is left to do?
  15. Please just keep in mind, that if you do 256x128 flag for pawn texture, its height will be stretched on 3D model. So if there's a circle on the flag, it will become an oval. To produce the circle, an oval should be on 256x128 flag. See Japan example :smile: Female titan has a bug. Edit: It was ok in EW initial release, but since Patch 1 it is broken. Seems broken in EW.
  16. Btw if we do old flags as well, we can change cloth pattern used.
  17. Zyxpsilon, very nice XCOM flag! I like its regural feel. Good idea with creating 256x128 as the source. But there are deformations, when you look on the texture with 32 flags. http://i.imgur.com/JkiY0Xh.jpg The worst with flags are different proportions. Some national flags are 2:3, some 4:7 aso. Flags in XCOM are 1:2, but flags for pawns seems to be stretched to 2:3 ??? in the end. Japan UI flag on the picture is exported from UICollection_Common_SF.upk. Tried to take a screenshot of SM_Deco_Kevlar0_Male model too. Orange area is highlighted mesh using flag material. Note image dimensions: UI 128x64 pxPawns 256x128 pxI am using CorelDraw and do every flag in original ratio using vectors and RGB colors. Then it can be cropped for UI, deformed for pawns and textured. Currently I have Indonesia, Iran and Pakistan in raw form. Would like to do Czech flag as it is my country. I had a thought of packing all flags into one image and add country codes, when we are done. This could serve as quick reference. For an example I don't know all country flags :smile: IMO UI flags seem to be low res, but scaled as needed. We should try to feed the game with 256x128 px UI flag (or bigger) to test how it looks. Low quallity is quite notable on stars of USA flag on soldier list in baracks. Edit: Decided to do quick test with TexMod (used an image from Wiki) and the best looks 128x64 px. Wondering, why vanilla flag looks not so good. http://i.imgur.com/k8DP3ya.jpg When it came to resize 10:19 flag to 1:2, I proportionally resized it to 128 px height and prolonged stripes as needed. Maybe devs went similar way.
  18. Okies. I wish it was easier to change textures, considering custom user flags. I don't think people would install UDK and create new textures and add them to new package . Maybe the way to go is to put one blank flag how Firaxis did it, feed enum with one custom entry and let players use TexMod to insert flag of their choice to the texture of 32 flags. Edit: Is LW played on consoles too?
  19. Should be flags ordered in the texture as in the list? From left to right, row after row. Or alphabetically?
  20. Welcome to the forums :smile: It is unexplored area. You'd need 3 or maybe 4 models: armor, head, hair and weapon. Basic soldier's model is using Soldier_MaleKevlar_SF and Soldier_FemaleKevlar_SF.upk armor. When I want to export something, I use command: umodel -lzo -export FileName.upkSometimes it fails on animations so I have to add -noanim. I have umodel copied directly into CookedPCConsole. Model is then found in SkeletalMesh3 folder and it is in *.psk format. Textures are in Texture2D folder. Edit: You can check this forum post. There's a link to some unfolding site, where someone exported armors and weapons and saved them as *.obj format.
  21. The best would to be add all nationalities, but I think this one is sorted out. It is possible to change the texture on the fly while new UVs are written in DefaultConfig.ini and new textures are in one new package and one new tfc file plus new code in UpdateFlagMaterial function. And updated enum ECountry in XGGameData, UIUtilities.GetCountryLabel and add small images (or action script pointing to new package) to UICollection_Common_SF.
  22. Right, and to save those tints somewhere (Checkpoint probably) and update some functions like UpdateArmorMaterial and those for customization UI.
×
×
  • Create New...