FxsRMcFall Posted February 19, 2016 Share Posted February 19, 2016 Just wanted to let folks know that I'll be actively supporting the mod efforts here - and can help with modding-related questions. Additionally, I can collect feedback and incorporate it into future SDK updates. There are already a number of improvements we could make that I've identified from threads here, such as updating the script VM to route static functions from replacement classes. Link to comment Share on other sites More sharing options...
TeamDragonpunk Posted February 19, 2016 Share Posted February 19, 2016 All, It's a rare treat to have any dev, let alone the Lead Engineer, support modders directly. I recommend that we don't squander this and flood this thread with one-off questions. Before you post here, I recommend: 1. Spending at least 2 hours (min) trying to implement your idea.2. Spending at least an hour looking for a fix on Stack Overflow/Stack Exchange/Google3. Spending an hour looking to see if anyone else had this issue in the forums (because there are a lot of duplicate threads)4. Asking knowledgeable Mod Community Leaders like Amineri, Hairless Orphan, and David Allen The better we are at practicing forum etiquette, the more likely we are to actually get suggestions implemented. Link to comment Share on other sites More sharing options...
SteelRook Posted February 19, 2016 Share Posted February 19, 2016 My one big request - and the one I've been looking for a decent solution to for a full week now - is this: Please implement an easy way to either override weapon/item/skill templates at creation, or at least a simple means of altering/replacing these templates after creation. This is a complex request, so let me break it down into more specific requests. 1. Implement a way for a mod to run an event every time a game is loaded, not just the first time a non-modded game is loaded. This allows us to run maintenance on our mods for things which don't persist across sessions without needing to rely on UIListeners which were never intended to do this. 2. Implement a way to access ALL templates directly, rather than just the templates specific to the chosen difficulty for those templates which alter with difficulty. Currently, the only way I know of to do this is to artificially change the game's difficulty and pull templates. We need a FindAllTemplatesOfDifficulty function which takes an int parameter to specify the requested difficulty. 3. Implement "getter" functions for absolutely everything you can think of, even normally locked parameters. You don't have to let me change any of those variables, so long as I can read them and pull values out of them. Convenience functions like IterateArray() are convenient, but access to the raw data can still be useful a lot of the time. I know there are patchwork roundabout solutions to both of my request available currently, but they're what I'd class as "dirty hacks." They work, yes, but they work in a counter-intuitive, unnatural way that a lot of modders are simply not going to know about unless they're fortunate enough to have a kind soul explain it to them. Link to comment Share on other sites More sharing options...
davidlallen Posted February 19, 2016 Share Posted February 19, 2016 This type of support is great! I am very concerned about mods breaking after a release. I actually joined the 2k forums just so I could post the below; I figured the community staff might alert you. http://forums.2k.com/showthread.php?4227371-danger!-mods-may-be-very-fragile-when-hotfixes-arrive Link to comment Share on other sites More sharing options...
Deleted32045420User Posted February 19, 2016 Share Posted February 19, 2016 (edited) David what did you say? i mean this exactly what i dreamed! i love you guys! oh yeah:That would be nice, but we can't count on it. I have been active in 3-4 modding forums and rarely/ever was there a direct comment from any developer. Sometimes an active community staffer would forward something. glad the devs proved you wrong for once. Now for some real questions: What about class overrides? are these getting any more stable? because me and a couple of others have begun to stay clear of those in favor of inefficient stuff like UI listeners. Some people have requested for a function added to the DLCinfo Class that activates once for each load of any game (not just ones not containing the mod) a lot of stuff would benefit greatly from that kind of behaviour, or if it'll cause froblems with several mods trying to use the same function overriding the same class you could even implement a simple fake UI screen we can set up a listener for that would activate once. Edited February 19, 2016 by Guest Link to comment Share on other sites More sharing options...
FxsRMcFall Posted February 19, 2016 Author Share Posted February 19, 2016 There have been a lot of good suggestions so far, some items on the road map for improvements:Allow overriding gameplay templates by name. Poking at the templates after they are built is more friendly if you just want to tweak one specific aspects of them and let other mods do the same, but a name based wholesale replacement is much cleaner and works more easily with the difficulty system.Improvements to the class replacement system, allowing static methods to be overridden and adding specific support for overriding selected natively constructed classes such as game state classes.Additional optional arguments for finding templates, including difficulty.New methods on the X2DownloadableContentInfo class for mods to use."Seeding" game play code with additional event manager events that mods can hook.Distributing our Visual Studio plugins in vsix form so that they can be used with Visual Studio professional or community/express editions ( which would support the use of nFringe )Cooker documentation, plugin.A better unreal script language service ( that provides intellisense ) is also planned. This was on the wish list for the initial offering of the mod tools, but didn't make it. There are some good ones already out there that could be bent with just a little bit of effort to work with our tool set, one of which I saw someone had gotten working ( sort of? ) on here. Link to comment Share on other sites More sharing options...
davidlallen Posted February 19, 2016 Share Posted February 19, 2016 What about class overrides? are these getting any more stable? The specific problem is described here:http://forums.nexusmods.com/index.php?/topic/3809960-psa-did-your-mod-suddenly-stop-working/It seems the local XcomEngine.ini file may contain leftover class overrides, which can prevent our desired class overrides from taking effect. We have observed this multiple times, but we do not have an exact testcase. This "may" be the reason for multiple reports that a class override is simply having no effect. That is, my modded XcomEngine.ini has one set of class overrides which I want ( say game class A is overridden to my class B), but the local XcomEngine.ini has a leftover override from A to C. So B has no effect. Link to comment Share on other sites More sharing options...
tracktwo Posted February 19, 2016 Share Posted February 19, 2016 (edited) Glad to hear of the support! Two things off the top of my head right now: Allow UIListeners with screen set to UIFoo fire for UIFoo and any subclasses of UIFoo. Currently any mod that overrides a UI class breaks all mods that use a listener for that class. Defined mod load ordering so we can be sure a mod will load after some other mod. A potentially bigger item would be to allow us to register pre/post delegate functions instead of needing to extend a class. I haven't thought this through entirely yet, but the basic idea is to provide an alternative to class overriding that several mods can do at the same time on the same class. If I can say "call function X before/after SomeClass.SomeFunction" that would be amazing. Edit: Walking to the bus stop thoughts: don't use delegates, pass ThisObj and a name of the pre/post hook sort of like the event system except always synchronous calls. So the hooks can receive all the arguments and an out return value of the hooked function without running afoul of the uscript type checker. Edited February 19, 2016 by tracktwo Link to comment Share on other sites More sharing options...
Deleted32045420User Posted February 19, 2016 Share Posted February 19, 2016 (edited) There have been a lot of good suggestions so far, some items on the road map for improvements:Allow overriding gameplay templates by name. Poking at the templates after they are built is more friendly if you just want to tweak one specific aspects of them and let other mods do the same, but a name based wholesale replacement is much cleaner and works more easily with the difficulty system.Improvements to the class replacement system, allowing static methods to be overridden and adding specific support for overriding selected natively constructed classes such as game state classes.Additional optional arguments for finding templates, including difficulty.New methods on the X2DownloadableContentInfo class for mods to use."Seeding" game play code with additional event manager events that mods can hook.Distributing our Visual Studio plugins in vsix form so that they can be used with Visual Studio professional or community/express editions ( which would support the use of nFringe )Cooker documentation, plugin.A better unreal script language service ( that provides intellisense ) is also planned. This was on the wish list for the initial offering of the mod tools, but didn't make it. There are some good ones already out there that could be bent with just a little bit of effort to work with our tool set, one of which I saw someone had gotten working ( sort of? ) on here.ahh thanks all sounds very promising. right now i am just taking all the current healing templates(stuff like medikits,gremlin heals and restoration,soul steal and regular old regeneration) and adding event triggers for them to enable my redfog mod to catch them before stuff like panic or disorientation is applied to the unit, i dont think it's good for mod intercompatibility since i am just taking the base code and if anybody tries to get them it'll just be an override war, is there another better way to do this kind of stuff? since i tried to override the medikit effect but it didnt fire. http://forums.nexusmods.com/index.php?/topic/3809960-psa-did-your-mod-suddenly-stop-working/The specific problem is described here:It seems the local XcomEngine.ini file may contain leftover class overrides, which can prevent our desired class overrides from taking effect. We have observed this multiple times, but we do not have an exact testcase. This "may" be the reason for multiple reports that a class override is simply having no effect. That is, my modded XcomEngine.ini has one set of class overrides which I want ( say game class A is overridden to my class B), but the local XcomEngine.ini has a leftover override from A to C. So B has no effect. Yeah i checked but it's not that for some reason it dosnt let me override the X2Effect_MedikitHeal (or whatever that's named) Edited February 19, 2016 by Guest Link to comment Share on other sites More sharing options...
Zyxpsilon Posted February 19, 2016 Share Posted February 19, 2016 Well that would be quite simple (at first), FxsRMcFall... TBH, i've already dug deep & wide into the SDK to find relevant details about whichever processes might become important when a few specific projects of mine should step into real Code stuff. Much of the concept phases are nearly done and many assets were created in expectation for the solid tasks ahead. 1-- GeoscApps; http://forums.nexusmods.com/index.php?/topic/3767350-project-geoscapps/2-- qUIck; http://forums.nexusmods.com/index.php?/topic/3774790-project-quick/3-- Couple of minor fiddling with various other features, etc Questions; 1a) This should involve extensive Scaleform/GFX work. Can the default files system accept direct "replacements" (properly scripted, etc) inside the current structure (or pre-compiled HUD components) along with custom layers? I just don't want to go down this highway without being sure anything highly customized is supported in as easy manner as possible. 1b) UC seems to be fairly straight forward. As long as solid logic drives the intentional objectives... it would perform exactly as intended. Yet, other than a few "Power-Point" presentations in the documentation, there's no direct details about SDK connections with UE3 engine. Something along the lines of Civ5 LUA++ referencing outside the actual ModBuddy IDE. If Nutty & I were able to create stuff like this (( http://steamcommunity.com/profiles/76561198033406473/myworkshopfiles/?appid=8930 )) for example, i really can't see why XCom2-Modding (community and all) shouldn't be as capable to obtain that kind of results. Fact is -- i'm more of a designer/art type than a true coder. 2) The biggest hurdle in that wildly complex re-texturing attempt is *IF* we can actually directly replace any such default resources with our own... in a way similar to what TexMod does -- runtime injector via hash-tags dispatch. NO luck so far. If you could provide simple hints or a swift summary of the essentials to say - just change the Lilly Shen "picture" only... i'd certainly be able to pick up the football and run relatively fast from there. ;) Generic observations; 1) The (current state of) pre-game Mod Launcher (giving access to Steam Data) is a silly pain to deal with. We can't uninstall anything directly without breaking our Saves. No parser, no direct references to what's installed or when they were. It's the lack of proper qualitative control if anything. 2) There are a number of other tricky flaws in Gameplay or QoL features that are getting attention from many modders as we speak... i expect this process will go even further in the coming weeks. Here's a rational thought -- between Firaxis development plans & some external pseudo-production like ours -- where's the (official or otherwise) limit for both compatibility and creative license concerns? That's it -- for now... thanks for your help & welcome to our precious Nexus. :D Link to comment Share on other sites More sharing options...
Recommended Posts