Jump to content
Sign in to follow this  
Alwarren

The Attachments rant

Recommended Posts

Alright, I hate to do this - I really do - but I guess it's the only way to draw attention. Another rant.

I was about to update my M4 pack. What I wanted to do is add support for other attachment packs. So far, as I can see, there are:

  • FHQ Attachment Pack
  • R3F French Weapon attachments
  • Scope Mod A3
  • Kiory's Susat

And those are only the ones I immediately came up with without even thinking, and only those that are dedicated packs with the purpose of adding attachments for weapons, not even those that are contained within the numerous weapon packs that are available. And we are at the very beginning of Arma 3's life cycle. Expect more to come.

With the current attachment system, supporting all of these is impossible. You can pick at most two or so, anything else just becomes ridiculous for users and modders alike. Because if you wanted to support them all, and wanted to have choice for the users (i.e. do not REQUIRE all of them), you will need a sh*tload of different configs to combine these packs.

Now, the reasons for this has been mentioned numerous times, from the very beginning of Alpha, and there is a ticket about the issue dated March 8 with 670 upvotes. I mentioned the issue so often that I thought I'd be starting to go on everybody's nerves with it. This situation is bad for modders and it is bad for users, and frankly, I cannot understand why such an important issue hasn't been addressed in such a long time in a game who's main focus is user-made content. I guess it wasn't needed for making pretty screenshots. But for us modders, and for us users, it means confusion, extra work, and ridiculous combinatorial configs to be able to use addon X with addon Y.

So please take this as the rant it is. I don't really expect anything to change, especially now that the game has been released, but the way that this important feedback was ignored makes me angry to say the least. This isn't something modders can fix, it is something that modders have to live with and users have to suffer from. And the fact that it was brought up, by myself and numerous other addon makers, almost immediately after release of the Alpha and successfully ignored by the devs in spite of having big-shit-potential is just sad.

Share this post


Link to post
Share on other sites

I completely agree. I don't understand how they couldn't foresee something like this happening honestly. Especially considering how easy it should be to add scopes based on say the type of rail they mount on versus what specific weapon they mount on and then configure the rail of the weapon from inside the weapons config.

Share this post


Link to post
Share on other sites

I really don't understand why there wasn't at least a single word from BI in regards to this. The entire weapon attachment system is rendered useless with mods if there is no cross compatibility. Honestly, at this point in time, even allowing all weapons to use all attachments would be a step forward until a proper solution is in place.

Share this post


Link to post
Share on other sites

This thread has absolutely nothing to do with any current dev branch changes, therefore it does not belong in the dev branch subforum.

Thread moved.

Share this post


Link to post
Share on other sites

Agreed - it's a short sighted implementation.

Would have been much nicer in the gun config to have a "rail_type" or other somesuch value and check it against the attachment config to see if compatible.

Share this post


Link to post
Share on other sites

BIS, please help us out here. Is changing the current system to better support attachment mods really is something that cannot be done?

Share this post


Link to post
Share on other sites

I fully agree with this. I thought that the new Attachment system would be an awesome opportunity for modders since all they would have to do is one, or two weapon models and then the attachments, or use attachements from another mod.

Share this post


Link to post
Share on other sites

BIS = yet another proof of project leads incompetent at the highest levels.

how else should we, the ones keeping the game alive, put it?

Share this post


Link to post
Share on other sites

Since I don't want to just rant, here's a proposal that could be used to solve the issue:

Have a CfgRails that specifies possible rails/attachment systems that can be used by weapons, and can be patched/extended by addons just like CfgWeapons or CfgVehicles:

class CfgRails {
   class PicatinnyRailTopShort {
       description = "MIL-STD 1913 rail system, for top mounting optics on a weapon";
       linkProxy = "\A3\data_f\proxies\weapon_slots\TOP";
   };
   class PicatinnyRailTopLong {
       description = "MIL-STD 1913 rail system for top-mounting optics. This variant is long enough to mount literally all scopes and optics.";
       linkProxy = "\A3\data_f\proxies\weapon_slots\TOP";
   };

   class PicatinnyRailSide {
       description = "MIL-STD 1913 rail system, for mounting laser pointers or flashlights
       linkProxy = "\A3\data_f\proxies\weapon_slots\SIDE";
   };
}

Note I included a short and long top rail, mostly because weapons like the M4 have a relatively short rail that might not be able to hold all of the larger scopes (like a Leupold with Night Vision).

An attachment would look something like this:

   class FHQ_optic_AIM: ItemCore
   {
       scope = 2;
       compatibleRails[] = {"PicatinnyRailTopShort", "PicatinnyRailTopLong"}; // <- Specify the rails this can be mounted on.
       displayName = "Aimpoint (Black)";
       picture = "\FHQ_Accessories\AIM\UI\gear_acco_compm4_ca.paa";
       model = "\FHQ_Accessories\AIM\aimpoint.p3d";
       descriptionShort = "Close Combat optic";
       weaponInfoType = "RscWeaponZeroing";
       class ItemInfo: InventoryOpticsItem_Base_F
       {
           mass = 2;
           RMBhint = "Advanced Collimator Optics";
           modelOptics = "\A3\Weapons_F\empty";
           optics = 1;
           class OpticsModes
           {
               class ACO
               {
                   opticsID = 1;
                   useModelOptics = 0;
                   opticsZoomMin = 0.375;
                   opticsZoomMax = 1.1;
                   opticsZoomInit = 0.75;
                   memoryPointCamera = "eye";
                   opticsFlare = 0;
                   opticsDisablePeripherialVision = 0;
                   distanceZoomMin = 200;
                   distanceZoomMax = 200;
                   cameraDir = "";
                   visionMode[] = {};
                   opticsPPEffects[] = {""};
               };
           };
       };
   };

And finally, a weapon would define their rails like this:

class WeaponSlotsInfo: WeaponSlotsInfo
       {
           class MuzzleSlot: SlotInfo
           {
               linkProxy = "\A3\data_f\proxies\weapon_slots\MUZZLE";
               compatibleItems[] = {
                   "FHQ_M4_muzzle_snds_556_blk", 
                   "FHQ_M4_muzzle_snds_556_tan",
                   "FHQ_M4_muzzle_snds_556_wdl",
                   "FHQ_M4_muzzle_snds_556_snw",
                   "FHQ_M4_muzzle_snds_556"
               };
           };
           class CowsSlot: CowsSlot {
               rail = "PicatinnyRailTopShort";
           };
           class PointerSlot: PointerSlot{
               rail = "PicatinnyRailSide";
           };
       };

I excluded the muzzle since the suppressor is mostly weapon-specific anyway, but the system can easily be extended for suppressors as well.

For an AK-74 for example, adding their own custom attachment "rail" would be easy. A set of pre-defined rail/attachment names would be best kept in the game data, though, to make the names universal, although it wouldn't be too much of an issue to add rails to your weapon (it somewhat defeats the purpose though, which is why they would be best provided by BIS directly for the more common attachment types like Picatinny, PCAP, or the russian dovetail system).

This system would allow people to just specify their rail configuration.

If the system were modified like this, it would have a couple of major advantages:

  • Attachments would work automatically without having to specify by name which one can be mounted
  • Future attachment packs would automatically work on all existing weapons that are compatible
  • Weapon addons would not need to depend on attachments. They would specify their rails and could be used with any attachment that can be mounted on that rail
  • No need for patch configs that allow use on default weapons.

Since the whole config stuff is mainly there to answer the question "Can I attach this scope to this weapon", this shouldn't really be hard to implement, but it would go a long long way to preventing the fudge we're currently in with attachments.

Share this post


Link to post
Share on other sites
Since I don't want to just rant, here's a proposal that could be used to solve the issue:

Have a CfgRails that specifies possible rails/attachment systems that can be used by weapons, and can be patched/extended by addons just like CfgWeapons or CfgVehicles:

class CfgRails {
   class PicatinnyRailTopShort {
       description = "MIL-STD 1913 rail system, for top mounting optics on a weapon";
       linkProxy = "\A3\data_f\proxies\weapon_slots\TOP";
   };
   class PicatinnyRailTopLong {
       description = "MIL-STD 1913 rail system for top-mounting optics. This variant is long enough to mount literally all scopes and optics.";
       linkProxy = "\A3\data_f\proxies\weapon_slots\TOP";
   };

   class PicatinnyRailSide {
       description = "MIL-STD 1913 rail system, for mounting laser pointers or flashlights
       linkProxy = "\A3\data_f\proxies\weapon_slots\SIDE";
   };
}

Note I included a short and long top rail, mostly because weapons like the M4 have a relatively short rail that might not be able to hold all of the larger scopes (like a Leupold with Night Vision).

An attachment would look something like this:

   class FHQ_optic_AIM: ItemCore
   {
       scope = 2;
       compatibleRails[] = {"PicatinnyRailTopShort", "PicatinnyRailTopLong"}; // <- Specify the rails this can be mounted on.
       displayName = "Aimpoint (Black)";
       picture = "\FHQ_Accessories\AIM\UI\gear_acco_compm4_ca.paa";
       model = "\FHQ_Accessories\AIM\aimpoint.p3d";
       descriptionShort = "Close Combat optic";
       weaponInfoType = "RscWeaponZeroing";
       class ItemInfo: InventoryOpticsItem_Base_F
       {
           mass = 2;
           RMBhint = "Advanced Collimator Optics";
           modelOptics = "\A3\Weapons_F\empty";
           optics = 1;
           class OpticsModes
           {
               class ACO
               {
                   opticsID = 1;
                   useModelOptics = 0;
                   opticsZoomMin = 0.375;
                   opticsZoomMax = 1.1;
                   opticsZoomInit = 0.75;
                   memoryPointCamera = "eye";
                   opticsFlare = 0;
                   opticsDisablePeripherialVision = 0;
                   distanceZoomMin = 200;
                   distanceZoomMax = 200;
                   cameraDir = "";
                   visionMode[] = {};
                   opticsPPEffects[] = {""};
               };
           };
       };
   };

And finally, a weapon would define their rails like this:

class WeaponSlotsInfo: WeaponSlotsInfo
       {
           class MuzzleSlot: SlotInfo
           {
               linkProxy = "\A3\data_f\proxies\weapon_slots\MUZZLE";
               compatibleItems[] = {
                   "FHQ_M4_muzzle_snds_556_blk", 
                   "FHQ_M4_muzzle_snds_556_tan",
                   "FHQ_M4_muzzle_snds_556_wdl",
                   "FHQ_M4_muzzle_snds_556_snw",
                   "FHQ_M4_muzzle_snds_556"
               };
           };
           class CowsSlot: CowsSlot {
               rail = "PicatinnyRailTopShort";
           };
           class PointerSlot: PointerSlot{
               rail = "PicatinnyRailSide";
           };
       };

I excluded the muzzle since the suppressor is mostly weapon-specific anyway, but the system can easily be extended for suppressors as well.

For an AK-74 for example, adding their own custom attachment "rail" would be easy. A set of pre-defined rail/attachment names would be best kept in the game data, though, to make the names universal, although it wouldn't be too much of an issue to add rails to your weapon (it somewhat defeats the purpose though, which is why they would be best provided by BIS directly for the more common attachment types like Picatinny, PCAP, or the russian dovetail system).

This system would allow people to just specify their rail configuration.

If the system were modified like this, it would have a couple of major advantages:

  • Attachments would work automatically without having to specify by name which one can be mounted
  • Future attachment packs would automatically work on all existing weapons that are compatible
  • Weapon addons would not need to depend on attachments. They would specify their rails and could be used with any attachment that can be mounted on that rail
  • No need for patch configs that allow use on default weapons.

Since the whole config stuff is mainly there to answer the question "Can I attach this scope to this weapon", this shouldn't really be hard to implement, but it would go a long long way to preventing the fudge we're currently in with attachments.

^Pretty much this!

Share this post


Link to post
Share on other sites
;2528563']Unless I am missing something' date=' your design is also not much better as it still uses arrays.

You really need to make use of good design via inheritance and single parameters.

Sample: [url']http://feedback.arma3.com/view.php?id=2766#c32887[/url]

I don't see the arrays as the problem. The problem is the requirement to explicitly mention the attachments by name. With a simple compatibility specification the issue is solved.

Share this post


Link to post
Share on other sites

Doesn't it only use the type of rail? If an attachment works for all weapons using PicatinnyRailTopShort it's only a matter of making sure weapon and attachment makers make use of the new universal names. Seems like that design is a ton better, then having to know each and every config for all possible weapon/attachments there are out there.

Also

2013-10-07 15:59 japapatramtara Assigned To => japapatramtara

2013-10-07 15:59 japapatramtara Status reviewed => assigned

... ? :D

Share this post


Link to post
Share on other sites

http://feedback.arma3.com/view.php?id=2766#c57058

There is now this change to the system. They are apparently working on changing it further, according to this. I think it would be good if any change to the system could be broadly disseminated among the attachment modders so they become aware that there may be the necessity to change their addons to make them work in the near or mid future, depending on how quickly this will be worked over.

Share this post


Link to post
Share on other sites
http://feedback.arma3.com/view.php?id=2766#c57058

There is now this change to the system. They are apparently working on changing it further, according to this. I think it would be good if any change to the system could be broadly disseminated among the attachment modders so they become aware that there may be the necessity to change their addons to make them work in the near or mid future, depending on how quickly this will be worked over.

Great news! I'll try that as soon as the new dev build is out. Been waiting for this change since... well, a long time :)

Thank you, japapatramtara, and thank you , BIS !

Share this post


Link to post
Share on other sites
http://feedback.arma3.com/view.php?id=2766#c57058

There is now this change to the system. They are apparently working on changing it further, according to this. I think it would be good if any change to the system could be broadly disseminated among the attachment modders so they become aware that there may be the necessity to change their addons to make them work in the near or mid future, depending on how quickly this will be worked over.

How is that different from the current system?

Sure you might have to write the compatible class once still one time to many.

I like the rails idea better.

bis really needs to learn DRY http://en.wikipedia.org/wiki/Don%27t_repeat_yourself

Share this post


Link to post
Share on other sites

This is a fantastic rant, I fully suppourt it. It'll be nice to be able to create custom sights and scopes without having to overwrite anything.

Share this post


Link to post
Share on other sites
Adanteh, you didn't read the entire proposal.

Isn't that what AlWarren is suggestion here though? Creating a 'rail' system that works because all weapons will have a mention which rail it uses and the attachments having a mention on which rail it works?

Anyway, not sure how the new change works to be honest. It still seems like you still need to mention which scopes work on it per weapon. I don't get why there isn't a more universal supported system. Weapon mod maker #1 can say that his weapons use rail 1. Attachment mod maker #2 can say that his mods should work for weapons that have a rail 1. Weapon mod maker #3 decides to release a weapon that also uses rail 1? Well, the attachments of #2 will work it without any modifications. Yay.

Share this post


Link to post
Share on other sites
How is that different from the current system?

Sure you might have to write the compatible class once still one time to many.

By the looks of it, it allows authors to patch their attachments into an existing weapon in a way that stops overwriting the entire list of compatible items, and making attachment packs incompatible with eachother when they all try and add themselves to the same weapons.

You can now just write a config that inherits the class compatibleItems of the weapon you want your attachment to work with and add parameters that appends your own attachment classes into that class. Only attachments that share the same classname would conflict this way.

Any custom weapon that inherits its class compatibleItems directly from a parent BIS weapon class that a third party author has added their attachments to, should theoretically also work with that attachment.

Edited by da12thMonkey

Share this post


Link to post
Share on other sites
But the parent weapon wont be compatible the addon maker's attachment right?

It should be. Let's say I make an attachment for the default BI weapons and add it into their base config and then someone else makes a weapon that inherits from those default weapons. My attachment will be compatible with the BI weapons AND the addon weapon since they inherited it from the BI weapon. Unless ofcourse they specifically blacklist it.

This is a great improvement, but it's not exactly an end-all solution as that kind of inheritance either assumes all weapons have the same rails and rail lengths as BI weapons which might cause some visual problems. If there are no further changes to this, then we might be forced into making a "glue" addon (JAM like) of base classes of weapons with different rails that the attachment makers can add their attachments in to and weapon makers inherit from so that we don't put the burden on the addon makers to push updates for every new weapon or attachment.

Share this post


Link to post
Share on other sites
This is a great improvement, but it's not exactly an end-all solution as that kind of inheritance either assumes all weapons have the same rails and rail lengths as BI weapons which might cause some visual problems. If there are no further changes to this, then we might be forced into making a "glue" addon (JAM like) of base classes of weapons with different rails that the attachment makers can add their attachments in to and weapon makers inherit from so that we don't put the burden on the addon makers to push updates for every new weapon or attachment.

Agreed. The new system which is vastly superior to the old one, still assumes there is a rail on every weapon, and the same type of rail too. That is why my proposal aimed at modelling how things work in the real world. You have a rail, and if the rail is shaped correctly and is long enough, you can put an attachment on it. You cannot put a dovetail mount PSO-1 onto an M4, since they are not compatible. The new system will require, as you said, new base types per rail configuration, or it will be back into the old update hell so you cannot mount, e.g. the FHQ ACOG onto a russian AK-47.

Share this post


Link to post
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
Sign in to follow this  

×