Qnnrad Posted November 9, 2023 Posted November 9, 2023 Hi, I am the creator of transparent controls indicators mods that have over 5k downloads (summarized), and I am coming after a year break to DCS to find out that my mods don't pass the IC check any more. I'm talking about file (location, example for F/A-18C): Mods\aircraft\FA-18C\Cockpit\Scripts\ControlsIndicator.lua I don't understand why the ControlsIndicator.lua was added to IC check, since it doesn't alter capabilities of the airframe, and is just a pop-up visual interpretation of current controls inputs, which provides a useful feedback for non-FFB controllers. Thanks to my mods it does it in way that blends with the rest of the screen and better works for immersion. Please allow modifications of this file to pass the IC check. Please, everyone who agrees with me, support this with a comment. Spoiler https://www.digitalcombatsimulator.com/en/files/3334206/ 2
MAXsenna Posted November 9, 2023 Posted November 9, 2023 I agree. Please give support here as well. Cheers! Https://forum.dcs.world/topic/337482-can-we-please-remove-control-cargo-and-ai-indicators-from-pure-client-scripts-checks/ 1
Insonia Posted November 9, 2023 Posted November 9, 2023 (edited) The problem is that the "lua_state" is not associated with particular files. The "lua_state" is used and shared by all cockpit scripts during loading and execution. In this "lua_state", any script has the ability to change any other variables and functions. Where the script originated doesn't matter to lua_state. If there is ONE file, just one file that not protect by IC . You can run any code throughout this procedure and access all functions and tables as long as those scripts are in the same state. include overriding tables and functions, manipulating strings that originated from other files and hijacking the loading process. bypassing the IC completely. For example. A loadout.lua file inside of users/missioneditor folder, which is not protected by IC, and supposedly should only contain a loadout table. because this file and unit_db use the same lua_state. We modify this file and add our custom code. while loading it into the ME. All of the units, weapons, and sensors in the _G table(globe table), are accessible via this file. Imagine a user modifies the missile's speed to Mach 20 and range to 100 nm. ED must make the unit database readonly in order to prevent cheating. So they have to separate the "ControlsIndicator.lua" to a different "lua_state", which also requires them to modify the C++ part. Introduce extra work, and It's up to them to decide. But it is very unlikely they will make changes for those indicators. Edited December 30, 2023 by Insonia phrasing 3
okopanja Posted November 9, 2023 Posted November 9, 2023 (edited) I think it's a bad idea to modify the game files directly. Exports are better, but I would not recommend using the Export.lua, but rather Scripts/Hooks subfolder. This is at least how I did it in my own mod. It works great since users do not need to edit the export.lua (which they generally tend to screw up), but rather just drop the lua file in the folder: https://github.com/okopanja/SharkPlanner/blob/main/Hooks/SharkPlanner.lua Edited November 9, 2023 by okopanja added link 3
Qnnrad Posted November 9, 2023 Author Posted November 9, 2023 Dear pilots @Insonia & @okopanja, thank you so much for taking time to write something so constructive and inspiring! I still hope I can get ED response, in the meantime I will do my best to learn from what you gave me and push further to solve it. Topic is still open of course, if anyone wants to help in this case or just add something. 2
okopanja Posted November 9, 2023 Posted November 9, 2023 (edited) 2 hours ago, Qnnrad said: Dear pilots @Insonia & @okopanja, thank you so much for taking time to write something so constructive and inspiring! I still hope I can get ED response, in the meantime I will do my best to learn from what you gave me and push further to solve it. Topic is still open of course, if anyone wants to help in this case or just add something. Dear fellow mod developer, I wish you all well to persuade them to remove IC, but realistically I think this is not likely. Downsides of the proposed migration to export (either export.lua or Hooks/your_export.lua) would be you would need to switch to dxgui for the UI and re-implement the whole thing. On the other side you would have a mod that works in any module and does not break IC. (Hopefully this kick into the topic will bring more people to read it ) BR Edited November 9, 2023 by okopanja 2
SickSidewinder9 Posted November 29, 2023 Posted November 29, 2023 Does DCS not use inheritance? In Arma, you could just inherit the control window but have it be a mod. You have to edit core files to make this work? Most of the control windows besides the A4 mod are too small and hard to use anyway. It's like the UI part of this game was made for 1080p (it seems like it's still a 1024 holdover) or less and the 3D part of this game was made for 4k and any of us sitting here with 1440p are screwed. I make the text/UI bigger and it looks like garbage and cut off letters. Controls indicator stays a tiny little thing, 3D graphics and cockpits? Blurry. Still blurry with my 4070 and DLSS. Arma base code goes back to like 2000, but you know what they put in? Adjustable UI sizes that don't suck. Among other things that work.
Insonia Posted November 30, 2023 Posted November 30, 2023 (edited) On 11/29/2023 at 10:37 AM, SickSidewinder9 said: Does DCS not use inheritance? In Arma, you could just inherit the control window but have it be a mod. You have to edit core files to make this work? Most of the control windows besides the A4 mod are too small and hard to use anyway. It's like the UI part of this game was made for 1080p (it seems like it's still a 1024 holdover) or less and the 3D part of this game was made for 4k and any of us sitting here with 1440p are screwed. I make the text/UI bigger and it looks like garbage and cut off letters. Controls indicator stays a tiny little thing, 3D graphics and cockpits? Blurry. Still blurry with my 4070 and DLSS. Arma base code goes back to like 2000, but you know what they put in? Adjustable UI sizes that don't suck. Among other things that work. Different game engines use different design principles and structures to serve different purposes. They are not really comparable. But indeed, many places in DCS are lacking mod integration thought and proper documents. DCS has 2 sets of interface renderings. One is lua dxgui, the actual "UI", is quite versatile, and accessible via user files but lacks documents. If you want to compare it with different game's UI, this is the "UI". has lots of freedom for modding via user files. You can override, reorganize, resize. And can expend, remove UI functions, import external codes, like the Twitch/Discord API , audio codecs, players, etc., and render in both VR and 2D, world or menu. And not protected by the IC. But those are not properly documented, unfortunately. People have to figure it out by themselves Another is avionics rendering. The "indicators" are part of the avionic pages/rendering and "viewport" interfaces, not directly related to the first one. was made at the same level as the MFD stuff, intertwined with avionics processing. And the avionics are protected assets. It's DCS's core gameplay/mechanism, is also where a lot of players try to cheat. They may not allow us to touch those in MP anymore. So technically, in DCS "control indicator" is another avionics instrument page. We may argue and suggest that they should integrate "control indicators" or "crew indicators" as "regular UI," since they are not really part of "avionics." As I mentioned, different game engines use different design principles and structures to serve different purposes. All games have places you have the freedom to change; some are protected and very hard to access. In DCS, the indicators/viewport render serval a purpose that makes multiscreen simpit integration straightforward and simpler. But you cannot program and export displays in Arma, there is no proper interface that allows you to program and export multiple screens. Some arma export software mods have to utilize memread method to do such thing, and external software messing with memory handlers is a violation of their anti-cheat, can be directly banned. those system server different purposes. They are not really comparable. Edited November 30, 2023 by Insonia 1
SickSidewinder9 Posted November 30, 2023 Posted November 30, 2023 2 hours ago, Insonia said: Different game engines use different design principles and structures to serve different purposes. They are not really comparable. But indeed, many places in DCS are lacking mod integration thought and proper documents. DCS has 2 sets of interface renderings. One is lua dxgui, the actual "UI", is quite versatile, and accessible via user files but lacks documents. If you want to compare it with different game's UI, this is the "UI". has lots of freedom for modding via user files. You can override, reorganize, resize. And can expend, remove UI functions, import external codes, like the Twitch/Discord API , audio codecs, players, etc., and render in both VR and 2D, world or menu. And not protected by the IC. But those are not properly documented, unfortunately. People have to figure it out by themselves Another is avionics rendering. The "indicators" are part of the avionic pages/rendering and "viewport" interfaces, not directly related to the first one. was made at the same level as the MFD stuff, intertwined with avionics processing. And the avionics are protected assets. It's DCS's core gameplay/mechanism, is also where a lot of players try to cheat. They may not allow us to touch those in MP anymore. So technically, in DCS "control indicator" is another avionics instrument page. We may argue and suggest that they should integrate "control indicators" or "crew indicators" as "regular UI," since they are not really part of "avionics." As I mentioned, different game engines use different design principles and structures to serve different purposes. All games have places you have the freedom to change; some are protected and very hard to access. In DCS, the indicators/viewport render serval a purpose that makes multiscreen simpit integration straightforward and simpler. But you cannot program and export displays in Arma, there is no proper interface that allows you to program and export multiple screens. Some arma export software mods have to utilize memread method to do such thing, and external software messing with memory handlers is a violation of their anti-cheat, can be directly banned. those system server different purposes. They are not really comparable. Interesting
Recommended Posts