Hatchet_AS 201 Posted November 5, 2013 (edited) Gentlemen, I need some assistance in getting some of these working fully. Right now everything works as expected, except when utilizing teamSwitch which is 'very randomly' causing CTDs. The only way I have been to eliminate the CTDs (95% sure, see 'very random'), is by removing the tex/mats. As illustrated in this image, every time I add a tex/mat to any of the models in O2, this error presents itself for every model (utilizing makePBO -U -G), seemingly indicating an external reference being broken. My hope is that perhaps I've just stared at it too much the last couple days, or perhaps I'm just forgetting/missing something simple. I believe the geometry to be good, although I could reduce a little detail.. (bah!) it produces no errors. Only LODS in play are: res0, viewPilot, shadowVol (which is less than 1k, not that it matters I don't think). Here is copy of the current .rvmat, switched it around last night in hopes of something mystical. Believe it's functional enough. class StageTI { texture = "a3\data_f\default_ti_ca.paa"; }; ambient[] = {1.0,1.0,1.0,1.0}; diffuse[] = {1.0,1.0,1.0,1.0}; forcedDiffuse[] = {0.0,0.0,0.0,0.0}; emmisive[] = {0.0,0.0,0.0,1.0}; specular[] = {0.3,0.3,0.3,1.0}; specularPower = 100.0; PixelShaderID = "Super"; VertexShaderID = "Super"; class Stage1 { texture = "asdg_attachments\data\asdg_atlis_bipod_nohq.tga"; uvSource = "tex"; class uvTransform { aside[] = {1.0,0.0,0.0}; up[] = {0.0,1.0,0.0}; dir[] = {0.0,0.0,0.0}; pos[] = {0.0,0.0,0.0}; }; }; class Stage2 { texture = "#(argb,8,8,3)color(0.5,0.5,0.5,1,DT)"; uvSource = "tex"; class uvTransform { aside[] = {0.0,9.0,0.0}; up[] = {4.5,0.0,0.0}; dir[] = {0.0,0.0,0.0}; pos[] = {0.0,0.0,0.0}; }; }; class Stage3 { texture = "#(argb,8,8,3)color(0,0,0,0)"; uvSource = "tex"; class uvTransform { aside[] = {1.0,0.0,0.0}; up[] = {0.0,1.0,0.0}; dir[] = {0.0,0.0,0.0}; pos[] = {0.0,0.0,0.0}; }; }; class Stage4 { texture = "asdg_attachments\data\asdg_atlis_bipod_as.tga"; uvSource = "tex"; class uvTransform { aside[] = {1.0,0.0,0.0}; up[] = {0.0,1.0,0.0}; dir[] = {0.0,0.0,0.0}; pos[] = {0.0,0.0,0.0}; }; }; class Stage5 { texture = "asdg_attachments\data\asdg_atlis_bipod_smdi.tga"; uvSource = "tex"; class uvTransform { aside[] = {1.0,0.0,0.0}; up[] = {0.0,1.0,0.0}; dir[] = {0.0,0.0,0.0}; pos[] = {0.0,0.0,0.0}; }; }; class Stage6 { texture = "#(ai,64,64,1)fresnel(1.5,1.22)"; uvSource = "none"; }; class Stage7 { texture = "a3\data_f\env_land_co.paa"; uvSource = "none"; }; And this is the current config setup which utilizes ASDG_JointRails, config/assets separated for internal purposes. Much is of it commented out while I'm trying to sort the current issue. ASDG_Attachments_C (Config): #define private 0 #define protected 1 #define public 2 class CfgPatches { class ASDG_Attachments_C { units[] = {}; weapons[] = {}; requiredVersion = 1.04; requiredAddons[] = {"ASDG_Attachments", "ASDG_JointRails", "A3_Weapons_F", "A3_Weapons_F_Items", "A3_Weapons_F_beta", "A3_Weapons_F_EPA", "A3_Weapons_F_EBR", "A3_Weapons_F_Rifles_Khaybar", "A3_Weapons_F_Rifles_MX", "A3_Weapons_F_Rifles_TRG20", "A3_Weapons_F_Rifles_Mk20", "A3_Weapons_F_EPA_LongRangeRifles_DMR_01"}; author[] = {"ASDG"}; }; }; class asdg_SlotInfo; class asdg_FrontSideRail: asdg_SlotInfo { class compatibleItems; }; class CfgWeapons { class ItemCore; class InventoryFlashLightItem_Base_F; class ASDG_Atlis_Bipod_Base: ItemCore { scope = private; displayname = "Bipod (Deployed)"; descriptionshort = ""; descriptionuse = "<t color='#9cf953'>Rifle bipod suitable for most rail systems.</t>"; picture = "\A3\weapons_F\Data\UI\gear_accv_flashlight_CA"; class ItemInfo: InventoryFlashLightItem_Base_F { mass = 8; // same as the IR pointer, should maybe be more for the version with added rail class Pointer {}; class FlashLight {}; }; }; // class ASDG_Atlis_MX_D: ASDG_Atlis_Bipod_Base { // scope = public; // displayname = "Atlis Bipod MX (Deployed)"; // model = "\ASDG_Attachments\ASDG_Atlis_MX_D"; // }; // class ASDG_Atlis_MX_S: ASDG_Atlis_Bipod_Base { // scope = public; // displayname = "Atlis Bipod MX (Secured)"; // model = "\ASDG_Attachments\ASDG_Atlis_MX_S"; // }; // class ASDG_Atlis_MXM_D: ASDG_Atlis_Bipod_Base { // scope = public; // displayname = "Atlis Bipod MXM (Deployed)"; // model = "\ASDG_Attachments\ASDG_Atlis_MXM_D"; // }; // class ASDG_Atlis_MXM_S: ASDG_Atlis_Bipod_Base { // scope = public; // displayname = "Atlis Bipod MXM (Secured)"; // model = "\ASDG_Attachments\ASDG_Atlis_MXM_S"; // }; class ASDG_Atlis_ABR_D: ASDG_Atlis_Bipod_Base { scope = public; displayname = "Atlis Bipod ABR (Deployed)"; model = "\ASDG_Attachments\ASDG_Atlis_ABR_D"; }; class ASDG_Atlis_ABR_S: ASDG_Atlis_Bipod_Base { scope = public; displayname = "Atlis Bipod ABR (Secured)"; model = "\ASDG_Attachments\ASDG_Atlis_ABR_S"; }; // class ASDG_Atlis_Rahim_D: ASDG_Atlis_Bipod_Base { // scope = public; // displayname = "Atlis Bipod Rahim (Deployed)"; // model = "\ASDG_Attachments\ASDG_Atlis_Rahim_D"; // }; // class ASDG_Atlis_Rahim_S: ASDG_Atlis_Bipod_Base { // scope = public; // displayname = "Atlis Bipod Rahim (Secured)"; // model = "\ASDG_Attachments\ASDG_Atlis_Rahim_S"; // }; // class ASDG_Atlis_Katiba_D: ASDG_Atlis_Bipod_Base { // scope = public; // displayname = "Atlis Bipod Katiba (Deployed)"; // model = "\ASDG_Attachments\ASDG_Atlis_Katiba_D"; // }; // class ASDG_Atlis_Katiba_S: ASDG_Atlis_Bipod_Base { // scope = public; // displayname = "Atlis Bipod Katiba (Secured)"; // model = "\ASDG_Attachments\ASDG_Atlis_Katiba_S"; // }; // class ASDG_Atlis_TRG21_D: ASDG_Atlis_Bipod_Base { // scope = public; // displayname = "Atlis Bipod TRG21 (Deployed)"; // model = "\ASDG_Attachments\ASDG_Atlis_TRG21_D"; // }; // class ASDG_Atlis_TRG21_S: ASDG_Atlis_Bipod_Base { // scope = public; // displayname = "Atlis Bipod TRG21 (Secured)"; // model = "\ASDG_Attachments\ASDG_Atlis_TRG21_S"; // }; // class ASDG_Atlis_MK20_D: ASDG_Atlis_Bipod_Base { // scope = public; // displayname = "Atlis Bipod MK20 (Deployed)"; // model = "\ASDG_Attachments\ASDG_Atlis_MK20_D"; // }; // class ASDG_Atlis_MK20_S: ASDG_Atlis_Bipod_Base { // scope = public; // displayname = "Atlis Bipod MK20 (Secured)"; // model = "\ASDG_Attachments\ASDG_Atlis_MK20_S"; // }; class Rifle; class Rifle_Base_F: Rifle { class WeaponSlotsInfo; }; class Rifle_Long_Base_F: Rifle_Base_F { class WeaponSlotsInfo; }; class EBR_base_F: Rifle_Long_Base_F { class WeaponSlotsInfo: WeaponSlotsInfo { class asdg_FrontSideRail_EBR: asdg_FrontSideRail { class compatibleItems: compatibleItems { ASDG_Atlis_ABR_D = 1; ASDG_Atlis_ABR_S = 1; }; }; }; }; // class arifle_Katiba_Base_F: Rifle_Base_F { // class WeaponSlotsInfo: WeaponSlotsInfo { // class asdg_FrontSideRail_Katiba: asdg_FrontSideRail { // class compatibleItems; // }; // }; // }; // class arifle_Katiba_F: arifle_Katiba_Base_F { // class WeaponSlotsInfo: WeaponSlotsInfo { // class asdg_FrontSideRail_Katiba: asdg_FrontSideRail_Katiba { // class compatibleItems: compatibleItems { // ASDG_Atlis_Katiba_D = 1; // ASDG_Atlis_Katiba_S = 1; // }; // }; // }; // }; // class arifle_MX_Base_F: Rifle_Base_F { // class WeaponSlotsInfo: WeaponSlotsInfo { // class asdg_FrontSideRail_MX: asdg_FrontSideRail { // class compatibleItems; // }; // }; // }; // class arifle_MX_F: arifle_MX_Base_F { // class WeaponSlotsInfo: WeaponSlotsInfo { // class asdg_FrontSideRail_MX: asdg_FrontSideRail_MX { // class compatibleItems: compatibleItems { // ASDG_Atlis_MX_D = 1; // ASDG_Atlis_MX_S = 1; // }; // }; // }; // }; // class arifle_MXM_F: arifle_MX_Base_F { // class WeaponSlotsInfo: WeaponSlotsInfo { // class asdg_FrontSideRail_MX: asdg_FrontSideRail_MX { // class compatibleItems: compatibleItems { // ASDG_Atlis_MXM_D = 1; // ASDG_Atlis_MXM_S = 1; // }; // }; // }; // }; // class Tavor_base_F: Rifle_Base_F { // class WeaponSlotsInfo: WeaponSlotsInfo { // class asdg_FrontSideRail_Tavor: asdg_FrontSideRail { // class compatibleItems; // }; // }; // }; // class arifle_TRG21_F: Tavor_base_F { // class WeaponSlotsInfo: WeaponSlotsInfo { // class asdg_FrontSideRail_Tavor: asdg_FrontSideRail_Tavor { // class compatibleItems: compatibleItems { // ASDG_Atlis_TRG21_D = 1; // ASDG_Atlis_TRG21_S = 1; // }; // }; // }; // }; // class arifle_TRG21_GL_F: arifle_TRG21_F { // class WeaponSlotsInfo: WeaponSlotsInfo { // class asdg_FrontSideRail_Tavor: asdg_FrontSideRail_Tavor { // class compatibleItems: compatibleItems { // ASDG_Atlis_TRG21_D = 0; // ASDG_Atlis_TRG21_S = 0; // }; // }; // }; // }; // class mk20_base_F: Rifle_Base_F { // class WeaponSlotsInfo: WeaponSlotsInfo { // class asdg_FrontSideRail_MK20: asdg_FrontSideRail { // class compatibleItems; // }; // }; // }; // class arifle_Mk20_F: mk20_base_F { // class WeaponSlotsInfo: WeaponSlotsInfo { // class asdg_FrontSideRail_MK20: asdg_FrontSideRail_MK20 { // class compatibleItems: compatibleItems { // ASDG_Atlis_MK20_D = 1; // ASDG_Atlis_MK20_S = 1; // }; // }; // }; // }; // class DMR_01_base_F: Rifle_Long_Base_F { // class WeaponSlotsInfo: WeaponSlotsInfo { // class asdg_FrontSideRail_Rahim: asdg_FrontSideRail { // class compatibleItems: compatibleItems { // ASDG_Atlis_Rahim_D = 1; // ASDG_Atlis_Rahim_S = 1; // }; // }; // }; // }; }; ASDG_Attachments (Assets): class CfgPatches { class asdg_attachments { units[] = {}; weapons[] = {}; requiredVersion = 1.04; requiredAddons[] = {}; author[] = {"Hatchet"}; }; }; Any thoughts, help with obvious oversight or the like is very much appreciated. As the current issue is the only thing preventing these and other things from arriving on the scene. *edit* Someone pointed out the '*.rvmats' listing in binpbo. This has been corrected, but does not change the scenario. What I have noticed is that the CTD is almost instant when assigning tex/mats to the second model (the secured version in testing locally). With only tex/mats applied to the deployed model, I still receive the makePBO error for the deployed models .rvmat, but thus far been able to teamSwitch 20-30 times without issue. Although, that is not a first, it has done this then failed during another testing session. What am I missing here guys? Edited November 5, 2013 by Hatchet_AS Share this post Link to post Share on other sites
[aps]gnat 28 Posted November 5, 2013 Sitting on a train, reading ..... You can't have TGA references inside an RVMAT Reference the PAA version only You are letting O2 convert them for you, or worst cause manually converting them? Share this post Link to post Share on other sites
da12thMonkey 1943 Posted November 5, 2013 (edited) Gnat;2551186']You can't have TGA references inside an RVMAT Yes you can - at least on .rvmats that are applied directly to a .p3d (might be different if it's a new .rvmat that you're trying to apply with hiddenselectionsmaterials). If BinPBO is set to binarise .rvmat files (i.e *.rvmat isn't in the "list of files to copy directly"), then it will convert all referenced .tga files into .paa, amend the .rvmat to reflect this change in the file paths, and delete the original .tga files from the .pbo archive to save space. I've never had to manually change the extensions from .tga in an .rvmat for any model I've made, and if I un-pbo my work and un-Rap the .rvmat after I've binarised it; there are no longer any references to .tga in any part of the archive. You might not be able to put paths to .tga files in a config.cpp though - I haven't checked that one (I manually convert things like UI pictures and alternate hiddenselectionstextures skins). @Hatchet: is there any additional information in your .rpt file that might indicate what is causing the crash? Off the top of my head I can't really think what problems might arrise from a .rvmat that would cause a CTD, so if you could find any more info that might help. Personally I've only experienced CTDs related to weapon models in Arma 3 when they don't have a Geometry LOD. I'm not sure if attachment proxy models might need one as well or not. Edited November 5, 2013 by da12thMonkey Share this post Link to post Share on other sites
Hatchet_AS 201 Posted November 6, 2013 (edited) For what it's worth the .tga references are not typical of my flow on these. I actually manually converted these (trivial process). This was an attempt to sort things, .paa would be normal for me. But I'm pretty sure using .tga is legit as mentioned. @DaMonkey There is nothing. There are dump files and whatnot, nothing useful though outside of that (maybe those are useful?). *edit* Personally I've only experienced CTDs related to weapon models in Arma 3 when they don't have a Geometry LOD. I'm not sure if attachment proxy models might need one as well or not. I actually removed those. Was under the impression they weren't need. But I can't recall why I have that impression. Will check that now. ---------- Post added at 16:56 ---------- Previous post was at 15:47 ---------- Ok ... after some testing (and probably a little more needed to be confident), it would appear having the GEO LOD is indeed important. Why this is the case, I'm not sure. Here are the results of my testing with the two models defined above, the deployed model being the only one where I added the GEO LOD back in. With the Deployed model (w/geo), I can load mission take attachment, place on weapon and teamSwitch seemingly forever (i can switch dozens of times rapidly). Add it to more units and continue switching without fault. When loading the Secured model (wo/geo) first*, it crashes instantly, seemingly without fail, every time. This being a half dozen or more restarts. What is interesting to me, and what I'd like to understand is this: * = If I load the Deployed model first in-game, and then add the Secured model to other units ... there are no issues seemingly. Again switching around dozens of times. All in all, it seems the geometry lod is needed, but what is the relation to what I assume has to be the .rvmat, as it's the only common thing between the two. :confused: ---------- Post added at 17:12 ---------- Previous post was at 16:56 ---------- Think you got it right Monkey. :cool: Added the GEO LOD back to the secured model, open it first in-game, no crashing. After a half dozen restarts, I'm leaning very much towards this being resolved. Releasing it's probably a sure way to find out I suppose. :rolleyes: Edited November 6, 2013 by Hatchet_AS grammatical Share this post Link to post Share on other sites
[aps]gnat 28 Posted November 6, 2013 Yes ...... If BinPBO is set to binarise .rvmat files (i.e *.rvmat isn't in the "list of files to copy directly") Ok, but that's the difference in our work-flows. Cheers. @Hatchet Red herrings ;) gotta love em Share this post Link to post Share on other sites
Hatchet_AS 201 Posted November 6, 2013 Gnat;2551420']@Hatchet Red herrings ;) gotta love em Could of sworn I was going crazy for 3-4 days there. Would still like to understand why loading one model that has a GEO LOD, prevents those that do not from crashing the game. Again the only link I can think of would be the .rvmat ... although I don't understand how that would interface with something like the GEO LOD. Absolutely reproducible though. Ah well, sanity found momentarily. :) Share this post Link to post Share on other sites