https://tw-modding.com/api.php?action=feedcontributions&user=Cataph&feedformat=atomTotal War Modding - User contributions [en]2024-03-28T23:31:59ZUser contributionsMediaWiki 1.39.3https://tw-modding.com/index.php?title=Tutorial:Submodding&diff=1009Tutorial:Submodding2023-10-10T07:59:24Z<p>Cataph: /* ADVANCED SUBMODDING: BACKGROUND TABLES */</p>
<hr />
<div>=== Originally written by Cataph ===<br />
If you’re a modder, one of the most frequent comments next to romantical proposals (YMMV) will be “SFO/Radious/CTT/Lucky/yomama compatibility when”. Many modders don’t have an interest in making a submod simply because they don’t know and play a given overhaul and wouldn’t know how to balance it anyway.<br />
<br />
So, what if it could be you making that submod? Or maybe you just want to make X mod work better with Y. Be the submodder you want to see in the world!<br />
<br />
A few things first.<br />
<br />
== WHAT IS A SUBMOD? ==<br />
Basically, an optional plugin designed to make mod X work or work better with mod Y, thanks to this mod Z. A user that wants to use X and Y together will download mod Z and keep all three enabled.<br />
<br />
Can a submod be a standalone? Well, yes, but it wouldn’t be a submod then, would it? Besides, it’s normally a dick move to take mod X and fully reupload it with a few differences. Plus, it’s 90% never necessary and we’re going to see why.<br />
<br />
Ok, but can I just edit a mod and keep it to myself? Sure, keep in mind that you should rename the pack into something else to avoid automatic updates to overwrite what you changed.<br />
<br />
== WHY IS A SUBMOD? ==<br />
I need you to focus.<br />
<br />
== HOW IS A SUBMOD? ==<br />
Fine, thank you. About how it’s made, we don’t necessarily need mod X and Y to make sweet love to each other but only you, bloke with a basic knowledge of RPFM and TW modding.<br />
<br />
== WHAT DO? ==<br />
Ok, as a basic example let’s say we want a compatibility submod between the Sea Patrol mod and a fictional 2x unit size mod, so we want to grab whatever lines define unit numbers in the former and multiply those by 2. Daring.<br />
<br />
First thing we open the first mod as a reference, then we create a new pack for the submod. We’ll call it seapatrol_yourname_unitsize.pack. (more on naming later, but sit tight)<br />
<br />
Upon viewing the db of Sea Patrol we see a whole lotta tables.<br />
<br />
Since I am a bloke with basic knowledge of [https://github.com/Frodo45127/rpfm/releases/latest RPFM] and TW modding, I know that unit sizes are in main_units.<br />
<br />
[[File:Submodding 1.jpg|frameless]]<br />
<br />
Thus, in the submod I’ll import said table/s by right click>Add…>Add from Packfile, find the pack, find the table and double click it. Close the add from packfile panel and we’re good to go, we have Sea Patrol’s main_units in our shizzle. We go in there and edit the numbers we want to change, in this case we select any num_men that is not a hero/lord’s, right click, apply math as ''{x}*2'' and done. Done? No, some of those units may be cavalry, so we need to adapt the number of mounts too. We import land_units as well and do the same thing on num_mounts. In the rarer case that there’s a multi-chariot unit, we leave mounts alone and multiply num_engines in land_units.<br />
<br />
== PRIORITY ==<br />
But it’s a submod, and we want to make sure we’re overriding the original mod’s values. No, not with load order on the mod manager, [[Troubleshooting|and incidentally you shouldn't touch that and you should use KMM]].<br />
<br />
We currently have two tables, we select those table fragments (in this case, called “AK_seahelm”) and we rename them to take priority according to this alphanumerical order:<blockquote>! # $ % & ‘ ( ) + , – ; = @ 0-9 a-z [ ] ^ _ ` { } ~ Where “!” wins over “a”.</blockquote>Usually, adding a “!” in front does it. But we also want to make clear what submod this is for. Right click> Rename> type ''!{x}_unitsize'', which will become “!AK_seahelm_unitsize”.<br />
<br />
''Note: DO NOT leave the table names as is, or you’ll crash. DO NOT leave a number as last character or it might glitch and crash anyway.''<br />
<br />
Aaaand, done! Now this submod of only two tables will correctly override unit sizes for a specific mod. Yeah, any non-vanilla key will be red in here, since you don’t define those in your pack, but no worries, it’s a submod that is designed to exist with the mod that actually has those keys.<br />
<br />
In the possible case you need at some point to override parts that don't answer to table priority, like images or variants or whole script files, you might want to name the entire pack with a prefix that wins priority over the original mod. For example, again, “!AK_seahelm_unitsize”. Considering you don't want users to manually change load order, this makes sure that by alphanumerical order you're already overriding the og mod. Notice that you can't change a pack's name after you've uploaded it to the workshop.<br />
<br />
Now, like with any mod we make a PNG icon and upload if we want to share it publicly. If you upload it on the workshop, add mods X and Y as required by clicking on Add/Remove Required Items. This will prompt a user to go and fetch those required mods as well. Most of them will somehow ignore it and crash, but at least you tried.<br />
<br />
== ADDENDUM: ETIQUETTE ==<br />
By most accounts, a clean submod like the above doesn’t really need permission since you’re not stealing anything. However, you should still ask as good courtesy, and it can’t hurt to still let the og author know as they may link it in description, let you know about required changes, etc.<br />
<br />
It’s also good practice not to add donation links to a submod.<br />
<br />
== ADDENDUM: UPDATING ==<br />
It should be your interest and responsibility to stay up-to-date with the original mods as soon as you have time. For example if you’re submodding a unit mod and you see the ‘parent’ mod has updated with balance changes, some key changes or new units, you should definitely hear a couple bells ringing.<br />
<br />
Sometimes the parent mod changes a few keys and then you might even crash until you update.<br />
<br />
== SUBMODDING EXAMPLE: TRANSLATION ==<br />
In most cases, translating a mod is a simple case of grabbing all of that mod's loc files (text db) and following what we've seen so far. So, make sure you only have the parts you need, remove the rest, rename your loc with a prefix that gives them priority. Then, start grinding at the actual translation work in those loc tables.<br />
<br />
There may be some fringe cases where there is text on images or inside scripts. As we mentioned, you might need priority over the whole pack in terms of naming. It also gets trickier changing the text on a picture, and you might want to contact the other fellow if you need to translate a text that is directly embedded in a script. Ask if there's a way to avoid you having to grab the entire script, which is normally a bad idea.<br />
<br />
== ADVANCED SUBMODDING: BALANCE OVERHAULS ==<br />
The submodder should also be the one who is familiar with the overhaul they’re adapting a mod for. If you are at a loss about how to tweak some things, definitely consider asking one of the two original modders (depending on the kind of question) for advice on how to proceed. For example, “this unit is weird and I’m not sure what role it should keep”.<br />
<br />
Can't be much more specific about this because there are so many possible moving parts that you need to change, starting with unit stats to their place on new recruitment buildings. Staying up-to-date is particularly important in this kind of mod.<br />
<br />
== UNIQUE NUMERICAL IDs ==<br />
In some tables, each line has a unique numerical id in front of it (or sometimes way off like in unit_special_abilities). That’s specific for each line, and it works like other important keys like those in land_units or main_units, as in there can only be one line about that key or num id.<br />
<br />
Why am I saying all this? Because if in your submod you happen to need to ''add'' some lines in, for example, building_units_allowed, you’ll need your own unique num ids to make them work proppa. Pick any number below 2 billions and something and make sure they never repeat. This is important, do not continue off the num ids from the mod you’re submodding or you’ll cause issues at some point.<br />
<br />
== ADVANCED SUBMODDING: STICKY TABLES ==<br />
Some tables and related features are slightly more complicated to submod. For example, you want to remove a unit from a certain building level. Easy, go in building_units_allowed again. Remember those unique ids? '''Keep that exactly intact''' (so it still refers to that specific line from the original mod or vanilla line) and change the building to something that has no chance of being available, such as <code>wh2_dlc12_dummy_nuclear_ruins_0</code> or change the unit instead to a unit that is completely unavailble as well for anybody who has access to the given building. You could change both to be sure, but it's more confusing down the line.<br />
<br />
Until WH2, you could have typed random gibberish in the building key to better track your changes (e.g., add "_removed" to building keys), but in WH3 that causes a crash as both fields need to be valid.<br />
<br />
The underlying logic is that you're hijacking a precise data line (due to the unique id, numerical or not) and telling it to do something impossible.<br />
<br />
'''Harder example''': I really don’t want any of these units to have the new-fangled Edgelord Deluxe passive ability, which is added by this mod. Cool, that means I can kill that ability from existence without it ever affecting anything else. We do that by:<br />
<br />
* grabbing its line from unit_abilities, we make it hidden in UI.<br />
* grabbing its line from unit_special_abilities, we make it a passive (boolean). Make sure you remove any activated projectile/bombardment/summon etc from here too.<br />
* grabbing its line in special_ability_to_special_ability_phase_junctions. Change the phase to a new special_ability_phase that we created and that does absolutely nothing. There, done. The ability still exists, but does nothing and is invisible. In my own private jargon this is called a pillow. Again, ''notice that you’re neutering this ability for any unit that happens to get it.''<br />
This currently doesn't really work in WH3 and I really hope they fix that because it's a serious problem.<br />
<br />
'''Even harder example''': I want this unit to not have the Regeneration passive ability. Oooh, that’s a vanilla ability, isn’t it? We can’t just dumpster it. Either we tolerate it or…<br />
<br />
== ADVANCED SUBMODDING: DEPENDENCY MANAGER ==<br />
This is a RPFM feature. ''USE WITH CAUTION'', as it's essentially a data coring method. <br />
<br />
We enable it by right clicking on the packfile itself in tree view (not on a table, not on anything else, literally the very first line in tree view), Open>Open Dependency Manager. We add a line as if it was a table (ctrl+shift+A) and type EXACTLY the pack name of the mod we want to override. As in “AK_seahelm.pack”. From this point onwards, everything we do in the submod under identical paths will completely override content from the parent mod no matter the load or table order for stuff with the same name. Example, I can import a table, not change its name and completely delete its content. This would normally crash, but not with DepManager. <br />
<br />
I said use this with caution because if you do this you REALLY need to stay up-to-date with the og mod. For example, you can remove the line that gives unit A the Regen passive, and it will work. However, any further update from the parent mod in that table won’t take place unless you also mirror it. Again, this is normally not remotely required and you should steer clear of it because it’s just as bad as leaving a vanilla table called “data__”.<br />
<br />
Additionally, '''this will auto-enable the linked mod''' as soon as it’s in data/ as if it was a movie pack. As such, you don’t want to do this unless you’re doing a submod that already requires that linked mod. Because having stuff popping up even when you’ve disabled a mod is the worst.<br />
<br />
'''PSA''': If your mod makes use of the dependency manager PLEASE STATE THAT IT DOES AND ON WHICH OTHER MOD in your Steam description. There is no telling how much time you could waste for other people finding the reason of a mod list problem.<br />
<br />
== ADVANCED SUBMODDING: BACKGROUND TABLES ==<br />
Let's say we aren't doing a submod whose only purpose is changing unit size for that other mod, but it's our own standalone mod A and we're doing some compatibility stuff to make it work better with B, without needing a separate submod C that requires both. '''For example, we want something from B in A, ''if B is also enabled''. Sometimes we can do that without C'''. <br />
<br />
Let's say I add some new units in A, and mod B adds fancy officers to all units. Officers are connected to the unit in db/land_units (in WH2, but it's just an example), but if we just pasted B's officer key in there, A would go boom if B is not enabled. We don't want that, and we may not want to force people to use B. So we paste that officer key there, replacing A_blank_record, but we also check what table that key relies on by hovering on its top (title, header, whatever), which is... db/land_units_officers. Without it, that officer key is going to go boom, [[Tolerant Tables|because it's not a tolerant key]], at all, to the point that even a non-existant officer needs an actual key called A_blank_record, which does exist. <br />
<br />
What we do is create land_units_officers, add that officer key under key, keep personality location as front or rear (honestly don't know if that crashes if left blank, don't care), but we leave the officer 1 etc columns empty. '''IMPORTANT: we rename this table fragment with something like zzzzz_mod_a_mod_b'''. Notice the zeds? Keep those in mind.<br />
<br />
So, what is this doing? It's telling the unit that it's going to use that officer group, but it's got nothing in it, no ''actual'' officers (battle_personalities). By using our mod A without B, the game finds an empty box for this officer, shrugs, and doesn't replace unit models with any officer personality. The game moves on without crashing, because that key exists. Basically, we created another blank record, but this very specific one gets filled in when B is enabled. <br />
<br />
Remember those zeds? They are there so that our blank record gets overridden by B's table (which we assume has a higher alphabetical priority than a bunch of zeds, unless B's author is not trying hard enough). Keep in mind that if B's author ever changes those officer keys you won't crash, but you'll still need to adapt because your blank record would stay blank.<br />
<br />
<br />
This can be done in a bunch of situations, but you'll need some specific knowledge of how specific contexts work. You could want to use this method to nerf some effects from mod B, in which case you might need more than one background table (the zzzzz boys), including db/effects, which by itself does absolutely nothing, but using an effect key that doesn't exist in there will go kaboom.<br />
<br />
== ADVANCED SUBMODDING: SCRIPTS ==<br />
Uhh, sorry, not my field, but generally speaking trying to change or override a script cleanly is highly specific to what the script does and how it's written, in other words whether you can snipe the specific function you want to change or if you have to grab the whole thing. <br />
<br />
Some scripty fella should probably add more tips here.</div>Cataphhttps://tw-modding.com/index.php?title=Tutorial:Submodding&diff=1008Tutorial:Submodding2023-10-10T07:48:58Z<p>Cataph: /* ADVANCED SUBMODDING: DEPENDENCY MANAGER */</p>
<hr />
<div>=== Originally written by Cataph ===<br />
If you’re a modder, one of the most frequent comments next to romantical proposals (YMMV) will be “SFO/Radious/CTT/Lucky/yomama compatibility when”. Many modders don’t have an interest in making a submod simply because they don’t know and play a given overhaul and wouldn’t know how to balance it anyway.<br />
<br />
So, what if it could be you making that submod? Or maybe you just want to make X mod work better with Y. Be the submodder you want to see in the world!<br />
<br />
A few things first.<br />
<br />
== WHAT IS A SUBMOD? ==<br />
Basically, an optional plugin designed to make mod X work or work better with mod Y, thanks to this mod Z. A user that wants to use X and Y together will download mod Z and keep all three enabled.<br />
<br />
Can a submod be a standalone? Well, yes, but it wouldn’t be a submod then, would it? Besides, it’s normally a dick move to take mod X and fully reupload it with a few differences. Plus, it’s 90% never necessary and we’re going to see why.<br />
<br />
Ok, but can I just edit a mod and keep it to myself? Sure, keep in mind that you should rename the pack into something else to avoid automatic updates to overwrite what you changed.<br />
<br />
== WHY IS A SUBMOD? ==<br />
I need you to focus.<br />
<br />
== HOW IS A SUBMOD? ==<br />
Fine, thank you. About how it’s made, we don’t necessarily need mod X and Y to make sweet love to each other but only you, bloke with a basic knowledge of RPFM and TW modding.<br />
<br />
== WHAT DO? ==<br />
Ok, as a basic example let’s say we want a compatibility submod between the Sea Patrol mod and a fictional 2x unit size mod, so we want to grab whatever lines define unit numbers in the former and multiply those by 2. Daring.<br />
<br />
First thing we open the first mod as a reference, then we create a new pack for the submod. We’ll call it seapatrol_yourname_unitsize.pack. (more on naming later, but sit tight)<br />
<br />
Upon viewing the db of Sea Patrol we see a whole lotta tables.<br />
<br />
Since I am a bloke with basic knowledge of [https://github.com/Frodo45127/rpfm/releases/latest RPFM] and TW modding, I know that unit sizes are in main_units.<br />
<br />
[[File:Submodding 1.jpg|frameless]]<br />
<br />
Thus, in the submod I’ll import said table/s by right click>Add…>Add from Packfile, find the pack, find the table and double click it. Close the add from packfile panel and we’re good to go, we have Sea Patrol’s main_units in our shizzle. We go in there and edit the numbers we want to change, in this case we select any num_men that is not a hero/lord’s, right click, apply math as ''{x}*2'' and done. Done? No, some of those units may be cavalry, so we need to adapt the number of mounts too. We import land_units as well and do the same thing on num_mounts. In the rarer case that there’s a multi-chariot unit, we leave mounts alone and multiply num_engines in land_units.<br />
<br />
== PRIORITY ==<br />
But it’s a submod, and we want to make sure we’re overriding the original mod’s values. No, not with load order on the mod manager, [[Troubleshooting|and incidentally you shouldn't touch that and you should use KMM]].<br />
<br />
We currently have two tables, we select those table fragments (in this case, called “AK_seahelm”) and we rename them to take priority according to this alphanumerical order:<blockquote>! # $ % & ‘ ( ) + , – ; = @ 0-9 a-z [ ] ^ _ ` { } ~ Where “!” wins over “a”.</blockquote>Usually, adding a “!” in front does it. But we also want to make clear what submod this is for. Right click> Rename> type ''!{x}_unitsize'', which will become “!AK_seahelm_unitsize”.<br />
<br />
''Note: DO NOT leave the table names as is, or you’ll crash. DO NOT leave a number as last character or it might glitch and crash anyway.''<br />
<br />
Aaaand, done! Now this submod of only two tables will correctly override unit sizes for a specific mod. Yeah, any non-vanilla key will be red in here, since you don’t define those in your pack, but no worries, it’s a submod that is designed to exist with the mod that actually has those keys.<br />
<br />
In the possible case you need at some point to override parts that don't answer to table priority, like images or variants or whole script files, you might want to name the entire pack with a prefix that wins priority over the original mod. For example, again, “!AK_seahelm_unitsize”. Considering you don't want users to manually change load order, this makes sure that by alphanumerical order you're already overriding the og mod. Notice that you can't change a pack's name after you've uploaded it to the workshop.<br />
<br />
Now, like with any mod we make a PNG icon and upload if we want to share it publicly. If you upload it on the workshop, add mods X and Y as required by clicking on Add/Remove Required Items. This will prompt a user to go and fetch those required mods as well. Most of them will somehow ignore it and crash, but at least you tried.<br />
<br />
== ADDENDUM: ETIQUETTE ==<br />
By most accounts, a clean submod like the above doesn’t really need permission since you’re not stealing anything. However, you should still ask as good courtesy, and it can’t hurt to still let the og author know as they may link it in description, let you know about required changes, etc.<br />
<br />
It’s also good practice not to add donation links to a submod.<br />
<br />
== ADDENDUM: UPDATING ==<br />
It should be your interest and responsibility to stay up-to-date with the original mods as soon as you have time. For example if you’re submodding a unit mod and you see the ‘parent’ mod has updated with balance changes, some key changes or new units, you should definitely hear a couple bells ringing.<br />
<br />
Sometimes the parent mod changes a few keys and then you might even crash until you update.<br />
<br />
== SUBMODDING EXAMPLE: TRANSLATION ==<br />
In most cases, translating a mod is a simple case of grabbing all of that mod's loc files (text db) and following what we've seen so far. So, make sure you only have the parts you need, remove the rest, rename your loc with a prefix that gives them priority. Then, start grinding at the actual translation work in those loc tables.<br />
<br />
There may be some fringe cases where there is text on images or inside scripts. As we mentioned, you might need priority over the whole pack in terms of naming. It also gets trickier changing the text on a picture, and you might want to contact the other fellow if you need to translate a text that is directly embedded in a script. Ask if there's a way to avoid you having to grab the entire script, which is normally a bad idea.<br />
<br />
== ADVANCED SUBMODDING: BALANCE OVERHAULS ==<br />
The submodder should also be the one who is familiar with the overhaul they’re adapting a mod for. If you are at a loss about how to tweak some things, definitely consider asking one of the two original modders (depending on the kind of question) for advice on how to proceed. For example, “this unit is weird and I’m not sure what role it should keep”.<br />
<br />
Can't be much more specific about this because there are so many possible moving parts that you need to change, starting with unit stats to their place on new recruitment buildings. Staying up-to-date is particularly important in this kind of mod.<br />
<br />
== UNIQUE NUMERICAL IDs ==<br />
In some tables, each line has a unique numerical id in front of it (or sometimes way off like in unit_special_abilities). That’s specific for each line, and it works like other important keys like those in land_units or main_units, as in there can only be one line about that key or num id.<br />
<br />
Why am I saying all this? Because if in your submod you happen to need to ''add'' some lines in, for example, building_units_allowed, you’ll need your own unique num ids to make them work proppa. Pick any number below 2 billions and something and make sure they never repeat. This is important, do not continue off the num ids from the mod you’re submodding or you’ll cause issues at some point.<br />
<br />
== ADVANCED SUBMODDING: STICKY TABLES ==<br />
Some tables and related features are slightly more complicated to submod. For example, you want to remove a unit from a certain building level. Easy, go in building_units_allowed again. Remember those unique ids? '''Keep that exactly intact''' (so it still refers to that specific line from the original mod or vanilla line) and change the building to something that has no chance of being available, such as <code>wh2_dlc12_dummy_nuclear_ruins_0</code> or change the unit instead to a unit that is completely unavailble as well for anybody who has access to the given building. You could change both to be sure, but it's more confusing down the line.<br />
<br />
Until WH2, you could have typed random gibberish in the building key to better track your changes (e.g., add "_removed" to building keys), but in WH3 that causes a crash as both fields need to be valid.<br />
<br />
The underlying logic is that you're hijacking a precise data line (due to the unique id, numerical or not) and telling it to do something impossible.<br />
<br />
'''Harder example''': I really don’t want any of these units to have the new-fangled Edgelord Deluxe passive ability, which is added by this mod. Cool, that means I can kill that ability from existence without it ever affecting anything else. We do that by:<br />
<br />
* grabbing its line from unit_abilities, we make it hidden in UI.<br />
* grabbing its line from unit_special_abilities, we make it a passive (boolean). Make sure you remove any activated projectile/bombardment/summon etc from here too.<br />
* grabbing its line in special_ability_to_special_ability_phase_junctions. Change the phase to a new special_ability_phase that we created and that does absolutely nothing. There, done. The ability still exists, but does nothing and is invisible. In my own private jargon this is called a pillow. Again, ''notice that you’re neutering this ability for any unit that happens to get it.''<br />
This currently doesn't really work in WH3 and I really hope they fix that because it's a serious problem.<br />
<br />
'''Even harder example''': I want this unit to not have the Regeneration passive ability. Oooh, that’s a vanilla ability, isn’t it? We can’t just dumpster it. Either we tolerate it or…<br />
<br />
== ADVANCED SUBMODDING: DEPENDENCY MANAGER ==<br />
This is a RPFM feature. ''USE WITH CAUTION'', as it's essentially a data coring method. <br />
<br />
We enable it by right clicking on the packfile itself in tree view (not on a table, not on anything else, literally the very first line in tree view), Open>Open Dependency Manager. We add a line as if it was a table (ctrl+shift+A) and type EXACTLY the pack name of the mod we want to override. As in “AK_seahelm.pack”. From this point onwards, everything we do in the submod under identical paths will completely override content from the parent mod no matter the load or table order for stuff with the same name. Example, I can import a table, not change its name and completely delete its content. This would normally crash, but not with DepManager. <br />
<br />
I said use this with caution because if you do this you REALLY need to stay up-to-date with the og mod. For example, you can remove the line that gives unit A the Regen passive, and it will work. However, any further update from the parent mod in that table won’t take place unless you also mirror it. Again, this is normally not remotely required and you should steer clear of it because it’s just as bad as leaving a vanilla table called “data__”.<br />
<br />
Additionally, '''this will auto-enable the linked mod''' as soon as it’s in data/ as if it was a movie pack. As such, you don’t want to do this unless you’re doing a submod that already requires that linked mod. Because having stuff popping up even when you’ve disabled a mod is the worst.<br />
<br />
'''PSA''': If your mod makes use of the dependency manager PLEASE STATE THAT IT DOES AND ON WHICH OTHER MOD in your Steam description. There is no telling how much time you could waste for other people finding the reason of a mod list problem.<br />
<br />
== ADVANCED SUBMODDING: BACKGROUND TABLES ==<br />
Let's say we aren't doing a submod whose only purpose is changing unit size for that other mod, but it's our own standalone mod A and we're doing some compatibility stuff to make it work better with B, without needing a separate submod C that requires both. '''For example, we want something from B in A, ''if B is also enabled''. Sometimes we can do that without C'''. <br />
<br />
Let's say I add some new units in A, and mod B adds fancy officers to all units. Officers are connected to the unit in db/land_units, but if we just pasted B's officer key in there, A would go boom if B is not enabled. We don't want that, and we may not want to force people to use B. So we paste that officer key there, replacing A_blank_record, but we also check what table that key relies on by hovering on its top (title, header, whatever), which is... db/land_units_officers. Without it, that officer key is going to go boom, [[Tolerant Tables|because it's not a tolerant key]], at all, to the point that even a non-existant officer needs an actual key called A_blank_record, which does exist. <br />
<br />
What we do is create land_units_officers, add that officer key under key, keep personality location as front or rear (honestly don't know if that crashes if left blank, don't care), but we leave the officer 1 etc columns empty. '''IMPORTANT: we rename this table fragment with something like zzzzz_mod_a_mod_b'''. Notice the zeds? Keep those in mind.<br />
<br />
So, what is this doing? It's telling the unit that it's going to use that officer group, but it's got nothing in it, no ''actual'' officers (battle_personalities). By using our mod A without B, the game finds an empty box for this officer, shrugs, and doesn't replace unit models with any officer personality. The game moves on without crashing, because that key exists. Basically, we created another blank record, but this very specific one gets filled in when B is enabled. <br />
<br />
Remember those zeds? They are there so that our blank record gets overridden by B's table (which we assume has a higher alphabetical priority than a bunch of zeds, unless B's author is not trying hard enough). Keep in mind that if B's author ever changes those officer keys you won't crash, but you'll still need to adapt because your blank record would stay blank.<br />
<br />
<br />
This can be done in a bunch of situations, but you'll need some specific knowledge of how specific contexts work. You could want to use this method to nerf some effects from mod B, in which case you might need more than one background table (the zzzzz boys), including db/effects, which by itself does absolutely nothing, but using an effect key that doesn't exist in there will go kaboom.<br />
<br />
== ADVANCED SUBMODDING: SCRIPTS ==<br />
Uhh, sorry, not my field, but generally speaking trying to change or override a script cleanly is highly specific to what the script does and how it's written, in other words whether you can snipe the specific function you want to change or if you have to grab the whole thing. <br />
<br />
Some scripty fella should probably add more tips here.</div>Cataphhttps://tw-modding.com/index.php?title=Tutorial:Updating_textures_to_WH3&diff=580Tutorial:Updating textures to WH32023-04-21T17:05:48Z<p>Cataph: /* Intro: WH3 is very metal, but also rough */</p>
<hr />
<div>== Intro: WH3 is very metal, but also rough ==<br />
This is more or less a temporary page in wait for better methods. I'm not a specialist in this field, like a graphic or something, but I speak as I find of stuff I banged my head on. That said, let's get to it. <br />
<br />
You have textures that you made or edited for WH2 and now you want them to work in WH3. Thing is, they won't, because WH3 moved to a metalroughness method instead of the old glosspecular. <br />
<br />
What does this mean in practice? Good question, especially because I don't know the theory.<br />
<br />
* The '''diffuse''' texture is replaced by the '''base colour'''. They both carry the colours, except that the base colour dds also incorporates the old specular, that is to say metallic surfaces that were mostly black in diffuse are now... metal.<br />
* '''Material map''' is a texture that replaces what specular and gloss did. It's a green/orange map with no alpha that actually carries the metalroughness we talked about. Orange is reflective metal, green is rough and not reflective.<br />
* Normal maps unchanged, masks unchanged. <br />
<br />
For the most usual reskins, we now have to worry about one fewer texture. Great, but how do we convert?<br />
<br />
== Automatically via Asset Editor ==<br />
[https://github.com/donkeyProgramming/TheAssetEditor/releases/latest Asset Editor] by Ole includes a plug-in made by Phazer that can convert WH2 textures into WH3 for you. However, at the time of writing (September '22), this yields a high-gamma result, which is to say, quite a bit brighter than it should be. Incidentally, the button also works to force-fetch existing textures in case Assed can't initially load them for some reason. <br />
<br />
You can use this function, and then tweak the base colour as needed, or you can do it manually as follows.<br />
<br />
== Diffuse into Base Colour ==<br />
This one is pretty easy. Grab your PSD or whatever layer-preserving file (you have those, right?) and merge diffuse and speculars from WH2 into one texture that has the metal surfaces from the latter. That's it. Unless you have particular metallic surfaces like rust, which will likely need some tinkering to get good results. <br />
<br />
If you only added some small details to diffuse or specular, paste them over the new base colour. '''Save with Photoshop or Paint.net as DX10+ sRGB'''. As far as I know, GIMP can't handle it, some people work there and then save in Paint.net. Remember the alpha if you need it, and the mipmaps. <br />
<br />
One small detail is that while autoconverting textures for WH3, base colours seem to have lost quite a bit of details in some cases. You might want to keep better-detailed surfaces from the WH2 diffuse, who also won't have the red mite infestation CA's process glitched on us.<br />
<br />
== Gloss and Specular into Material Map ==<br />
Things get a lil bit funkier here.<br />
<br />
If you had small edits to carry on for better details, paste them on a new material map for that vanilla asset you're editing, and apply that layer as... honestly, whatever method works best for that case, you'll have to tinker. Overlay or Soft Light maybe.<br />
<br />
If you have more complex cases, there is a super manual process I found that works pretty accurately.<br />
[[File:2022-02-22 205452.jpg|alt=material map mock-up|right|frameless|1000x1000px]]<br />
'''You start with the WH2 gloss you had lying around.''' For this mock-up I did at the time, I experimented with the gloss for dwarf warrior torsos and tried to get a result as close as possible as the one they actually have in WH3.<br />
<br />
The layers in the bottom right have titles that explain what they do. The only one I forgot to properly label is the orange fill (r255 g180), which is a ''Hard Light'' method. They're all at 100% opacity.<br />
<br />
I have no idea how this all translates to GIMP or Paint.net, to be honest, you'll have to adapt.<br />
<br />
The trick is using the inverted (ctrl+i) gloss as base for both colour settings, and masking out (for the green) and in (for the orange) the parts that they need to affect. This selection part is the annoying bit, especially when you have many metal parts around the place. It gets a bit easier if you combine this with selecting areas from the old specular, or whatever works for you to isolate what you need. It's also easy if you have a texture with like one big chestpiece that is the only metal part. Anyway, try to work smarter when you can. <br />
<br />
Again, this method is overkill if all you did was adding one small detail, in which case paste it on an existing mat map. Or if you only recoloured something in the diffuse, in which case you don't need to worry about metalness at all.<br />
<br />
'''Save mat maps as BC1 with no alpha.'''<br />
<br />
<br />
<br />
<br />
== Useful Links ==<br />
You can learn more about metalroughness with this video: https://youtu.be/mrNMpqdNchY<br />
<br />
MATERIALIZE free software can be generally useful, especially if you're making new normal maps https://www.youtube.com/watch?v=vtnJToPxBNo<br />
<br />
It's a bit off-topic, but since we're talking about '''normal maps''', here's a procedure to get the orange-hue normals used by TW. Feed the base colour texture into Materialize, from there create the Height Map, and from that the Normal. Settings are a crap shoot as far as I'm concerned, I just wing it. When you're satisfied of the texture's bumpiness, save the blueish normal. Then grab that and put it in PS or editor of choice and do this:<br />
<br />
* Go into the Channel tab, select the entire '''red''' channel and paste it into an '''alpha''' channel.<br />
* Paint the '''red''' channel completely white.<br />
* Paint the '''blue''' channel completely black.<br />
<br />
Tadaaa, you got a viable normal map. More or less.<br />
<br />
== Updating Models ==<br />
Of course it doesn't end with updating textures, does it? Even if the conversion itself was easy, you need to make sure the model works fine too.<br />
<br />
The '''rigid model''' needs to be saved again through Assed if it was last saved there during WH2. Anyway, you can use Assed to regenerate the correct paths. You can get rid of the texture paths you won't be using, from diffuse to specular.<br />
<br />
One word of warning about rigid models is that they tend to have a glitchy uniform mask if they have areas painted as blue in their mask dds. You can recognise this in-game if they start having full-black metal parts. That's the tertiary uniform colour acting up. To avoid it, generate a wsmodel with Assed, and use that instead.<br />
<br />
Also, a lot of paths may have been changed. For example, the chaos dwarf crew folder was renamed, so those textures wouldn't be found. You'll have to grind those errors down.<br />
<br />
Now, for the annoying part. WH2 wsmodels, those won't work anymore. Not one. My suggestion is to start from scratch. Generate those with Assed when you can, and then tweak xml materials manually when you need special shaders or different texture paths. I don't really recommend doing it the stubborn way, fixing xml materials one by one, because it's very prone to error and frustration. Besides, if you had any kind of emissive or ethereal glow, those need to be redone [https://cdn.discordapp.com/attachments/373754902608084994/949297150293069864/2022-03-04_142746.jpg because this is what a WH2 weapon emissive looks like in WH3.] The colour will be wrong and the glow's power will scorch your cornea. <br />
<br />
That said, if you compare xml materials from wh2 to 3: <br />
<br />
* only one blood map;<br />
* in most cases, the slot name for textures is a version 2 (just do it, you don't want to have problems out of stubborness);<br />
* you ''need'' to have slots for base colour and mat map. You can remove the old stuff like spec and gloss;<br />
* not having a texture slot for the mask also tends to cause glitches, like the wsmodel fetching nearby mask textures in weird places;<br />
* a boolean parameter for applying blood;<br />
* in many cases, the actual paths to textures were changed (e.g. chaos dwarf artillery crew folder renamed);<br />
<br />
== Updating the variantmeshdefinition ==<br />
Hereby VMD as usual.<br />
<br />
VMDs weren't changed much, but '''you need to add a is_stump metadata to all gore stumps in your VMDs. All of them.''' Otherwise they'll show up before the guy is cut up. Just copy the metadata from a vanilla VMD and start copy pasting. I recommend replacing the pre-existing <code><META_DATA>equipment</META_DATA></code> with both <code><META_DATA>equipment</META_DATA><META_DATA>is_stump</META_DATA></code>, so you don't have to do it too manually. You do have to do it VMD by VMD.<br />
<br />
You can, however, get rid of any imposter definition in your VMDs. CA seems to have done so and who am I to say no to a chance of making the VMD more readable?<br />
<br />
== ''Fin'' ==<br />
That's pretty much it. It can be a bunch of work and it's a good chance to rethink and restart from scratch with new methods and ideas, instead of wasting time updating old stuff. While I work through updating my stuff, it certainly was an excellent reason to get rid of textures that were five years old. <br />
<br />
If you're sure you want to keep as much of your old content as possible, there are no two ways around it, it's gonna be a slog one way or another. Take it easy and don't burn yourself out.</div>Cataphhttps://tw-modding.com/index.php?title=Troubleshooting&diff=579Troubleshooting2023-03-18T12:35:26Z<p>Cataph: /* APPENDIX: WH3, crashing on clicking Skirmish */</p>
<hr />
<div>This is a troubleshooting guide for mod users in TW: Warhammer 2 and now 3. The generic pointers should be valid for all recent TW games.<br />
<br />
– Your neighbourhood Cataph<br />
<br />
<blockquote><br />
<br />
<br />
'''!!!'''<br />
<br />
'''WARHAMMER 3 PRELIMINARY HIGHLIGHT (will update and merge better later on)'''<br />
<br />
* [https://discord.com/channels/373745291289034763/650269940393443328/960904987523809340 Remove any movie pack from the pre-workshop interim period.] <br />
* Delete any user script you may have tried using if you were a masochist.<br />
* Delete the <code>-dx11</code> override you may have put on Steam (game>properties>launch options in the lower right must be empty). <br />
* Don't launch the game from the taskbar or from the exe, as it won't load mods; use the Play button or steam shortcut, or even RPFM's launch.<br />
* Go to <code>%appdata%\The Creative Assembly\Launcher</code> and delete <code>moddata.dat</code>. In case the launcher got stuck.<br />
* Since Steam is doodoo, data may get corrupted. Unsubscribe, and wait for the mod to be removed. If it needs to be manually removed, go to <code>steamapps\workshop\content\1142710\</code>xyz where xyz is the mod id on its url. Then redownload and wait.<br />
* Verify game cache.<br />
<br />
'''!!!'''</blockquote><br />
<br />
== Managing Mods ==<br />
So, you have subscribed to mods on the workshop. You now open CA’s current mod manager (hereby called George) and – blimey, they don’t work or something’s not right.<br />
<br />
First thing to keep in mind, if you have issues with George you should definitely report them to CA so that they know what they should look at.<br />
<br />
That said, you can just use the [https://github.com/Kaedrin/warhammer-mod-manager community mod manager] (normally called KMM). Long story short, George is unwieldy and has grown responsible for a lot of issues of its own, becoming hated by modders and users alike. Among other things, KMM is more reliable and provides mod profiles.<blockquote>'''''For WH3 as of August''': KMM is still not updated, [https://steamcommunity.com/sharedfiles/filedetails/?id=2845454582 but PJ made another perfectly-working community mod manager (read for the actual link).] Good practices still apply, but all issues/notes about KMM copying items to data/ don't apply because it doesn't. Will update the guide better as things evolve.''</blockquote><br />
<br />
==== How to Load Order ====<br />
KMM and even George have a function to manually change how mods are loaded, which is an old habit of a lot of other modding communities, so you’d be tempted to change load order manually, right?<br />
<br />
'''''WRONG.'''''<br />
<br />
Ok, I’ll spare some time for this before we get into the actually useful tips, because this is one of the nastiest tropes around the community. The truth is that compatibility-minded modders already handle load order on their own as far as possible. Manually changing load order may do absolutely nothing, shift the problem somewhere else or break everything.<br />
<br />
Some context. There are six main possible categories of folders in a mod pack and this is how they handle load order, either through actual pack name or table name:<br />
<br />
* '''Db''': table name.<br />
* '''Scripts''': pack name.<br />
* '''Startpos''' (the big bad): pack name.<br />
* '''Text''': table name.<br />
* '''UI''': pack name.<br />
* '''Variants''': pack name.<br />
<br />
And that is if the modder doesn’t redirect content (e.g., telling database to use a different ui icon). KMM can only affect pack name order, so there are things like balance submods (Db overrides) that are still completely in the hands of the modders and intentionally so.<br />
<br />
In other words, there are only two possible cases in which you may want to alter load order manually: UI and variants, basically if you want to use specific reskin B.pack in the midst of larger reskin A.pack, in which case you push B on top.<br />
<br />
''In conclusion, you want to follow KMM’s instructions, give Steam time to download/remove mods and mostly keep load order in an alphabetical fashion (e.g. order by name and save profile), especially after adding new mods.''<br />
<br />
Which, incidentally, is this:<br />
<br />
! # $ % & ‘ ( ) + , – ; = @ 0-9 a-z [ ] ^ _ ` { } ~<br />
<br />
Where “!” wins over “a”.<br />
<br />
== Common Troubleshooting ==<br />
In an efficient mod, at least half of the reported issues are down to user error or what is technically called launcher f***-up. We’re going to try and cut that amount down for the greater good.<br />
<br />
==== User good practices: ====<br />
<br />
# Read the mod description. Seriously, this alone would prevent 80% of comments on Steam pages. Even if a description looks long, do it, it’s there for a reason. Some mods will also have FAQs or a list of known issues, incompatibilities and instructions. Read the comments before yours too if you have to post one. There’s an excellent chance the question you’re going to ask is already answered in in descriptions, FAQs and recent comments.<br />
# Don’t ignore the required items. The mod may show you a popup upon subscribing, disregarding that is almost always cue for disaster. This popup is ''not'' shown when subbing from a Steam collection (thanks Gaben), so actually check the mod’s page.<br />
# Keep the mod list in alphanumerical order. We’ve been over that already. If you have new mods that have popped at the tail of the list, just click again on the <code>File Name</code> column in KMM and save your profile.<br />
# Troubleshoot yourself! The thing is, we don’t have time to help everybody, and in most cases the problem is local. We’ll get to best practices on this, don’t worry.<br />
# Upon commenting about an issue, provide context. Ok, you did everything right but that ugly bug is still there. That’s fine. The worst thing you could do at this point is comment “mod doesn’t work” because that means absolutely nothing. Modders aren’t telepaths. Steam comments aren’t the best place for this, so use a discussion or the discord server/channel lurked by that given modder.<br />
#* Context: when and how the thing happened. E.g. during the interturn after X’s turn, or clicking this button, whether it was Vortex/ME/multiplayer, custom battle or campaign battle.<br />
#* Mod list: Link a collection or a screenshot to the KMM list. For example, the big thing is not being naif enough that the overhaul in your list can’t affect other mods. For some reason, sometimes it feels like pulling teeth to know what else is there.<br />
#* Screenshot: always helps for clarity and visual context.<br />
#* Save game: if requested, you can find your save game in (example) C:\Users\%USER%\AppData\Roaming\The Creative Assembly\Warhammer2\save_games. Remember the mod list, because the modder may not be able to load without it.<br />
#* Results of your own troubleshooting: for example it’s good to know it happens with that one mod only. Relatedly, if you posted about an issue and later find the cause, let us know.<br />
# Don't assume your mod lists is working just because it's not crashing. A crash is only the most visible of symptoms, it's like assuming a coal miner is perfectly fine just because they haven't dropped dead yet. You may have all kinds of issues in your 400-mods list ranging from fucked models to script breaks. Did I mention don't use 400 mods? Yeah, probably don't.<br />
<br />
''This list is of course not meant to insult anybody’s intelligence, but you’d be surprised at how many issues and massive wastes of time are due to neglect of these simple rules. Following them is in the user’s interest in order to find a solution sooner, and it will allow the modder more time for improvement rather than wasted in unnecessary bug-hunts.''<br />
<br />
<br />
'''Frequent Steam issues:'''<br />
# Corrupted and botched download: this is relatively frequent and it causes 'random' crashes with mods that ''don't'' otherwise crash. Delete locally and redownload until it works. If using KMM, use the unsub+delete option, and resub.<br />
# Mod not updated: Steam may also not fetch the latest version of a random TW mod. At the merest issue, always double check the local file's last date and that of the mod on the workshop (on the top right, Last Updated).<br />
<br />
==== Common launcher/game issues: ====<br />
<br />
# Failed to download/remove mod. This happens relatively often and if in doubt you should always check in the mod download folder (example: Z:\Steamsteamapps\workshop\content\594570\??????) whether that mod was successfully downloaded/removed. Open George/Steam again until it is. The final folder id is the same as the one on the mod’s Steam url and you can sort by date for the most recently poked folder.<br />
#* More on this if using KMM: Kaedrin’s manager copies packs from that content/ to the game’s data/ folder. Moreover, when mods update you will likely need to refresh/restart KMM.<br />
# Ghost mods. Definitely spooky. You have toggled off that mod, but somehow it turns out it was still being loaded and crashing your game. Or a mod updates and self-enables. Using KMM seems enough to prevent this kind of poltergeist.<br />
# Random crashes: sometimes stuff just breaks and you have to verify your game’s cache: Steam Library>right click on game>Properties>Local Files>Verify yadda yadda. Or check with the game’s support.<br />
# Failure to enable mods or borked load order: sometimes George simply won’t fire what you want, or you’ve accidentally touched load order and now it won’t revert. Use KMM.<br />
# Soft cap: as of King’s Shilling update, this is completely fixed and the cap is indefinite. You can stop merging stuff or believing conspiracies about CA intentionally capping mods.<br />
<br />
==== Some specific KMM issues: ====<br />
<br />
# Doesn’t work: KMM can be installed anywhere, BUT in the game’s stuff. Don’t install in data/ or anywhere close. Hell, plop it in the desktop.<br />
# Doesn’t work cause I’m pirating the game: KMM can smell piracy. Buy the game.<br />
# KMM freezes on start: reboot it.<br />
# Game crashes on load: if you get that or suddenly crash for no good reason, just refresh/restart KMM first thing. If it persists, time to actually troubleshoot. KMM doesn’t often suffer of corrupted downloads but it may theoretically still happen.<br />
# Movie packs: still crashing? Even with no packs enabled at all? Ok, keep in mind that once they are in the data/ folder, movie packs will always be enabled no matter if you’ve toggled them on or not. KMM shows if a mod is a conventional pack file or movie pack (Type column), and it will tell you on the lower right how many movie packs you’re currently running. To effectively disable a movie pack, use the right click option <code>Unsubscribe (Steam) and Delete</code>. This should get rid of that mod in one go, instead of doing a mix of things that will probably still cause KMM to copy the pack again. Movie packs are mostly used for vfx, but sometimes also come with data baggage that you don’t always want around. Modders: you ''really'' want to only have harmless vfx in the movie pack, not db and scripts.<br />
<br />
== APPENDIX: Trimming the Mod List ==<br />
Again, there is virtually no such thing as a soft cap in WH2 anymore. So it’s up to you to keep your mod list functional, and if you have more than 100 mods enabled, risks and maintenance time will increase for you. Making that work is up to how careful you are, and even if a mod list doesn’t produce an instant crash you can’t be sure there aren’t less visible issues, e.g. script breaks.<br />
<br />
As a rule of thumb, don’t be cocky with your list of 250 mods because it’s all fun and games until everything works perfectly (and with those numbers chances are it doesn’t already, you just can’t see it), at which point there’s a lot of stuff to check.<br />
<br />
If you’re not experienced yet (and don’t assume you are just because you played Skyrim, this is different), use the mod list of someone that has very carefully been curating it, and check that it looks ok with the help of the modders themselves. For example, start by a modder’s own collection on Steam, they often have one.<br />
<br />
=== Finding the culprit ===<br />
The usual problem with large mod lists is this: bad, I got a crash; worse, which one of the N mods I have is the culprit?<br />
<br />
==== Generic pointers: ====<br />
<br />
* Pure Text, Variant and UI mods can basically NEVER crash the game for the user. If they do, it’s a botched download.<br />
* Momentarily sort by date either on KMM to find the most recent updates, if you didn’t add additional mods those ''may'' be responsible.<br />
* If you had the issue during a campaign, do not remove mods that have custom items, units or buildings because you’re just going to crash harder if those are around in the campaign map.<br />
* As mentioned above, watch out for movie packs. If you’re inexplicably crashing even with no mods on, you might have a movie pack with crashy data in it.<br />
<br />
==== Bisect and Conquer: ====<br />
Especially when dealing with big mod lists, the quickest method is to enable half of it. If you crash, that’s the troublesome half. Halven again to tighten the noose.<br />
<br />
Keep in mind mod requirements while you do this.<br />
<br />
If you want to check on a particular mod, disable everything and load the bare minimum to make that mod work, in other words mod+whatever required mods that comes with. And up from there, adding one or small groups of mods at a time until you can reproduce the issue.<br />
<br />
It’s patient work but the modder will appreciate it, and it takes less than panicking for hours in a comment section. Assume that a modder won’t troubleshoot your mod list of 150 packs because you say it’s their mod doing it, unless they have proof because you tested without anything else plus requirements.<br />
<br />
Remember: a happy modder is a happy user.<br />
<br />
== APPENDIX: Scripts ==<br />
Scripts are being increasingly used by mods. While most scripters are getting smarter by the day to maintain compatibility, some require a framework or some mods will just struggle to work when there are too many mods around.<br />
<br />
You may encounter symptoms of broken scripts, due to botched downloads, bad compatibility or just plain unforeseen issues because we can just mess stuff up sometimes. Script glitches tend to be quite tricky to root out.<br />
<br />
A few examples of broken scripts:<br />
<br />
* Starting lords that should be custom are not custom, or don’t spawn, or don’t have the correct army or settlement.<br />
* Sword of Khaine button is unchained right off.<br />
* Chaos and all Rogue armies may spawn immediately.<br />
* Campaign camera on a fresh campaign starts zoomed-out and doesn’t pan in.<br />
* Chivalry starts at 0.<br />
* One of the worst, characters do not gain XP (this may sometimes happen in full vanilla too, requires repair).<br />
<br />
==== Scropt broken, what do? ====<br />
In some cases, it’s just a botched download (see Launcher error 3). Otherwise it gets trickier and requires you to start trimming the mod list to find the culprit. When/if you report the issue to modders, remember to provide as much info as humanly possible because finding a script break can turn ugly and complicated.<br />
<br />
Particularly useful to help with scripting issues: please enable [https://steamcommunity.com/sharedfiles/filedetails/?id=1271877744 this debugger], reproduce the bug and send the resulting log, which will be a lenghty txt generated in ''Steam\steamapps\common\Total War WARHAMMER II''. Specific scripty mods may come with additional instructions in their mod descriptions/faqs.<br />
<br />
Do not keep the script logger there unless you need it, since it will noticeably slow down your game.<br />
<br />
One of the most frequent issues at the moment is a performance-related clog-up at the start of a campaign. This basically means that too many scripts are trying to fit into that time frame to do their stuff (legendary lords, changing armies, this kinda stuff) and results in some of them not working. This is where size of the mod list, in regards to any mod with a first-tick script, becomes serious.<br />
<br />
Quick note about Communiy Modding Framework: an obsolete scripting system, it’s basically only used by Crynsos’s unlocker at this point in time (september 2020) and will cause issues more often than not when enabled and not required.<br />
<br />
''Basically disable it unless you’re using CFU''.<br />
<br />
I repeat, it often breaks stuff. When in doubt, shoot it in the face.<br />
<br />
== APPENDIX: [https://steamcommunity.com/sharedfiles/filedetails/?id=1354363596 UI Modding Framework] ==<br />
This framework is technically not required to do UI modding at all, but it may be used as a framework by some scripty mods. Unless it happens to have broken functions after a patch, there are zero reasons not to have it around just in case one of your mods is actually using it or starts doing it.<br />
<br />
== APPENDIX: [https://steamcommunity.com/sharedfiles/filedetails/?id=1354363596 Mod Configuration Tool] ==<br />
This other framework is used to provide settings for compatible mods, i.e. to tweak some details at your heart’s content. Usually a good thing to keep it around because there’s quite a few mods supporting it, or that may do it in the future. For example, you may use it to configure some scripts to fire in a performance mode to reduce impact on campaign start.<br />
== APPENDIX: WH3, crashing on clicking Skirmish ==<br />
The most likely cause for this right now is that you saved a character (that new fancy function in WH3 to play campaign characters into skirmishes) but it was originated or affected by a mod that you have since then removed. Kaboom. The other symptom is going kaboom when trying to recruit any hero or lord in campaign.<br />
<br />
Go in <code>C:\Users\user\AppData\Roaming\The Creative Assembly\Warhammer3\saved_characters</code> (or search %appdata% in windows search, then continue to those folders) and delete them.</div>Cataphhttps://tw-modding.com/index.php?title=Effects&diff=578Effects2023-03-12T17:55:18Z<p>Cataph: /* Anatomy of an Effect */</p>
<hr />
<div>Whenever you pick a new skill for a character, or gain an item, or apply a banner to a unit, or build a building - you are getting and using effects.<br />
<br />
Effects are one of the most common game objects in all of Total War, and they drive a vast majority of any sort of dynamic/changing values throughout the game, and many game play systems. For example - the income from buildings is done through effects; attrition immunity is applied through effects; stat changes for units (ie. +Melee Attack for all archers) are done through effects.<br />
<br />
Learning how to create and alter effects is a fundamental part of being able to make meaningful edits to the game.<br />
<br />
NOTE: Written with R2/3K/WH2 in mind, this information should be valid from Empire to the present though. Please share if there are any inconsistencies.<br />
<br />
==== Anatomy of an Effect ====<br />
At the heart of all effects is the <code>effects_table</code> db file. This table defines a few important things - the '''key''' of the effect, to link it up to other data objects and the localised text. It will also define some UI details here, typical - such as '''icon''', '''priority''' (which determines the order effects show up, or whether it is hidden from view with 0), and the '''category''', which determines where an effect shows up on a Character Details panel for example. Also mind the boolean in here, '''positive_is_good'''. This means that, if your value is a positive integer and this bool is set to true, the text will show up as green; if your value is negative and this bool is set to false, the text will show up as red.<br />
<br />
An effect defined in just this table has no, well, effect - it has to be linked to another game object called <code>bonus_values</code>. Bonus values are the game object that ''actually do a thing.'' Effects just enable those bonus values to be applied elsewhere. Bonus values can do a bunch, from increasing recruited lords' ranks, to adding charge bonus to a unit set, and far beyond, varying greatly based on the individual game. It's important to note here: '''no, you can't make new bonus_values.''' They are defined in the underlying game engine, and have code attached to them that actually make stuff happen. You can only use existing bonus_values, ever.<br />
<br />
The bonus_values are defined in data in dummy tables called <code>campaign_bonus_value_ids_BONUS VALUE TYPE</code>. For instance, the <code>basic</code> bonus_values are found in the tables <code>campaign_bonus_value_ids_basic</code>. Do note that you won't find these tables in RPFM; they're dummy tables, meaning they're not actually used to build data in the game and can't be edited.<br />
<br />
The links between an effect is defined in tables called <code>effect_bonus_value_BONUS VALUE TYPE</code>. These tables are typically either two or three columns - you link an effect key to the bonus_value dummy key, and a potential third piece of data needed for the effect. For instance, <code>effect_bonus_value_ids_unit_sets</code> has three columns - <code>effect</code>, <code>bonus_value_id</code> which defines WHAT'S being edited (upkeep, charge bonus, etc), and <code>unit_set</code> which defines which units get this effect.<br />
<br />
However, not every effect ''needs'' a bonus value - it's fairly common to make a "dummy" effect, which is just UI and text, but doesn't actually have any bonus_values attached to it. This could be desired to make some clear UX about a functionality that is done through script or some other data object.<br />
<br />
==== Applying an Effect ====<br />
From here, the effect ''works'' and is a beautiful machination, but it doesn't do anything since it isn't applied anywhere. In order to take hold, it needs to be attached into an <code>effect_bundle</code>.<br />
<br />
Effect bundles are another fairly common data object, and their name is pretty much their definition - they're a nice lil' package of effects. There are two types of effect_bundles - explicit, and implicit. Explicit effect bundles are defined in the table <code>effect_bundles</code>, and then those effect bundles can be applied through a variety of means. Implicit effect bundles are created when another effect-bundling table is used - for instance, <code>building_effects_junction</code>. This table defines a list of effects that attach to a building, which are then '''bundled up''' in the game, thus implicitly.<br />
<br />
Looking first at explicit effect_bundles - you would first define the effect_bundle key in <code>effect_bundles</code>, which again is primarily UI information. However - there's an important bit of data in this table too, that we'll have to return to later. The <code>bundle_target</code> column is very important, as it plays a big role in a future bit that we'll cover soon. It's mostly common sense here - if the effect bundle is going to be applied to a character via an ancillary, use the <code>character</code> bundle_target. If it's applied to an army through a stance, use the <code>force</code> bundle_target. This is the game object that '''has''' the effect_bundle, and the effects will be applied ''from'' that object.<br />
<br />
From there, the next jump for making an explicit effect_bundle is the table <code>effect_bundles_to_effects_junctions</code>. You'll never guess what it does!<br />
<br />
First off the bat, we have the <code>effect_bundle_key</code> - self-explanatory. Same with <code>effect_key</code> and, I assume, <code>value</code>. If you're editing a numerical bonus_value - like, editing a stat - it'll just be whatever number you want to add to the stat. If you're applying some stranger effect - like attrition immunity - that doesn't use actually numbers, you'll either use <code>0</code> for "deactivate", or <code>1</code> for "activate".<br />
<br />
The <code>effect_scope</code> is where it gets really important. Effect_scopes are defined in data, and new ones can be made - and, sometimes, are needed. Effect_scopes are composed of ''source'' and a ''target''. The '''source''' of an effect_scope will have to be the <code>bundle_target</code> defined in the effect_bundle earlier - you're applying an effect '''from''' the bundle_target's effect_bundle to something else. For example, if you wanted to add charge bonus on a character through an ancillary, you would just use the <code>character_to_character_own</code> effect_scope - since the character has the ''effect_bundle'' and will receive the ''effect''.<br />
<br />
One more very important note - '''not every effect works with every effect target.''' You can't assign a charge_bonus to a <code>faction</code>, for instance. That just doesn't make sense. 90% of the time, you can find which game objects are valid targets in the bonus value definitions (<code>campaign_bonus_value_ids_xxxxx</code>), in the notes column. They'll say something like "used at character bonuses", which means it's only applicable to a character. On the 10% that aren't noted in that table, you can typically find examples in vanilla for what you want to do, and you can copy what they do.<br />
<br />
Implicit effect_bundles are much the same - just without defining the effect_bundle on its own, and its bundle_target. This means the <code>effect_scope</code> column doesn't have a predefined effect source, so you will need to be slightly more aware of what you're using. Again, check vanilla examples as much as you can.<br />
<br />
Aside from using the aforementioned data structures, you can script some effect bundles as well. You can use a Lua script to apply (or remove) an explicit effect_bundle from a bundle_target - though mind it won't work for implicit effect_bundles.<br />
<br />
For Warhammer 2 - you can read up [https://chadvandy.github.io/tw_modding_resources/campaign/campaign_manager.html#section:campaign_manager:Effect%20Bundles here]. The same general commands should exist in all other games, with the biggest difference lying in Three Kingdoms.<br />
<br />
Likewise, Warhammer 2 got a GREAT new ability to completely change explicit effect_bundles dynamically while the game is going on. Instead of defining a dozen different effect bundles with 12 different values for the same effect, you can make one effect_bundle, and change its effect value dynamically. [[Custom Effect Bundles|Read up more on it here]].<br />
[[Category:Unfinished]]<br />
[[Category:Outdated]]<br />
[[Category:Warhammer 2]]<br />
[[Category:Rome 2]]<br />
[[Category:Three Kingdoms]]<br />
[[Category:Troy]]</div>Cataphhttps://tw-modding.com/index.php?title=Tutorial:Submodding&diff=558Tutorial:Submodding2022-10-29T15:49:11Z<p>Cataph: /* ADVANCED SUBMODDING: SCRIPTS */</p>
<hr />
<div>=== Originally written by Cataph ===<br />
If you’re a modder, one of the most frequent comments next to romantical proposals (YMMV) will be “SFO/Radious/CTT/Lucky/yomama compatibility when”. Many modders don’t have an interest in making a submod simply because they don’t know and play a given overhaul and wouldn’t know how to balance it anyway.<br />
<br />
So, what if it could be you making that submod? Or maybe you just want to make X mod work better with Y. Be the submodder you want to see in the world!<br />
<br />
A few things first.<br />
<br />
== WHAT IS A SUBMOD? ==<br />
Basically, an optional plugin designed to make mod X work or work better with mod Y, thanks to this mod Z. A user that wants to use X and Y together will download mod Z and keep all three enabled.<br />
<br />
Can a submod be a standalone? Well, yes, but it wouldn’t be a submod then, would it? Besides, it’s normally a dick move to take mod X and fully reupload it with a few differences. Plus, it’s 90% never necessary and we’re going to see why.<br />
<br />
Ok, but can I just edit a mod and keep it to myself? Sure, keep in mind that you should rename the pack into something else to avoid automatic updates to overwrite what you changed.<br />
<br />
== WHY IS A SUBMOD? ==<br />
I need you to focus.<br />
<br />
== HOW IS A SUBMOD? ==<br />
Fine, thank you. About how it’s made, we don’t necessarily need mod X and Y to make sweet love to each other but only you, bloke with a basic knowledge of RPFM and TW modding.<br />
<br />
== WHAT DO? ==<br />
Ok, as a basic example let’s say we want a compatibility submod between the Sea Patrol mod and a fictional 2x unit size mod, so we want to grab whatever lines define unit numbers in the former and multiply those by 2. Daring.<br />
<br />
First thing we open the first mod as a reference, then we create a new pack for the submod. We’ll call it seapatrol_yourname_unitsize.pack. (more on naming later, but sit tight)<br />
<br />
Upon viewing the db of Sea Patrol we see a whole lotta tables.<br />
<br />
Since I am a bloke with basic knowledge of [https://github.com/Frodo45127/rpfm/releases/latest RPFM] and TW modding, I know that unit sizes are in main_units.<br />
<br />
[[File:Submodding 1.jpg|frameless]]<br />
<br />
Thus, in the submod I’ll import said table/s by right click>Add…>Add from Packfile, find the pack, find the table and double click it. Close the add from packfile panel and we’re good to go, we have Sea Patrol’s main_units in our shizzle. We go in there and edit the numbers we want to change, in this case we select any num_men that is not a hero/lord’s, right click, apply math as ''{x}*2'' and done. Done? No, some of those units may be cavalry, so we need to adapt the number of mounts too. We import land_units as well and do the same thing on num_mounts. In the rarer case that there’s a multi-chariot unit, we leave mounts alone and multiply num_engines in land_units.<br />
<br />
== PRIORITY ==<br />
But it’s a submod, and we want to make sure we’re overriding the original mod’s values. No, not with load order on the mod manager, [[Troubleshooting|and incidentally you shouldn't touch that and you should use KMM]].<br />
<br />
We currently have two tables, we select those table fragments (in this case, called “AK_seahelm”) and we rename them to take priority according to this alphanumerical order:<blockquote>! # $ % & ‘ ( ) + , – ; = @ 0-9 a-z [ ] ^ _ ` { } ~ Where “!” wins over “a”.</blockquote>Usually, adding a “!” in front does it. But we also want to make clear what submod this is for. Right click> Rename> type ''!{x}_unitsize'', which will become “!AK_seahelm_unitsize”.<br />
<br />
''Note: DO NOT leave the table names as is, or you’ll crash. DO NOT leave a number as last character or it might glitch and crash anyway.''<br />
<br />
Aaaand, done! Now this submod of only two tables will correctly override unit sizes for a specific mod. Yeah, any non-vanilla key will be red in here, since you don’t define those in your pack, but no worries, it’s a submod that is designed to exist with the mod that actually has those keys.<br />
<br />
In the possible case you need at some point to override parts that don't answer to table priority, like images or variants or whole script files, you might want to name the entire pack with a prefix that wins priority over the original mod. For example, again, “!AK_seahelm_unitsize”. Considering you don't want users to manually change load order, this makes sure that by alphanumerical order you're already overriding the og mod. Notice that you can't change a pack's name after you've uploaded it to the workshop.<br />
<br />
Now, like with any mod we make a PNG icon and upload if we want to share it publicly. If you upload it on the workshop, add mods X and Y as required by clicking on Add/Remove Required Items. This will prompt a user to go and fetch those required mods as well. Most of them will somehow ignore it and crash, but at least you tried.<br />
<br />
== ADDENDUM: ETIQUETTE ==<br />
By most accounts, a clean submod like the above doesn’t really need permission since you’re not stealing anything. However, you should still ask as good courtesy, and it can’t hurt to still let the og author know as they may link it in description, let you know about required changes, etc.<br />
<br />
It’s also good practice not to add donation links to a submod.<br />
<br />
== ADDENDUM: UPDATING ==<br />
It should be your interest and responsibility to stay up-to-date with the original mods as soon as you have time. For example if you’re submodding a unit mod and you see the ‘parent’ mod has updated with balance changes, some key changes or new units, you should definitely hear a couple bells ringing.<br />
<br />
Sometimes the parent mod changes a few keys and then you might even crash until you update.<br />
<br />
== SUBMODDING EXAMPLE: TRANSLATION ==<br />
In most cases, translating a mod is a simple case of grabbing all of that mod's loc files (text db) and following what we've seen so far. So, make sure you only have the parts you need, remove the rest, rename your loc with a prefix that gives them priority. Then, start grinding at the actual translation work in those loc tables.<br />
<br />
There may be some fringe cases where there is text on images or inside scripts. As we mentioned, you might need priority over the whole pack in terms of naming. It also gets trickier changing the text on a picture, and you might want to contact the other fellow if you need to translate a text that is directly embedded in a script. Ask if there's a way to avoid you having to grab the entire script, which is normally a bad idea.<br />
<br />
== ADVANCED SUBMODDING: BALANCE OVERHAULS ==<br />
The submodder should also be the one who is familiar with the overhaul they’re adapting a mod for. If you are at a loss about how to tweak some things, definitely consider asking one of the two original modders (depending on the kind of question) for advice on how to proceed. For example, “this unit is weird and I’m not sure what role it should keep”.<br />
<br />
Can't be much more specific about this because there are so many possible moving parts that you need to change, starting with unit stats to their place on new recruitment buildings. Staying up-to-date is particularly important in this kind of mod.<br />
<br />
== UNIQUE NUMERICAL IDs ==<br />
In some tables, each line has a unique numerical id in front of it (or sometimes way off like in unit_special_abilities). That’s specific for each line, and it works like other important keys like those in land_units or main_units, as in there can only be one line about that key or num id.<br />
<br />
Why am I saying all this? Because if in your submod you happen to need to ''add'' some lines in, for example, building_units_allowed, you’ll need your own unique num ids to make them work proppa. Pick any number below 2 billions and something and make sure they never repeat. This is important, do not continue off the num ids from the mod you’re submodding or you’ll cause issues at some point.<br />
<br />
== ADVANCED SUBMODDING: STICKY TABLES ==<br />
Some tables and related features are slightly more complicated to submod. For example, you want to remove a unit from a certain building level. Easy, go in building_units_allowed again. Remember those unique ids? '''Keep that exactly intact''' (so it still refers to that specific line from the original mod or vanilla line) and change the building to something that has no chance of being available, such as <code>wh2_dlc12_dummy_nuclear_ruins_0</code> or change the unit instead to a unit that is completely unavailble as well for anybody who has access to the given building. You could change both to be sure, but it's more confusing down the line.<br />
<br />
Until WH2, you could have typed random gibberish in the building key to better track your changes (e.g., add "_removed" to building keys), but in WH3 that causes a crash as both fields need to be valid.<br />
<br />
The underlying logic is that you're hijacking a precise data line (due to the unique id, numerical or not) and telling it to do something impossible.<br />
<br />
'''Harder example''': I really don’t want any of these units to have the new-fangled Edgelord Deluxe passive ability, which is added by this mod. Cool, that means I can kill that ability from existence without it ever affecting anything else. We do that by:<br />
<br />
* grabbing its line from unit_abilities, we make it hidden in UI.<br />
* grabbing its line from unit_special_abilities, we make it a passive (boolean). Make sure you remove any activated projectile/bombardment/summon etc from here too.<br />
* grabbing its line in special_ability_to_special_ability_phase_junctions. Change the phase to a new special_ability_phase that we created and that does absolutely nothing. There, done. The ability still exists, but does nothing and is invisible. In my own private jargon this is called a pillow. Again, ''notice that you’re neutering this ability for any unit that happens to get it.''<br />
This currently doesn't really work in WH3 and I really hope they fix that because it's a serious problem.<br />
<br />
'''Even harder example''': I want this unit to not have the Regeneration passive ability. Oooh, that’s a vanilla ability, isn’t it? We can’t just dumpster it. Either we tolerate it or…<br />
<br />
== ADVANCED SUBMODDING: DEPENDENCY MANAGER ==<br />
This is a RPFM feature. ''USE WITH CAUTION'', as it's essentially a data coring method. <br />
<br />
We enable it by right clicking on the packfile itself in tree view (not on a table, not on anything else, literally the very first line in tree view), Open>Open Dependency Manager. We add a line as if it was a table (ctrl+shift+A) and type EXACTLY the pack name of the mod we want to override. As in “AK_seahelm.pack”. From this point onwards, everything we do in the submod under identical paths will completely override content from the parent mod no matter the load or table order for stuff with the same name. Example, I can import a table, not change its name and completely delete its content. This would normally crash, but not with DepManager. <br />
<br />
I said use this with caution because if you do this you REALLY need to stay up-to-date with the og mod. For example, you can remove the line that gives unit A the Regen passive, and it will work. However, any further update from the parent mod in that table won’t take place unless you also mirror it. Again, this is normally not remotely required and you should steer clear of it because it’s just as bad as leaving a vanilla table called “data__”.<br />
<br />
Additionally, '''this will auto-enable the linked mod''' as soon as it’s in data/ as if it was a movie pack. As such, you don’t want to do this unless you’re doing a submod that already requires that linked mod. Because having stuff popping up even when you’ve disabled a mod is the worst.<br />
<br />
== ADVANCED SUBMODDING: BACKGROUND TABLES ==<br />
Let's say we aren't doing a submod whose only purpose is changing unit size for that other mod, but it's our own standalone mod A and we're doing some compatibility stuff to make it work better with B, without needing a separate submod C that requires both. '''For example, we want something from B in A, ''if B is also enabled''. Sometimes we can do that without C'''. <br />
<br />
Let's say I add some new units in A, and mod B adds fancy officers to all units. Officers are connected to the unit in db/land_units, but if we just pasted B's officer key in there, A would go boom if B is not enabled. We don't want that, and we may not want to force people to use B. So we paste that officer key there, replacing A_blank_record, but we also check what table that key relies on by hovering on its top (title, header, whatever), which is... db/land_units_officers. Without it, that officer key is going to go boom, [[Tolerant Tables|because it's not a tolerant key]], at all, to the point that even a non-existant officer needs an actual key called A_blank_record, which does exist. <br />
<br />
What we do is create land_units_officers, add that officer key under key, keep personality location as front or rear (honestly don't know if that crashes if left blank, don't care), but we leave the officer 1 etc columns empty. '''IMPORTANT: we rename this table fragment with something like zzzzz_mod_a_mod_b'''. Notice the zeds? Keep those in mind.<br />
<br />
So, what is this doing? It's telling the unit that it's going to use that officer group, but it's got nothing in it, no ''actual'' officers (battle_personalities). By using our mod A without B, the game finds an empty box for this officer, shrugs, and doesn't replace unit models with any officer personality. The game moves on without crashing, because that key exists. Basically, we created another blank record, but this very specific one gets filled in when B is enabled. <br />
<br />
Remember those zeds? They are there so that our blank record gets overridden by B's table (which we assume has a higher alphabetical priority than a bunch of zeds, unless B's author is not trying hard enough). Keep in mind that if B's author ever changes those officer keys you won't crash, but you'll still need to adapt because your blank record would stay blank.<br />
<br />
<br />
This can be done in a bunch of situations, but you'll need some specific knowledge of how specific contexts work. You could want to use this method to nerf some effects from mod B, in which case you might need more than one background table (the zzzzz boys), including db/effects, which by itself does absolutely nothing, but using an effect key that doesn't exist in there will go kaboom.<br />
<br />
== ADVANCED SUBMODDING: SCRIPTS ==<br />
Uhh, sorry, not my field, but generally speaking trying to change or override a script cleanly is highly specific to what the script does and how it's written, in other words whether you can snipe the specific function you want to change or if you have to grab the whole thing. <br />
<br />
Some scripty fella should probably add more tips here.</div>Cataphhttps://tw-modding.com/index.php?title=Tutorial:Unit_Card_Guide&diff=557Tutorial:Unit Card Guide2022-10-18T11:59:26Z<p>Cataph: /* APPENDIX: Character 2d Portholes */</p>
<hr />
<div><br />
== Why ==<br />
Hello, my name is Cataph and I am a cardoholic.<br />
<br />
I heard you made a new unit in TWWarhammer and you need a new flashy unit card. Simple. No, it ain’t. Unit cards are probably the unit’s component you will be staring at for the majority of the time, even more than the actual variant. Get it wrong and it can be an eyesore for the entire campaign and battle.<br />
<br />
A good unit card will:<br />
<br />
* blend in with other vanilla pieces<br />
* show the unit’s appearance<br />
* display, possibly, its character and gear and role<br />
<br />
== What ==<br />
But first things first. A unit card is a 60×130 PNG. Don’t make it larger than that or it will automatically be compressed in-game and lose more quality than if you did it yourself. Its location is ui/units/icons, and it’s a good idea to open the data.pack and extract that folder for future reference. Its name needs to be the same in the card column in the <code>unit_variants</code> table.<br />
<br />
In units/info you may find a version with a larger “shredded frame”, this is however only used in loading screens, so ignore that unless you need those for promo or stuff like that. Of course, if you ''do'' need one, start with that larger size and halve the size later for the actual unit card, or it will look like something you don’t want to look at.<br />
<br />
== How ==<br />
You can use stuff like GIMP or Photoshop to assemble a unit card. Personally I use the latter so I will use its lingo, and I’ll have to assume you already know how to play around with it a bit. Specifically, you’ll want to know how to use layers and possibly adjustment levels. If you don’t, it’s fine, there are a lot of basic guides on the interwebs, and even if you skip some of the speshul effects I may end up using you’ll still get a better result than just plopping a screenshot in there.<br />
<br />
Admittedly, during the transition between Rome2’s and Warhammer’s art style I made truly ''horrendous'' cards myself, but with time I noticed things and developed some tricks. Keep patience.<br />
<br />
Most CA cards are similar to existing GW artwork, but are still made by a proper artist. I am certainly not one, but you’ll want to respect these factors:<br />
<br />
* Positioning of the portrayed unit: not too zoomed in, not too far away; varies with races too. E.g., notice how Empire cards tend to have a western knee-cut, Dwarfs a full body.<br />
* Lighting: CA cards are generally good luminosity, low contrast but with drawn highlights. This is important, you don’t want your card to be a confused blob.<br />
<br />
Before we get to the chase, [https://cdn.discordapp.com/attachments/731080362758766652/748925752115855530/template.psd get this template]! Always periodically test with the card frame on top, I used to get immensely pissed off when important details of my card got hidden by the UI. You will never see the entire card in the game, especially on ranged units due to the additional ammo bar. Remember to hide the frame again when you’re done. It’s a PSD file, but should work just fine in GIMP too.<br />
<br />
== The Three Jedi Ways ==<br />
[please don’t use the sampled pictures without permission]<br />
<br />
* '''THE ARTWORK'''. You grab a ''legal''* and beautiful artwork around, and tweak it until it fits and shines. Usually the quickest method, but it requires a good sample. Example below, for my Skullreapers, [https://vignette.wikia.nocookie.net/warhammerfb/images/7/76/BORKIL.jpg/revision/latest?cb=20130829160001 based on this artwork]. [[File:CTT_chs_kh_berz_framed.png|alt=|center|frameless]]'''THE MONTAGE'''. ''Even Rocky had a montage.'' You grab parts from existing CA cards and glue them together. This may look simple but it’s actually an excellent way to get god-awful cards, because each bloke in a card may have its size, positioning and lighting, and mixing them may not work like you’d think. You don’t want your card to look like the portrait of the Frankenstein’s Monster, or too samey with the neighbouring unit. Also, [https://i.imgur.com/l8Qgqwv.png avoid recycling the same base too many times in the same roster or you’ll get this effect]. Working examples: below for my Estalian Lancers, or [https://cdn.discordapp.com/attachments/374122686034477057/452435403610259457/berserker_champion.png this infopic by not-a-spoon].[[File:Unit_card_est_cav.png|alt=|center|frameless]]<br />
<br />
* '''THE PHOTOSHOOT'''. You take things in your hands and start taking screenshots of the unit in-game. This can be a lengthy process, especially for cavalry and ranged units, but can be quite satisfying and produce a faithful portrait of the unit. It’s my favourite and most used method, and the one I’m going to describe. This is also where Positioning and Lighting really come to play.<br />
<br />
<nowiki>*</nowiki> Remember that you can’t use non-WHFB stuff and if fan-art, you want to check/ask permission.<br />
<br />
== Guide to the Photoshoot ==<br />
First off you need to take a good screenshot in which the unit comes with a good pose, possibly no animation glitches and clipping. As said, you need something that will fit in a 60×130, so some photography experience may come in handy.<br />
<br />
Here are two examples that can give you an idea of how to crop and photoshop a battle screenshot and what the final result can potentially look like.<br />
<br />
[[File:Unit card photoshoot 1.jpg|frameless]]<br />
<br />
[[File:Unit card photoshoot 2.jpg|frameless]]<br />
<br />
These two blokes are Estalian reskins for Swordsmen and Spearmen. As you can see, the pose needs to fit in a quite longilineal frame, so not all stances will work and also why cavalry is more difficult. You want to show at least part of the body and weaponry. If they have a shield, avoid it occupying too much of the card.<br />
<br />
If you want to have an idea, while in-game, of whether something can fit in a card, put thumb and index of both hands in an L shape, indexes pointing up and thumbs completely overlapping with one another. This will make a |_| shaped frame for you that has similar proportions to the card. Now point it at the screen like a weird photographer, possibly while someone else can see and think you're a weirdo. <br />
[[File:Unit card photoshoot 3.png|none|thumb|Cavalry cropping is particularly annoying. You want enough horse but not too much, and enough rider that is not hidden by the beastie’s massive neck: '''pro tip, temporarily put mount size at 0.95.''' (I later photoshopped the lance to be more visible)]]<br />
''Protip! Use a better camera mod and the >N< key high-detail camera for better screenshots.''<br />
<br />
Usually you will want a decent lighting, so no early dawn or cloudy battles. You can still make those work but it’s harder. <br />
<br />
For these guys I wanted a sunny look instead of the gloomy Empire cards, so I edited the sky background. Consider using this [https://steamcommunity.com/sharedfiles/filedetails/?id=2516720224 Sunny Weather] mod.<br />
<br />
The beginning may be as simple as auto-tuning Luminosity and/or Tone to remove weird tints. Afterwards you want to reduce contrast (by a lot, even up to 100!) and probably still increase luminosity (otherwise they are likely going to look quite bleak in-game). Test in custom battle selection until it’s not a grey blob anymore.<br />
<br />
Then comes the holistic and complicated part.<br />
<br />
'''Protagonism''': the bloke must be instantly distinguishable from the background. Selecting them with lasso/magic wand and making them a separate layer is always a good idea. Afterwards you’ll probably further lighten or darken the background stuff. Blurring also works but I usually don’t like it, as it can look too fake. Giving it a ''minimalist'' oil paint touch can also help.<br />
<br />
'''Background''': when you have extra time and experience in your hands, you may want to add smoke, happy clouds, grim clouds, that sort of thing, behind the protagonist’s layer. Screenshots can often produce rather flat backgrounds and that can be off-putting. For example, grab a nice sky from another screenshot or even a random photo, resize and apply it with a layer mask that excludes the protagonist and probably the ground they’re standing on. Then tweak at will for opacity, blending and even tone. CA backgrounds are often some unnatural colour.<br />
<br />
'''Contours''': this is the secret recipe and why we lowered contrast. We said CA cards are artworks, and they have visible dark contours to highlight parts. So we start drawing them (1-2 pixel width) with medium hardness brush or pencil in black and white in a new layer. Usually it looks good when it’s set as Soft Light, probably between 60 and 100% opacity, tweak at will. Contours can make a huge difference between a flat icon and one that can blend in with vanilla ones. Examples (Swashbucklers from TEB and Teutogen Guard) without and with contour:<br />
[[File:Unit card photoshoot 4.png|none|thumb|The left one has a painted sky and super-imposed fire layers, you don’t want to bother with that sort of stuff at first.]]<br />
The cards were already heavily-engineered, but you can still notice an improvement. For example, here’s what the Swashie’s contour layer looks like on a background and at 100% opacity:<br />
<br />
[[File:Unit card photoshoot 5.png|frameless]]<br />
<br />
<br />
However, I’m actually gradually moving towards thicker contours, with one layer at size-2 brush and another up to 4 for the thickest shadows and bright surfaces.<br />
[[File:Dwf huskarls framed.png|none|thumb]]<br />
<br />
One further example (Lothern Sea Rangers):<br />
[[File:Unit card photoshoot 6.png|none|thumb|1, almost unedited;2, added two levels of fog in front and two behind at varying Normal opacity;3, added tight brush contours and a sword glint for rule of cool.]]<br />
In any case, you will still check how the card looks in custom battle roster selection (where it’s the smallest) and in the following screens. Sometimes it will suck so hard that it’s back to the drawing board, but that’s ok. Another thing that you should look at in-game is whether the lighting is ok or if the picture gets burned tfo when the unit is selected.<br />
<br />
You read through here so here’s a prize: my first and terrible unit card for WH1, versus the same unit in WH2:<br />
<br />
[[File:Unit card photoshoot 7.jpg|frameless]]<br />
<br />
== APPENDIX: Character Icons ==<br />
Characters want their portraits too, of course. Their cards are kept in ui/portraits/units/(designated culture) and are quite simpler to make. You follow the Photoshoot method, fix the tone, probably increase luminosity a bit, and bam, done.<br />
<br />
What you really want to work on at this point is that you want to use that faction’s face-to-frame size ratio to make it look better next to the other heroes and lords. For example Empire characters tend to be more zoomed-out, whereas Vampires have a creepier and closer portrait (you can recognize a bloodsucker by their selfies). When you check in-game on the custom battle roster, try to see if your faction’s character cards are all more or less the same zoom and crop. It looks a bit shady when the eyeline on all of them makes a rollercoaster wave.<br />
<br />
Notice that CA has moved on to make more artsy portrait for their LLs in particular. I can’t easily explain how to emulate that style because I don’t have yet a one-size-fits-all pattern.<br />
<br />
Making that stuff actually work in campaign is done [https://steamcommunity.com/sharedfiles/filedetails/?id=1194811468 by following the binning guide].<br />
<br />
== APPENDIX: Unit 2d Portholes ==<br />
Aka Minspec portholes. These are the 2d pictures used in the lower left corner when you disable the framerate-consuming 3d portholes. For units, you’ll find these in '''UI\units\minspec_portholes and are 164×164 PNG''' circular icons. [https://cdn.discordapp.com/attachments/448859190874603520/708658469846384720/minspec_template.psd Use this different template as a base], screenshot your unit so that you can crop an acceptable bust portrait from it and put it in the group. Move it around until it looks alright, and usually only minimal tweaks are necessary like autotune and autocontrast.<br />
<br />
After that, you usually want to cut/mask away the background so that the portrait will be properly superimposed to a smoky background in-game. You can do it via lasso or magic wand and/or brush. Hair parts will always be trickier. Use the solid colour background I put in there as a reference to check for floaty bits, make sure you hide that when you’re done.<br />
<br />
Note: minspec name needs to be the same as the main_unit.<br />
<br />
== APPENDIX: Character 2d Portholes ==<br />
Aka just portholes. Ditto with the previous paragraph, but these are explicitly for your characters. You’ll find these in UI\portraits\portholes\whateverculture and '''in WH2 they are 193×193 PNG''' circular icons, yes, do notice that these are larger than the unit minspecs. [https://cdn.discordapp.com/attachments/448859190874603520/708659416693473381/porthole_template.psd Use this different template as a base]. Same exact procedure otherwise. <br />
<br />
'''In Warhammer3, these 2d portholes are rectangular 300x164''' ([https://cdn.discordapp.com/attachments/731080362758766652/950514953067053066/wh3_porthole_template.psd get this template instead]), made to show up in the agent recruitment pool as well. Sadly, this means that we cannot get away with keeping the screenshot's background anymore, so you have to remove it or mask it away. The good thing is that it's not a third porthole, the bad thing is that we have to redo all the WH2 ones.<br />
<br />
Name the character porthole exactly the same you’ve called the character’s unit card, or the bin settings will not find one of the two. As a general recommendation, just call both the same way you’ve called the character art set, e.g. dude_01, dude_02, LL_dudette, which, unless you hate yourself, will also be how you called the character art set.<br />
<br />
Remember to put the same bin in both folders (compare with vanilla or other mods).<br />
[[Category:Needs Formatting]]</div>Cataphhttps://tw-modding.com/index.php?title=Tutorial:Submodding&diff=547Tutorial:Submodding2022-09-18T20:47:06Z<p>Cataph: no more chaos port</p>
<hr />
<div>=== Originally written by Cataph ===<br />
If you’re a modder, one of the most frequent comments next to romantical proposals (YMMV) will be “SFO/Radious/CTT/Lucky/yomama compatibility when”. Many modders don’t have an interest in making a submod simply because they don’t know and play a given overhaul and wouldn’t know how to balance it anyway.<br />
<br />
So, what if it could be you making that submod? Or maybe you just want to make X mod work better with Y. Be the submodder you want to see in the world!<br />
<br />
A few things first.<br />
<br />
== WHAT IS A SUBMOD? ==<br />
Basically, an optional plugin designed to make mod X work or work better with mod Y, thanks to this mod Z. A user that wants to use X and Y together will download mod Z and keep all three enabled.<br />
<br />
Can a submod be a standalone? Well, yes, but it wouldn’t be a submod then, would it? Besides, it’s normally a dick move to take mod X and fully reupload it with a few differences. Plus, it’s 90% never necessary and we’re going to see why.<br />
<br />
Ok, but can I just edit a mod and keep it to myself? Sure, keep in mind that you should rename the pack into something else to avoid automatic updates to overwrite what you changed.<br />
<br />
== WHY IS A SUBMOD? ==<br />
I need you to focus.<br />
<br />
== HOW IS A SUBMOD? ==<br />
Fine, thank you. About how it’s made, we don’t necessarily need mod X and Y to make sweet love to each other but only you, bloke with a basic knowledge of RPFM and TW modding.<br />
<br />
== WHAT DO? ==<br />
Ok, as a basic example let’s say we want a compatibility submod between the Sea Patrol mod and a fictional 2x unit size mod, so we want to grab whatever lines define unit numbers in the former and multiply those by 2. Daring.<br />
<br />
First thing we open the first mod as a reference, then we create a new pack for the submod. We’ll call it seapatrol_yourname_unitsize.pack. (more on naming later, but sit tight)<br />
<br />
Upon viewing the db of Sea Patrol we see a whole lotta tables.<br />
<br />
Since I am a bloke with basic knowledge of [https://github.com/Frodo45127/rpfm/releases/latest RPFM] and TW modding, I know that unit sizes are in main_units.<br />
<br />
[[File:Submodding 1.jpg|frameless]]<br />
<br />
Thus, in the submod I’ll import said table/s by right click>Add…>Add from Packfile, find the pack, find the table and double click it. Close the add from packfile panel and we’re good to go, we have Sea Patrol’s main_units in our shizzle. We go in there and edit the numbers we want to change, in this case we select any num_men that is not a hero/lord’s, right click, apply math as ''{x}*2'' and done. Done? No, some of those units may be cavalry, so we need to adapt the number of mounts too. We import land_units as well and do the same thing on num_mounts. In the rarer case that there’s a multi-chariot unit, we leave mounts alone and multiply num_engines in land_units.<br />
<br />
== PRIORITY ==<br />
But it’s a submod, and we want to make sure we’re overriding the original mod’s values. No, not with load order on the mod manager, [[Troubleshooting|and incidentally you shouldn't touch that and you should use KMM]].<br />
<br />
We currently have two tables, we select those table fragments (in this case, called “AK_seahelm”) and we rename them to take priority according to this alphanumerical order:<blockquote>! # $ % & ‘ ( ) + , – ; = @ 0-9 a-z [ ] ^ _ ` { } ~ Where “!” wins over “a”.</blockquote>Usually, adding a “!” in front does it. But we also want to make clear what submod this is for. Right click> Rename> type ''!{x}_unitsize'', which will become “!AK_seahelm_unitsize”.<br />
<br />
''Note: DO NOT leave the table names as is, or you’ll crash. DO NOT leave a number as last character or it might glitch and crash anyway.''<br />
<br />
Aaaand, done! Now this submod of only two tables will correctly override unit sizes for a specific mod. Yeah, any non-vanilla key will be red in here, since you don’t define those in your pack, but no worries, it’s a submod that is designed to exist with the mod that actually has those keys.<br />
<br />
In the possible case you need at some point to override parts that don't answer to table priority, like images or variants or whole script files, you might want to name the entire pack with a prefix that wins priority over the original mod. For example, again, “!AK_seahelm_unitsize”. Considering you don't want users to manually change load order, this makes sure that by alphanumerical order you're already overriding the og mod. Notice that you can't change a pack's name after you've uploaded it to the workshop.<br />
<br />
Now, like with any mod we make a PNG icon and upload if we want to share it publicly. If you upload it on the workshop, add mods X and Y as required by clicking on Add/Remove Required Items. This will prompt a user to go and fetch those required mods as well. Most of them will somehow ignore it and crash, but at least you tried.<br />
<br />
== ADDENDUM: ETIQUETTE ==<br />
By most accounts, a clean submod like the above doesn’t really need permission since you’re not stealing anything. However, you should still ask as good courtesy, and it can’t hurt to still let the og author know as they may link it in description, let you know about required changes, etc.<br />
<br />
It’s also good practice not to add donation links to a submod.<br />
<br />
== ADDENDUM: UPDATING ==<br />
It should be your interest and responsibility to stay up-to-date with the original mods as soon as you have time. For example if you’re submodding a unit mod and you see the ‘parent’ mod has updated with balance changes, some key changes or new units, you should definitely hear a couple bells ringing.<br />
<br />
Sometimes the parent mod changes a few keys and then you might even crash until you update.<br />
<br />
== SUBMODDING EXAMPLE: TRANSLATION ==<br />
In most cases, translating a mod is a simple case of grabbing all of that mod's loc files (text db) and following what we've seen so far. So, make sure you only have the parts you need, remove the rest, rename your loc with a prefix that gives them priority. Then, start grinding at the actual translation work in those loc tables.<br />
<br />
There may be some fringe cases where there is text on images or inside scripts. As we mentioned, you might need priority over the whole pack in terms of naming. It also gets trickier changing the text on a picture, and you might want to contact the other fellow if you need to translate a text that is directly embedded in a script. Ask if there's a way to avoid you having to grab the entire script, which is normally a bad idea.<br />
<br />
== ADVANCED SUBMODDING: BALANCE OVERHAULS ==<br />
The submodder should also be the one who is familiar with the overhaul they’re adapting a mod for. If you are at a loss about how to tweak some things, definitely consider asking one of the two original modders (depending on the kind of question) for advice on how to proceed. For example, “this unit is weird and I’m not sure what role it should keep”.<br />
<br />
Can't be much more specific about this because there are so many possible moving parts that you need to change, starting with unit stats to their place on new recruitment buildings. Staying up-to-date is particularly important in this kind of mod.<br />
<br />
== UNIQUE NUMERICAL IDs ==<br />
In some tables, each line has a unique numerical id in front of it (or sometimes way off like in unit_special_abilities). That’s specific for each line, and it works like other important keys like those in land_units or main_units, as in there can only be one line about that key or num id.<br />
<br />
Why am I saying all this? Because if in your submod you happen to need to ''add'' some lines in, for example, building_units_allowed, you’ll need your own unique num ids to make them work proppa. Pick any number below 2 billions and something and make sure they never repeat. This is important, do not continue off the num ids from the mod you’re submodding or you’ll cause issues at some point.<br />
<br />
== ADVANCED SUBMODDING: STICKY TABLES ==<br />
Some tables and related features are slightly more complicated to submod. For example, you want to remove a unit from a certain building level. Easy, go in building_units_allowed again. Remember those unique ids? '''Keep that exactly intact''' (so it still refers to that specific line from the original mod or vanilla line) and change the building to something that has no chance of being available, such as <code>wh2_dlc12_dummy_nuclear_ruins_0</code> or change the unit instead to a unit that is completely unavailble as well for anybody who has access to the given building. You could change both to be sure, but it's more confusing down the line.<br />
<br />
Until WH2, you could have typed random gibberish in the building key to better track your changes (e.g., add "_removed" to building keys), but in WH3 that causes a crash as both fields need to be valid.<br />
<br />
The underlying logic is that you're hijacking a precise data line (due to the unique id, numerical or not) and telling it to do something impossible.<br />
<br />
'''Harder example''': I really don’t want any of these units to have the new-fangled Edgelord Deluxe passive ability, which is added by this mod. Cool, that means I can kill that ability from existence without it ever affecting anything else. We do that by:<br />
<br />
* grabbing its line from unit_abilities, we make it hidden in UI.<br />
* grabbing its line from unit_special_abilities, we make it a passive (boolean). Make sure you remove any activated projectile/bombardment/summon etc from here too.<br />
* grabbing its line in special_ability_to_special_ability_phase_junctions. Change the phase to a new special_ability_phase that we created and that does absolutely nothing. There, done. The ability still exists, but does nothing and is invisible. In my own private jargon this is called a pillow. Again, ''notice that you’re neutering this ability for any unit that happens to get it.''<br />
This currently doesn't really work in WH3 and I really hope they fix that because it's a serious problem.<br />
<br />
'''Even harder example''': I want this unit to not have the Regeneration passive ability. Oooh, that’s a vanilla ability, isn’t it? We can’t just dumpster it. Either we tolerate it or…<br />
<br />
== ADVANCED SUBMODDING: DEPENDENCY MANAGER ==<br />
This is a RPFM feature. ''USE WITH CAUTION'', as it's essentially a data coring method. <br />
<br />
We enable it by right clicking on the packfile itself in tree view (not on a table, not on anything else, literally the very first line in tree view), Open>Open Dependency Manager. We add a line as if it was a table (ctrl+shift+A) and type EXACTLY the pack name of the mod we want to override. As in “AK_seahelm.pack”. From this point onwards, everything we do in the submod under identical paths will completely override content from the parent mod no matter the load or table order for stuff with the same name. Example, I can import a table, not change its name and completely delete its content. This would normally crash, but not with DepManager. <br />
<br />
I said use this with caution because if you do this you REALLY need to stay up-to-date with the og mod. For example, you can remove the line that gives unit A the Regen passive, and it will work. However, any further update from the parent mod in that table won’t take place unless you also mirror it. Again, this is normally not remotely required and you should steer clear of it because it’s just as bad as leaving a vanilla table called “data__”.<br />
<br />
Additionally, '''this will auto-enable the linked mod''' as soon as it’s in data/ as if it was a movie pack. As such, you don’t want to do this unless you’re doing a submod that already requires that linked mod. Because having stuff popping up even when you’ve disabled a mod is the worst.<br />
<br />
== ADVANCED SUBMODDING: BACKGROUND TABLES ==<br />
Let's say we aren't doing a submod whose only purpose is changing unit size for that other mod, but it's our own standalone mod A and we're doing some compatibility stuff to make it work better with B, without needing a separate submod C that requires both. '''For example, we want something from B in A, ''if B is also enabled''. Sometimes we can do that without C'''. <br />
<br />
Let's say I add some new units in A, and mod B adds fancy officers to all units. Officers are connected to the unit in db/land_units, but if we just pasted B's officer key in there, A would go boom if B is not enabled. We don't want that, and we may not want to force people to use B. So we paste that officer key there, replacing A_blank_record, but we also check what table that key relies on by hovering on its top (title, header, whatever), which is... db/land_units_officers. Without it, that officer key is going to go boom, [[Tolerant Tables|because it's not a tolerant key]], at all, to the point that even a non-existant officer needs an actual key called A_blank_record, which does exist. <br />
<br />
What we do is create land_units_officers, add that officer key under key, keep personality location as front or rear (honestly don't know if that crashes if left blank, don't care), but we leave the officer 1 etc columns empty. '''IMPORTANT: we rename this table fragment with something like zzzzz_mod_a_mod_b'''. Notice the zeds? Keep those in mind.<br />
<br />
So, what is this doing? It's telling the unit that it's going to use that officer group, but it's got nothing in it, no ''actual'' officers (battle_personalities). By using our mod A without B, the game finds an empty box for this officer, shrugs, and doesn't replace unit models with any officer personality. The game moves on without crashing, because that key exists. Basically, we created another blank record, but this very specific one gets filled in when B is enabled. <br />
<br />
Remember those zeds? They are there so that our blank record gets overridden by B's table (which we assume has a higher alphabetical priority than a bunch of zeds, unless B's author is not trying hard enough). Keep in mind that if B's author ever changes those officer keys you won't crash, but you'll still need to adapt because your blank record would stay blank.<br />
<br />
<br />
This can be done in a bunch of situations, but you'll need some specific knowledge of how specific contexts work. You could want to use this method to nerf some effects from mod B, in which case you might need more than one background table (the zzzzz boys), including db/effects, which by itself does absolutely nothing, but using an effect key that doesn't exist in there will go kaboom.<br />
<br />
== ADVANCED SUBMODDING: SCRIPTS ==<br />
Uhh, sorry, not my field, but you can certainly do stuff. Either a scripty fella writes this or you have to ask in Discord about the specific case you’re facing.</div>Cataphhttps://tw-modding.com/index.php?title=Tutorial:Updating_textures_to_WH3&diff=546Tutorial:Updating textures to WH32022-09-18T16:24:47Z<p>Cataph: added method from blue to orange normal</p>
<hr />
<div>== Intro: WH3 is very metal, but also rough ==<br />
This is more or less a temporary page in wait for better methods. I'm not a specialist in this field, like a graphic or something, but I speak as I find of stuff I banged my head on. That said, let's get to it. <br />
<br />
You have textures that you made or edited for WH2 and now you want them to WH3. Thing is, they won't, because WH3 moved to a metalroughness method instead of the old glosspecular. <br />
<br />
What does this mean in practice? Good question, especially because I don't know the theory.<br />
<br />
* The '''diffuse''' texture is replaced by the '''base colour'''. They both carry the colours, except that the base colour dds also incorporates the old specular, that is to say metallic surfaces that were mostly black in diffuse are now... metal.<br />
* '''Material map''' is a texture that replaces what specular and gloss did. It's a green/orange map with no alpha that actually carries the metalroughness we talked about. Orange is reflective metal, green is rough and not reflective.<br />
* Normal maps unchanged, masks unchanged. <br />
<br />
For the most usual reskins, we now have to worry about one fewer texture. Great, but how do we convert?<br />
<br />
== Automatically via Asset Editor ==<br />
[https://github.com/donkeyProgramming/TheAssetEditor/releases/latest Asset Editor] by Ole includes a plug-in made by Phazer that can convert WH2 textures into WH3 for you. However, at the time of writing (September '22), this yields a high-gamma result, which is to say, quite a bit brighter than it should be. Incidentally, the button also works to force-fetch existing textures in case Assed can't initially load them for some reason. <br />
<br />
You can use this function, and then tweak the base colour as needed, or you can do it manually as follows.<br />
<br />
== Diffuse into Base Colour ==<br />
This one is pretty easy. Grab your PSD or whatever layer-preserving file (you have those, right?) and merge diffuse and speculars from WH2 into one texture that has the metal surfaces from the latter. That's it. Unless you have particular metallic surfaces like rust, which will likely need some tinkering to get good results. <br />
<br />
If you only added some small details to diffuse or specular, paste them over the new base colour. '''Save with Photoshop or Paint.net as DX10+ sRGB'''. As far as I know, GIMP can't handle it, some people work there and then save in Paint.net. Remember the alpha if you need it, and the mipmaps. <br />
<br />
One small detail is that while autoconverting textures for WH3, base colours seem to have lost quite a bit of details in some cases. You might want to keep better-detailed surfaces from the WH2 diffuse, who also won't have the red mite infestation CA's process glitched on us.<br />
<br />
== Gloss and Specular into Material Map ==<br />
Things get a lil bit funkier here.<br />
<br />
If you had small edits to carry on for better details, paste them on a new material map for that vanilla asset you're editing, and apply that layer as... honestly, whatever method works best for that case, you'll have to tinker. Overlay or Soft Light maybe.<br />
<br />
If you have more complex cases, there is a super manual process I found that works pretty accurately.<br />
[[File:2022-02-22 205452.jpg|alt=material map mock-up|right|frameless|1000x1000px]]<br />
'''You start with the WH2 gloss you had lying around.''' For this mock-up I did at the time, I experimented with the gloss for dwarf warrior torsos and tried to get a result as close as possible as the one they actually have in WH3.<br />
<br />
The layers in the bottom right have titles that explain what they do. The only one I forgot to properly label is the orange fill (r255 g180), which is a ''Hard Light'' method. They're all at 100% opacity.<br />
<br />
I have no idea how this all translates to GIMP or Paint.net, to be honest, you'll have to adapt.<br />
<br />
The trick is using the inverted (ctrl+i) gloss as base for both colour settings, and masking out (for the green) and in (for the orange) the parts that they need to affect. This selection part is the annoying bit, especially when you have many metal parts around the place. It gets a bit easier if you combine this with selecting areas from the old specular, or whatever works for you to isolate what you need. It's also easy if you have a texture with like one big chestpiece that is the only metal part. Anyway, try to work smarter when you can. <br />
<br />
Again, this method is overkill if all you did was adding one small detail, in which case paste it on an existing mat map. Or if you only recoloured something in the diffuse, in which case you don't need to worry about metalness at all.<br />
<br />
'''Save mat maps as BC1 with no alpha.'''<br />
<br />
<br />
<br />
<br />
== Useful Links ==<br />
You can learn more about metalroughness with this video: https://youtu.be/mrNMpqdNchY<br />
<br />
MATERIALIZE free software can be generally useful, especially if you're making new normal maps https://www.youtube.com/watch?v=vtnJToPxBNo<br />
<br />
It's a bit off-topic, but since we're talking about '''normal maps''', here's a procedure to get the orange-hue normals used by TW. Feed the base colour texture into Materialize, from there create the Height Map, and from that the Normal. Settings are a crap shoot as far as I'm concerned, I just wing it. When you're satisfied of the texture's bumpiness, save the blueish normal. Then grab that and put it in PS or editor of choice and do this:<br />
<br />
* Go into the Channel tab, select the entire '''red''' channel and paste it into an '''alpha''' channel.<br />
* Paint the '''red''' channel completely white.<br />
* Paint the '''blue''' channel completely black.<br />
<br />
Tadaaa, you got a viable normal map. More or less.<br />
<br />
== Updating Models ==<br />
Of course it doesn't end with updating textures, does it? Even if the conversion itself was easy, you need to make sure the model works fine too.<br />
<br />
The '''rigid model''' needs to be saved again through Assed if it was last saved there during WH2. Anyway, you can use Assed to regenerate the correct paths. You can get rid of the texture paths you won't be using, from diffuse to specular.<br />
<br />
One word of warning about rigid models is that they tend to have a glitchy uniform mask if they have areas painted as blue in their mask dds. You can recognise this in-game if they start having full-black metal parts. That's the tertiary uniform colour acting up. To avoid it, generate a wsmodel with Assed, and use that instead.<br />
<br />
Also, a lot of paths may have been changed. For example, the chaos dwarf crew folder was renamed, so those textures wouldn't be found. You'll have to grind those errors down.<br />
<br />
Now, for the annoying part. WH2 wsmodels, those won't work anymore. Not one. My suggestion is to start from scratch. Generate those with Assed when you can, and then tweak xml materials manually when you need special shaders or different texture paths. I don't really recommend doing it the stubborn way, fixing xml materials one by one, because it's very prone to error and frustration. Besides, if you had any kind of emissive or ethereal glow, those need to be redone [https://cdn.discordapp.com/attachments/373754902608084994/949297150293069864/2022-03-04_142746.jpg because this is what a WH2 weapon emissive looks like in WH3.] The colour will be wrong and the glow's power will scorch your cornea. <br />
<br />
That said, if you compare xml materials from wh2 to 3: <br />
<br />
* only one blood map;<br />
* in most cases, the slot name for textures is a version 2 (just do it, you don't want to have problems out of stubborness);<br />
* you ''need'' to have slots for base colour and mat map. You can remove the old stuff like spec and gloss;<br />
* not having a texture slot for the mask also tends to cause glitches, like the wsmodel fetching nearby mask textures in weird places;<br />
* a boolean parameter for applying blood;<br />
* in many cases, the actual paths to textures were changed (e.g. chaos dwarf artillery crew folder renamed);<br />
<br />
== Updating the variantmeshdefinition ==<br />
Hereby VMD as usual.<br />
<br />
VMDs weren't changed much, but '''you need to add a is_stump metadata to all gore stumps in your VMDs. All of them.''' Otherwise they'll show up before the guy is cut up. Just copy the metadata from a vanilla VMD and start copy pasting. I recommend replacing the pre-existing <code><META_DATA>equipment</META_DATA></code> with both <code><META_DATA>equipment</META_DATA><META_DATA>is_stump</META_DATA></code>, so you don't have to do it too manually. You do have to do it VMD by VMD.<br />
<br />
You can, however, get rid of any imposter definition in your VMDs. CA seems to have done so and who am I to say no to a chance of making the VMD more readable?<br />
<br />
== ''Fin'' ==<br />
That's pretty much it. It can be a bunch of work and it's a good chance to rethink and restart from scratch with new methods and ideas, instead of wasting time updating old stuff. While I work through updating my stuff, it certainly was an excellent reason to get rid of textures that were five years old. <br />
<br />
If you're sure you want to keep as much of your old content as possible, there are no two ways around it, it's gonna be a slog one way or another. Take it easy and don't burn yourself out.</div>Cataphhttps://tw-modding.com/index.php?title=Tutorial:Updating_textures_to_WH3&diff=545Tutorial:Updating textures to WH32022-09-18T16:16:34Z<p>Cataph: /* Diffuse into Base Colour */</p>
<hr />
<div>== Intro: WH3 is very metal, but also rough ==<br />
This is more or less a temporary page in wait for better methods. I'm not a specialist in this field, like a graphic or something, but I speak as I find of stuff I banged my head on. That said, let's get to it. <br />
<br />
You have textures that you made or edited for WH2 and now you want them to WH3. Thing is, they won't, because WH3 moved to a metalroughness method instead of the old glosspecular. <br />
<br />
What does this mean in practice? Good question, especially because I don't know the theory.<br />
<br />
* The '''diffuse''' texture is replaced by the '''base colour'''. They both carry the colours, except that the base colour dds also incorporates the old specular, that is to say metallic surfaces that were mostly black in diffuse are now... metal.<br />
* '''Material map''' is a texture that replaces what specular and gloss did. It's a green/orange map with no alpha that actually carries the metalroughness we talked about. Orange is reflective metal, green is rough and not reflective.<br />
* Normal maps unchanged, masks unchanged. <br />
<br />
For the most usual reskins, we now have to worry about one fewer texture. Great, but how do we convert?<br />
<br />
== Automatically via Asset Editor ==<br />
[https://github.com/donkeyProgramming/TheAssetEditor/releases/latest Asset Editor] by Ole includes a plug-in made by Phazer that can convert WH2 textures into WH3 for you. However, at the time of writing (September '22), this yields a high-gamma result, which is to say, quite a bit brighter than it should be. Incidentally, the button also works to force-fetch existing textures in case Assed can't initially load them for some reason. <br />
<br />
You can use this function, and then tweak the base colour as needed, or you can do it manually as follows.<br />
<br />
== Diffuse into Base Colour ==<br />
This one is pretty easy. Grab your PSD or whatever layer-preserving file (you have those, right?) and merge diffuse and speculars from WH2 into one texture that has the metal surfaces from the latter. That's it. Unless you have particular metallic surfaces like rust, which will likely need some tinkering to get good results. <br />
<br />
If you only added some small details to diffuse or specular, paste them over the new base colour. '''Save with Photoshop or Paint.net as DX10+ sRGB'''. As far as I know, GIMP can't handle it, some people work there and then save in Paint.net. Remember the alpha if you need it, and the mipmaps. <br />
<br />
One small detail is that while autoconverting textures for WH3, base colours seem to have lost quite a bit of details in some cases. You might want to keep better-detailed surfaces from the WH2 diffuse, who also won't have the red mite infestation CA's process glitched on us.<br />
<br />
== Gloss and Specular into Material Map ==<br />
Things get a lil bit funkier here.<br />
<br />
If you had small edits to carry on for better details, paste them on a new material map for that vanilla asset you're editing, and apply that layer as... honestly, whatever method works best for that case, you'll have to tinker. Overlay or Soft Light maybe.<br />
<br />
If you have more complex cases, there is a super manual process I found that works pretty accurately.<br />
[[File:2022-02-22 205452.jpg|alt=material map mock-up|right|frameless|1000x1000px]]<br />
'''You start with the WH2 gloss you had lying around.''' For this mock-up I did at the time, I experimented with the gloss for dwarf warrior torsos and tried to get a result as close as possible as the one they actually have in WH3.<br />
<br />
The layers in the bottom right have titles that explain what they do. The only one I forgot to properly label is the orange fill (r255 g180), which is a ''Hard Light'' method. They're all at 100% opacity.<br />
<br />
I have no idea how this all translates to GIMP or Paint.net, to be honest, you'll have to adapt.<br />
<br />
The trick is using the inverted (ctrl+i) gloss as base for both colour settings, and masking out (for the green) and in (for the orange) the parts that they need to affect. This selection part is the annoying bit, especially when you have many metal parts around the place. It gets a bit easier if you combine this with selecting areas from the old specular, or whatever works for you to isolate what you need. It's also easy if you have a texture with like one big chestpiece that is the only metal part. Anyway, try to work smarter when you can. <br />
<br />
Again, this method is overkill if all you did was adding one small detail, in which case paste it on an existing mat map. Or if you only recoloured something in the diffuse, in which case you don't need to worry about metalness at all.<br />
<br />
'''Save mat maps as BC1 with no alpha.'''<br />
<br />
<br />
<br />
<br />
== Useful Links ==<br />
You can learn more about metalroughness with this video: https://youtu.be/mrNMpqdNchY<br />
<br />
MATERIALIZE free software can be generally useful, especially if you're making new normal maps https://www.youtube.com/watch?v=vtnJToPxBNo<br />
<br />
== Updating Models ==<br />
Of course it doesn't end with updating textures, does it? Even if the conversion itself was easy, you need to make sure the model works fine too.<br />
<br />
The '''rigid model''' needs to be saved again through Assed if it was last saved there during WH2. Anyway, you can use Assed to regenerate the correct paths. You can get rid of the texture paths you won't be using, from diffuse to specular.<br />
<br />
One word of warning about rigid models is that they tend to have a glitchy uniform mask if they have areas painted as blue in their mask dds. You can recognise this in-game if they start having full-black metal parts. That's the tertiary uniform colour acting up. To avoid it, generate a wsmodel with Assed, and use that instead.<br />
<br />
Also, a lot of paths may have been changed. For example, the chaos dwarf crew folder was renamed, so those textures wouldn't be found. You'll have to grind those errors down.<br />
<br />
Now, for the annoying part. WH2 wsmodels, those won't work anymore. Not one. My suggestion is to start from scratch. Generate those with Assed when you can, and then tweak xml materials manually when you need special shaders or different texture paths. I don't really recommend doing it the stubborn way, fixing xml materials one by one, because it's very prone to error and frustration. Besides, if you had any kind of emissive or ethereal glow, those need to be redone [https://cdn.discordapp.com/attachments/373754902608084994/949297150293069864/2022-03-04_142746.jpg because this is what a WH2 weapon emissive looks like in WH3.] The colour will be wrong and the glow's power will scorch your cornea. <br />
<br />
That said, if you compare xml materials from wh2 to 3: <br />
<br />
* only one blood map;<br />
* in most cases, the slot name for textures is a version 2 (just do it, you don't want to have problems out of stubborness);<br />
* you ''need'' to have slots for base colour and mat map. You can remove the old stuff like spec and gloss;<br />
* not having a texture slot for the mask also tends to cause glitches, like the wsmodel fetching nearby mask textures in weird places;<br />
* a boolean parameter for applying blood;<br />
* in many cases, the actual paths to textures were changed (e.g. chaos dwarf artillery crew folder renamed);<br />
<br />
== Updating the variantmeshdefinition ==<br />
Hereby VMD as usual.<br />
<br />
VMDs weren't changed much, but '''you need to add a is_stump metadata to all gore stumps in your VMDs. All of them.''' Otherwise they'll show up before the guy is cut up. Just copy the metadata from a vanilla VMD and start copy pasting. I recommend replacing the pre-existing <code><META_DATA>equipment</META_DATA></code> with both <code><META_DATA>equipment</META_DATA><META_DATA>is_stump</META_DATA></code>, so you don't have to do it too manually. You do have to do it VMD by VMD.<br />
<br />
You can, however, get rid of any imposter definition in your VMDs. CA seems to have done so and who am I to say no to a chance of making the VMD more readable?<br />
<br />
== ''Fin'' ==<br />
That's pretty much it. It can be a bunch of work and it's a good chance to rethink and restart from scratch with new methods and ideas, instead of wasting time updating old stuff. While I work through updating my stuff, it certainly was an excellent reason to get rid of textures that were five years old. <br />
<br />
If you're sure you want to keep as much of your old content as possible, there are no two ways around it, it's gonna be a slog one way or another. Take it easy and don't burn yourself out.</div>Cataphhttps://tw-modding.com/index.php?title=Tutorial:Updating_textures_to_WH3&diff=543Tutorial:Updating textures to WH32022-09-07T17:48:00Z<p>Cataph: /* Gloss and Specular into Material Map */</p>
<hr />
<div>== Intro: WH3 is very metal, but also rough ==<br />
This is more or less a temporary page in wait for better methods. I'm not a specialist in this field, like a graphic or something, but I speak as I find of stuff I banged my head on. That said, let's get to it. <br />
<br />
You have textures that you made or edited for WH2 and now you want them to WH3. Thing is, they won't, because WH3 moved to a metalroughness method instead of the old glosspecular. <br />
<br />
What does this mean in practice? Good question, especially because I don't know the theory.<br />
<br />
* The '''diffuse''' texture is replaced by the '''base colour'''. They both carry the colours, except that the base colour dds also incorporates the old specular, that is to say metallic surfaces that were mostly black in diffuse are now... metal.<br />
* '''Material map''' is a texture that replaces what specular and gloss did. It's a green/orange map with no alpha that actually carries the metalroughness we talked about. Orange is reflective metal, green is rough and not reflective.<br />
* Normal maps unchanged, masks unchanged. <br />
<br />
For the most usual reskins, we now have to worry about one fewer texture. Great, but how do we convert?<br />
<br />
== Automatically via Asset Editor ==<br />
[https://github.com/donkeyProgramming/TheAssetEditor/releases/latest Asset Editor] by Ole includes a plug-in made by Phazer that can convert WH2 textures into WH3 for you. However, at the time of writing (September '22), this yields a high-gamma result, which is to say, quite a bit brighter than it should be. Incidentally, the button also works to force-fetch existing textures in case Assed can't initially load them for some reason. <br />
<br />
You can use this function, and then tweak the base colour as needed, or you can do it manually as follows.<br />
<br />
== Diffuse into Base Colour ==<br />
This one is pretty easy. Grab your PSD or whatever layer-preserving file (you have those, right?) and merge diffuse and speculars from WH2 into one texture that has the metal surfaces from the latter. That's it. <br />
<br />
If you only added some small details to diffuse or specular, paste them over the new base colour. '''Save with Photoshop or Paint.net as DX10+ sRGB'''. As far as I know, GIMP can't handle it, some people work there and then save in Paint.net. Remember the alpha if you need it, and the mipmaps. <br />
<br />
One small detail is that while autoconverting textures for WH3, base colours seem to have lost quite a bit of details in some cases. You might want to keep better-detailed surfaces from the WH2 diffuse, who also won't have the red mite infestation CA's process glitched on us.<br />
<br />
== Gloss and Specular into Material Map ==<br />
Things get a lil bit funkier here.<br />
<br />
If you had small edits to carry on for better details, paste them on a new material map for that vanilla asset you're editing, and apply that layer as... honestly, whatever method works best for that case, you'll have to tinker. Overlay or Soft Light maybe.<br />
<br />
If you have more complex cases, there is a super manual process I found that works pretty accurately.<br />
[[File:2022-02-22 205452.jpg|alt=material map mock-up|right|frameless|1000x1000px]]<br />
'''You start with the WH2 gloss you had lying around.''' For this mock-up I did at the time, I experimented with the gloss for dwarf warrior torsos and tried to get a result as close as possible as the one they actually have in WH3.<br />
<br />
The layers in the bottom right have titles that explain what they do. The only one I forgot to properly label is the orange fill (r255 g180), which is a ''Hard Light'' method. They're all at 100% opacity.<br />
<br />
I have no idea how this all translates to GIMP or Paint.net, to be honest, you'll have to adapt.<br />
<br />
The trick is using the inverted (ctrl+i) gloss as base for both colour settings, and masking out (for the green) and in (for the orange) the parts that they need to affect. This selection part is the annoying bit, especially when you have many metal parts around the place. It gets a bit easier if you combine this with selecting areas from the old specular, or whatever works for you to isolate what you need. It's also easy if you have a texture with like one big chestpiece that is the only metal part. Anyway, try to work smarter when you can. <br />
<br />
Again, this method is overkill if all you did was adding one small detail, in which case paste it on an existing mat map. Or if you only recoloured something in the diffuse, in which case you don't need to worry about metalness at all.<br />
<br />
'''Save mat maps as BC1 with no alpha.'''<br />
<br />
<br />
<br />
<br />
== Useful Links ==<br />
You can learn more about metalroughness with this video: https://youtu.be/mrNMpqdNchY<br />
<br />
MATERIALIZE free software can be generally useful, especially if you're making new normal maps https://www.youtube.com/watch?v=vtnJToPxBNo<br />
<br />
== Updating Models ==<br />
Of course it doesn't end with updating textures, does it? Even if the conversion itself was easy, you need to make sure the model works fine too.<br />
<br />
The '''rigid model''' needs to be saved again through Assed if it was last saved there during WH2. Anyway, you can use Assed to regenerate the correct paths. You can get rid of the texture paths you won't be using, from diffuse to specular.<br />
<br />
One word of warning about rigid models is that they tend to have a glitchy uniform mask if they have areas painted as blue in their mask dds. You can recognise this in-game if they start having full-black metal parts. That's the tertiary uniform colour acting up. To avoid it, generate a wsmodel with Assed, and use that instead.<br />
<br />
Also, a lot of paths may have been changed. For example, the chaos dwarf crew folder was renamed, so those textures wouldn't be found. You'll have to grind those errors down.<br />
<br />
Now, for the annoying part. WH2 wsmodels, those won't work anymore. Not one. My suggestion is to start from scratch. Generate those with Assed when you can, and then tweak xml materials manually when you need special shaders or different texture paths. I don't really recommend doing it the stubborn way, fixing xml materials one by one, because it's very prone to error and frustration. Besides, if you had any kind of emissive or ethereal glow, those need to be redone [https://cdn.discordapp.com/attachments/373754902608084994/949297150293069864/2022-03-04_142746.jpg because this is what a WH2 weapon emissive looks like in WH3.] The colour will be wrong and the glow's power will scorch your cornea. <br />
<br />
That said, if you compare xml materials from wh2 to 3: <br />
<br />
* only one blood map;<br />
* in most cases, the slot name for textures is a version 2 (just do it, you don't want to have problems out of stubborness);<br />
* you ''need'' to have slots for base colour and mat map. You can remove the old stuff like spec and gloss;<br />
* not having a texture slot for the mask also tends to cause glitches, like the wsmodel fetching nearby mask textures in weird places;<br />
* a boolean parameter for applying blood;<br />
* in many cases, the actual paths to textures were changed (e.g. chaos dwarf artillery crew folder renamed);<br />
<br />
== Updating the variantmeshdefinition ==<br />
Hereby VMD as usual.<br />
<br />
VMDs weren't changed much, but '''you need to add a is_stump metadata to all gore stumps in your VMDs. All of them.''' Otherwise they'll show up before the guy is cut up. Just copy the metadata from a vanilla VMD and start copy pasting. I recommend replacing the pre-existing <code><META_DATA>equipment</META_DATA></code> with both <code><META_DATA>equipment</META_DATA><META_DATA>is_stump</META_DATA></code>, so you don't have to do it too manually. You do have to do it VMD by VMD.<br />
<br />
You can, however, get rid of any imposter definition in your VMDs. CA seems to have done so and who am I to say no to a chance of making the VMD more readable?<br />
<br />
== ''Fin'' ==<br />
That's pretty much it. It can be a bunch of work and it's a good chance to rethink and restart from scratch with new methods and ideas, instead of wasting time updating old stuff. While I work through updating my stuff, it certainly was an excellent reason to get rid of textures that were five years old. <br />
<br />
If you're sure you want to keep as much of your old content as possible, there are no two ways around it, it's gonna be a slog one way or another. Take it easy and don't burn yourself out.</div>Cataphhttps://tw-modding.com/index.php?title=Tutorial:Updating_textures_to_WH3&diff=542Tutorial:Updating textures to WH32022-09-07T17:44:58Z<p>Cataph: /* Updating Models */</p>
<hr />
<div>== Intro: WH3 is very metal, but also rough ==<br />
This is more or less a temporary page in wait for better methods. I'm not a specialist in this field, like a graphic or something, but I speak as I find of stuff I banged my head on. That said, let's get to it. <br />
<br />
You have textures that you made or edited for WH2 and now you want them to WH3. Thing is, they won't, because WH3 moved to a metalroughness method instead of the old glosspecular. <br />
<br />
What does this mean in practice? Good question, especially because I don't know the theory.<br />
<br />
* The '''diffuse''' texture is replaced by the '''base colour'''. They both carry the colours, except that the base colour dds also incorporates the old specular, that is to say metallic surfaces that were mostly black in diffuse are now... metal.<br />
* '''Material map''' is a texture that replaces what specular and gloss did. It's a green/orange map with no alpha that actually carries the metalroughness we talked about. Orange is reflective metal, green is rough and not reflective.<br />
* Normal maps unchanged, masks unchanged. <br />
<br />
For the most usual reskins, we now have to worry about one fewer texture. Great, but how do we convert?<br />
<br />
== Automatically via Asset Editor ==<br />
[https://github.com/donkeyProgramming/TheAssetEditor/releases/latest Asset Editor] by Ole includes a plug-in made by Phazer that can convert WH2 textures into WH3 for you. However, at the time of writing (September '22), this yields a high-gamma result, which is to say, quite a bit brighter than it should be. Incidentally, the button also works to force-fetch existing textures in case Assed can't initially load them for some reason. <br />
<br />
You can use this function, and then tweak the base colour as needed, or you can do it manually as follows.<br />
<br />
== Diffuse into Base Colour ==<br />
This one is pretty easy. Grab your PSD or whatever layer-preserving file (you have those, right?) and merge diffuse and speculars from WH2 into one texture that has the metal surfaces from the latter. That's it. <br />
<br />
If you only added some small details to diffuse or specular, paste them over the new base colour. '''Save with Photoshop or Paint.net as DX10+ sRGB'''. As far as I know, GIMP can't handle it, some people work there and then save in Paint.net. Remember the alpha if you need it, and the mipmaps. <br />
<br />
One small detail is that while autoconverting textures for WH3, base colours seem to have lost quite a bit of details in some cases. You might want to keep better-detailed surfaces from the WH2 diffuse, who also won't have the red mite infestation CA's process glitched on us.<br />
<br />
== Gloss and Specular into Material Map ==<br />
Things get a lil bit funkier here.<br />
<br />
If you had small edits to carry on for better details, paste them on a new material map for that vanilla asset you're editing, and apply that layer as... honestly, whatever method works best for that case, you'll have to tinker. Overlay or Soft Light maybe.<br />
<br />
If you have more complex cases, there is a super manual process I found that works pretty accurately.<br />
[[File:2022-02-22 205452.jpg|alt=material map mock-up|right|frameless|1000x1000px]]<br />
'''You start with the WH2 gloss you had lying around.''' For this mock-up I did at the time, I experimented with the gloss for dwarf warrior torsos and tried to get a result as close as possible as the one they actually have in WH3.<br />
<br />
The layers in the bottom right have titles that explain what they do. The only one I forgot to properly label is the orange fill (r255 g180), which is a ''Hard Light'' method. They're all at 100% opacity.<br />
<br />
I have no idea how this all translates to GIMP or Paint.net, to be honest, you'll have to adapt.<br />
<br />
The trick is using the inverted (ctrl+i) gloss as base for both colour settings, and masking out (for the green) and in (for the orange) the parts that they need to affect. This selection part is the annoying bit, especially when you have many metal parts around the place. It gets a bit easier if you combine this by selecting areas from the old specular or whatever works for you to isolate what you need. It's also easy if you have a texture with like one big chestpiece that is the only metal part. <br />
<br />
Again, this method is overkill if all you did was adding one small detail, in which case paste it on an existing mat map. Or if you only recoloured something in the diffuse, in which case you don't need to worry about metalness at all.<br />
<br />
<br />
<br />
== Useful Links ==<br />
You can learn more about metalroughness with this video: https://youtu.be/mrNMpqdNchY<br />
<br />
MATERIALIZE free software can be generally useful, especially if you're making new normal maps https://www.youtube.com/watch?v=vtnJToPxBNo<br />
<br />
== Updating Models ==<br />
Of course it doesn't end with updating textures, does it? Even if the conversion itself was easy, you need to make sure the model works fine too.<br />
<br />
The '''rigid model''' needs to be saved again through Assed if it was last saved there during WH2. Anyway, you can use Assed to regenerate the correct paths. You can get rid of the texture paths you won't be using, from diffuse to specular.<br />
<br />
One word of warning about rigid models is that they tend to have a glitchy uniform mask if they have areas painted as blue in their mask dds. You can recognise this in-game if they start having full-black metal parts. That's the tertiary uniform colour acting up. To avoid it, generate a wsmodel with Assed, and use that instead.<br />
<br />
Also, a lot of paths may have been changed. For example, the chaos dwarf crew folder was renamed, so those textures wouldn't be found. You'll have to grind those errors down.<br />
<br />
Now, for the annoying part. WH2 wsmodels, those won't work anymore. Not one. My suggestion is to start from scratch. Generate those with Assed when you can, and then tweak xml materials manually when you need special shaders or different texture paths. I don't really recommend doing it the stubborn way, fixing xml materials one by one, because it's very prone to error and frustration. Besides, if you had any kind of emissive or ethereal glow, those need to be redone [https://cdn.discordapp.com/attachments/373754902608084994/949297150293069864/2022-03-04_142746.jpg because this is what a WH2 weapon emissive looks like in WH3.] The colour will be wrong and the glow's power will scorch your cornea. <br />
<br />
That said, if you compare xml materials from wh2 to 3: <br />
<br />
* only one blood map;<br />
* in most cases, the slot name for textures is a version 2 (just do it, you don't want to have problems out of stubborness);<br />
* you ''need'' to have slots for base colour and mat map. You can remove the old stuff like spec and gloss;<br />
* not having a texture slot for the mask also tends to cause glitches, like the wsmodel fetching nearby mask textures in weird places;<br />
* a boolean parameter for applying blood;<br />
* in many cases, the actual paths to textures were changed (e.g. chaos dwarf artillery crew folder renamed);<br />
<br />
== Updating the variantmeshdefinition ==<br />
Hereby VMD as usual.<br />
<br />
VMDs weren't changed much, but '''you need to add a is_stump metadata to all gore stumps in your VMDs. All of them.''' Otherwise they'll show up before the guy is cut up. Just copy the metadata from a vanilla VMD and start copy pasting. I recommend replacing the pre-existing <code><META_DATA>equipment</META_DATA></code> with both <code><META_DATA>equipment</META_DATA><META_DATA>is_stump</META_DATA></code>, so you don't have to do it too manually. You do have to do it VMD by VMD.<br />
<br />
You can, however, get rid of any imposter definition in your VMDs. CA seems to have done so and who am I to say no to a chance of making the VMD more readable?<br />
<br />
== ''Fin'' ==<br />
That's pretty much it. It can be a bunch of work and it's a good chance to rethink and restart from scratch with new methods and ideas, instead of wasting time updating old stuff. <br />
<br />
If you're sure you want to keep as much of your old content as possible, there are no two ways around it, it's gonna be a slog one way or another. Take it easy and don't burn yourself out.</div>Cataphhttps://tw-modding.com/index.php?title=Tutorial:Updating_textures_to_WH3&diff=541Tutorial:Updating textures to WH32022-09-07T17:38:00Z<p>Cataph: new texture update tutorial</p>
<hr />
<div>== Intro: WH3 is very metal, but also rough ==<br />
This is more or less a temporary page in wait for better methods. I'm not a specialist in this field, like a graphic or something, but I speak as I find of stuff I banged my head on. That said, let's get to it. <br />
<br />
You have textures that you made or edited for WH2 and now you want them to WH3. Thing is, they won't, because WH3 moved to a metalroughness method instead of the old glosspecular. <br />
<br />
What does this mean in practice? Good question, especially because I don't know the theory.<br />
<br />
* The '''diffuse''' texture is replaced by the '''base colour'''. They both carry the colours, except that the base colour dds also incorporates the old specular, that is to say metallic surfaces that were mostly black in diffuse are now... metal.<br />
* '''Material map''' is a texture that replaces what specular and gloss did. It's a green/orange map with no alpha that actually carries the metalroughness we talked about. Orange is reflective metal, green is rough and not reflective.<br />
* Normal maps unchanged, masks unchanged. <br />
<br />
For the most usual reskins, we now have to worry about one fewer texture. Great, but how do we convert?<br />
<br />
== Automatically via Asset Editor ==<br />
[https://github.com/donkeyProgramming/TheAssetEditor/releases/latest Asset Editor] by Ole includes a plug-in made by Phazer that can convert WH2 textures into WH3 for you. However, at the time of writing (September '22), this yields a high-gamma result, which is to say, quite a bit brighter than it should be. Incidentally, the button also works to force-fetch existing textures in case Assed can't initially load them for some reason. <br />
<br />
You can use this function, and then tweak the base colour as needed, or you can do it manually as follows.<br />
<br />
== Diffuse into Base Colour ==<br />
This one is pretty easy. Grab your PSD or whatever layer-preserving file (you have those, right?) and merge diffuse and speculars from WH2 into one texture that has the metal surfaces from the latter. That's it. <br />
<br />
If you only added some small details to diffuse or specular, paste them over the new base colour. '''Save with Photoshop or Paint.net as DX10+ sRGB'''. As far as I know, GIMP can't handle it, some people work there and then save in Paint.net. Remember the alpha if you need it, and the mipmaps. <br />
<br />
One small detail is that while autoconverting textures for WH3, base colours seem to have lost quite a bit of details in some cases. You might want to keep better-detailed surfaces from the WH2 diffuse, who also won't have the red mite infestation CA's process glitched on us.<br />
<br />
== Gloss and Specular into Material Map ==<br />
Things get a lil bit funkier here.<br />
<br />
If you had small edits to carry on for better details, paste them on a new material map for that vanilla asset you're editing, and apply that layer as... honestly, whatever method works best for that case, you'll have to tinker. Overlay or Soft Light maybe.<br />
<br />
If you have more complex cases, there is a super manual process I found that works pretty accurately.<br />
[[File:2022-02-22 205452.jpg|alt=material map mock-up|right|frameless|1000x1000px]]<br />
'''You start with the WH2 gloss you had lying around.''' For this mock-up I did at the time, I experimented with the gloss for dwarf warrior torsos and tried to get a result as close as possible as the one they actually have in WH3.<br />
<br />
The layers in the bottom right have titles that explain what they do. The only one I forgot to properly label is the orange fill (r255 g180), which is a ''Hard Light'' method. They're all at 100% opacity.<br />
<br />
I have no idea how this all translates to GIMP or Paint.net, to be honest, you'll have to adapt.<br />
<br />
The trick is using the inverted (ctrl+i) gloss as base for both colour settings, and masking out (for the green) and in (for the orange) the parts that they need to affect. This selection part is the annoying bit, especially when you have many metal parts around the place. It gets a bit easier if you combine this by selecting areas from the old specular or whatever works for you to isolate what you need. It's also easy if you have a texture with like one big chestpiece that is the only metal part. <br />
<br />
Again, this method is overkill if all you did was adding one small detail, in which case paste it on an existing mat map. Or if you only recoloured something in the diffuse, in which case you don't need to worry about metalness at all.<br />
<br />
<br />
<br />
== Useful Links ==<br />
You can learn more about metalroughness with this video: https://youtu.be/mrNMpqdNchY<br />
<br />
MATERIALIZE free software can be generally useful, especially if you're making new normal maps https://www.youtube.com/watch?v=vtnJToPxBNo<br />
<br />
== Updating Models ==<br />
Of course it doesn't end with updating textures, does it? Even if the conversion itself was easy, you need to make sure the model works fine too.<br />
<br />
The '''rigid model''' needs to be saved again through Assed if it was last saved there during WH2. Anyway, you can use Assed to regenerate the correct paths. You can get rid of the texture paths you won't be using, from diffuse to specular.<br />
<br />
One word of warning about rigid models is that they tend to have a glitchy uniform mask if they have areas painted as blue in their mask dds. You can recognise this in-game if they start having full-black metal parts. That's the tertiary uniform colour acting up. To avoid it, generate a wsmodel with Assed, and use that instead.<br />
<br />
Also, a lot of paths may have been changed. For example, the chaos dwarf crew folder was renamed, so those textures wouldn't be found. You'll have to grind those errors down.<br />
<br />
Now, for the annoying part. WH2 wsmodels, those won't work anymore. Not one. My suggestion is to start from scratch. Generate those with Assed when you can, and then tweak xml materials manually when you need special shaders or different texture paths. I don't really recommend doing it the stubborn way, fixing xml materials one by one, because it's very prone to error and frustration. Besides, if you had any kind of emissive or ethereal glow, those need to be redone [https://cdn.discordapp.com/attachments/373754902608084994/949297150293069864/2022-03-04_142746.jpg because this is what a WH2 weapon emissive looks like in WH3.] The colour will be wrong and the glow's power will scorch your cornea. <br />
<br />
That said, if you compare xml materials from wh2 to 3: - <br />
<br />
* only one blood map;<br />
* in most cases, the slot name for textures is a version 2 (just do it, you don't want to have problems out of stubborness);<br />
* you ''need'' to have slots for base colour and mat map. You can remove the old stuff like spec and gloss;<br />
* not having a texture slot for the mask also tends to cause glitches, like the wsmodel fetching nearby mask textures in weird places;<br />
* a boolean parameter for applying blood;<br />
* in many cases, the actual paths to textures were changed (e.g. chaos dwarf artillery crew folder renamed);<br />
<br />
== Updating the variantmeshdefinition ==<br />
Hereby VMD as usual.<br />
<br />
VMDs weren't changed much, but '''you need to add a is_stump metadata to all gore stumps in your VMDs. All of them.''' Otherwise they'll show up before the guy is cut up. Just copy the metadata from a vanilla VMD and start copy pasting. I recommend replacing the pre-existing <code><META_DATA>equipment</META_DATA></code> with both <code><META_DATA>equipment</META_DATA><META_DATA>is_stump</META_DATA></code>, so you don't have to do it too manually. You do have to do it VMD by VMD.<br />
<br />
You can, however, get rid of any imposter definition in your VMDs. CA seems to have done so and who am I to say no to a chance of making the VMD more readable?<br />
<br />
== ''Fin'' ==<br />
That's pretty much it. It can be a bunch of work and it's a good chance to rethink and restart from scratch with new methods and ideas, instead of wasting time updating old stuff.</div>Cataphhttps://tw-modding.com/index.php?title=File:2022-02-22_205452.jpg&diff=540File:2022-02-22 205452.jpg2022-09-07T17:10:14Z<p>Cataph: </p>
<hr />
<div>material map mock-up</div>Cataphhttps://tw-modding.com/index.php?title=Tutorial:Unit_Card_Guide&diff=535Tutorial:Unit Card Guide2022-08-31T20:24:48Z<p>Cataph: /* Guide to the Photoshoot */</p>
<hr />
<div><br />
== Why ==<br />
Hello, my name is Cataph and I am a cardoholic.<br />
<br />
I heard you made a new unit in TWWarhammer and you need a new flashy unit card. Simple. No, it ain’t. Unit cards are probably the unit’s component you will be staring at for the majority of the time, even more than the actual variant. Get it wrong and it can be an eyesore for the entire campaign and battle.<br />
<br />
A good unit card will:<br />
<br />
* blend in with other vanilla pieces<br />
* show the unit’s appearance<br />
* display, possibly, its character and gear and role<br />
<br />
== What ==<br />
But first things first. A unit card is a 60×130 PNG. Don’t make it larger than that or it will automatically be compressed in-game and lose more quality than if you did it yourself. Its location is ui/units/icons, and it’s a good idea to open the data.pack and extract that folder for future reference. Its name needs to be the same in the card column in the <code>unit_variants</code> table.<br />
<br />
In units/info you may find a version with a larger “shredded frame”, this is however only used in loading screens, so ignore that unless you need those for promo or stuff like that. Of course, if you ''do'' need one, start with that larger size and halve the size later for the actual unit card, or it will look like something you don’t want to look at.<br />
<br />
== How ==<br />
You can use stuff like GIMP or Photoshop to assemble a unit card. Personally I use the latter so I will use its lingo, and I’ll have to assume you already know how to play around with it a bit. Specifically, you’ll want to know how to use layers and possibly adjustment levels. If you don’t, it’s fine, there are a lot of basic guides on the interwebs, and even if you skip some of the speshul effects I may end up using you’ll still get a better result than just plopping a screenshot in there.<br />
<br />
Admittedly, during the transition between Rome2’s and Warhammer’s art style I made truly ''horrendous'' cards myself, but with time I noticed things and developed some tricks. Keep patience.<br />
<br />
Most CA cards are similar to existing GW artwork, but are still made by a proper artist. I am certainly not one, but you’ll want to respect these factors:<br />
<br />
* Positioning of the portrayed unit: not too zoomed in, not too far away; varies with races too. E.g., notice how Empire cards tend to have a western knee-cut, Dwarfs a full body.<br />
* Lighting: CA cards are generally good luminosity, low contrast but with drawn highlights. This is important, you don’t want your card to be a confused blob.<br />
<br />
Before we get to the chase, [https://cdn.discordapp.com/attachments/731080362758766652/748925752115855530/template.psd get this template]! Always periodically test with the card frame on top, I used to get immensely pissed off when important details of my card got hidden by the UI. You will never see the entire card in the game, especially on ranged units due to the additional ammo bar. Remember to hide the frame again when you’re done. It’s a PSD file, but should work just fine in GIMP too.<br />
<br />
== The Three Jedi Ways ==<br />
[please don’t use the sampled pictures without permission]<br />
<br />
* '''THE ARTWORK'''. You grab a ''legal''* and beautiful artwork around, and tweak it until it fits and shines. Usually the quickest method, but it requires a good sample. Example below, for my Skullreapers, [https://vignette.wikia.nocookie.net/warhammerfb/images/7/76/BORKIL.jpg/revision/latest?cb=20130829160001 based on this artwork]. [[File:CTT_chs_kh_berz_framed.png|alt=|center|frameless]]'''THE MONTAGE'''. ''Even Rocky had a montage.'' You grab parts from existing CA cards and glue them together. This may look simple but it’s actually an excellent way to get god-awful cards, because each bloke in a card may have its size, positioning and lighting, and mixing them may not work like you’d think. You don’t want your card to look like the portrait of the Frankenstein’s Monster, or too samey with the neighbouring unit. Also, [https://i.imgur.com/l8Qgqwv.png avoid recycling the same base too many times in the same roster or you’ll get this effect]. Working examples: below for my Estalian Lancers, or [https://cdn.discordapp.com/attachments/374122686034477057/452435403610259457/berserker_champion.png this infopic by not-a-spoon].[[File:Unit_card_est_cav.png|alt=|center|frameless]]<br />
<br />
* '''THE PHOTOSHOOT'''. You take things in your hands and start taking screenshots of the unit in-game. This can be a lengthy process, especially for cavalry and ranged units, but can be quite satisfying and produce a faithful portrait of the unit. It’s my favourite and most used method, and the one I’m going to describe. This is also where Positioning and Lighting really come to play.<br />
<br />
<nowiki>*</nowiki> Remember that you can’t use non-WHFB stuff and if fan-art, you want to check/ask permission.<br />
<br />
== Guide to the Photoshoot ==<br />
First off you need to take a good screenshot in which the unit comes with a good pose, possibly no animation glitches and clipping. As said, you need something that will fit in a 60×130, so some photography experience may come in handy.<br />
<br />
Here are two examples that can give you an idea of how to crop and photoshop a battle screenshot and what the final result can potentially look like.<br />
<br />
[[File:Unit card photoshoot 1.jpg|frameless]]<br />
<br />
[[File:Unit card photoshoot 2.jpg|frameless]]<br />
<br />
These two blokes are Estalian reskins for Swordsmen and Spearmen. As you can see, the pose needs to fit in a quite longilineal frame, so not all stances will work and also why cavalry is more difficult. You want to show at least part of the body and weaponry. If they have a shield, avoid it occupying too much of the card.<br />
<br />
If you want to have an idea, while in-game, of whether something can fit in a card, put thumb and index of both hands in an L shape, indexes pointing up and thumbs completely overlapping with one another. This will make a |_| shaped frame for you that has similar proportions to the card. Now point it at the screen like a weird photographer, possibly while someone else can see and think you're a weirdo. <br />
[[File:Unit card photoshoot 3.png|none|thumb|Cavalry cropping is particularly annoying. You want enough horse but not too much, and enough rider that is not hidden by the beastie’s massive neck: '''pro tip, temporarily put mount size at 0.95.''' (I later photoshopped the lance to be more visible)]]<br />
''Protip! Use a better camera mod and the >N< key high-detail camera for better screenshots.''<br />
<br />
Usually you will want a decent lighting, so no early dawn or cloudy battles. You can still make those work but it’s harder. <br />
<br />
For these guys I wanted a sunny look instead of the gloomy Empire cards, so I edited the sky background. Consider using this [https://steamcommunity.com/sharedfiles/filedetails/?id=2516720224 Sunny Weather] mod.<br />
<br />
The beginning may be as simple as auto-tuning Luminosity and/or Tone to remove weird tints. Afterwards you want to reduce contrast (by a lot, even up to 100!) and probably still increase luminosity (otherwise they are likely going to look quite bleak in-game). Test in custom battle selection until it’s not a grey blob anymore.<br />
<br />
Then comes the holistic and complicated part.<br />
<br />
'''Protagonism''': the bloke must be instantly distinguishable from the background. Selecting them with lasso/magic wand and making them a separate layer is always a good idea. Afterwards you’ll probably further lighten or darken the background stuff. Blurring also works but I usually don’t like it, as it can look too fake. Giving it a ''minimalist'' oil paint touch can also help.<br />
<br />
'''Background''': when you have extra time and experience in your hands, you may want to add smoke, happy clouds, grim clouds, that sort of thing, behind the protagonist’s layer. Screenshots can often produce rather flat backgrounds and that can be off-putting. For example, grab a nice sky from another screenshot or even a random photo, resize and apply it with a layer mask that excludes the protagonist and probably the ground they’re standing on. Then tweak at will for opacity, blending and even tone. CA backgrounds are often some unnatural colour.<br />
<br />
'''Contours''': this is the secret recipe and why we lowered contrast. We said CA cards are artworks, and they have visible dark contours to highlight parts. So we start drawing them (1-2 pixel width) with medium hardness brush or pencil in black and white in a new layer. Usually it looks good when it’s set as Soft Light, probably between 60 and 100% opacity, tweak at will. Contours can make a huge difference between a flat icon and one that can blend in with vanilla ones. Examples (Swashbucklers from TEB and Teutogen Guard) without and with contour:<br />
[[File:Unit card photoshoot 4.png|none|thumb|The left one has a painted sky and super-imposed fire layers, you don’t want to bother with that sort of stuff at first.]]<br />
The cards were already heavily-engineered, but you can still notice an improvement. For example, here’s what the Swashie’s contour layer looks like on a background and at 100% opacity:<br />
<br />
[[File:Unit card photoshoot 5.png|frameless]]<br />
<br />
<br />
However, I’m actually gradually moving towards thicker contours, with one layer at size-2 brush and another up to 4 for the thickest shadows and bright surfaces.<br />
[[File:Dwf huskarls framed.png|none|thumb]]<br />
<br />
One further example (Lothern Sea Rangers):<br />
[[File:Unit card photoshoot 6.png|none|thumb|1, almost unedited;2, added two levels of fog in front and two behind at varying Normal opacity;3, added tight brush contours and a sword glint for rule of cool.]]<br />
In any case, you will still check how the card looks in custom battle roster selection (where it’s the smallest) and in the following screens. Sometimes it will suck so hard that it’s back to the drawing board, but that’s ok. Another thing that you should look at in-game is whether the lighting is ok or if the picture gets burned tfo when the unit is selected.<br />
<br />
You read through here so here’s a prize: my first and terrible unit card for WH1, versus the same unit in WH2:<br />
<br />
[[File:Unit card photoshoot 7.jpg|frameless]]<br />
<br />
== APPENDIX: Character Icons ==<br />
Characters want their portraits too, of course. Their cards are kept in ui/portraits/units/(designated culture) and are quite simpler to make. You follow the Photoshoot method, fix the tone, probably increase luminosity a bit, and bam, done.<br />
<br />
What you really want to work on at this point is that you want to use that faction’s face-to-frame size ratio to make it look better next to the other heroes and lords. For example Empire characters tend to be more zoomed-out, whereas Vampires have a creepier and closer portrait (you can recognize a bloodsucker by their selfies). When you check in-game on the custom battle roster, try to see if your faction’s character cards are all more or less the same zoom and crop. It looks a bit shady when the eyeline on all of them makes a rollercoaster wave.<br />
<br />
Notice that CA has moved on to make more artsy portrait for their LLs in particular. I can’t easily explain how to emulate that style because I don’t have yet a one-size-fits-all pattern.<br />
<br />
Making that stuff actually work in campaign is done [https://steamcommunity.com/sharedfiles/filedetails/?id=1194811468 by following the binning guide].<br />
<br />
== APPENDIX: Unit 2d Portholes ==<br />
Aka Minspec portholes. These are the 2d pictures used in the lower left corner when you disable the framerate-consuming 3d portholes. For units, you’ll find these in UI\units\minspec_portholes and are 164×164 PNG circular icons. [https://cdn.discordapp.com/attachments/448859190874603520/708658469846384720/minspec_template.psd Use this different template as a base], screenshot your unit so that you can crop an acceptable bust portrait from it and put it in the group. Move it around until it looks alright, and usually only minimal tweaks are necessary like autotune and autocontrast.<br />
<br />
After that, you usually want to cut/mask away the background so that the portrait will be properly superimposed to a smoky background in-game. You can do it via lasso or magic wand and/or brush. Hair parts will always be trickier. Use the solid colour background I put in there as a reference to check for floaty bits, make sure you hide that when you’re done.<br />
<br />
Note: minspec name needs to be the same as the main_unit.<br />
<br />
== APPENDIX: Character 2d Portholes ==<br />
Aka just portholes. Ditto with the previous paragraph, but these are explicitly for your characters. You’ll find these in UI\portraits\portholes\whateverculture and in WH2 they are 193×193 PNG circular icons, yes, do notice that these are larger than the unit minspecs. [https://cdn.discordapp.com/attachments/448859190874603520/708659416693473381/porthole_template.psd Use this different template as a base]. Same exact procedure otherwise. <br />
<br />
In Warhammer3, these 2d portholes are 300x164 ([https://cdn.discordapp.com/attachments/731080362758766652/950514953067053066/wh3_porthole_template.psd get this template instead]), made to show up in the agent recruitment pool as well. Sadly, this means that we cannot get away with keeping the screenshot's background anymore, so you have to remove it or mask it away. The good thing is that it's not a third porthole, the bad thing is that we likely have to redo all the WH2 ones.<br />
<br />
Name the character porthole exactly the same you’ve called the character’s unit card, or the bin settings will not find one of the two. As a general recommendation, just call both the same way you’ve called the character art set, e.g. dude_01, dude_02, LL_dudette, which, unless you hate yourself, will also be how you called the character art set.<br />
<br />
Remember to put the same bin in both folders (compare with vanilla or other mods).<br />
[[Category:Needs Formatting]]</div>Cataphhttps://tw-modding.com/index.php?title=Troubleshooting&diff=534Troubleshooting2022-08-28T12:51:45Z<p>Cataph: /* Managing Mods */</p>
<hr />
<div>This is a troubleshooting guide for mod users in TW: Warhammer 2 and now 3. The generic pointers should be valid for all recent TW games.<br />
<br />
– Your neighbourhood Cataph<br />
<br />
<blockquote><br />
<br />
<br />
'''!!!'''<br />
<br />
'''WARHAMMER 3 PRELIMINARY HIGHLIGHT (will update and merge better later on)'''<br />
<br />
* [https://discord.com/channels/373745291289034763/650269940393443328/960904987523809340 Remove any movie pack from the pre-workshop interim period.] <br />
* Delete any user script you may have tried using if you were a masochist.<br />
* Delete the <code>-dx11</code> override you may have put on Steam (game>properties>launch options in the lower right must be empty). <br />
* Don't launch the game from the taskbar or from the exe, as it won't load mods; use the Play button or steam shortcut, or even RPFM's launch.<br />
* Go to <code>%appdata%\The Creative Assembly\Launcher</code> and delete <code>moddata.dat</code>. In case the launcher got stuck.<br />
* Since Steam is doodoo, data may get corrupted. Unsubscribe, and wait for the mod to be removed. If it needs to be manually removed, go to <code>steamapps\workshop\content\1142710\</code>xyz where xyz is the mod id on its url. Then redownload and wait.<br />
* Verify game cache.<br />
<br />
'''!!!'''</blockquote><br />
<br />
== Managing Mods ==<br />
So, you have subscribed to mods on the workshop. You now open CA’s current mod manager (hereby called George) and – blimey, they don’t work or something’s not right.<br />
<br />
First thing to keep in mind, if you have issues with George you should definitely report them to CA so that they know what they should look at.<br />
<br />
That said, you can just use the [https://github.com/Kaedrin/warhammer-mod-manager community mod manager] (normally called KMM). Long story short, George is unwieldy and has grown responsible for a lot of issues of its own, becoming hated by modders and users alike. Among other things, KMM is more reliable and provides mod profiles.<blockquote>'''''For WH3 as of August''': KMM is still not updated, [https://steamcommunity.com/sharedfiles/filedetails/?id=2845454582 but PJ made another perfectly-working community mod manager (read for the actual link).] Good practices still apply, but all issues/notes about KMM copying items to data/ don't apply because it doesn't. Will update the guide better as things evolve.''</blockquote><br />
<br />
==== How to Load Order ====<br />
KMM and even George have a function to manually change how mods are loaded, which is an old habit of a lot of other modding communities, so you’d be tempted to change load order manually, right?<br />
<br />
'''''WRONG.'''''<br />
<br />
Ok, I’ll spare some time for this before we get into the actually useful tips, because this is one of the nastiest tropes around the community. The truth is that compatibility-minded modders already handle load order on their own as far as possible. Manually changing load order may do absolutely nothing, shift the problem somewhere else or break everything.<br />
<br />
Some context. There are six main possible categories of folders in a mod pack and this is how they handle load order, either through actual pack name or table name:<br />
<br />
* '''Db''': table name.<br />
* '''Scripts''': pack name.<br />
* '''Startpos''' (the big bad): pack name.<br />
* '''Text''': table name.<br />
* '''UI''': pack name.<br />
* '''Variants''': pack name.<br />
<br />
And that is if the modder doesn’t redirect content (e.g., telling database to use a different ui icon). KMM can only affect pack name order, so there are things like balance submods (Db overrides) that are still completely in the hands of the modders and intentionally so.<br />
<br />
In other words, there are only two possible cases in which you may want to alter load order manually: UI and variants, basically if you want to use specific reskin B.pack in the midst of larger reskin A.pack, in which case you push B on top.<br />
<br />
''In conclusion, you want to follow KMM’s instructions, give Steam time to download/remove mods and mostly keep load order in an alphabetical fashion (e.g. order by name and save profile), especially after adding new mods.''<br />
<br />
Which, incidentally, is this:<br />
<br />
! # $ % & ‘ ( ) + , – ; = @ 0-9 a-z [ ] ^ _ ` { } ~<br />
<br />
Where “!” wins over “a”.<br />
<br />
== Common Troubleshooting ==<br />
In an efficient mod, at least half of the reported issues are down to user error or what is technically called launcher f***-up. We’re going to try and cut that amount down for the greater good.<br />
<br />
==== User good practices: ====<br />
<br />
# Read the mod description. Seriously, this alone would prevent 80% of comments on Steam pages. Even if a description looks long, do it, it’s there for a reason. Some mods will also have FAQs or a list of known issues, incompatibilities and instructions. Read the comments before yours too if you have to post one. There’s an excellent chance the question you’re going to ask is already answered in in descriptions, FAQs and recent comments.<br />
# Don’t ignore the required items. The mod may show you a popup upon subscribing, disregarding that is almost always cue for disaster. This popup is ''not'' shown when subbing from a Steam collection (thanks Gaben), so actually check the mod’s page.<br />
# Keep the mod list in alphanumerical order. We’ve been over that already. If you have new mods that have popped at the tail of the list, just click again on the <code>File Name</code> column in KMM and save your profile.<br />
# Troubleshoot yourself! The thing is, we don’t have time to help everybody, and in most cases the problem is local. We’ll get to best practices on this, don’t worry.<br />
# Upon commenting about an issue, provide context. Ok, you did everything right but that ugly bug is still there. That’s fine. The worst thing you could do at this point is comment “mod doesn’t work” because that means absolutely nothing. Modders aren’t telepaths. Steam comments aren’t the best place for this, so use a discussion or the discord server/channel lurked by that given modder.<br />
#* Context: when and how the thing happened. E.g. during the interturn after X’s turn, or clicking this button, whether it was Vortex/ME/multiplayer, custom battle or campaign battle.<br />
#* Mod list: Link a collection or a screenshot to the KMM list. For example, the big thing is not being naif enough that the overhaul in your list can’t affect other mods. For some reason, sometimes it feels like pulling teeth to know what else is there.<br />
#* Screenshot: always helps for clarity and visual context.<br />
#* Save game: if requested, you can find your save game in (example) C:\Users\%USER%\AppData\Roaming\The Creative Assembly\Warhammer2\save_games. Remember the mod list, because the modder may not be able to load without it.<br />
#* Results of your own troubleshooting: for example it’s good to know it happens with that one mod only. Relatedly, if you posted about an issue and later find the cause, let us know.<br />
# Don't assume your mod lists is working just because it's not crashing. A crash is only the most visible of symptoms, it's like assuming a coal miner is perfectly fine just because they haven't dropped dead yet. You may have all kinds of issues in your 400-mods list ranging from fucked models to script breaks. Did I mention don't use 400 mods? Yeah, probably don't.<br />
<br />
''This list is of course not meant to insult anybody’s intelligence, but you’d be surprised at how many issues and massive wastes of time are due to neglect of these simple rules. Following them is in the user’s interest in order to find a solution sooner, and it will allow the modder more time for improvement rather than wasted in unnecessary bug-hunts.''<br />
<br />
<br />
'''Frequent Steam issues:'''<br />
# Corrupted and botched download: this is relatively frequent and it causes 'random' crashes with mods that ''don't'' otherwise crash. Delete locally and redownload until it works. If using KMM, use the unsub+delete option, and resub.<br />
# Mod not updated: Steam may also not fetch the latest version of a random TW mod. At the merest issue, always double check the local file's last date and that of the mod on the workshop (on the top right, Last Updated).<br />
<br />
==== Common launcher/game issues: ====<br />
<br />
# Failed to download/remove mod. This happens relatively often and if in doubt you should always check in the mod download folder (example: Z:\Steamsteamapps\workshop\content\594570\??????) whether that mod was successfully downloaded/removed. Open George/Steam again until it is. The final folder id is the same as the one on the mod’s Steam url and you can sort by date for the most recently poked folder.<br />
#* More on this if using KMM: Kaedrin’s manager copies packs from that content/ to the game’s data/ folder. Moreover, when mods update you will likely need to refresh/restart KMM.<br />
# Ghost mods. Definitely spooky. You have toggled off that mod, but somehow it turns out it was still being loaded and crashing your game. Or a mod updates and self-enables. Using KMM seems enough to prevent this kind of poltergeist.<br />
# Random crashes: sometimes stuff just breaks and you have to verify your game’s cache: Steam Library>right click on game>Properties>Local Files>Verify yadda yadda. Or check with the game’s support.<br />
# Failure to enable mods or borked load order: sometimes George simply won’t fire what you want, or you’ve accidentally touched load order and now it won’t revert. Use KMM.<br />
# Soft cap: as of King’s Shilling update, this is completely fixed and the cap is indefinite. You can stop merging stuff or believing conspiracies about CA intentionally capping mods.<br />
<br />
==== Some specific KMM issues: ====<br />
<br />
# Doesn’t work: KMM can be installed anywhere, BUT in the game’s stuff. Don’t install in data/ or anywhere close. Hell, plop it in the desktop.<br />
# Doesn’t work cause I’m pirating the game: KMM can smell piracy. Buy the game.<br />
# KMM freezes on start: reboot it.<br />
# Game crashes on load: if you get that or suddenly crash for no good reason, just refresh/restart KMM first thing. If it persists, time to actually troubleshoot. KMM doesn’t often suffer of corrupted downloads but it may theoretically still happen.<br />
# Movie packs: still crashing? Even with no packs enabled at all? Ok, keep in mind that once they are in the data/ folder, movie packs will always be enabled no matter if you’ve toggled them on or not. KMM shows if a mod is a conventional pack file or movie pack (Type column), and it will tell you on the lower right how many movie packs you’re currently running. To effectively disable a movie pack, use the right click option <code>Unsubscribe (Steam) and Delete</code>. This should get rid of that mod in one go, instead of doing a mix of things that will probably still cause KMM to copy the pack again. Movie packs are mostly used for vfx, but sometimes also come with data baggage that you don’t always want around. Modders: you ''really'' want to only have harmless vfx in the movie pack, not db and scripts.<br />
<br />
== APPENDIX: Trimming the Mod List ==<br />
Again, there is virtually no such thing as a soft cap in WH2 anymore. So it’s up to you to keep your mod list functional, and if you have more than 100 mods enabled, risks and maintenance time will increase for you. Making that work is up to how careful you are, and even if a mod list doesn’t produce an instant crash you can’t be sure there aren’t less visible issues, e.g. script breaks.<br />
<br />
As a rule of thumb, don’t be cocky with your list of 250 mods because it’s all fun and games until everything works perfectly (and with those numbers chances are it doesn’t already, you just can’t see it), at which point there’s a lot of stuff to check.<br />
<br />
If you’re not experienced yet (and don’t assume you are just because you played Skyrim, this is different), use the mod list of someone that has very carefully been curating it, and check that it looks ok with the help of the modders themselves. For example, start by a modder’s own collection on Steam, they often have one.<br />
<br />
=== Finding the culprit ===<br />
The usual problem with large mod lists is this: bad, I got a crash; worse, which one of the N mods I have is the culprit?<br />
<br />
==== Generic pointers: ====<br />
<br />
* Pure Text, Variant and UI mods can basically NEVER crash the game for the user. If they do, it’s a botched download.<br />
* Momentarily sort by date either on KMM to find the most recent updates, if you didn’t add additional mods those ''may'' be responsible.<br />
* If you had the issue during a campaign, do not remove mods that have custom items, units or buildings because you’re just going to crash harder if those are around in the campaign map.<br />
* As mentioned above, watch out for movie packs. If you’re inexplicably crashing even with no mods on, you might have a movie pack with crashy data in it.<br />
<br />
==== Bisect and Conquer: ====<br />
Especially when dealing with big mod lists, the quickest method is to enable half of it. If you crash, that’s the troublesome half. Halven again to tighten the noose.<br />
<br />
Keep in mind mod requirements while you do this.<br />
<br />
If you want to check on a particular mod, disable everything and load the bare minimum to make that mod work, in other words mod+whatever required mods that comes with. And up from there, adding one or small groups of mods at a time until you can reproduce the issue.<br />
<br />
It’s patient work but the modder will appreciate it, and it takes less than panicking for hours in a comment section. Assume that a modder won’t troubleshoot your mod list of 150 packs because you say it’s their mod doing it, unless they have proof because you tested without anything else plus requirements.<br />
<br />
Remember: a happy modder is a happy user.<br />
<br />
== APPENDIX: Scripts ==<br />
Scripts are being increasingly used by mods. While most scripters are getting smarter by the day to maintain compatibility, some require a framework or some mods will just struggle to work when there are too many mods around.<br />
<br />
You may encounter symptoms of broken scripts, due to botched downloads, bad compatibility or just plain unforeseen issues because we can just mess stuff up sometimes. Script glitches tend to be quite tricky to root out.<br />
<br />
A few examples of broken scripts:<br />
<br />
* Starting lords that should be custom are not custom, or don’t spawn, or don’t have the correct army or settlement.<br />
* Sword of Khaine button is unchained right off.<br />
* Chaos and all Rogue armies may spawn immediately.<br />
* Campaign camera on a fresh campaign starts zoomed-out and doesn’t pan in.<br />
* Chivalry starts at 0.<br />
* One of the worst, characters do not gain XP (this may sometimes happen in full vanilla too, requires repair).<br />
<br />
==== Scropt broken, what do? ====<br />
In some cases, it’s just a botched download (see Launcher error 3). Otherwise it gets trickier and requires you to start trimming the mod list to find the culprit. When/if you report the issue to modders, remember to provide as much info as humanly possible because finding a script break can turn ugly and complicated.<br />
<br />
Particularly useful to help with scripting issues: please enable [https://steamcommunity.com/sharedfiles/filedetails/?id=1271877744 this debugger], reproduce the bug and send the resulting log, which will be a lenghty txt generated in ''Steam\steamapps\common\Total War WARHAMMER II''. Specific scripty mods may come with additional instructions in their mod descriptions/faqs.<br />
<br />
Do not keep the script logger there unless you need it, since it will noticeably slow down your game.<br />
<br />
One of the most frequent issues at the moment is a performance-related clog-up at the start of a campaign. This basically means that too many scripts are trying to fit into that time frame to do their stuff (legendary lords, changing armies, this kinda stuff) and results in some of them not working. This is where size of the mod list, in regards to any mod with a first-tick script, becomes serious.<br />
<br />
Quick note about Communiy Modding Framework: an obsolete scripting system, it’s basically only used by Crynsos’s unlocker at this point in time (september 2020) and will cause issues more often than not when enabled and not required.<br />
<br />
''Basically disable it unless you’re using CFU''.<br />
<br />
I repeat, it often breaks stuff. When in doubt, shoot it in the face.<br />
<br />
== APPENDIX: [https://steamcommunity.com/sharedfiles/filedetails/?id=1354363596 UI Modding Framework] ==<br />
This framework is technically not required to do UI modding at all, but it may be used as a framework by some scripty mods. Unless it happens to have broken functions after a patch, there are zero reasons not to have it around just in case one of your mods is actually using it or starts doing it.<br />
<br />
== APPENDIX: [https://steamcommunity.com/sharedfiles/filedetails/?id=1354363596 Mod Configuration Tool] ==<br />
This other framework is used to provide settings for compatible mods, i.e. to tweak some details at your heart’s content. Usually a good thing to keep it around because there’s quite a few mods supporting it, or that may do it in the future. For example, you may use it to configure some scripts to fire in a performance mode to reduce impact on campaign start.<br />
== APPENDIX: WH3, crashing on clicking Skirmish ==<br />
The most likely cause for this right now is that you saved a character (that new fancy function in WH3 to play campaign characters into skirmishes) but it was originated or affected by a mod that you have since then removed. Kaboom.<br />
<br />
Go in <code>C:\Users\user\AppData\Roaming\The Creative Assembly\Warhammer3\saved_characters</code> (or search %appdata% in windows search, then continue to those folders) and delete them.</div>Cataphhttps://tw-modding.com/index.php?title=Troubleshooting&diff=533Troubleshooting2022-08-28T09:15:53Z<p>Cataph: /* User good practices: */</p>
<hr />
<div>This is a troubleshooting guide for mod users in TW: Warhammer 2 and now 3. The generic pointers should be valid for all recent TW games.<br />
<br />
– Your neighbourhood Cataph<br />
<br />
<blockquote><br />
<br />
<br />
'''!!!'''<br />
<br />
'''WARHAMMER 3 PRELIMINARY HIGHLIGHT (will update and merge better later on)'''<br />
<br />
* [https://discord.com/channels/373745291289034763/650269940393443328/960904987523809340 Remove any movie pack from the pre-workshop interim period.] <br />
* Delete any user script you may have tried using if you were a masochist.<br />
* Delete the <code>-dx11</code> override you may have put on Steam (game>properties>launch options in the lower right must be empty). <br />
* Don't launch the game from the taskbar or from the exe, as it won't load mods; use the Play button or steam shortcut, or even RPFM's launch.<br />
* Go to <code>%appdata%\The Creative Assembly\Launcher</code> and delete <code>moddata.dat</code>. In case the launcher got stuck.<br />
* Since Steam is doodoo, data may get corrupted. Unsubscribe, and wait for the mod to be removed. If it needs to be manually removed, go to <code>steamapps\workshop\content\1142710\</code>xyz where xyz is the mod id on its url. Then redownload and wait.<br />
* Verify game cache.<br />
<br />
'''!!!'''</blockquote><br />
<br />
== Managing Mods ==<br />
So, you have subscribed to mods on the workshop. You now open CA’s current mod manager (hereby called George) and – blimey, they don’t work or something’s not right.<br />
<br />
First thing to keep in mind, if you have issues with George you should definitely report them to CA so that they know what they should look at.<br />
<br />
That said, you can just use the [https://github.com/Kaedrin/warhammer-mod-manager community mod manager] (normally called KMM). Long story short, George is unwieldy and has grown responsible for a lot of issues of its own, becoming hated by modders and users alike. Among other things, KMM is more reliable and provides mod profiles.<blockquote>'''''For WH3 as of August''': KMM is still not updated, [https://github.com/Shazbot/WH3-Mod-Manager/releases/latest but PJ made another perfectly-working community mod manager.] Good practices still apply, but all issues/notes about KMM copying items to data/ don't apply because it doesn't. Will update the guide better as things evolve.''</blockquote><br />
<br />
==== How to Load Order ====<br />
KMM and even George have a function to manually change how mods are loaded, which is an old habit of a lot of other modding communities, so you’d be tempted to change load order manually, right?<br />
<br />
'''''WRONG.'''''<br />
<br />
Ok, I’ll spare some time for this before we get into the actually useful tips, because this is one of the nastiest tropes around the community. The truth is that compatibility-minded modders already handle load order on their own as far as possible. Manually changing load order may do absolutely nothing, shift the problem somewhere else or break everything.<br />
<br />
Some context. There are six main possible categories of folders in a mod pack and this is how they handle load order, either through actual pack name or table name:<br />
<br />
* '''Db''': table name.<br />
* '''Scripts''': pack name.<br />
* '''Startpos''' (the big bad): pack name.<br />
* '''Text''': table name.<br />
* '''UI''': pack name.<br />
* '''Variants''': pack name.<br />
<br />
And that is if the modder doesn’t redirect content (e.g., telling database to use a different ui icon). KMM can only affect pack name order, so there are things like balance submods (Db overrides) that are still completely in the hands of the modders and intentionally so.<br />
<br />
In other words, there are only two possible cases in which you may want to alter load order manually: UI and variants, basically if you want to use specific reskin B.pack in the midst of larger reskin A.pack, in which case you push B on top.<br />
<br />
''In conclusion, you want to follow KMM’s instructions, give Steam time to download/remove mods and mostly keep load order in an alphabetical fashion (e.g. order by name and save profile), especially after adding new mods.''<br />
<br />
Which, incidentally, is this:<br />
<br />
! # $ % & ‘ ( ) + , – ; = @ 0-9 a-z [ ] ^ _ ` { } ~<br />
<br />
Where “!” wins over “a”.<br />
<br />
== Common Troubleshooting ==<br />
In an efficient mod, at least half of the reported issues are down to user error or what is technically called launcher f***-up. We’re going to try and cut that amount down for the greater good.<br />
<br />
==== User good practices: ====<br />
<br />
# Read the mod description. Seriously, this alone would prevent 80% of comments on Steam pages. Even if a description looks long, do it, it’s there for a reason. Some mods will also have FAQs or a list of known issues, incompatibilities and instructions. Read the comments before yours too if you have to post one. There’s an excellent chance the question you’re going to ask is already answered in in descriptions, FAQs and recent comments.<br />
# Don’t ignore the required items. The mod may show you a popup upon subscribing, disregarding that is almost always cue for disaster. This popup is ''not'' shown when subbing from a Steam collection (thanks Gaben), so actually check the mod’s page.<br />
# Keep the mod list in alphanumerical order. We’ve been over that already. If you have new mods that have popped at the tail of the list, just click again on the <code>File Name</code> column in KMM and save your profile.<br />
# Troubleshoot yourself! The thing is, we don’t have time to help everybody, and in most cases the problem is local. We’ll get to best practices on this, don’t worry.<br />
# Upon commenting about an issue, provide context. Ok, you did everything right but that ugly bug is still there. That’s fine. The worst thing you could do at this point is comment “mod doesn’t work” because that means absolutely nothing. Modders aren’t telepaths. Steam comments aren’t the best place for this, so use a discussion or the discord server/channel lurked by that given modder.<br />
#* Context: when and how the thing happened. E.g. during the interturn after X’s turn, or clicking this button, whether it was Vortex/ME/multiplayer, custom battle or campaign battle.<br />
#* Mod list: Link a collection or a screenshot to the KMM list. For example, the big thing is not being naif enough that the overhaul in your list can’t affect other mods. For some reason, sometimes it feels like pulling teeth to know what else is there.<br />
#* Screenshot: always helps for clarity and visual context.<br />
#* Save game: if requested, you can find your save game in (example) C:\Users\%USER%\AppData\Roaming\The Creative Assembly\Warhammer2\save_games. Remember the mod list, because the modder may not be able to load without it.<br />
#* Results of your own troubleshooting: for example it’s good to know it happens with that one mod only. Relatedly, if you posted about an issue and later find the cause, let us know.<br />
# Don't assume your mod lists is working just because it's not crashing. A crash is only the most visible of symptoms, it's like assuming a coal miner is perfectly fine just because they haven't dropped dead yet. You may have all kinds of issues in your 400-mods list ranging from fucked models to script breaks. Did I mention don't use 400 mods? Yeah, probably don't.<br />
<br />
''This list is of course not meant to insult anybody’s intelligence, but you’d be surprised at how many issues and massive wastes of time are due to neglect of these simple rules. Following them is in the user’s interest in order to find a solution sooner, and it will allow the modder more time for improvement rather than wasted in unnecessary bug-hunts.''<br />
<br />
<br />
'''Frequent Steam issues:'''<br />
# Corrupted and botched download: this is relatively frequent and it causes 'random' crashes with mods that ''don't'' otherwise crash. Delete locally and redownload until it works. If using KMM, use the unsub+delete option, and resub.<br />
# Mod not updated: Steam may also not fetch the latest version of a random TW mod. At the merest issue, always double check the local file's last date and that of the mod on the workshop (on the top right, Last Updated).<br />
<br />
==== Common launcher/game issues: ====<br />
<br />
# Failed to download/remove mod. This happens relatively often and if in doubt you should always check in the mod download folder (example: Z:\Steamsteamapps\workshop\content\594570\??????) whether that mod was successfully downloaded/removed. Open George/Steam again until it is. The final folder id is the same as the one on the mod’s Steam url and you can sort by date for the most recently poked folder.<br />
#* More on this if using KMM: Kaedrin’s manager copies packs from that content/ to the game’s data/ folder. Moreover, when mods update you will likely need to refresh/restart KMM.<br />
# Ghost mods. Definitely spooky. You have toggled off that mod, but somehow it turns out it was still being loaded and crashing your game. Or a mod updates and self-enables. Using KMM seems enough to prevent this kind of poltergeist.<br />
# Random crashes: sometimes stuff just breaks and you have to verify your game’s cache: Steam Library>right click on game>Properties>Local Files>Verify yadda yadda. Or check with the game’s support.<br />
# Failure to enable mods or borked load order: sometimes George simply won’t fire what you want, or you’ve accidentally touched load order and now it won’t revert. Use KMM.<br />
# Soft cap: as of King’s Shilling update, this is completely fixed and the cap is indefinite. You can stop merging stuff or believing conspiracies about CA intentionally capping mods.<br />
<br />
==== Some specific KMM issues: ====<br />
<br />
# Doesn’t work: KMM can be installed anywhere, BUT in the game’s stuff. Don’t install in data/ or anywhere close. Hell, plop it in the desktop.<br />
# Doesn’t work cause I’m pirating the game: KMM can smell piracy. Buy the game.<br />
# KMM freezes on start: reboot it.<br />
# Game crashes on load: if you get that or suddenly crash for no good reason, just refresh/restart KMM first thing. If it persists, time to actually troubleshoot. KMM doesn’t often suffer of corrupted downloads but it may theoretically still happen.<br />
# Movie packs: still crashing? Even with no packs enabled at all? Ok, keep in mind that once they are in the data/ folder, movie packs will always be enabled no matter if you’ve toggled them on or not. KMM shows if a mod is a conventional pack file or movie pack (Type column), and it will tell you on the lower right how many movie packs you’re currently running. To effectively disable a movie pack, use the right click option <code>Unsubscribe (Steam) and Delete</code>. This should get rid of that mod in one go, instead of doing a mix of things that will probably still cause KMM to copy the pack again. Movie packs are mostly used for vfx, but sometimes also come with data baggage that you don’t always want around. Modders: you ''really'' want to only have harmless vfx in the movie pack, not db and scripts.<br />
<br />
== APPENDIX: Trimming the Mod List ==<br />
Again, there is virtually no such thing as a soft cap in WH2 anymore. So it’s up to you to keep your mod list functional, and if you have more than 100 mods enabled, risks and maintenance time will increase for you. Making that work is up to how careful you are, and even if a mod list doesn’t produce an instant crash you can’t be sure there aren’t less visible issues, e.g. script breaks.<br />
<br />
As a rule of thumb, don’t be cocky with your list of 250 mods because it’s all fun and games until everything works perfectly (and with those numbers chances are it doesn’t already, you just can’t see it), at which point there’s a lot of stuff to check.<br />
<br />
If you’re not experienced yet (and don’t assume you are just because you played Skyrim, this is different), use the mod list of someone that has very carefully been curating it, and check that it looks ok with the help of the modders themselves. For example, start by a modder’s own collection on Steam, they often have one.<br />
<br />
=== Finding the culprit ===<br />
The usual problem with large mod lists is this: bad, I got a crash; worse, which one of the N mods I have is the culprit?<br />
<br />
==== Generic pointers: ====<br />
<br />
* Pure Text, Variant and UI mods can basically NEVER crash the game for the user. If they do, it’s a botched download.<br />
* Momentarily sort by date either on KMM to find the most recent updates, if you didn’t add additional mods those ''may'' be responsible.<br />
* If you had the issue during a campaign, do not remove mods that have custom items, units or buildings because you’re just going to crash harder if those are around in the campaign map.<br />
* As mentioned above, watch out for movie packs. If you’re inexplicably crashing even with no mods on, you might have a movie pack with crashy data in it.<br />
<br />
==== Bisect and Conquer: ====<br />
Especially when dealing with big mod lists, the quickest method is to enable half of it. If you crash, that’s the troublesome half. Halven again to tighten the noose.<br />
<br />
Keep in mind mod requirements while you do this.<br />
<br />
If you want to check on a particular mod, disable everything and load the bare minimum to make that mod work, in other words mod+whatever required mods that comes with. And up from there, adding one or small groups of mods at a time until you can reproduce the issue.<br />
<br />
It’s patient work but the modder will appreciate it, and it takes less than panicking for hours in a comment section. Assume that a modder won’t troubleshoot your mod list of 150 packs because you say it’s their mod doing it, unless they have proof because you tested without anything else plus requirements.<br />
<br />
Remember: a happy modder is a happy user.<br />
<br />
== APPENDIX: Scripts ==<br />
Scripts are being increasingly used by mods. While most scripters are getting smarter by the day to maintain compatibility, some require a framework or some mods will just struggle to work when there are too many mods around.<br />
<br />
You may encounter symptoms of broken scripts, due to botched downloads, bad compatibility or just plain unforeseen issues because we can just mess stuff up sometimes. Script glitches tend to be quite tricky to root out.<br />
<br />
A few examples of broken scripts:<br />
<br />
* Starting lords that should be custom are not custom, or don’t spawn, or don’t have the correct army or settlement.<br />
* Sword of Khaine button is unchained right off.<br />
* Chaos and all Rogue armies may spawn immediately.<br />
* Campaign camera on a fresh campaign starts zoomed-out and doesn’t pan in.<br />
* Chivalry starts at 0.<br />
* One of the worst, characters do not gain XP (this may sometimes happen in full vanilla too, requires repair).<br />
<br />
==== Scropt broken, what do? ====<br />
In some cases, it’s just a botched download (see Launcher error 3). Otherwise it gets trickier and requires you to start trimming the mod list to find the culprit. When/if you report the issue to modders, remember to provide as much info as humanly possible because finding a script break can turn ugly and complicated.<br />
<br />
Particularly useful to help with scripting issues: please enable [https://steamcommunity.com/sharedfiles/filedetails/?id=1271877744 this debugger], reproduce the bug and send the resulting log, which will be a lenghty txt generated in ''Steam\steamapps\common\Total War WARHAMMER II''. Specific scripty mods may come with additional instructions in their mod descriptions/faqs.<br />
<br />
Do not keep the script logger there unless you need it, since it will noticeably slow down your game.<br />
<br />
One of the most frequent issues at the moment is a performance-related clog-up at the start of a campaign. This basically means that too many scripts are trying to fit into that time frame to do their stuff (legendary lords, changing armies, this kinda stuff) and results in some of them not working. This is where size of the mod list, in regards to any mod with a first-tick script, becomes serious.<br />
<br />
Quick note about Communiy Modding Framework: an obsolete scripting system, it’s basically only used by Crynsos’s unlocker at this point in time (september 2020) and will cause issues more often than not when enabled and not required.<br />
<br />
''Basically disable it unless you’re using CFU''.<br />
<br />
I repeat, it often breaks stuff. When in doubt, shoot it in the face.<br />
<br />
== APPENDIX: [https://steamcommunity.com/sharedfiles/filedetails/?id=1354363596 UI Modding Framework] ==<br />
This framework is technically not required to do UI modding at all, but it may be used as a framework by some scripty mods. Unless it happens to have broken functions after a patch, there are zero reasons not to have it around just in case one of your mods is actually using it or starts doing it.<br />
<br />
== APPENDIX: [https://steamcommunity.com/sharedfiles/filedetails/?id=1354363596 Mod Configuration Tool] ==<br />
This other framework is used to provide settings for compatible mods, i.e. to tweak some details at your heart’s content. Usually a good thing to keep it around because there’s quite a few mods supporting it, or that may do it in the future. For example, you may use it to configure some scripts to fire in a performance mode to reduce impact on campaign start.<br />
== APPENDIX: WH3, crashing on clicking Skirmish ==<br />
The most likely cause for this right now is that you saved a character (that new fancy function in WH3 to play campaign characters into skirmishes) but it was originated or affected by a mod that you have since then removed. Kaboom.<br />
<br />
Go in <code>C:\Users\user\AppData\Roaming\The Creative Assembly\Warhammer3\saved_characters</code> (or search %appdata% in windows search, then continue to those folders) and delete them.</div>Cataphhttps://tw-modding.com/index.php?title=Troubleshooting&diff=532Troubleshooting2022-08-27T18:47:09Z<p>Cataph: added link to PJ manager, and note about saved characters crash</p>
<hr />
<div>This is a troubleshooting guide for mod users in TW: Warhammer 2 and now 3. The generic pointers should be valid for all recent TW games.<br />
<br />
– Your neighbourhood Cataph<br />
<br />
<blockquote><br />
<br />
<br />
'''!!!'''<br />
<br />
'''WARHAMMER 3 PRELIMINARY HIGHLIGHT (will update and merge better later on)'''<br />
<br />
* [https://discord.com/channels/373745291289034763/650269940393443328/960904987523809340 Remove any movie pack from the pre-workshop interim period.] <br />
* Delete any user script you may have tried using if you were a masochist.<br />
* Delete the <code>-dx11</code> override you may have put on Steam (game>properties>launch options in the lower right must be empty). <br />
* Don't launch the game from the taskbar or from the exe, as it won't load mods; use the Play button or steam shortcut, or even RPFM's launch.<br />
* Go to <code>%appdata%\The Creative Assembly\Launcher</code> and delete <code>moddata.dat</code>. In case the launcher got stuck.<br />
* Since Steam is doodoo, data may get corrupted. Unsubscribe, and wait for the mod to be removed. If it needs to be manually removed, go to <code>steamapps\workshop\content\1142710\</code>xyz where xyz is the mod id on its url. Then redownload and wait.<br />
* Verify game cache.<br />
<br />
'''!!!'''</blockquote><br />
<br />
== Managing Mods ==<br />
So, you have subscribed to mods on the workshop. You now open CA’s current mod manager (hereby called George) and – blimey, they don’t work or something’s not right.<br />
<br />
First thing to keep in mind, if you have issues with George you should definitely report them to CA so that they know what they should look at.<br />
<br />
That said, you can just use the [https://github.com/Kaedrin/warhammer-mod-manager community mod manager] (normally called KMM). Long story short, George is unwieldy and has grown responsible for a lot of issues of its own, becoming hated by modders and users alike. Among other things, KMM is more reliable and provides mod profiles.<blockquote>'''''For WH3 as of August''': KMM is still not updated, [https://github.com/Shazbot/WH3-Mod-Manager/releases/latest but PJ made another perfectly-working community mod manager.] Good practices still apply, but all issues/notes about KMM copying items to data/ don't apply because it doesn't. Will update the guide better as things evolve.''</blockquote><br />
<br />
==== How to Load Order ====<br />
KMM and even George have a function to manually change how mods are loaded, which is an old habit of a lot of other modding communities, so you’d be tempted to change load order manually, right?<br />
<br />
'''''WRONG.'''''<br />
<br />
Ok, I’ll spare some time for this before we get into the actually useful tips, because this is one of the nastiest tropes around the community. The truth is that compatibility-minded modders already handle load order on their own as far as possible. Manually changing load order may do absolutely nothing, shift the problem somewhere else or break everything.<br />
<br />
Some context. There are six main possible categories of folders in a mod pack and this is how they handle load order, either through actual pack name or table name:<br />
<br />
* '''Db''': table name.<br />
* '''Scripts''': pack name.<br />
* '''Startpos''' (the big bad): pack name.<br />
* '''Text''': table name.<br />
* '''UI''': pack name.<br />
* '''Variants''': pack name.<br />
<br />
And that is if the modder doesn’t redirect content (e.g., telling database to use a different ui icon). KMM can only affect pack name order, so there are things like balance submods (Db overrides) that are still completely in the hands of the modders and intentionally so.<br />
<br />
In other words, there are only two possible cases in which you may want to alter load order manually: UI and variants, basically if you want to use specific reskin B.pack in the midst of larger reskin A.pack, in which case you push B on top.<br />
<br />
''In conclusion, you want to follow KMM’s instructions, give Steam time to download/remove mods and mostly keep load order in an alphabetical fashion (e.g. order by name and save profile), especially after adding new mods.''<br />
<br />
Which, incidentally, is this:<br />
<br />
! # $ % & ‘ ( ) + , – ; = @ 0-9 a-z [ ] ^ _ ` { } ~<br />
<br />
Where “!” wins over “a”.<br />
<br />
== Common Troubleshooting ==<br />
In an efficient mod, at least half of the reported issues are down to user error or what is technically called launcher f***-up. We’re going to try and cut that amount down for the greater good.<br />
<br />
==== User good practices: ====<br />
<br />
# Read the mod description. Seriously, this alone would prevent 80% of comments on Steam pages. Even if a description looks long, do it, it’s there for a reason. Some mods will also have FAQs or a list of known issues, incompatibilities and instructions. Read the comments before yours too if you have to post one. There’s an excellent chance the question you’re going to ask is already answered in in descriptions, FAQs and recent comments.<br />
# Don’t ignore the required items. The mod may show you a popup upon subscribing, disregarding that is almost always cue for disaster. This popup is ''not'' shown when subbing from a Steam collection (thanks Gaben), so actually check the mod’s page.<br />
# Keep the mod list in alphanumerical order. We’ve been over that already. If you have new mods that have popped at the tail of the list, just click again on the <code>File Name</code> column in KMM and save your profile.<br />
# Troubleshoot yourself! The thing is, we don’t have time to help everybody, and in most cases the problem is local. We’ll get to best practices on this, don’t worry.<br />
# Upon commenting about an issue, provide context. Ok, you did everything right but that ugly bug is still there. That’s fine. The worst thing you could do at this point is comment “mod doesn’t work” because that means absolutely nothing. Modders aren’t telepaths. Steam comments aren’t the best place for this, so use a discussion or the discord server/channel lurked by that given modder.<br />
#* Context: when and how the thing happened. E.g. during the interturn after X’s turn, or clicking this button, whether it was Vortex/ME/multiplayer, custom battle or campaign battle.<br />
#* Mod list: Link a collection or a screenshot to the KMM list. For example, the big thing is not being naif enough that the overhaul in your list can’t affect other mods. For some reason, sometimes it feels like pulling teeth to know what else is there.<br />
#* Screenshot: always helps for clarity and visual context.<br />
#* Save game: if requested, you can find your save game in (example) C:\Users\%USER%\AppData\Roaming\The Creative Assembly\Warhammer2\save_games. Remember the mod list, because the modder may not be able to load without it.<br />
#* Results of your own troubleshooting: for example it’s good to know it happens with that one mod only. Relatedly, if you posted about an issue and later find the cause, let us know.<br />
<br />
''This list is of course not meant to insult anybody’s intelligence, but you’d be surprised at how many issues and massive wastes of time are due to neglect of these simple rules. Following them is in the user’s interest in order to find a solution sooner, and it will allow the modder more time for improvement rather than wasted in unnecessary bug-hunts.''<br />
<br />
<br />
'''Frequent Steam issues:'''<br />
# Corrupted and botched download: this is relatively frequent and it causes 'random' crashes with mods that ''don't'' otherwise crash. Delete locally and redownload until it works. If using KMM, use the unsub+delete option, and resub.<br />
# Mod not updated: Steam may also not fetch the latest version of a random TW mod. At the merest issue, always double check the local file's last date and that of the mod on the workshop (on the top right, Last Updated).<br />
<br />
==== Common launcher/game issues: ====<br />
<br />
# Failed to download/remove mod. This happens relatively often and if in doubt you should always check in the mod download folder (example: Z:\Steamsteamapps\workshop\content\594570\??????) whether that mod was successfully downloaded/removed. Open George/Steam again until it is. The final folder id is the same as the one on the mod’s Steam url and you can sort by date for the most recently poked folder.<br />
#* More on this if using KMM: Kaedrin’s manager copies packs from that content/ to the game’s data/ folder. Moreover, when mods update you will likely need to refresh/restart KMM.<br />
# Ghost mods. Definitely spooky. You have toggled off that mod, but somehow it turns out it was still being loaded and crashing your game. Or a mod updates and self-enables. Using KMM seems enough to prevent this kind of poltergeist.<br />
# Random crashes: sometimes stuff just breaks and you have to verify your game’s cache: Steam Library>right click on game>Properties>Local Files>Verify yadda yadda. Or check with the game’s support.<br />
# Failure to enable mods or borked load order: sometimes George simply won’t fire what you want, or you’ve accidentally touched load order and now it won’t revert. Use KMM.<br />
# Soft cap: as of King’s Shilling update, this is completely fixed and the cap is indefinite. You can stop merging stuff or believing conspiracies about CA intentionally capping mods.<br />
<br />
==== Some specific KMM issues: ====<br />
<br />
# Doesn’t work: KMM can be installed anywhere, BUT in the game’s stuff. Don’t install in data/ or anywhere close. Hell, plop it in the desktop.<br />
# Doesn’t work cause I’m pirating the game: KMM can smell piracy. Buy the game.<br />
# KMM freezes on start: reboot it.<br />
# Game crashes on load: if you get that or suddenly crash for no good reason, just refresh/restart KMM first thing. If it persists, time to actually troubleshoot. KMM doesn’t often suffer of corrupted downloads but it may theoretically still happen.<br />
# Movie packs: still crashing? Even with no packs enabled at all? Ok, keep in mind that once they are in the data/ folder, movie packs will always be enabled no matter if you’ve toggled them on or not. KMM shows if a mod is a conventional pack file or movie pack (Type column), and it will tell you on the lower right how many movie packs you’re currently running. To effectively disable a movie pack, use the right click option <code>Unsubscribe (Steam) and Delete</code>. This should get rid of that mod in one go, instead of doing a mix of things that will probably still cause KMM to copy the pack again. Movie packs are mostly used for vfx, but sometimes also come with data baggage that you don’t always want around. Modders: you ''really'' want to only have harmless vfx in the movie pack, not db and scripts.<br />
<br />
== APPENDIX: Trimming the Mod List ==<br />
Again, there is virtually no such thing as a soft cap in WH2 anymore. So it’s up to you to keep your mod list functional, and if you have more than 100 mods enabled, risks and maintenance time will increase for you. Making that work is up to how careful you are, and even if a mod list doesn’t produce an instant crash you can’t be sure there aren’t less visible issues, e.g. script breaks.<br />
<br />
As a rule of thumb, don’t be cocky with your list of 250 mods because it’s all fun and games until everything works perfectly (and with those numbers chances are it doesn’t already, you just can’t see it), at which point there’s a lot of stuff to check.<br />
<br />
If you’re not experienced yet (and don’t assume you are just because you played Skyrim, this is different), use the mod list of someone that has very carefully been curating it, and check that it looks ok with the help of the modders themselves. For example, start by a modder’s own collection on Steam, they often have one.<br />
<br />
=== Finding the culprit ===<br />
The usual problem with large mod lists is this: bad, I got a crash; worse, which one of the N mods I have is the culprit?<br />
<br />
==== Generic pointers: ====<br />
<br />
* Pure Text, Variant and UI mods can basically NEVER crash the game for the user. If they do, it’s a botched download.<br />
* Momentarily sort by date either on KMM to find the most recent updates, if you didn’t add additional mods those ''may'' be responsible.<br />
* If you had the issue during a campaign, do not remove mods that have custom items, units or buildings because you’re just going to crash harder if those are around in the campaign map.<br />
* As mentioned above, watch out for movie packs. If you’re inexplicably crashing even with no mods on, you might have a movie pack with crashy data in it.<br />
<br />
==== Bisect and Conquer: ====<br />
Especially when dealing with big mod lists, the quickest method is to enable half of it. If you crash, that’s the troublesome half. Halven again to tighten the noose.<br />
<br />
Keep in mind mod requirements while you do this.<br />
<br />
If you want to check on a particular mod, disable everything and load the bare minimum to make that mod work, in other words mod+whatever required mods that comes with. And up from there, adding one or small groups of mods at a time until you can reproduce the issue.<br />
<br />
It’s patient work but the modder will appreciate it, and it takes less than panicking for hours in a comment section. Assume that a modder won’t troubleshoot your mod list of 150 packs because you say it’s their mod doing it, unless they have proof because you tested without anything else plus requirements.<br />
<br />
Remember: a happy modder is a happy user.<br />
<br />
== APPENDIX: Scripts ==<br />
Scripts are being increasingly used by mods. While most scripters are getting smarter by the day to maintain compatibility, some require a framework or some mods will just struggle to work when there are too many mods around.<br />
<br />
You may encounter symptoms of broken scripts, due to botched downloads, bad compatibility or just plain unforeseen issues because we can just mess stuff up sometimes. Script glitches tend to be quite tricky to root out.<br />
<br />
A few examples of broken scripts:<br />
<br />
* Starting lords that should be custom are not custom, or don’t spawn, or don’t have the correct army or settlement.<br />
* Sword of Khaine button is unchained right off.<br />
* Chaos and all Rogue armies may spawn immediately.<br />
* Campaign camera on a fresh campaign starts zoomed-out and doesn’t pan in.<br />
* Chivalry starts at 0.<br />
* One of the worst, characters do not gain XP (this may sometimes happen in full vanilla too, requires repair).<br />
<br />
==== Scropt broken, what do? ====<br />
In some cases, it’s just a botched download (see Launcher error 3). Otherwise it gets trickier and requires you to start trimming the mod list to find the culprit. When/if you report the issue to modders, remember to provide as much info as humanly possible because finding a script break can turn ugly and complicated.<br />
<br />
Particularly useful to help with scripting issues: please enable [https://steamcommunity.com/sharedfiles/filedetails/?id=1271877744 this debugger], reproduce the bug and send the resulting log, which will be a lenghty txt generated in ''Steam\steamapps\common\Total War WARHAMMER II''. Specific scripty mods may come with additional instructions in their mod descriptions/faqs.<br />
<br />
Do not keep the script logger there unless you need it, since it will noticeably slow down your game.<br />
<br />
One of the most frequent issues at the moment is a performance-related clog-up at the start of a campaign. This basically means that too many scripts are trying to fit into that time frame to do their stuff (legendary lords, changing armies, this kinda stuff) and results in some of them not working. This is where size of the mod list, in regards to any mod with a first-tick script, becomes serious.<br />
<br />
Quick note about Communiy Modding Framework: an obsolete scripting system, it’s basically only used by Crynsos’s unlocker at this point in time (september 2020) and will cause issues more often than not when enabled and not required.<br />
<br />
''Basically disable it unless you’re using CFU''.<br />
<br />
I repeat, it often breaks stuff. When in doubt, shoot it in the face.<br />
<br />
== APPENDIX: [https://steamcommunity.com/sharedfiles/filedetails/?id=1354363596 UI Modding Framework] ==<br />
This framework is technically not required to do UI modding at all, but it may be used as a framework by some scripty mods. Unless it happens to have broken functions after a patch, there are zero reasons not to have it around just in case one of your mods is actually using it or starts doing it.<br />
<br />
== APPENDIX: [https://steamcommunity.com/sharedfiles/filedetails/?id=1354363596 Mod Configuration Tool] ==<br />
This other framework is used to provide settings for compatible mods, i.e. to tweak some details at your heart’s content. Usually a good thing to keep it around because there’s quite a few mods supporting it, or that may do it in the future. For example, you may use it to configure some scripts to fire in a performance mode to reduce impact on campaign start.<br />
== APPENDIX: WH3, crashing on clicking Skirmish ==<br />
The most likely cause for this right now is that you saved a character (that new fancy function in WH3 to play campaign characters into skirmishes) but it was originated or affected by a mod that you have since then removed. Kaboom.<br />
<br />
Go in <code>C:\Users\user\AppData\Roaming\The Creative Assembly\Warhammer3\saved_characters</code> (or search %appdata% in windows search, then continue to those folders) and delete them.</div>Cataphhttps://tw-modding.com/index.php?title=Tolerant_Tables&diff=528Tolerant Tables2022-07-23T10:35:18Z<p>Cataph: /* Registry */</p>
<hr />
<div><br />
=== What’s a tolerant table? ===<br />
A tolerant table is an arbitrarily defined table that will not crash when a ''referenced'' key is missing in a certain column. This is particularly relevant when you are overriding new content from another mod and it turned out that you do not need to port two or more tables just to provide background references for those keys. Instead, you need just one table for the value to edit.<br />
<br />
Or to override specific keys with empty “cells”. Empty equals non-existing anyway.<br />
<br />
It may also be a trap leading to stuff not working in your own mod while also not crashing to desktop.<br />
<br />
== Registry ==<br />
Here is a list of such tables and streamline overrides. We encourage you all to report any new findings, preferably in alphabetical order. When reporting new tables, please include the date, because we do not know if or when this kind of behavior can abruptly change CA-side, and older dates can be considered suspicious when you have weird crashes after a patch.<br />
<br />
# ancillary effects junction<br />
#* tolerates missing ''ancillary'' as of 2nd November 2018<br />
# building_level_armed_citizenry_junctions_tables<br />
#* tolerates missing ''building level'' as of April 2020. NOT ''unit group''. No longer tolerant in WH3.<br />
# building culture variants<br />
#* tolerates missing ''building level'' and ''culture'' (''likely sc and faction as well'') as of 26th March 2019.<br />
# building effects junction<br />
#* tolerates missing ''building level'', but not ''effect'' as of 20th August 2018. No longer tolerant in WH3.<br />
# building units allowed<br />
#* tolerates missing ''building level'' as of 20th August 2018. Still works for WH2, no longer tolerant for WH3.<br />
# campaign_group_member_criteria_factions_tables<br />
#* tolerates missing ''faction'' key as of 2nd Orktober 2019.<br />
# campaign stances factions junctions<br />
#* tolerates missing ''faction'' as of 9th December 2018.<br />
# cdir events dilemma/incident/mission option junctions<br />
#* tolerates missing ''value'' and ''dilemma'', even in the assembly kit, as of 8th December 2018.<br />
# cdir military generator unit qualities<br />
#* tolerates missing ''unit'' as of 12th Orctober 2018.<br />
# effect bonus value ids unit sets<br />
#* tolerates missing ''effect'' as of 5th Orctober 2018.<br />
# effect bundles to effects junction<br />
#* tolerates missing ''effect'' as of 18th August 2018.<br />
# faction rebellion units junctions<br />
#* tolerates missing ''faction'' as of 2nd November 2018.<br />
# frontend faction effects junctions<br />
#* tolerates missing ''effect scope'' as of 1st January 2019.<br />
# land units<br />
#* tolerates missing ''missing weapon''<br />
#* tolerates missing ''historical+short descr, mount, attribute group'' as long as the unit is not selected in-game, as of April 2019.<br />
#* tolerates missing ''engine'', but the supposed engine will not show up in battle, as of 12th November 2018.<br />
# land units to unit abilities junction<br />
#* tolerates missing ''land unit'' as of 20th August 2018.<br />
# main units<br />
#* tolerates missing ''campaign mount'' as of 12th Orctober 2018.<br />
#* tolerates missing ''ui_groupings'' on startup sometimes, and will crash on clicking Custom Battles otherwise.<br />
# melee weapons<br />
#* tolerates missing ''contact effect phase'' as of 9th November 2018.<br />
# projectile bombardments<br />
#* tolerates missing ''projectile type'' as of 12th November 2018.<br />
# special ability phase stat effects<br />
#* tolerates missing ''phase'' as of 9th November 2018.<br />
# special ability groups to units junction<br />
#* tolerates missing ''unit'' as of 20th Orctober 2018.<br />
# technology nodes<br />
#* tolerates missing ''faction'' as of 1st January 2019.<br />
# unit set unit attribute junction<br />
#* tolerates wrong ''attribute'' as of 20th Orctober 2018.<br />
# unit set to unit junction<br />
#* tolerates missing ''main unit'' as of 20th August 2018.<br />
# unit variants<br />
#* tolerates missing ''land unit'' as of 26th March 2019.<br />
# units to groupings military permissions<br />
#* tolerates missing military group as of 12th December 2018.<br />
# ui unit bullet point unit overrides<br />
#* tolerates wrong ''unit'' as of 27th February 2019.<br />
[[Category:Warhammer 2]]</div>Cataphhttps://tw-modding.com/index.php?title=Tolerant_Tables&diff=527Tolerant Tables2022-07-23T09:54:15Z<p>Cataph: garrison building no longer tolerant in wh3</p>
<hr />
<div><br />
=== What’s a tolerant table? ===<br />
A tolerant table is an arbitrarily defined table that will not crash when a ''referenced'' key is missing in a certain column. This is particularly relevant when you are overriding new content from another mod and it turned out that you do not need to port two or more tables just to provide background references for those keys. Instead, you need just one table for the value to edit.<br />
<br />
Or to override specific keys with empty “cells”. Empty equals non-existing anyway.<br />
<br />
It may also be a trap leading to stuff not working in your own mod while also not crashing to desktop.<br />
<br />
== Registry ==<br />
Here is a list of such tables and streamline overrides. We encourage you all to report any new findings, preferably in alphabetical order. When reporting new tables, please include the date, because we do not know if or when this kind of behavior can abruptly change CA-side, and older dates can be considered suspicious when you have weird crashes after a patch.<br />
<br />
# ancillary effects junction<br />
#* tolerates missing ''ancillary'' as of 2nd November 2018<br />
# building_level_armed_citizenry_junctions_tables<br />
#* tolerates missing ''building level'' as of April 2020. NOT ''unit group''. No longer tolerant in WH3.<br />
# building culture variants<br />
#* tolerates missing ''building level'' and ''culture'' (''likely sc and faction as well'') as of 26th March 2019.<br />
# building effects junction<br />
#* tolerates missing ''building level'', but not ''effect'' as of 20th August 2018.<br />
# building units allowed<br />
#* tolerates missing ''building level'' as of 20th August 2018. Still works for WH2, no longer tolerant for WH3.<br />
# campaign_group_member_criteria_factions_tables<br />
#* tolerates missing ''faction'' key as of 2nd Orktober 2019.<br />
# campaign stances factions junctions<br />
#* tolerates missing ''faction'' as of 9th December 2018.<br />
# cdir events dilemma/incident/mission option junctions<br />
#* tolerates missing ''value'' and ''dilemma'', even in the assembly kit, as of 8th December 2018.<br />
# cdir military generator unit qualities<br />
#* tolerates missing ''unit'' as of 12th Orctober 2018.<br />
# effect bonus value ids unit sets<br />
#* tolerates missing ''effect'' as of 5th Orctober 2018.<br />
# effect bundles to effects junction<br />
#* tolerates missing ''effect'' as of 18th August 2018.<br />
# faction rebellion units junctions<br />
#* tolerates missing ''faction'' as of 2nd November 2018.<br />
# frontend faction effects junctions<br />
#* tolerates missing ''effect scope'' as of 1st January 2019.<br />
# land units<br />
#* tolerates missing ''missing weapon''<br />
#* tolerates missing ''historical+short descr, mount, attribute group'' as long as the unit is not selected in-game, as of April 2019.<br />
#* tolerates missing ''engine'', but the supposed engine will not show up in battle, as of 12th November 2018.<br />
# land units to unit abilities junction<br />
#* tolerates missing ''land unit'' as of 20th August 2018.<br />
# main units<br />
#* tolerates missing ''campaign mount'' as of 12th Orctober 2018.<br />
#* tolerates missing ''ui_groupings'' on startup sometimes, and will crash on clicking Custom Battles otherwise.<br />
# melee weapons<br />
#* tolerates missing ''contact effect phase'' as of 9th November 2018.<br />
# projectile bombardments<br />
#* tolerates missing ''projectile type'' as of 12th November 2018.<br />
# special ability phase stat effects<br />
#* tolerates missing ''phase'' as of 9th November 2018.<br />
# special ability groups to units junction<br />
#* tolerates missing ''unit'' as of 20th Orctober 2018.<br />
# technology nodes<br />
#* tolerates missing ''faction'' as of 1st January 2019.<br />
# unit set unit attribute junction<br />
#* tolerates wrong ''attribute'' as of 20th Orctober 2018.<br />
# unit set to unit junction<br />
#* tolerates missing ''main unit'' as of 20th August 2018.<br />
# unit variants<br />
#* tolerates missing ''land unit'' as of 26th March 2019.<br />
# units to groupings military permissions<br />
#* tolerates missing military group as of 12th December 2018.<br />
# ui unit bullet point unit overrides<br />
#* tolerates wrong ''unit'' as of 27th February 2019.<br />
[[Category:Warhammer 2]]</div>Cataphhttps://tw-modding.com/index.php?title=Tutorial:Submodding&diff=525Tutorial:Submodding2022-05-11T15:12:21Z<p>Cataph: /* ADVANCED SUBMODDING: STICKY TABLES */</p>
<hr />
<div>=== Originally written by Cataph ===<br />
If you’re a modder, one of the most frequent comments next to romantical proposals (YMMV) will be “SFO/Radious/CTT/Lucky/yomama compatibility when”. Many modders don’t have an interest in making a submod simply because they don’t know and play a given overhaul and wouldn’t know how to balance it anyway.<br />
<br />
So, what if it could be you making that submod? Or maybe you just want to make X mod work better with Y. Be the submodder you want to see in the world!<br />
<br />
A few things first.<br />
<br />
== WHAT IS A SUBMOD? ==<br />
Basically, an optional plugin designed to make mod X work or work better with mod Y, thanks to this mod Z. A user that wants to use X and Y together will download mod Z and keep all three enabled.<br />
<br />
Can a submod be a standalone? Well, yes, but it wouldn’t be a submod then, would it? Besides, it’s normally a dick move to take mod X and fully reupload it with a few differences. Plus, it’s 90% never necessary and we’re going to see why.<br />
<br />
Ok, but can I just edit a mod and keep it to myself? Sure, keep in mind that you should rename the pack into something else to avoid automatic updates to overwrite what you changed.<br />
<br />
== WHY IS A SUBMOD? ==<br />
I need you to focus.<br />
<br />
== HOW IS A SUBMOD? ==<br />
Fine, thank you. About how it’s made, we don’t necessarily need mod X and Y to make sweet love to each other but only you, bloke with a basic knowledge of RPFM and TW modding.<br />
<br />
== WHAT DO? ==<br />
Ok, as a basic example let’s say we want a compatibility submod between the Sea Patrol mod and a fictional 2x unit size mod, so we want to grab whatever lines define unit numbers in the former and multiply those by 2. Daring.<br />
<br />
First thing we open the first mod as a reference, then we create a new pack for the submod. We’ll call it seapatrol_yourname_unitsize.pack. (more on naming later, but sit tight)<br />
<br />
Upon viewing the db of Sea Patrol we see a whole lotta tables.<br />
<br />
Since I am a bloke with basic knowledge of [https://github.com/Frodo45127/rpfm/releases/latest RPFM] and TW modding, I know that unit sizes are in main_units.<br />
<br />
[[File:Submodding 1.jpg|frameless]]<br />
<br />
Thus, in the submod I’ll import said table/s by right click>Add…>Add from Packfile, find the pack, find the table and double click it. Close the add from packfile panel and we’re good to go, we have Sea Patrol’s main_units in our shizzle. We go in there and edit the numbers we want to change, in this case we select any num_men that is not a hero/lord’s, right click, apply math as ''{x}*2'' and done. Done? No, some of those units may be cavalry, so we need to adapt the number of mounts too. We import land_units as well and do the same thing on num_mounts. In the rarer case that there’s a multi-chariot unit, we leave mounts alone and multiply num_engines in land_units.<br />
<br />
== PRIORITY ==<br />
But it’s a submod, and we want to make sure we’re overriding the original mod’s values. No, not with load order on the mod manager, [[Troubleshooting|and incidentally you shouldn't touch that and you should use KMM]].<br />
<br />
We currently have two tables, we select those table fragments (in this case, called “AK_seahelm”) and we rename them to take priority according to this alphanumerical order:<blockquote>! # $ % & ‘ ( ) + , – ; = @ 0-9 a-z [ ] ^ _ ` { } ~ Where “!” wins over “a”.</blockquote>Usually, adding a “!” in front does it. But we also want to make clear what submod this is for. Right click> Rename> type ''!{x}_unitsize'', which will become “!AK_seahelm_unitsize”.<br />
<br />
''Note: DO NOT leave the table names as is, or you’ll crash. DO NOT leave a number as last character or it might glitch and crash anyway.''<br />
<br />
Aaaand, done! Now this submod of only two tables will correctly override unit sizes for a specific mod. Yeah, any non-vanilla key will be red in here, since you don’t define those in your pack, but no worries, it’s a submod that is designed to exist with the mod that actually has those keys.<br />
<br />
In the possible case you need at some point to override parts that don't answer to table priority, like images or variants or whole script files, you might want to name the entire pack with a prefix that wins priority over the original mod. For example, again, “!AK_seahelm_unitsize”. Considering you don't want users to manually change load order, this makes sure that by alphanumerical order you're already overriding the og mod. Notice that you can't change a pack's name after you've uploaded it to the workshop.<br />
<br />
Now, like with any mod we make a PNG icon and upload if we want to share it publicly. If you upload it on the workshop, add mods X and Y as required by clicking on Add/Remove Required Items. This will prompt a user to go and fetch those required mods as well. Most of them will somehow ignore it and crash, but at least you tried.<br />
<br />
== ADDENDUM: ETIQUETTE ==<br />
By most accounts, a clean submod like the above doesn’t really need permission since you’re not stealing anything. However, you should still ask as good courtesy, and it can’t hurt to still let the og author know as they may link it in description, let you know about required changes, etc.<br />
<br />
It’s also good practice not to add donation links to a submod.<br />
<br />
== ADDENDUM: UPDATING ==<br />
It should be your interest and responsibility to stay up-to-date with the original mods as soon as you have time. For example if you’re submodding a unit mod and you see the ‘parent’ mod has updated with balance changes, some key changes or new units, you should definitely hear a couple bells ringing.<br />
<br />
Sometimes the parent mod changes a few keys and then you might even crash until you update.<br />
<br />
== SUBMODDING EXAMPLE: TRANSLATION ==<br />
In most cases, translating a mod is a simple case of grabbing all of that mod's loc files (text db) and following what we've seen so far. So, make sure you only have the parts you need, remove the rest, rename your loc with a prefix that gives them priority. Then, start grinding at the actual translation work in those loc tables.<br />
<br />
There may be some fringe cases where there is text on images or inside scripts. As we mentioned, you might need priority over the whole pack in terms of naming. It also gets trickier changing the text on a picture, and you might want to contact the other fellow if you need to translate a text that is directly embedded in a script. Ask if there's a way to avoid you having to grab the entire script, which is normally a bad idea.<br />
<br />
== ADVANCED SUBMODDING: BALANCE OVERHAULS ==<br />
The submodder should also be the one who is familiar with the overhaul they’re adapting a mod for. If you are at a loss about how to tweak some things, definitely consider asking one of the two original modders (depending on the kind of question) for advice on how to proceed. For example, “this unit is weird and I’m not sure what role it should keep”.<br />
<br />
Can't be much more specific about this because there are so many possible moving parts that you need to change, starting with unit stats to their place on new recruitment buildings. Staying up-to-date is particularly important in this kind of mod.<br />
<br />
== UNIQUE NUMERICAL IDs ==<br />
In some tables, each line has a unique numerical id in front of it (or sometimes way off like in unit_special_abilities). That’s specific for each line, and it works like other important keys like those in land_units or main_units, as in there can only be one line about that key or num id.<br />
<br />
Why am I saying all this? Because if in your submod you happen to need to ''add'' some lines in, for example, building_units_allowed, you’ll need your own unique num ids to make them work proppa. Pick any number below 2 billions and something and make sure they never repeat. This is important, do not continue off the num ids from the mod you’re submodding or you’ll cause issues at some point.<br />
<br />
== ADVANCED SUBMODDING: STICKY TABLES ==<br />
Some tables and related features are slightly more complicated to submod. For example, you want to remove a unit from a certain building level. Easy, go in building_units_allowed again. Remember those unique ids? '''Keep that exactly intact''' (so it still refers to that specific line from the original mod or vanilla line) and change the building to something that has no chance of being available, such as <code>wh_main_chs_port_ruin</code> or change the unit instead to a unit that is completely unavailble as well for anybody who has access to the given building. You could change both to be sure, but it's more confusing down the line.<br />
<br />
Until WH2, you could have typed random gibberish in the building key to better track your changes (e.g., add "_removed" to building keys), but in WH3 that causes a crash as both fields need to be valid.<br />
<br />
The underlying logic is that you're hijacking a precise data line (due to the unique id, numerical or not) and telling it to do something impossible.<br />
<br />
'''Harder example''': I really don’t want any of these units to have the new-fangled Edgelord Deluxe passive ability, which is added by this mod. Cool, that means I can kill that ability from existence without it ever affecting anything else. We do that by:<br />
<br />
* grabbing its line from unit_abilities, we make it hidden in UI.<br />
* grabbing its line from unit_special_abilities, we make it a passive (boolean). Make sure you remove any activated projectile/bombardment/summon etc from here too.<br />
* grabbing its line in special_ability_to_special_ability_phase_junctions. Change the phase to a new special_ability_phase that we created and that does absolutely nothing. There, done. The ability still exists, but does nothing and is invisible. In my own private jargon this is called a pillow. Again, ''notice that you’re neutering this ability for any unit that happens to get it.''<br />
This currently doesn't really work in WH3 and I really hope they fix that because it's a serious problem.<br />
<br />
'''Even harder example''': I want this unit to not have the Regeneration passive ability. Oooh, that’s a vanilla ability, isn’t it? We can’t just dumpster it. Either we tolerate it or…<br />
<br />
== ADVANCED SUBMODDING: DEPENDENCY MANAGER ==<br />
This is a RPFM feature. ''USE WITH CAUTION'', as it's essentially a data coring method. <br />
<br />
We enable it by right clicking on the packfile itself in tree view (not on a table, not on anything else, literally the very first line in tree view), Open>Open Dependency Manager. We add a line as if it was a table (ctrl+shift+A) and type EXACTLY the pack name of the mod we want to override. As in “AK_seahelm.pack”. From this point onwards, everything we do in the submod under identical paths will completely override content from the parent mod no matter the load or table order for stuff with the same name. Example, I can import a table, not change its name and completely delete its content. This would normally crash, but not with DepManager. <br />
<br />
I said use this with caution because if you do this you REALLY need to stay up-to-date with the og mod. For example, you can remove the line that gives unit A the Regen passive, and it will work. However, any further update from the parent mod in that table won’t take place unless you also mirror it. Again, this is normally not remotely required and you should steer clear of it because it’s just as bad as leaving a vanilla table called “data__”.<br />
<br />
Additionally, '''this will auto-enable the linked mod''' as soon as it’s in data/ as if it was a movie pack. As such, you don’t want to do this unless you’re doing a submod that already requires that linked mod. Because having stuff popping up even when you’ve disabled a mod is the worst.<br />
<br />
== ADVANCED SUBMODDING: BACKGROUND TABLES ==<br />
Let's say we aren't doing a submod whose only purpose is changing unit size for that other mod, but it's our own standalone mod A and we're doing some compatibility stuff to make it work better with B, without needing a separate submod C that requires both. '''For example, we want something from B in A, ''if B is also enabled''. Sometimes we can do that without C'''. <br />
<br />
Let's say I add some new units in A, and mod B adds fancy officers to all units. Officers are connected to the unit in db/land_units, but if we just pasted B's officer key in there, A would go boom if B is not enabled. We don't want that, and we may not want to force people to use B. So we paste that officer key there, replacing A_blank_record, but we also check what table that key relies on by hovering on its top (title, header, whatever), which is... db/land_units_officers. Without it, that officer key is going to go boom, [[Tolerant Tables|because it's not a tolerant key]], at all, to the point that even a non-existant officer needs an actual key called A_blank_record, which does exist. <br />
<br />
What we do is create land_units_officers, add that officer key under key, keep personality location as front or rear (honestly don't know if that crashes if left blank, don't care), but we leave the officer 1 etc columns empty. '''IMPORTANT: we rename this table fragment with something like zzzzz_mod_a_mod_b'''. Notice the zeds? Keep those in mind.<br />
<br />
So, what is this doing? It's telling the unit that it's going to use that officer group, but it's got nothing in it, no ''actual'' officers (battle_personalities). By using our mod A without B, the game finds an empty box for this officer, shrugs, and doesn't replace unit models with any officer personality. The game moves on without crashing, because that key exists. Basically, we created another blank record, but this very specific one gets filled in when B is enabled. <br />
<br />
Remember those zeds? They are there so that our blank record gets overridden by B's table (which we assume has a higher alphabetical priority than a bunch of zeds, unless B's author is not trying hard enough). Keep in mind that if B's author ever changes those officer keys you won't crash, but you'll still need to adapt because your blank record would stay blank.<br />
<br />
<br />
This can be done in a bunch of situations, but you'll need some specific knowledge of how specific contexts work. You could want to use this method to nerf some effects from mod B, in which case you might need more than one background table (the zzzzz boys), including db/effects, which by itself does absolutely nothing, but using an effect key that doesn't exist in there will go kaboom.<br />
<br />
== ADVANCED SUBMODDING: SCRIPTS ==<br />
Uhh, sorry, not my field, but you can certainly do stuff. Either a scripty fella writes this or you have to ask in Discord about the specific case you’re facing.</div>Cataphhttps://tw-modding.com/index.php?title=Tutorial:Submodding&diff=517Tutorial:Submodding2022-04-26T11:53:17Z<p>Cataph: /* ADVANCED SUBMODDING: BALANCE OVERHAULS */</p>
<hr />
<div>=== Originally written by Cataph ===<br />
If you’re a modder, one of the most frequent comments next to romantical proposals (YMMV) will be “SFO/Radious/CTT/Lucky/yomama compatibility when”. Many modders don’t have an interest in making a submod simply because they don’t know and play a given overhaul and wouldn’t know how to balance it anyway.<br />
<br />
So, what if it could be you making that submod? Or maybe you just want to make X mod work better with Y. Be the submodder you want to see in the world!<br />
<br />
A few things first.<br />
<br />
== WHAT IS A SUBMOD? ==<br />
Basically, an optional plugin designed to make mod X work or work better with mod Y, thanks to this mod Z. A user that wants to use X and Y together will download mod Z and keep all three enabled.<br />
<br />
Can a submod be a standalone? Well, yes, but it wouldn’t be a submod then, would it? Besides, it’s normally a dick move to take mod X and fully reupload it with a few differences. Plus, it’s 90% never necessary and we’re going to see why.<br />
<br />
Ok, but can I just edit a mod and keep it to myself? Sure, keep in mind that you should rename the pack into something else to avoid automatic updates to overwrite what you changed.<br />
<br />
== WHY IS A SUBMOD? ==<br />
I need you to focus.<br />
<br />
== HOW IS A SUBMOD? ==<br />
Fine, thank you. About how it’s made, we don’t necessarily need mod X and Y to make sweet love to each other but only you, bloke with a basic knowledge of RPFM and TW modding.<br />
<br />
== WHAT DO? ==<br />
Ok, as a basic example let’s say we want a compatibility submod between the Sea Patrol mod and a fictional 2x unit size mod, so we want to grab whatever lines define unit numbers in the former and multiply those by 2. Daring.<br />
<br />
First thing we open the first mod as a reference, then we create a new pack for the submod. We’ll call it seapatrol_yourname_unitsize.pack. (more on naming later, but sit tight)<br />
<br />
Upon viewing the db of Sea Patrol we see a whole lotta tables.<br />
<br />
Since I am a bloke with basic knowledge of [https://github.com/Frodo45127/rpfm/releases/latest RPFM] and TW modding, I know that unit sizes are in main_units.<br />
<br />
[[File:Submodding 1.jpg|frameless]]<br />
<br />
Thus, in the submod I’ll import said table/s by right click>Add…>Add from Packfile, find the pack, find the table and double click it. Close the add from packfile panel and we’re good to go, we have Sea Patrol’s main_units in our shizzle. We go in there and edit the numbers we want to change, in this case we select any num_men that is not a hero/lord’s, right click, apply math as ''{x}*2'' and done. Done? No, some of those units may be cavalry, so we need to adapt the number of mounts too. We import land_units as well and do the same thing on num_mounts. In the rarer case that there’s a multi-chariot unit, we leave mounts alone and multiply num_engines in land_units.<br />
<br />
== PRIORITY ==<br />
But it’s a submod, and we want to make sure we’re overriding the original mod’s values. No, not with load order on the mod manager, [[Troubleshooting|and incidentally you shouldn't touch that and you should use KMM]].<br />
<br />
We currently have two tables, we select those table fragments (in this case, called “AK_seahelm”) and we rename them to take priority according to this alphanumerical order:<blockquote>! # $ % & ‘ ( ) + , – ; = @ 0-9 a-z [ ] ^ _ ` { } ~ Where “!” wins over “a”.</blockquote>Usually, adding a “!” in front does it. But we also want to make clear what submod this is for. Right click> Rename> type ''!{x}_unitsize'', which will become “!AK_seahelm_unitsize”.<br />
<br />
''Note: DO NOT leave the table names as is, or you’ll crash. DO NOT leave a number as last character or it might glitch and crash anyway.''<br />
<br />
Aaaand, done! Now this submod of only two tables will correctly override unit sizes for a specific mod. Yeah, any non-vanilla key will be red in here, since you don’t define those in your pack, but no worries, it’s a submod that is designed to exist with the mod that actually has those keys.<br />
<br />
In the possible case you need at some point to override parts that don't answer to table priority, like images or variants or whole script files, you might want to name the entire pack with a prefix that wins priority over the original mod. For example, again, “!AK_seahelm_unitsize”. Considering you don't want users to manually change load order, this makes sure that by alphanumerical order you're already overriding the og mod. Notice that you can't change a pack's name after you've uploaded it to the workshop.<br />
<br />
Now, like with any mod we make a PNG icon and upload if we want to share it publicly. If you upload it on the workshop, add mods X and Y as required by clicking on Add/Remove Required Items. This will prompt a user to go and fetch those required mods as well. Most of them will somehow ignore it and crash, but at least you tried.<br />
<br />
== ADDENDUM: ETIQUETTE ==<br />
By most accounts, a clean submod like the above doesn’t really need permission since you’re not stealing anything. However, you should still ask as good courtesy, and it can’t hurt to still let the og author know as they may link it in description, let you know about required changes, etc.<br />
<br />
It’s also good practice not to add donation links to a submod.<br />
<br />
== ADDENDUM: UPDATING ==<br />
It should be your interest and responsibility to stay up-to-date with the original mods as soon as you have time. For example if you’re submodding a unit mod and you see the ‘parent’ mod has updated with balance changes, some key changes or new units, you should definitely hear a couple bells ringing.<br />
<br />
Sometimes the parent mod changes a few keys and then you might even crash until you update.<br />
<br />
== SUBMODDING EXAMPLE: TRANSLATION ==<br />
In most cases, translating a mod is a simple case of grabbing all of that mod's loc files (text db) and following what we've seen so far. So, make sure you only have the parts you need, remove the rest, rename your loc with a prefix that gives them priority. Then, start grinding at the actual translation work in those loc tables.<br />
<br />
There may be some fringe cases where there is text on images or inside scripts. As we mentioned, you might need priority over the whole pack in terms of naming. It also gets trickier changing the text on a picture, and you might want to contact the other fellow if you need to translate a text that is directly embedded in a script. Ask if there's a way to avoid you having to grab the entire script, which is normally a bad idea.<br />
<br />
== ADVANCED SUBMODDING: BALANCE OVERHAULS ==<br />
The submodder should also be the one who is familiar with the overhaul they’re adapting a mod for. If you are at a loss about how to tweak some things, definitely consider asking one of the two original modders (depending on the kind of question) for advice on how to proceed. For example, “this unit is weird and I’m not sure what role it should keep”.<br />
<br />
Can't be much more specific about this because there are so many possible moving parts that you need to change, starting with unit stats to their place on new recruitment buildings. Staying up-to-date is particularly important in this kind of mod.<br />
<br />
== UNIQUE NUMERICAL IDs ==<br />
In some tables, each line has a unique numerical id in front of it (or sometimes way off like in unit_special_abilities). That’s specific for each line, and it works like other important keys like those in land_units or main_units, as in there can only be one line about that key or num id.<br />
<br />
Why am I saying all this? Because if in your submod you happen to need to ''add'' some lines in, for example, building_units_allowed, you’ll need your own unique num ids to make them work proppa. Pick any number below 2 billions and something and make sure they never repeat. This is important, do not continue off the num ids from the mod you’re submodding or you’ll cause issues at some point.<br />
<br />
== ADVANCED SUBMODDING: STICKY TABLES ==<br />
Some tables and related features are slightly more complicated to submod. For example, you want to remove a unit from a certain building level. Easy, go in building_units_allowed again. Remember those unique ids? '''Keep that exactly intact''' (so it still refers to that specific line from the original mod or vanilla line) and change the building to something that has no chance of being available, such as <code>wh_main_chs_port_ruin</code> or change the unit instead to a unit that is completely unavailble as well for anybody who has access to the given building. You could change both to be sure, but it's more confusing down the line.<br />
<br />
Until WH2, you could have typed random gibberish in the building key to better track your changes (e.g., add "_removed" to building keys), but in WH3 that causes a crash as both fields need to be valid.<br />
<br />
The underlying logic is that you're hijacking a precise data line (due to the unique id, numerical or not) and telling it to do something impossible.<br />
<br />
'''Harder example''': I really don’t want any of these units to have the new-fangled Edgelord Deluxe passive ability, which is added by this mod. Cool, that means I can kill that ability from existence without it ever affecting anything else. We do that by:<br />
<br />
* grabbing its line from unit_abilities, we make it hidden in UI.<br />
* grabbing its line from unit_special_abilities, we make it a passive (boolean). Make sure you remove any activated projectile/bombardment/summon etc from here too.<br />
* grabbing its line in special_ability_to_special_ability_phase_junctions. Change the phase to a new special_ability_phase that we created and that does absolutely nothing. There, done. The ability still exists, but does nothing and is invisible. In my own private jargon this is called a pillow. Again, ''notice that you’re neutering this ability for any unit that happens to get it.''<br />
<br />
'''Even harder example''': I want this unit to not have the Regeneration passive ability. Oooh, that’s a vanilla ability, isn’t it? We can’t just dumpster it. Either we tolerate it or…<br />
<br />
== ADVANCED SUBMODDING: DEPENDENCY MANAGER ==<br />
This is a RPFM feature. ''USE WITH CAUTION'', as it's essentially a data coring method. <br />
<br />
We enable it by right clicking on the packfile itself in tree view (not on a table, not on anything else, literally the very first line in tree view), Open>Open Dependency Manager. We add a line as if it was a table (ctrl+shift+A) and type EXACTLY the pack name of the mod we want to override. As in “AK_seahelm.pack”. From this point onwards, everything we do in the submod under identical paths will completely override content from the parent mod no matter the load or table order for stuff with the same name. Example, I can import a table, not change its name and completely delete its content. This would normally crash, but not with DepManager. <br />
<br />
I said use this with caution because if you do this you REALLY need to stay up-to-date with the og mod. For example, you can remove the line that gives unit A the Regen passive, and it will work. However, any further update from the parent mod in that table won’t take place unless you also mirror it. Again, this is normally not remotely required and you should steer clear of it because it’s just as bad as leaving a vanilla table called “data__”.<br />
<br />
Additionally, '''this will auto-enable the linked mod''' as soon as it’s in data/ as if it was a movie pack. As such, you don’t want to do this unless you’re doing a submod that already requires that linked mod. Because having stuff popping up even when you’ve disabled a mod is the worst.<br />
<br />
== ADVANCED SUBMODDING: BACKGROUND TABLES ==<br />
Let's say we aren't doing a submod whose only purpose is changing unit size for that other mod, but it's our own standalone mod A and we're doing some compatibility stuff to make it work better with B, without needing a separate submod C that requires both. '''For example, we want something from B in A, ''if B is also enabled''. Sometimes we can do that without C'''. <br />
<br />
Let's say I add some new units in A, and mod B adds fancy officers to all units. Officers are connected to the unit in db/land_units, but if we just pasted B's officer key in there, A would go boom if B is not enabled. We don't want that, and we may not want to force people to use B. So we paste that officer key there, replacing A_blank_record, but we also check what table that key relies on by hovering on its top (title, header, whatever), which is... db/land_units_officers. Without it, that officer key is going to go boom, [[Tolerant Tables|because it's not a tolerant key]], at all, to the point that even a non-existant officer needs an actual key called A_blank_record, which does exist. <br />
<br />
What we do is create land_units_officers, add that officer key under key, keep personality location as front or rear (honestly don't know if that crashes if left blank, don't care), but we leave the officer 1 etc columns empty. '''IMPORTANT: we rename this table fragment with something like zzzzz_mod_a_mod_b'''. Notice the zeds? Keep those in mind.<br />
<br />
So, what is this doing? It's telling the unit that it's going to use that officer group, but it's got nothing in it, no ''actual'' officers (battle_personalities). By using our mod A without B, the game finds an empty box for this officer, shrugs, and doesn't replace unit models with any officer personality. The game moves on without crashing, because that key exists. Basically, we created another blank record, but this very specific one gets filled in when B is enabled. <br />
<br />
Remember those zeds? They are there so that our blank record gets overridden by B's table (which we assume has a higher alphabetical priority than a bunch of zeds, unless B's author is not trying hard enough). Keep in mind that if B's author ever changes those officer keys you won't crash, but you'll still need to adapt because your blank record would stay blank.<br />
<br />
<br />
This can be done in a bunch of situations, but you'll need some specific knowledge of how specific contexts work. You could want to use this method to nerf some effects from mod B, in which case you might need more than one background table (the zzzzz boys), including db/effects, which by itself does absolutely nothing, but using an effect key that doesn't exist in there will go kaboom.<br />
<br />
== ADVANCED SUBMODDING: SCRIPTS ==<br />
Uhh, sorry, not my field, but you can certainly do stuff. Either a scripty fella writes this or you have to ask in Discord about the specific case you’re facing.</div>Cataphhttps://tw-modding.com/index.php?title=Tolerant_Tables&diff=516Tolerant Tables2022-04-19T11:12:57Z<p>Cataph: /* Registry */</p>
<hr />
<div><br />
=== What’s a tolerant table? ===<br />
A tolerant table is an arbitrarily defined table that will not crash when a ''referenced'' key is missing in a certain column. This is particularly relevant when you are overriding new content from another mod and it turned out that you do not need to port two or more tables just to provide background references for those keys. Instead, you need just one table for the value to edit.<br />
<br />
Or to override specific keys with empty “cells”. Empty equals non-existing anyway.<br />
<br />
It may also be a trap leading to stuff not working in your own mod while also not crashing to desktop.<br />
<br />
== Registry ==<br />
Here is a list of such tables and streamline overrides. We encourage you all to report any new findings, preferably in alphabetical order. When reporting new tables, please include the date, because we do not know if or when this kind of behavior can abruptly change CA-side, and older dates can be considered suspicious when you have weird crashes after a patch.<br />
<br />
# ancillary effects junction<br />
#* tolerates missing ''ancillary'' as of 2nd November 2018<br />
# building_level_armed_citizenry_junctions_tables<br />
#* tolerates missing ''building level'' as of April 2020. NOT ''unit group''.<br />
# building culture variants<br />
#* tolerates missing ''building level'' and ''culture'' (''likely sc and faction as well'') as of 26th March 2019.<br />
# building effects junction<br />
#* tolerates missing ''building level'', but not ''effect'' as of 20th August 2018.<br />
# building units allowed<br />
#* tolerates missing ''building level'' as of 20th August 2018. Still works for WH2, no longer tolerant for WH3.<br />
# campaign_group_member_criteria_factions_tables<br />
#* tolerates missing ''faction'' key as of 2nd Orktober 2019.<br />
# campaign stances factions junctions<br />
#* tolerates missing ''faction'' as of 9th December 2018.<br />
# cdir events dilemma/incident/mission option junctions<br />
#* tolerates missing ''value'' and ''dilemma'', even in the assembly kit, as of 8th December 2018.<br />
# cdir military generator unit qualities<br />
#* tolerates missing ''unit'' as of 12th Orctober 2018.<br />
# effect bonus value ids unit sets<br />
#* tolerates missing ''effect'' as of 5th Orctober 2018.<br />
# effect bundles to effects junction<br />
#* tolerates missing ''effect'' as of 18th August 2018.<br />
# faction rebellion units junctions<br />
#* tolerates missing ''faction'' as of 2nd November 2018.<br />
# frontend faction effects junctions<br />
#* tolerates missing ''effect scope'' as of 1st January 2019.<br />
# land units<br />
#* tolerates missing ''missing weapon''<br />
#* tolerates missing ''historical+short descr, mount, attribute group'' as long as the unit is not selected in-game, as of April 2019.<br />
#* tolerates missing ''engine'', but the supposed engine will not show up in battle, as of 12th November 2018.<br />
# land units to unit abilities junction<br />
#* tolerates missing ''land unit'' as of 20th August 2018.<br />
# main units<br />
#* tolerates missing ''campaign mount'' as of 12th Orctober 2018.<br />
#* tolerates missing ''ui_groupings'' on startup sometimes, and will crash on clicking Custom Battles otherwise.<br />
# melee weapons<br />
#* tolerates missing ''contact effect phase'' as of 9th November 2018.<br />
# projectile bombardments<br />
#* tolerates missing ''projectile type'' as of 12th November 2018.<br />
# special ability phase stat effects<br />
#* tolerates missing ''phase'' as of 9th November 2018.<br />
# special ability groups to units junction<br />
#* tolerates missing ''unit'' as of 20th Orctober 2018.<br />
# technology nodes<br />
#* tolerates missing ''faction'' as of 1st January 2019.<br />
# unit set unit attribute junction<br />
#* tolerates wrong ''attribute'' as of 20th Orctober 2018.<br />
# unit set to unit junction<br />
#* tolerates missing ''main unit'' as of 20th August 2018.<br />
# unit variants<br />
#* tolerates missing ''land unit'' as of 26th March 2019.<br />
# units to groupings military permissions<br />
#* tolerates missing military group as of 12th December 2018.<br />
# ui unit bullet point unit overrides<br />
#* tolerates wrong ''unit'' as of 27th February 2019.<br />
[[Category:Warhammer 2]]</div>Cataphhttps://tw-modding.com/index.php?title=Tutorial:Submodding&diff=515Tutorial:Submodding2022-04-19T10:28:03Z<p>Cataph: /* ADVANCED SUBMODDING: DEPENDENCY MANAGER */</p>
<hr />
<div>=== Originally written by Cataph ===<br />
If you’re a modder, one of the most frequent comments next to romantical proposals (YMMV) will be “SFO/Radious/CTT/Lucky/yomama compatibility when”. Many modders don’t have an interest in making a submod simply because they don’t know and play a given overhaul and wouldn’t know how to balance it anyway.<br />
<br />
So, what if it could be you making that submod? Or maybe you just want to make X mod work better with Y. Be the submodder you want to see in the world!<br />
<br />
A few things first.<br />
<br />
== WHAT IS A SUBMOD? ==<br />
Basically, an optional plugin designed to make mod X work or work better with mod Y, thanks to this mod Z. A user that wants to use X and Y together will download mod Z and keep all three enabled.<br />
<br />
Can a submod be a standalone? Well, yes, but it wouldn’t be a submod then, would it? Besides, it’s normally a dick move to take mod X and fully reupload it with a few differences. Plus, it’s 90% never necessary and we’re going to see why.<br />
<br />
Ok, but can I just edit a mod and keep it to myself? Sure, keep in mind that you should rename the pack into something else to avoid automatic updates to overwrite what you changed.<br />
<br />
== WHY IS A SUBMOD? ==<br />
I need you to focus.<br />
<br />
== HOW IS A SUBMOD? ==<br />
Fine, thank you. About how it’s made, we don’t necessarily need mod X and Y to make sweet love to each other but only you, bloke with a basic knowledge of RPFM and TW modding.<br />
<br />
== WHAT DO? ==<br />
Ok, as a basic example let’s say we want a compatibility submod between the Sea Patrol mod and a fictional 2x unit size mod, so we want to grab whatever lines define unit numbers in the former and multiply those by 2. Daring.<br />
<br />
First thing we open the first mod as a reference, then we create a new pack for the submod. We’ll call it seapatrol_yourname_unitsize.pack.<br />
<br />
Upon viewing the db of Sea Patrol we see a whole lotta tables.<br />
<br />
Since I am a bloke with basic knowledge of [https://github.com/Frodo45127/rpfm/releases/latest RPFM] and TW modding, I know that unit sizes are in main_units.<br />
<br />
[[File:Submodding 1.jpg|frameless]]<br />
<br />
Thus, in the submod I’ll import said table/s by right click>Add…>Add from Packfile, find the pack, find the table and double click it. Close the add from packfile panel and we’re good to go, we have Sea Patrol’s main_units in our shizzle. We go in there and edit the numbers we want to change, in this case we select any num_men that is not a hero/lord’s, right click, apply math as ''{x}*2'' and done. Done? No, some of those units may be cavalry, so we need to adapt the number of mounts too. We import land_units as well and do the same thing on num_mounts. In the rarer case that there’s a multi-chariot unit, we leave mounts alone and multiply num_engines in land_units.<br />
<br />
== PRIORITY ==<br />
But it’s a submod, and we want to make sure we’re overriding the original mod’s values. No, not with load order on the mod manager, [[Troubleshooting|and incidentally you shouldn't touch that and you should use KMM]].<br />
<br />
We currently have two tables, we select those table fragments (in this case, called “AK_seahelm”) and we rename them to take priority according to this alphanumerical order:<blockquote>! # $ % & ‘ ( ) + , – ; = @ 0-9 a-z [ ] ^ _ ` { } ~ Where “!” wins over “a”.</blockquote>Usually, adding a “!” in front does it. But we also want to make clear what submod this is for. Right click> Rename> type ''!{x}_unitsize'', which will become “!AK_seahelm_unitsize”.<br />
<br />
''Note: DO NOT leave the table names as is, or you’ll crash. DO NOT leave a number as last character or it might glitch and crash anyway.''<br />
<br />
Aaaand, done! Now this submod of only two tables will correctly override unit sizes for a specific mod. Yeah, any non-vanilla key will be red in here, since you don’t define those in your pack, but no worries, it’s a submod that is designed to exist with the mod that actually has those keys.<br />
<br />
Now, like with any mod we make a PNG icon and upload if we want to share it publicly. If you upload it on the workshop, add mods X and Y as required by clicking on Add/Remove Required Items. This will prompt a user to go and fetch those required mods as well. Most of them will somehow ignore it and crash, but at least you tried.<br />
<br />
== ADDENDUM: ETIQUETTE ==<br />
By most accounts, a clean submod like the above doesn’t really need permission since you’re not stealing anything. However, you should still ask as good courtesy, and it can’t hurt to still let the og author know as they may link it in description, let you know about required changes, etc.<br />
<br />
It’s also good practice not to add donation links to a submod.<br />
<br />
== ADDENDUM: UPDATING ==<br />
It should be your interest and responsibility to stay up-to-date with the original mods as soon as you have time. For example if you’re submodding a unit mod and you see the ‘parent’ mod has updated with balance changes, some key changes or new units, you should definitely hear a couple bells ringing.<br />
<br />
Sometimes the parent mod changes a few keys and then you might even crash until you update.<br />
<br />
== ADVANCED SUBMODDING: BALANCE OVERHAULS ==<br />
The submodder should also be the one who is familiar with the overhaul they’re adapting a mod for. If you are at a loss about how to tweak some things, definitely consider asking one of the two original modders (depending on the kind of question) for advice on how to proceed. For example, “this unit is weird and I’m not sure what role it should keep”.<br />
<br />
== UNIQUE NUMERICAL IDs ==<br />
In some tables, each line has a unique numerical id in front of it (or sometimes way off like in unit_special_abilities). That’s specific for each line, and it works like other important keys like those in land_units or main_units, as in there can only be one line about that key or num id.<br />
<br />
Why am I saying all this? Because if in your submod you happen to need to ''add'' some lines in, for example, building_units_allowed, you’ll need your own unique num ids to make them work proppa. Pick any number below 2 billions and something and make sure they never repeat. This is important, do not continue off the num ids from the mod you’re submodding or you’ll cause issues at some point.<br />
<br />
== ADVANCED SUBMODDING: STICKY TABLES ==<br />
Some tables and related features are slightly more complicated to submod. For example, you want to remove a unit from a certain building level. Easy, go in building_units_allowed again. Remember those unique ids? '''Keep that exactly intact''' (so it still refers to that specific line from the original mod or vanilla line) and change the building to something that has no chance of being available, such as <code>wh_main_chs_port_ruin</code> or change the unit instead to a unit that is completely unavailble as well for anybody who has access to the given building. You could change both to be sure, but it's more confusing down the line.<br />
<br />
Until WH2, you could have typed random gibberish in the building key to better track your changes (e.g., add "_removed" to building keys), but in WH3 that causes a crash as both fields need to be valid.<br />
<br />
The underlying logic is that you're hijacking a precise data line (due to the unique id, numerical or not) and telling it to do something impossible.<br />
<br />
'''Harder example''': I really don’t want any of these units to have the new-fangled Edgelord Deluxe passive ability, which is added by this mod. Cool, that means I can kill that ability from existence without it ever affecting anything else. We do that by:<br />
<br />
* grabbing its line from unit_abilities, we make it hidden in UI.<br />
* grabbing its line from unit_special_abilities, we make it a passive (boolean). Make sure you remove any activated projectile/bombardment/summon etc from here too.<br />
* grabbing its line in special_ability_to_special_ability_phase_junctions. Change the phase to a new special_ability_phase that we created and that does absolutely nothing. There, done. The ability still exists, but does nothing and is invisible. In my own private jargon this is called a pillow. Again, ''notice that you’re neutering this ability for any unit that happens to get it.''<br />
<br />
'''Even harder example''': I want this unit to not have the Regeneration passive ability. Oooh, that’s a vanilla ability, isn’t it? We can’t just dumpster it. Either we tolerate it or…<br />
<br />
== ADVANCED SUBMODDING: DEPENDENCY MANAGER ==<br />
This is a RPFM feature. ''USE WITH CAUTION'', as it's essentially a data coring method. <br />
<br />
We enable it by right clicking on the packfile itself in tree view (not on a table, not on anything else, literally the very first line in tree view), Open>Open Dependency Manager. We add a line as if it was a table (ctrl+shift+A) and type EXACTLY the pack name of the mod we want to override. As in “AK_seahelm.pack”. From this point onwards, everything we do in the submod under identical paths will completely override content from the parent mod no matter the load or table order for stuff with the same name. Example, I can import a table, not change its name and completely delete its content. This would normally crash, but not with DepManager. <br />
<br />
I said use this with caution because if you do this you REALLY need to stay up-to-date with the og mod. For example, you can remove the line that gives unit A the Regen passive, and it will work. However, any further update from the parent mod in that table won’t take place unless you also mirror it. Again, this is normally not remotely required and you should steer clear of it because it’s just as bad as leaving a vanilla table called “data__”.<br />
<br />
Additionally, '''this will auto-enable the linked mod''' as soon as it’s in data/ as if it was a movie pack. As such, you don’t want to do this unless you’re doing a submod that already requires that linked mod. Because having stuff popping up even when you’ve disabled a mod is the worst.<br />
<br />
== ADVANCED SUBMODDING: BACKGROUND TABLES ==<br />
Let's say we aren't doing a submod whose only purpose is changing unit size for that other mod, but it's our own standalone mod A and we're doing some compatibility stuff to make it work better with B, without needing a separate submod C that requires both. '''For example, we want something from B in A, ''if B is also enabled''. Sometimes we can do that without C'''. <br />
<br />
Let's say I add some new units in A, and mod B adds fancy officers to all units. Officers are connected to the unit in db/land_units, but if we just pasted B's officer key in there, A would go boom if B is not enabled. We don't want that, and we may not want to force people to use B. So we paste that officer key there, replacing A_blank_record, but we also check what table that key relies on by hovering on its top (title, header, whatever), which is... db/land_units_officers. Without it, that officer key is going to go boom, [[Tolerant Tables|because it's not a tolerant key]], at all, to the point that even a non-existant officer needs an actual key called A_blank_record, which does exist. <br />
<br />
What we do is create land_units_officers, add that officer key under key, keep personality location as front or rear (honestly don't know if that crashes if left blank, don't care), but we leave the officer 1 etc columns empty. '''IMPORTANT: we rename this table fragment with something like zzzzz_mod_a_mod_b'''. Notice the zeds? Keep those in mind.<br />
<br />
So, what is this doing? It's telling the unit that it's going to use that officer group, but it's got nothing in it, no ''actual'' officers (battle_personalities). By using our mod A without B, the game finds an empty box for this officer, shrugs, and doesn't replace unit models with any officer personality. The game moves on without crashing, because that key exists. Basically, we created another blank record, but this very specific one gets filled in when B is enabled. <br />
<br />
Remember those zeds? They are there so that our blank record gets overridden by B's table (which we assume has a higher alphabetical priority than a bunch of zeds, unless B's author is not trying hard enough). Keep in mind that if B's author ever changes those officer keys you won't crash, but you'll still need to adapt because your blank record would stay blank.<br />
<br />
<br />
This can be done in a bunch of situations, but you'll need some specific knowledge of how specific contexts work. You could want to use this method to nerf some effects from mod B, in which case you might need more than one background table (the zzzzz boys), including db/effects, which by itself does absolutely nothing, but using an effect key that doesn't exist in there will go kaboom.<br />
<br />
== ADVANCED SUBMODDING: SCRIPTS ==<br />
Uhh, sorry, not my field, but you can certainly do stuff. Either a scripty fella writes this or you have to ask in Discord about the specific case you’re facing.</div>Cataphhttps://tw-modding.com/index.php?title=Tutorial:Submodding&diff=514Tutorial:Submodding2022-04-19T10:25:03Z<p>Cataph: /* ADVANCED SUBMODDING: STICKY TABLES */</p>
<hr />
<div>=== Originally written by Cataph ===<br />
If you’re a modder, one of the most frequent comments next to romantical proposals (YMMV) will be “SFO/Radious/CTT/Lucky/yomama compatibility when”. Many modders don’t have an interest in making a submod simply because they don’t know and play a given overhaul and wouldn’t know how to balance it anyway.<br />
<br />
So, what if it could be you making that submod? Or maybe you just want to make X mod work better with Y. Be the submodder you want to see in the world!<br />
<br />
A few things first.<br />
<br />
== WHAT IS A SUBMOD? ==<br />
Basically, an optional plugin designed to make mod X work or work better with mod Y, thanks to this mod Z. A user that wants to use X and Y together will download mod Z and keep all three enabled.<br />
<br />
Can a submod be a standalone? Well, yes, but it wouldn’t be a submod then, would it? Besides, it’s normally a dick move to take mod X and fully reupload it with a few differences. Plus, it’s 90% never necessary and we’re going to see why.<br />
<br />
Ok, but can I just edit a mod and keep it to myself? Sure, keep in mind that you should rename the pack into something else to avoid automatic updates to overwrite what you changed.<br />
<br />
== WHY IS A SUBMOD? ==<br />
I need you to focus.<br />
<br />
== HOW IS A SUBMOD? ==<br />
Fine, thank you. About how it’s made, we don’t necessarily need mod X and Y to make sweet love to each other but only you, bloke with a basic knowledge of RPFM and TW modding.<br />
<br />
== WHAT DO? ==<br />
Ok, as a basic example let’s say we want a compatibility submod between the Sea Patrol mod and a fictional 2x unit size mod, so we want to grab whatever lines define unit numbers in the former and multiply those by 2. Daring.<br />
<br />
First thing we open the first mod as a reference, then we create a new pack for the submod. We’ll call it seapatrol_yourname_unitsize.pack.<br />
<br />
Upon viewing the db of Sea Patrol we see a whole lotta tables.<br />
<br />
Since I am a bloke with basic knowledge of [https://github.com/Frodo45127/rpfm/releases/latest RPFM] and TW modding, I know that unit sizes are in main_units.<br />
<br />
[[File:Submodding 1.jpg|frameless]]<br />
<br />
Thus, in the submod I’ll import said table/s by right click>Add…>Add from Packfile, find the pack, find the table and double click it. Close the add from packfile panel and we’re good to go, we have Sea Patrol’s main_units in our shizzle. We go in there and edit the numbers we want to change, in this case we select any num_men that is not a hero/lord’s, right click, apply math as ''{x}*2'' and done. Done? No, some of those units may be cavalry, so we need to adapt the number of mounts too. We import land_units as well and do the same thing on num_mounts. In the rarer case that there’s a multi-chariot unit, we leave mounts alone and multiply num_engines in land_units.<br />
<br />
== PRIORITY ==<br />
But it’s a submod, and we want to make sure we’re overriding the original mod’s values. No, not with load order on the mod manager, [[Troubleshooting|and incidentally you shouldn't touch that and you should use KMM]].<br />
<br />
We currently have two tables, we select those table fragments (in this case, called “AK_seahelm”) and we rename them to take priority according to this alphanumerical order:<blockquote>! # $ % & ‘ ( ) + , – ; = @ 0-9 a-z [ ] ^ _ ` { } ~ Where “!” wins over “a”.</blockquote>Usually, adding a “!” in front does it. But we also want to make clear what submod this is for. Right click> Rename> type ''!{x}_unitsize'', which will become “!AK_seahelm_unitsize”.<br />
<br />
''Note: DO NOT leave the table names as is, or you’ll crash. DO NOT leave a number as last character or it might glitch and crash anyway.''<br />
<br />
Aaaand, done! Now this submod of only two tables will correctly override unit sizes for a specific mod. Yeah, any non-vanilla key will be red in here, since you don’t define those in your pack, but no worries, it’s a submod that is designed to exist with the mod that actually has those keys.<br />
<br />
Now, like with any mod we make a PNG icon and upload if we want to share it publicly. If you upload it on the workshop, add mods X and Y as required by clicking on Add/Remove Required Items. This will prompt a user to go and fetch those required mods as well. Most of them will somehow ignore it and crash, but at least you tried.<br />
<br />
== ADDENDUM: ETIQUETTE ==<br />
By most accounts, a clean submod like the above doesn’t really need permission since you’re not stealing anything. However, you should still ask as good courtesy, and it can’t hurt to still let the og author know as they may link it in description, let you know about required changes, etc.<br />
<br />
It’s also good practice not to add donation links to a submod.<br />
<br />
== ADDENDUM: UPDATING ==<br />
It should be your interest and responsibility to stay up-to-date with the original mods as soon as you have time. For example if you’re submodding a unit mod and you see the ‘parent’ mod has updated with balance changes, some key changes or new units, you should definitely hear a couple bells ringing.<br />
<br />
Sometimes the parent mod changes a few keys and then you might even crash until you update.<br />
<br />
== ADVANCED SUBMODDING: BALANCE OVERHAULS ==<br />
The submodder should also be the one who is familiar with the overhaul they’re adapting a mod for. If you are at a loss about how to tweak some things, definitely consider asking one of the two original modders (depending on the kind of question) for advice on how to proceed. For example, “this unit is weird and I’m not sure what role it should keep”.<br />
<br />
== UNIQUE NUMERICAL IDs ==<br />
In some tables, each line has a unique numerical id in front of it (or sometimes way off like in unit_special_abilities). That’s specific for each line, and it works like other important keys like those in land_units or main_units, as in there can only be one line about that key or num id.<br />
<br />
Why am I saying all this? Because if in your submod you happen to need to ''add'' some lines in, for example, building_units_allowed, you’ll need your own unique num ids to make them work proppa. Pick any number below 2 billions and something and make sure they never repeat. This is important, do not continue off the num ids from the mod you’re submodding or you’ll cause issues at some point.<br />
<br />
== ADVANCED SUBMODDING: STICKY TABLES ==<br />
Some tables and related features are slightly more complicated to submod. For example, you want to remove a unit from a certain building level. Easy, go in building_units_allowed again. Remember those unique ids? '''Keep that exactly intact''' (so it still refers to that specific line from the original mod or vanilla line) and change the building to something that has no chance of being available, such as <code>wh_main_chs_port_ruin</code> or change the unit instead to a unit that is completely unavailble as well for anybody who has access to the given building. You could change both to be sure, but it's more confusing down the line.<br />
<br />
Until WH2, you could have typed random gibberish in the building key to better track your changes (e.g., add "_removed" to building keys), but in WH3 that causes a crash as both fields need to be valid.<br />
<br />
The underlying logic is that you're hijacking a precise data line (due to the unique id, numerical or not) and telling it to do something impossible.<br />
<br />
'''Harder example''': I really don’t want any of these units to have the new-fangled Edgelord Deluxe passive ability, which is added by this mod. Cool, that means I can kill that ability from existence without it ever affecting anything else. We do that by:<br />
<br />
* grabbing its line from unit_abilities, we make it hidden in UI.<br />
* grabbing its line from unit_special_abilities, we make it a passive (boolean). Make sure you remove any activated projectile/bombardment/summon etc from here too.<br />
* grabbing its line in special_ability_to_special_ability_phase_junctions. Change the phase to a new special_ability_phase that we created and that does absolutely nothing. There, done. The ability still exists, but does nothing and is invisible. In my own private jargon this is called a pillow. Again, ''notice that you’re neutering this ability for any unit that happens to get it.''<br />
<br />
'''Even harder example''': I want this unit to not have the Regeneration passive ability. Oooh, that’s a vanilla ability, isn’t it? We can’t just dumpster it. Either we tolerate it or…<br />
<br />
== ADVANCED SUBMODDING: DEPENDENCY MANAGER ==<br />
This is a RPFM feature. ''USE WITH CAUTION''. We enable it by right clicking on the packfile itself in tree view (not on a table, not on anything else, literally the very first line in tree view), Open>Open Dependency Manager. We add a line as if it was a table (ctrl+shift+A) and type EXACTLY the pack name of the mod we want to override. As in “AK_seahelm.pack”. From this point onwards, everything we do in the submod will completely override content from the parent mod no matter the load or table order for stuff with the same name. Example, I can import a table, not change its name and completely delete its content. This would normally crash, but not with DepManager. I said use this with caution because if you do this you REALLY need to stay up-to-date with the og mod. For example, you can remove the line that gives unit A the Regen passive, and it will work. However, any further update from the parent mod in that table won’t take place unless you also mirror it. Again, this is normally not remotely required and you should steer clear of it because it’s just as bad as leaving a vanilla table called “data__”.<br />
<br />
Additionally, '''this will auto-enable the linked mod''' as soon as it’s in data/ as if it was a movie pack. As such, you don’t want to do this unless you’re doing a submod that already requires that linked mod. Because having stuff popping up even when you’ve disabled a mod is the worst.<br />
<br />
== ADVANCED SUBMODDING: BACKGROUND TABLES ==<br />
Let's say we aren't doing a submod whose only purpose is changing unit size for that other mod, but it's our own standalone mod A and we're doing some compatibility stuff to make it work better with B, without needing a separate submod C that requires both. '''For example, we want something from B in A, ''if B is also enabled''. Sometimes we can do that without C'''. <br />
<br />
Let's say I add some new units in A, and mod B adds fancy officers to all units. Officers are connected to the unit in db/land_units, but if we just pasted B's officer key in there, A would go boom if B is not enabled. We don't want that, and we may not want to force people to use B. So we paste that officer key there, replacing A_blank_record, but we also check what table that key relies on by hovering on its top (title, header, whatever), which is... db/land_units_officers. Without it, that officer key is going to go boom, [[Tolerant Tables|because it's not a tolerant key]], at all, to the point that even a non-existant officer needs an actual key called A_blank_record, which does exist. <br />
<br />
What we do is create land_units_officers, add that officer key under key, keep personality location as front or rear (honestly don't know if that crashes if left blank, don't care), but we leave the officer 1 etc columns empty. '''IMPORTANT: we rename this table fragment with something like zzzzz_mod_a_mod_b'''. Notice the zeds? Keep those in mind.<br />
<br />
So, what is this doing? It's telling the unit that it's going to use that officer group, but it's got nothing in it, no ''actual'' officers (battle_personalities). By using our mod A without B, the game finds an empty box for this officer, shrugs, and doesn't replace unit models with any officer personality. The game moves on without crashing, because that key exists. Basically, we created another blank record, but this very specific one gets filled in when B is enabled. <br />
<br />
Remember those zeds? They are there so that our blank record gets overridden by B's table (which we assume has a higher alphabetical priority than a bunch of zeds, unless B's author is not trying hard enough). Keep in mind that if B's author ever changes those officer keys you won't crash, but you'll still need to adapt because your blank record would stay blank.<br />
<br />
<br />
This can be done in a bunch of situations, but you'll need some specific knowledge of how specific contexts work. You could want to use this method to nerf some effects from mod B, in which case you might need more than one background table (the zzzzz boys), including db/effects, which by itself does absolutely nothing, but using an effect key that doesn't exist in there will go kaboom.<br />
<br />
== ADVANCED SUBMODDING: SCRIPTS ==<br />
Uhh, sorry, not my field, but you can certainly do stuff. Either a scripty fella writes this or you have to ask in Discord about the specific case you’re facing.</div>Cataphhttps://tw-modding.com/index.php?title=Tutorial:Submodding&diff=512Tutorial:Submodding2022-04-18T20:12:38Z<p>Cataph: </p>
<hr />
<div>=== Originally written by Cataph ===<br />
If you’re a modder, one of the most frequent comments next to romantical proposals (YMMV) will be “SFO/Radious/CTT/Lucky/yomama compatibility when”. Many modders don’t have an interest in making a submod simply because they don’t know and play a given overhaul and wouldn’t know how to balance it anyway.<br />
<br />
So, what if it could be you making that submod? Or maybe you just want to make X mod work better with Y. Be the submodder you want to see in the world!<br />
<br />
A few things first.<br />
<br />
== WHAT IS A SUBMOD? ==<br />
Basically, an optional plugin designed to make mod X work or work better with mod Y, thanks to this mod Z. A user that wants to use X and Y together will download mod Z and keep all three enabled.<br />
<br />
Can a submod be a standalone? Well, yes, but it wouldn’t be a submod then, would it? Besides, it’s normally a dick move to take mod X and fully reupload it with a few differences. Plus, it’s 90% never necessary and we’re going to see why.<br />
<br />
Ok, but can I just edit a mod and keep it to myself? Sure, keep in mind that you should rename the pack into something else to avoid automatic updates to overwrite what you changed.<br />
<br />
== WHY IS A SUBMOD? ==<br />
I need you to focus.<br />
<br />
== HOW IS A SUBMOD? ==<br />
Fine, thank you. About how it’s made, we don’t necessarily need mod X and Y to make sweet love to each other but only you, bloke with a basic knowledge of RPFM and TW modding.<br />
<br />
== WHAT DO? ==<br />
Ok, as a basic example let’s say we want a compatibility submod between the Sea Patrol mod and a fictional 2x unit size mod, so we want to grab whatever lines define unit numbers in the former and multiply those by 2. Daring.<br />
<br />
First thing we open the first mod as a reference, then we create a new pack for the submod. We’ll call it seapatrol_yourname_unitsize.pack.<br />
<br />
Upon viewing the db of Sea Patrol we see a whole lotta tables.<br />
<br />
Since I am a bloke with basic knowledge of [https://github.com/Frodo45127/rpfm/releases/latest RPFM] and TW modding, I know that unit sizes are in main_units.<br />
<br />
[[File:Submodding 1.jpg|frameless]]<br />
<br />
Thus, in the submod I’ll import said table/s by right click>Add…>Add from Packfile, find the pack, find the table and double click it. Close the add from packfile panel and we’re good to go, we have Sea Patrol’s main_units in our shizzle. We go in there and edit the numbers we want to change, in this case we select any num_men that is not a hero/lord’s, right click, apply math as ''{x}*2'' and done. Done? No, some of those units may be cavalry, so we need to adapt the number of mounts too. We import land_units as well and do the same thing on num_mounts. In the rarer case that there’s a multi-chariot unit, we leave mounts alone and multiply num_engines in land_units.<br />
<br />
== PRIORITY ==<br />
But it’s a submod, and we want to make sure we’re overriding the original mod’s values. No, not with load order on the mod manager, [[Troubleshooting|and incidentally you shouldn't touch that and you should use KMM]].<br />
<br />
We currently have two tables, we select those table fragments (in this case, called “AK_seahelm”) and we rename them to take priority according to this alphanumerical order:<blockquote>! # $ % & ‘ ( ) + , – ; = @ 0-9 a-z [ ] ^ _ ` { } ~ Where “!” wins over “a”.</blockquote>Usually, adding a “!” in front does it. But we also want to make clear what submod this is for. Right click> Rename> type ''!{x}_unitsize'', which will become “!AK_seahelm_unitsize”.<br />
<br />
''Note: DO NOT leave the table names as is, or you’ll crash. DO NOT leave a number as last character or it might glitch and crash anyway.''<br />
<br />
Aaaand, done! Now this submod of only two tables will correctly override unit sizes for a specific mod. Yeah, any non-vanilla key will be red in here, since you don’t define those in your pack, but no worries, it’s a submod that is designed to exist with the mod that actually has those keys.<br />
<br />
Now, like with any mod we make a PNG icon and upload if we want to share it publicly. If you upload it on the workshop, add mods X and Y as required by clicking on Add/Remove Required Items. This will prompt a user to go and fetch those required mods as well. Most of them will somehow ignore it and crash, but at least you tried.<br />
<br />
== ADDENDUM: ETIQUETTE ==<br />
By most accounts, a clean submod like the above doesn’t really need permission since you’re not stealing anything. However, you should still ask as good courtesy, and it can’t hurt to still let the og author know as they may link it in description, let you know about required changes, etc.<br />
<br />
It’s also good practice not to add donation links to a submod.<br />
<br />
== ADDENDUM: UPDATING ==<br />
It should be your interest and responsibility to stay up-to-date with the original mods as soon as you have time. For example if you’re submodding a unit mod and you see the ‘parent’ mod has updated with balance changes, some key changes or new units, you should definitely hear a couple bells ringing.<br />
<br />
Sometimes the parent mod changes a few keys and then you might even crash until you update.<br />
<br />
== ADVANCED SUBMODDING: BALANCE OVERHAULS ==<br />
The submodder should also be the one who is familiar with the overhaul they’re adapting a mod for. If you are at a loss about how to tweak some things, definitely consider asking one of the two original modders (depending on the kind of question) for advice on how to proceed. For example, “this unit is weird and I’m not sure what role it should keep”.<br />
<br />
== UNIQUE NUMERICAL IDs ==<br />
In some tables, each line has a unique numerical id in front of it (or sometimes way off like in unit_special_abilities). That’s specific for each line, and it works like other important keys like those in land_units or main_units, as in there can only be one line about that key or num id.<br />
<br />
Why am I saying all this? Because if in your submod you happen to need to ''add'' some lines in, for example, building_units_allowed, you’ll need your own unique num ids to make them work proppa. Pick any number below 2 billions and something and make sure they never repeat. This is important, do not continue off the num ids from the mod you’re submodding or you’ll cause issues at some point.<br />
<br />
== ADVANCED SUBMODDING: STICKY TABLES ==<br />
Some tables and related features are slightly more complicated to submod. For example, you want to remove a unit from a certain building level. Easy, go in building_units_allowed again. Remember those unique ids? Keep that exactly intact (so it still refers to that specific line from the og mod) and '''if it's WH2''' change the building to random gibberish (since that specific field is tolerant, aka won’t crash on invalid key) or even better rename it to “originalbuilding_REMOVED” so you will immediately know in the future what building level it used to be. DO NOT touch the unit field. Bam, the building level will be red in RPFM, won’t crash, and that unit won’t be available there.<br />
[[File:Submodding 2.jpg|left|frameless|533x533px]]<br />
<br />
<br />
<br />
In Warhammer 3, this will crash. Change the unit to something completely unavailable instead. <br />
'''Harder example''': I really don’t want any of these units to have the new-fangled Edgelord Deluxe passive ability, which is added by this mod. Cool, that means I can kill that ability from existence without it ever affecting anything else. We do that by:<br />
<br />
* grabbing its line from unit_abilities, we make it hidden in UI.<br />
* grabbing its line from unit_special_abilities, we make it a passive (boolean). Make sure you remove any activated projectile/bombardment/summon etc from here too.<br />
* grabbing its line in special_ability_to_special_ability_phase_junctions. Change the phase to a new special_ability_phase that we created and that does absolutely nothing. There, done. The ability still exists, but does nothing and is invisible. In my own private jargon this is called a pillow. Again, ''notice that you’re neutering this ability for any unit that happens to get it.''<br />
<br />
'''Even harder example''': I want this unit to not have the Regeneration passive ability. Oooh, that’s a vanilla ability, isn’t it? We can’t just dumpster it. Either we tolerate it or…<br />
<br />
== ADVANCED SUBMODDING: DEPENDENCY MANAGER ==<br />
This is a RPFM feature. ''USE WITH CAUTION''. We enable it by right clicking on the packfile itself in tree view (not on a table, not on anything else, literally the very first line in tree view), Open>Open Dependency Manager. We add a line as if it was a table (ctrl+shift+A) and type EXACTLY the pack name of the mod we want to override. As in “AK_seahelm.pack”. From this point onwards, everything we do in the submod will completely override content from the parent mod no matter the load or table order for stuff with the same name. Example, I can import a table, not change its name and completely delete its content. This would normally crash, but not with DepManager. I said use this with caution because if you do this you REALLY need to stay up-to-date with the og mod. For example, you can remove the line that gives unit A the Regen passive, and it will work. However, any further update from the parent mod in that table won’t take place unless you also mirror it. Again, this is normally not remotely required and you should steer clear of it because it’s just as bad as leaving a vanilla table called “data__”.<br />
<br />
Additionally, '''this will auto-enable the linked mod''' as soon as it’s in data/ as if it was a movie pack. As such, you don’t want to do this unless you’re doing a submod that already requires that linked mod. Because having stuff popping up even when you’ve disabled a mod is the worst.<br />
<br />
== ADVANCED SUBMODDING: BACKGROUND TABLES ==<br />
Let's say we aren't doing a submod whose only purpose is changing unit size for that other mod, but it's our own standalone mod A and we're doing some compatibility stuff to make it work better with B, without needing a separate submod C that requires both. '''For example, we want something from B in A, ''if B is also enabled''. Sometimes we can do that without C'''. <br />
<br />
Let's say I add some new units in A, and mod B adds fancy officers to all units. Officers are connected to the unit in db/land_units, but if we just pasted B's officer key in there, A would go boom if B is not enabled. We don't want that, and we may not want to force people to use B. So we paste that officer key there, replacing A_blank_record, but we also check what table that key relies on by hovering on its top (title, header, whatever), which is... db/land_units_officers. Without it, that officer key is going to go boom, [[Tolerant Tables|because it's not a tolerant key]], at all, to the point that even a non-existant officer needs an actual key called A_blank_record, which does exist. <br />
<br />
What we do is create land_units_officers, add that officer key under key, keep personality location as front or rear (honestly don't know if that crashes if left blank, don't care), but we leave the officer 1 etc columns empty. '''IMPORTANT: we rename this table fragment with something like zzzzz_mod_a_mod_b'''. Notice the zeds? Keep those in mind.<br />
<br />
So, what is this doing? It's telling the unit that it's going to use that officer group, but it's got nothing in it, no ''actual'' officers (battle_personalities). By using our mod A without B, the game finds an empty box for this officer, shrugs, and doesn't replace unit models with any officer personality. The game moves on without crashing, because that key exists. Basically, we created another blank record, but this very specific one gets filled in when B is enabled. <br />
<br />
Remember those zeds? They are there so that our blank record gets overridden by B's table (which we assume has a higher alphabetical priority than a bunch of zeds, unless B's author is not trying hard enough). Keep in mind that if B's author ever changes those officer keys you won't crash, but you'll still need to adapt because your blank record would stay blank.<br />
<br />
<br />
This can be done in a bunch of situations, but you'll need some specific knowledge of how specific contexts work. You could want to use this method to nerf some effects from mod B, in which case you might need more than one background table (the zzzzz boys), including db/effects, which by itself does absolutely nothing, but using an effect key that doesn't exist in there will go kaboom.<br />
<br />
== ADVANCED SUBMODDING: SCRIPTS ==<br />
Uhh, sorry, not my field, but you can certainly do stuff. Either a scripty fella writes this or you have to ask in Discord about the specific case you’re facing.</div>Cataphhttps://tw-modding.com/index.php?title=Troubleshooting&diff=502Troubleshooting2022-04-06T11:15:53Z<p>Cataph: </p>
<hr />
<div>This is a troubleshooting guide for mod users in TW: Warhammer 2 and now 3. The generic pointers should be valid for all recent TW games.<br />
<br />
– Your neighbourhood Cataph<br />
<br />
<blockquote><br />
<br />
<br />
'''!!!'''<br />
<br />
'''WARHAMMER 3 PRELIMINARY HIGHLIGHT (will update and merge better later on)'''<br />
<br />
* [https://discord.com/channels/373745291289034763/650269940393443328/960904987523809340 Remove any movie pack from the pre-workshop interim period.] <br />
* Delete any user script you may have tried using if you were a masochist.<br />
* Delete the <code>-dx11</code> override you may have put on Steam (game>properties>launch options in the lower right must be empty). <br />
* Don't launch the game from the taskbar or from the exe, as it won't load mods; use the Play button or steam shortcut, or even RPFM's launch.<br />
* Go to <code>%appdata%\The Creative Assembly\Launcher</code> and delete <code>moddata.dat</code>. In case the launcher got stuck.<br />
* Since Steam is doodoo, data may get corrupted. Unsubscribe, and wait for the mod to be removed. If it needs to be manually removed, go to <code>steamapps\workshop\content\1142710\</code>xyz where xyz is the mod id on its url. Then redownload and wait.<br />
* Verify game cache.<br />
<br />
'''!!!'''</blockquote><br />
<br />
== Managing Mods ==<br />
So, you have subscribed to mods on the workshop. You now open CA’s current mod manager (hereby called George) and – blimey, they don’t work or something’s not right.<br />
<br />
First thing to keep in mind, if you have issues with George you should definitely report them to CA so that they know what they should look at.<br />
<br />
That said, you can just use the [https://github.com/Kaedrin/warhammer-mod-manager community mod manager] (normally called KMM). Long story short, George is unwieldy and has grown responsible for a lot of issues of its own, becoming hated by modders and users alike. Among other things, KMM is more reliable and provides mod profiles.<br />
<br />
==== How to Load Order ====<br />
KMM and even George have a function to manually change how mods are loaded, which is an old habit of a lot of other modding communities, so you’d be tempted to change load order manually, right?<br />
<br />
'''''WRONG.'''''<br />
<br />
Ok, I’ll spare some time for this before we get into the actually useful tips, because this is one of the nastiest tropes around the community. The truth is that compatibility-minded modders already handle load order on their own as far as possible. Manually changing load order may do absolutely nothing, shift the problem somewhere else or break everything.<br />
<br />
Some context. There are six main possible categories of folders in a mod pack and this is how they handle load order, either through actual pack name or table name:<br />
<br />
* '''Db''': table name.<br />
* '''Scripts''': pack name.<br />
* '''Startpos''' (the big bad): pack name.<br />
* '''Text''': table name.<br />
* '''UI''': pack name.<br />
* '''Variants''': pack name.<br />
<br />
And that is if the modder doesn’t redirect content (e.g., telling database to use a different ui icon). KMM can only affect pack name order, so there are things like balance submods (Db overrides) that are still completely in the hands of the modders and intentionally so.<br />
<br />
In other words, there are only two possible cases in which you may want to alter load order manually: UI and variants, basically if you want to use specific reskin B.pack in the midst of larger reskin A.pack, in which case you push B on top.<br />
<br />
''In conclusion, you want to follow KMM’s instructions, give Steam time to download/remove mods and mostly keep load order in an alphabetical fashion (e.g. order by name and save profile), especially after adding new mods.''<br />
<br />
Which, incidentally, is this:<br />
<br />
! # $ % & ‘ ( ) + , – ; = @ 0-9 a-z [ ] ^ _ ` { } ~<br />
<br />
Where “!” wins over “a”.<br />
<br />
== Common Troubleshooting ==<br />
In an efficient mod, at least half of the reported issues are down to user error or what is technically called launcher f***-up. We’re going to try and cut that amount down for the greater good.<br />
<br />
==== User good practices: ====<br />
<br />
# Read the mod description. Seriously, this alone would prevent 80% of comments on Steam pages. Even if a description looks long, do it, it’s there for a reason. Some mods will also have FAQs or a list of known issues, incompatibilities and instructions. Read the comments before yours too if you have to post one. There’s an excellent chance the question you’re going to ask is already answered in in descriptions, FAQs and recent comments.<br />
# Don’t ignore the required items. The mod may show you a popup upon subscribing, disregarding that is almost always cue for disaster. This popup is ''not'' shown when subbing from a Steam collection (thanks Gaben), so actually check the mod’s page.<br />
# Keep the mod list in alphanumerical order. We’ve been over that already. If you have new mods that have popped at the tail of the list, just click again on the <code>File Name</code> column in KMM and save your profile.<br />
# Troubleshoot yourself! The thing is, we don’t have time to help everybody, and in most cases the problem is local. We’ll get to best practices on this, don’t worry.<br />
# Upon commenting about an issue, provide context. Ok, you did everything right but that ugly bug is still there. That’s fine. The worst thing you could do at this point is comment “mod doesn’t work” because that means absolutely nothing. Modders aren’t telepaths. Steam comments aren’t the best place for this, so use a discussion or the discord server/channel lurked by that given modder.<br />
#* Context: when and how the thing happened. E.g. during the interturn after X’s turn, or clicking this button, whether it was Vortex/ME/multiplayer, custom battle or campaign battle.<br />
#* Mod list: Link a collection or a screenshot to the KMM list. For example, the big thing is not being naif enough that the overhaul in your list can’t affect other mods. For some reason, sometimes it feels like pulling teeth to know what else is there.<br />
#* Screenshot: always helps for clarity and visual context.<br />
#* Save game: if requested, you can find your save game in (example) C:\Users\%USER%\AppData\Roaming\The Creative Assembly\Warhammer2\save_games. Remember the mod list, because the modder may not be able to load without it.<br />
#* Results of your own troubleshooting: for example it’s good to know it happens with that one mod only. Relatedly, if you posted about an issue and later find the cause, let us know.<br />
<br />
''This list is of course not meant to insult anybody’s intelligence, but you’d be surprised at how many issues and massive wastes of time are due to neglect of these simple rules. Following them is in the user’s interest in order to find a solution sooner, and it will allow the modder more time for improvement rather than wasted in unnecessary bug-hunts.''<br />
<br />
<br />
'''Frequent Steam issues:'''<br />
# Corrupted and botched download: this is relatively frequent and it causes 'random' crashes with mods that ''don't'' otherwise crash. Delete locally and redownload until it works. If using KMM, use the unsub+delete option, and resub.<br />
# Mod not updated: Steam may also not fetch the latest version of a random TW mod. At the merest issue, always double check the local file's last date and that of the mod on the workshop (on the top right, Last Updated).<br />
<br />
==== Common launcher/game issues: ====<br />
<br />
# Failed to download/remove mod. This happens relatively often and if in doubt you should always check in the mod download folder (example: Z:\Steamsteamapps\workshop\content\594570\??????) whether that mod was successfully downloaded/removed. Open George/Steam again until it is. The final folder id is the same as the one on the mod’s Steam url and you can sort by date for the most recently poked folder.<br />
#* More on this if using KMM: Kaedrin’s manager copies packs from that content/ to the game’s data/ folder. Moreover, when mods update you will likely need to refresh/restart KMM.<br />
# Ghost mods. Definitely spooky. You have toggled off that mod, but somehow it turns out it was still being loaded and crashing your game. Or a mod updates and self-enables. Using KMM seems enough to prevent this kind of poltergeist.<br />
# Random crashes: sometimes stuff just breaks and you have to verify your game’s cache: Steam Library>right click on game>Properties>Local Files>Verify yadda yadda. Or check with the game’s support.<br />
# Failure to enable mods or borked load order: sometimes George simply won’t fire what you want, or you’ve accidentally touched load order and now it won’t revert. Use KMM.<br />
# Soft cap: as of King’s Shilling update, this is completely fixed and the cap is indefinite. You can stop merging stuff or believing conspiracies about CA intentionally capping mods.<br />
<br />
==== Some specific KMM issues: ====<br />
<br />
# Doesn’t work: KMM can be installed anywhere, BUT in the game’s stuff. Don’t install in data/ or anywhere close. Hell, plop it in the desktop.<br />
# Doesn’t work cause I’m pirating the game: KMM can smell piracy. Buy the game.<br />
# KMM freezes on start: reboot it.<br />
# Game crashes on load: if you get that or suddenly crash for no good reason, just refresh/restart KMM first thing. If it persists, time to actually troubleshoot. KMM doesn’t often suffer of corrupted downloads but it may theoretically still happen.<br />
# Movie packs: still crashing? Even with no packs enabled at all? Ok, keep in mind that once they are in the data/ folder, movie packs will always be enabled no matter if you’ve toggled them on or not. KMM shows if a mod is a conventional pack file or movie pack (Type column), and it will tell you on the lower right how many movie packs you’re currently running. To effectively disable a movie pack, use the right click option <code>Unsubscribe (Steam) and Delete</code>. This should get rid of that mod in one go, instead of doing a mix of things that will probably still cause KMM to copy the pack again. Movie packs are mostly used for vfx, but sometimes also come with data baggage that you don’t always want around. Modders: you ''really'' want to only have harmless vfx in the movie pack, not db and scripts.<br />
<br />
== APPENDIX: Trimming the Mod List ==<br />
Again, there is virtually no such thing as a soft cap in WH2 anymore. So it’s up to you to keep your mod list functional, and if you have more than 100 mods enabled, risks and maintenance time will increase for you. Making that work is up to how careful you are, and even if a mod list doesn’t produce an instant crash you can’t be sure there aren’t less visible issues, e.g. script breaks.<br />
<br />
As a rule of thumb, don’t be cocky with your list of 250 mods because it’s all fun and games until everything works perfectly (and with those numbers chances are it doesn’t already, you just can’t see it), at which point there’s a lot of stuff to check.<br />
<br />
If you’re not experienced yet (and don’t assume you are just because you played Skyrim, this is different), use the mod list of someone that has very carefully been curating it, and check that it looks ok with the help of the modders themselves. For example, start by a modder’s own collection on Steam, they often have one.<br />
<br />
=== Finding the culprit ===<br />
The usual problem with large mod lists is this: bad, I got a crash; worse, which one of the N mods I have is the culprit?<br />
<br />
==== Generic pointers: ====<br />
<br />
* Pure Text, Variant and UI mods can basically NEVER crash the game for the user. If they do, it’s a botched download.<br />
* Momentarily sort by date either on KMM to find the most recent updates, if you didn’t add additional mods those ''may'' be responsible.<br />
* If you had the issue during a campaign, do not remove mods that have custom items, units or buildings because you’re just going to crash harder if those are around in the campaign map.<br />
* As mentioned above, watch out for movie packs. If you’re inexplicably crashing even with no mods on, you might have a movie pack with crashy data in it.<br />
<br />
==== Bisect and Conquer: ====<br />
Especially when dealing with big mod lists, the quickest method is to enable half of it. If you crash, that’s the troublesome half. Halven again to tighten the noose.<br />
<br />
Keep in mind mod requirements while you do this.<br />
<br />
If you want to check on a particular mod, disable everything and load the bare minimum to make that mod work, in other words mod+whatever required mods that comes with. And up from there, adding one or small groups of mods at a time until you can reproduce the issue.<br />
<br />
It’s patient work but the modder will appreciate it, and it takes less than panicking for hours in a comment section. Assume that a modder won’t troubleshoot your mod list of 150 packs because you say it’s their mod doing it, unless they have proof because you tested without anything else plus requirements.<br />
<br />
Remember: a happy modder is a happy user.<br />
<br />
== APPENDIX: Scripts ==<br />
Scripts are being increasingly used by mods. While most scripters are getting smarter by the day to maintain compatibility, some require a framework or some mods will just struggle to work when there are too many mods around.<br />
<br />
You may encounter symptoms of broken scripts, due to botched downloads, bad compatibility or just plain unforeseen issues because we can just mess stuff up sometimes. Script glitches tend to be quite tricky to root out.<br />
<br />
A few examples of broken scripts:<br />
<br />
* Starting lords that should be custom are not custom, or don’t spawn, or don’t have the correct army or settlement.<br />
* Sword of Khaine button is unchained right off.<br />
* Chaos and all Rogue armies may spawn immediately.<br />
* Campaign camera on a fresh campaign starts zoomed-out and doesn’t pan in.<br />
* Chivalry starts at 0.<br />
* One of the worst, characters do not gain XP (this may sometimes happen in full vanilla too, requires repair).<br />
<br />
==== Scropt broken, what do? ====<br />
In some cases, it’s just a botched download (see Launcher error 3). Otherwise it gets trickier and requires you to start trimming the mod list to find the culprit. When/if you report the issue to modders, remember to provide as much info as humanly possible because finding a script break can turn ugly and complicated.<br />
<br />
Particularly useful to help with scripting issues: please enable [https://steamcommunity.com/sharedfiles/filedetails/?id=1271877744 this debugger], reproduce the bug and send the resulting log, which will be a lenghty txt generated in ''Steam\steamapps\common\Total War WARHAMMER II''. Specific scripty mods may come with additional instructions in their mod descriptions/faqs.<br />
<br />
Do not keep the script logger there unless you need it, since it will noticeably slow down your game.<br />
<br />
One of the most frequent issues at the moment is a performance-related clog-up at the start of a campaign. This basically means that too many scripts are trying to fit into that time frame to do their stuff (legendary lords, changing armies, this kinda stuff) and results in some of them not working. This is where size of the mod list, in regards to any mod with a first-tick script, becomes serious.<br />
<br />
Quick note about Communiy Modding Framework: an obsolete scripting system, it’s basically only used by Crynsos’s unlocker at this point in time (september 2020) and will cause issues more often than not when enabled and not required.<br />
<br />
''Basically disable it unless you’re using CFU''.<br />
<br />
I repeat, it often breaks stuff. When in doubt, shoot it in the face.<br />
<br />
== APPENDIX: [https://steamcommunity.com/sharedfiles/filedetails/?id=1354363596 UI Modding Framework] ==<br />
This framework is technically not required to do UI modding at all, but it may be used as a framework by some scripty mods. Unless it happens to have broken functions after a patch, there are zero reasons not to have it around just in case one of your mods is actually using it or starts doing it.<br />
<br />
== APPENDIX: [https://steamcommunity.com/sharedfiles/filedetails/?id=1354363596 Mod Configuration Tool] ==<br />
This other framework is used to provide settings for compatible mods, i.e. to tweak some details at your heart’s content. Usually a good thing to keep it around because there’s quite a few mods supporting it, or that may do it in the future. For example, you may use it to configure some scripts to fire in a performance mode to reduce impact on campaign start.</div>Cataphhttps://tw-modding.com/index.php?title=Troubleshooting&diff=501Troubleshooting2022-04-06T11:09:46Z<p>Cataph: WH3 temp highlight</p>
<hr />
<div>This is a troubleshooting guide for mod users in TW: Warhammer 2 and now 3. The generic pointers should be valid for all recent TW games.<br />
<br />
– Your neighbourhood Cataph<br />
<br />
<blockquote><br />
<br />
<br />
'''!!!'''<br />
<br />
'''WARHAMMER 3 PRELIMINARY HIGHLIGHT (will update and merge better later on)'''<br />
<br />
* [https://discord.com/channels/373745291289034763/650269940393443328/960904987523809340 Remove any movie pack from the pre-workshop interim period.] <br />
* Delete any user script you may have tried using if you were a masochist.<br />
* Delete the <code>-dx11</code> override you may have put on Steam (game>properties>launch options in the lower right must be empty). <br />
* Don't launch the game from the taskbar or from the exe, it won't load mods; use the Play button or steam shortcut, or even RPFM's launch.<br />
* Try going to <code>%appdata%\The Creative Assembly\Launcher</code> and deleting the moddata.dat file that can be found there. If your launcher is causing problems, that will hopefully fix it.<br />
* Sometimes the download gets corrupted. You should unsubscribe, delete the mod from your disk manually if steam does not do so. Mods for this game are found in: steamapps\workshop\content\1142710\xyz where xyz is the mod id on its url. Then redownload and wait.<br />
* Verify game cache.<br />
<br />
'''!!!'''</blockquote><br />
<br />
== Managing Mods ==<br />
So, you have subscribed to mods on the workshop. You now open CA’s current mod manager (hereby called George) and – blimey, they don’t work or something’s not right.<br />
<br />
First thing to keep in mind, if you have issues with George you should definitely report them to CA so that they know what they should look at.<br />
<br />
That said, you can just use the [https://github.com/Kaedrin/warhammer-mod-manager community mod manager] (normally called KMM). Long story short, George is unwieldy and has grown responsible for a lot of issues of its own, becoming hated by modders and users alike. Among other things, KMM is more reliable and provides mod profiles.<br />
<br />
==== How to Load Order ====<br />
KMM and even George have a function to manually change how mods are loaded, which is an old habit of a lot of other modding communities, so you’d be tempted to change load order manually, right?<br />
<br />
'''''WRONG.'''''<br />
<br />
Ok, I’ll spare some time for this before we get into the actually useful tips, because this is one of the nastiest tropes around the community. The truth is that compatibility-minded modders already handle load order on their own as far as possible. Manually changing load order may do absolutely nothing, shift the problem somewhere else or break everything.<br />
<br />
Some context. There are six main possible categories of folders in a mod pack and this is how they handle load order, either through actual pack name or table name:<br />
<br />
* '''Db''': table name.<br />
* '''Scripts''': pack name.<br />
* '''Startpos''' (the big bad): pack name.<br />
* '''Text''': table name.<br />
* '''UI''': pack name.<br />
* '''Variants''': pack name.<br />
<br />
And that is if the modder doesn’t redirect content (e.g., telling database to use a different ui icon). KMM can only affect pack name order, so there are things like balance submods (Db overrides) that are still completely in the hands of the modders and intentionally so.<br />
<br />
In other words, there are only two possible cases in which you may want to alter load order manually: UI and variants, basically if you want to use specific reskin B.pack in the midst of larger reskin A.pack, in which case you push B on top.<br />
<br />
''In conclusion, you want to follow KMM’s instructions, give Steam time to download/remove mods and mostly keep load order in an alphabetical fashion (e.g. order by name and save profile), especially after adding new mods.''<br />
<br />
Which, incidentally, is this:<br />
<br />
! # $ % & ‘ ( ) + , – ; = @ 0-9 a-z [ ] ^ _ ` { } ~<br />
<br />
Where “!” wins over “a”.<br />
<br />
== Common Troubleshooting ==<br />
In an efficient mod, at least half of the reported issues are down to user error or what is technically called launcher f***-up. We’re going to try and cut that amount down for the greater good.<br />
<br />
==== User good practices: ====<br />
<br />
# Read the mod description. Seriously, this alone would prevent 80% of comments on Steam pages. Even if a description looks long, do it, it’s there for a reason. Some mods will also have FAQs or a list of known issues, incompatibilities and instructions. Read the comments before yours too if you have to post one. There’s an excellent chance the question you’re going to ask is already answered in in descriptions, FAQs and recent comments.<br />
# Don’t ignore the required items. The mod may show you a popup upon subscribing, disregarding that is almost always cue for disaster. This popup is ''not'' shown when subbing from a Steam collection (thanks Gaben), so actually check the mod’s page.<br />
# Keep the mod list in alphanumerical order. We’ve been over that already. If you have new mods that have popped at the tail of the list, just click again on the <code>File Name</code> column in KMM and save your profile.<br />
# Troubleshoot yourself! The thing is, we don’t have time to help everybody, and in most cases the problem is local. We’ll get to best practices on this, don’t worry.<br />
# Upon commenting about an issue, provide context. Ok, you did everything right but that ugly bug is still there. That’s fine. The worst thing you could do at this point is comment “mod doesn’t work” because that means absolutely nothing. Modders aren’t telepaths. Steam comments aren’t the best place for this, so use a discussion or the discord server/channel lurked by that given modder.<br />
#* Context: when and how the thing happened. E.g. during the interturn after X’s turn, or clicking this button, whether it was Vortex/ME/multiplayer, custom battle or campaign battle.<br />
#* Mod list: Link a collection or a screenshot to the KMM list. For example, the big thing is not being naif enough that the overhaul in your list can’t affect other mods. For some reason, sometimes it feels like pulling teeth to know what else is there.<br />
#* Screenshot: always helps for clarity and visual context.<br />
#* Save game: if requested, you can find your save game in (example) C:\Users\%USER%\AppData\Roaming\The Creative Assembly\Warhammer2\save_games. Remember the mod list, because the modder may not be able to load without it.<br />
#* Results of your own troubleshooting: for example it’s good to know it happens with that one mod only. Relatedly, if you posted about an issue and later find the cause, let us know.<br />
<br />
''This list is of course not meant to insult anybody’s intelligence, but you’d be surprised at how many issues and massive wastes of time are due to neglect of these simple rules. Following them is in the user’s interest in order to find a solution sooner, and it will allow the modder more time for improvement rather than wasted in unnecessary bug-hunts.''<br />
<br />
<br />
'''Frequent Steam issues:'''<br />
# Corrupted and botched download: this is relatively frequent and it causes 'random' crashes with mods that ''don't'' otherwise crash. Delete locally and redownload until it works. If using KMM, use the unsub+delete option, and resub.<br />
# Mod not updated: Steam may also not fetch the latest version of a random TW mod. At the merest issue, always double check the local file's last date and that of the mod on the workshop (on the top right, Last Updated).<br />
<br />
==== Common launcher/game issues: ====<br />
<br />
# Failed to download/remove mod. This happens relatively often and if in doubt you should always check in the mod download folder (example: Z:\Steamsteamapps\workshop\content\594570\??????) whether that mod was successfully downloaded/removed. Open George/Steam again until it is. The final folder id is the same as the one on the mod’s Steam url and you can sort by date for the most recently poked folder.<br />
#* More on this if using KMM: Kaedrin’s manager copies packs from that content/ to the game’s data/ folder. Moreover, when mods update you will likely need to refresh/restart KMM.<br />
# Ghost mods. Definitely spooky. You have toggled off that mod, but somehow it turns out it was still being loaded and crashing your game. Or a mod updates and self-enables. Using KMM seems enough to prevent this kind of poltergeist.<br />
# Random crashes: sometimes stuff just breaks and you have to verify your game’s cache: Steam Library>right click on game>Properties>Local Files>Verify yadda yadda. Or check with the game’s support.<br />
# Failure to enable mods or borked load order: sometimes George simply won’t fire what you want, or you’ve accidentally touched load order and now it won’t revert. Use KMM.<br />
# Soft cap: as of King’s Shilling update, this is completely fixed and the cap is indefinite. You can stop merging stuff or believing conspiracies about CA intentionally capping mods.<br />
<br />
==== Some specific KMM issues: ====<br />
<br />
# Doesn’t work: KMM can be installed anywhere, BUT in the game’s stuff. Don’t install in data/ or anywhere close. Hell, plop it in the desktop.<br />
# Doesn’t work cause I’m pirating the game: KMM can smell piracy. Buy the game.<br />
# KMM freezes on start: reboot it.<br />
# Game crashes on load: if you get that or suddenly crash for no good reason, just refresh/restart KMM first thing. If it persists, time to actually troubleshoot. KMM doesn’t often suffer of corrupted downloads but it may theoretically still happen.<br />
# Movie packs: still crashing? Even with no packs enabled at all? Ok, keep in mind that once they are in the data/ folder, movie packs will always be enabled no matter if you’ve toggled them on or not. KMM shows if a mod is a conventional pack file or movie pack (Type column), and it will tell you on the lower right how many movie packs you’re currently running. To effectively disable a movie pack, use the right click option <code>Unsubscribe (Steam) and Delete</code>. This should get rid of that mod in one go, instead of doing a mix of things that will probably still cause KMM to copy the pack again. Movie packs are mostly used for vfx, but sometimes also come with data baggage that you don’t always want around. Modders: you ''really'' want to only have harmless vfx in the movie pack, not db and scripts.<br />
<br />
== APPENDIX: Trimming the Mod List ==<br />
Again, there is virtually no such thing as a soft cap in WH2 anymore. So it’s up to you to keep your mod list functional, and if you have more than 100 mods enabled, risks and maintenance time will increase for you. Making that work is up to how careful you are, and even if a mod list doesn’t produce an instant crash you can’t be sure there aren’t less visible issues, e.g. script breaks.<br />
<br />
As a rule of thumb, don’t be cocky with your list of 250 mods because it’s all fun and games until everything works perfectly (and with those numbers chances are it doesn’t already, you just can’t see it), at which point there’s a lot of stuff to check.<br />
<br />
If you’re not experienced yet (and don’t assume you are just because you played Skyrim, this is different), use the mod list of someone that has very carefully been curating it, and check that it looks ok with the help of the modders themselves. For example, start by a modder’s own collection on Steam, they often have one.<br />
<br />
=== Finding the culprit ===<br />
The usual problem with large mod lists is this: bad, I got a crash; worse, which one of the N mods I have is the culprit?<br />
<br />
==== Generic pointers: ====<br />
<br />
* Pure Text, Variant and UI mods can basically NEVER crash the game for the user. If they do, it’s a botched download.<br />
* Momentarily sort by date either on KMM to find the most recent updates, if you didn’t add additional mods those ''may'' be responsible.<br />
* If you had the issue during a campaign, do not remove mods that have custom items, units or buildings because you’re just going to crash harder if those are around in the campaign map.<br />
* As mentioned above, watch out for movie packs. If you’re inexplicably crashing even with no mods on, you might have a movie pack with crashy data in it.<br />
<br />
==== Bisect and Conquer: ====<br />
Especially when dealing with big mod lists, the quickest method is to enable half of it. If you crash, that’s the troublesome half. Halven again to tighten the noose.<br />
<br />
Keep in mind mod requirements while you do this.<br />
<br />
If you want to check on a particular mod, disable everything and load the bare minimum to make that mod work, in other words mod+whatever required mods that comes with. And up from there, adding one or small groups of mods at a time until you can reproduce the issue.<br />
<br />
It’s patient work but the modder will appreciate it, and it takes less than panicking for hours in a comment section. Assume that a modder won’t troubleshoot your mod list of 150 packs because you say it’s their mod doing it, unless they have proof because you tested without anything else plus requirements.<br />
<br />
Remember: a happy modder is a happy user.<br />
<br />
== APPENDIX: Scripts ==<br />
Scripts are being increasingly used by mods. While most scripters are getting smarter by the day to maintain compatibility, some require a framework or some mods will just struggle to work when there are too many mods around.<br />
<br />
You may encounter symptoms of broken scripts, due to botched downloads, bad compatibility or just plain unforeseen issues because we can just mess stuff up sometimes. Script glitches tend to be quite tricky to root out.<br />
<br />
A few examples of broken scripts:<br />
<br />
* Starting lords that should be custom are not custom, or don’t spawn, or don’t have the correct army or settlement.<br />
* Sword of Khaine button is unchained right off.<br />
* Chaos and all Rogue armies may spawn immediately.<br />
* Campaign camera on a fresh campaign starts zoomed-out and doesn’t pan in.<br />
* Chivalry starts at 0.<br />
* One of the worst, characters do not gain XP (this may sometimes happen in full vanilla too, requires repair).<br />
<br />
==== Scropt broken, what do? ====<br />
In some cases, it’s just a botched download (see Launcher error 3). Otherwise it gets trickier and requires you to start trimming the mod list to find the culprit. When/if you report the issue to modders, remember to provide as much info as humanly possible because finding a script break can turn ugly and complicated.<br />
<br />
Particularly useful to help with scripting issues: please enable [https://steamcommunity.com/sharedfiles/filedetails/?id=1271877744 this debugger], reproduce the bug and send the resulting log, which will be a lenghty txt generated in ''Steam\steamapps\common\Total War WARHAMMER II''. Specific scripty mods may come with additional instructions in their mod descriptions/faqs.<br />
<br />
Do not keep the script logger there unless you need it, since it will noticeably slow down your game.<br />
<br />
One of the most frequent issues at the moment is a performance-related clog-up at the start of a campaign. This basically means that too many scripts are trying to fit into that time frame to do their stuff (legendary lords, changing armies, this kinda stuff) and results in some of them not working. This is where size of the mod list, in regards to any mod with a first-tick script, becomes serious.<br />
<br />
Quick note about Communiy Modding Framework: an obsolete scripting system, it’s basically only used by Crynsos’s unlocker at this point in time (september 2020) and will cause issues more often than not when enabled and not required.<br />
<br />
''Basically disable it unless you’re using CFU''.<br />
<br />
I repeat, it often breaks stuff. When in doubt, shoot it in the face.<br />
<br />
== APPENDIX: [https://steamcommunity.com/sharedfiles/filedetails/?id=1354363596 UI Modding Framework] ==<br />
This framework is technically not required to do UI modding at all, but it may be used as a framework by some scripty mods. Unless it happens to have broken functions after a patch, there are zero reasons not to have it around just in case one of your mods is actually using it or starts doing it.<br />
<br />
== APPENDIX: [https://steamcommunity.com/sharedfiles/filedetails/?id=1354363596 Mod Configuration Tool] ==<br />
This other framework is used to provide settings for compatible mods, i.e. to tweak some details at your heart’s content. Usually a good thing to keep it around because there’s quite a few mods supporting it, or that may do it in the future. For example, you may use it to configure some scripts to fire in a performance mode to reduce impact on campaign start.</div>Cataphhttps://tw-modding.com/index.php?title=Tutorial:Unit_Card_Guide&diff=473Tutorial:Unit Card Guide2022-03-07T22:14:50Z<p>Cataph: </p>
<hr />
<div><br />
== Why ==<br />
Hello, my name is Cataph and I am a cardoholic.<br />
<br />
I heard you made a new unit in TWWarhammer and you need a new flashy unit card. Simple. No, it ain’t. Unit cards are probably the unit’s component you will be staring at for the majority of the time, even more than the actual variant. Get it wrong and it can be an eyesore for the entire campaign and battle.<br />
<br />
A good unit card will:<br />
<br />
* blend in with other vanilla pieces<br />
* show the unit’s appearance<br />
* display, possibly, its character and gear and role<br />
<br />
== What ==<br />
But first things first. A unit card is a 60×130 PNG. Don’t make it larger than that or it will automatically be compressed in-game and lose more quality than if you did it yourself. Its location is ui/units/icons, and it’s a good idea to open the data.pack and extract that folder for future reference. Its name needs to be the same in the card column in the <code>unit_variants</code> table.<br />
<br />
In units/info you may find a version with a larger “shredded frame”, this is however only used in loading screens, so ignore that unless you need those for promo or stuff like that. Of course, if you ''do'' need one, start with that larger size and halve the size later for the actual unit card, or it will look like something you don’t want to look at.<br />
<br />
== How ==<br />
You can use stuff like GIMP or Photoshop to assemble a unit card. Personally I use the latter so I will use its lingo, and I’ll have to assume you already know how to play around with it a bit. Specifically, you’ll want to know how to use layers and possibly adjustment levels. If you don’t, it’s fine, there are a lot of basic guides on the interwebs, and even if you skip some of the speshul effects I may end up using you’ll still get a better result than just plopping a screenshot in there.<br />
<br />
Admittedly, during the transition between Rome2’s and Warhammer’s art style I made truly ''horrendous'' cards myself, but with time I noticed things and developed some tricks. Keep patience.<br />
<br />
Most CA cards are similar to existing GW artwork, but are still made by a proper artist. I am certainly not one, but you’ll want to respect these factors:<br />
<br />
* Positioning of the portrayed unit: not too zoomed in, not too far away; varies with races too. E.g., notice how Empire cards tend to have a western knee-cut, Dwarfs a full body.<br />
* Lighting: CA cards are generally good luminosity, low contrast but with drawn highlights. This is important, you don’t want your card to be a confused blob.<br />
<br />
Before we get to the chase, [https://cdn.discordapp.com/attachments/731080362758766652/748925752115855530/template.psd get this template]! Always periodically test with the card frame on top, I used to get immensely pissed off when important details of my card got hidden by the UI. You will never see the entire card in the game, especially on ranged units due to the additional ammo bar. Remember to hide the frame again when you’re done. It’s a PSD file, but should work just fine in GIMP too.<br />
<br />
== The Three Jedi Ways ==<br />
[please don’t use the sampled pictures without permission]<br />
<br />
* '''THE ARTWORK'''. You grab a ''legal''* and beautiful artwork around, and tweak it until it fits and shines. Usually the quickest method, but it requires a good sample. Example below, for my Skullreapers, [https://vignette.wikia.nocookie.net/warhammerfb/images/7/76/BORKIL.jpg/revision/latest?cb=20130829160001 based on this artwork]. [[File:CTT_chs_kh_berz_framed.png|alt=|center|frameless]]'''THE MONTAGE'''. ''Even Rocky had a montage.'' You grab parts from existing CA cards and glue them together. This may look simple but it’s actually an excellent way to get god-awful cards, because each bloke in a card may have its size, positioning and lighting, and mixing them may not work like you’d think. You don’t want your card to look like the portrait of the Frankenstein’s Monster, or too samey with the neighbouring unit. Also, [https://i.imgur.com/l8Qgqwv.png avoid recycling the same base too many times in the same roster or you’ll get this effect]. Working examples: below for my Estalian Lancers, or [https://cdn.discordapp.com/attachments/374122686034477057/452435403610259457/berserker_champion.png this infopic by not-a-spoon].[[File:Unit_card_est_cav.png|alt=|center|frameless]]<br />
<br />
* '''THE PHOTOSHOOT'''. You take things in your hands and start taking screenshots of the unit in-game. This can be a lengthy process, especially for cavalry and ranged units, but can be quite satisfying and produce a faithful portrait of the unit. It’s my favourite and most used method, and the one I’m going to describe. This is also where Positioning and Lighting really come to play.<br />
<br />
<nowiki>*</nowiki> Remember that you can’t use non-WHFB stuff and if fan-art, you want to check/ask permission.<br />
<br />
== Guide to the Photoshoot ==<br />
First off you need to take a good screenshot in which the unit comes with a good pose, possibly no animation glitches and clipping. As said, you need something that will fit in a 60×130, so some photography experience may come in handy.<br />
<br />
Here are two examples that can give you an idea of how to crop and photoshop a battle screenshot and what the final result can potentially look like.<br />
<br />
[[File:Unit card photoshoot 1.jpg|frameless]]<br />
<br />
[[File:Unit card photoshoot 2.jpg|frameless]]<br />
<br />
These two blokes are Estalian reskins for Swordsmen and Spearmen. As you can see, the pose needs to fit in a quite longilineal frame, so not all stances will work and also why cavalry is more difficult. You want to show at least part of the body and weaponry. If they have a shield, avoid it occupying too much of the card.<br />
[[File:Unit card photoshoot 3.png|none|thumb|Cavalry cropping is particularly annoying. You want enough horse but not too much, and enough rider that is not hidden by the beastie’s massive neck: '''pro tip, temporarily put mount size at 0.95.''' (I later photoshopped the lance to be more visible)]]<br />
''Protip! Use a better camera mod and the >N< key high-detail camera for better screenshots.''<br />
<br />
Usually you will want a decent lighting, so no early dawn or cloudy battles. You can still make those work but it’s harder. <br />
<br />
For these guys I wanted a sunny look instead of the gloomy Empire cards, so I edited the sky background. Consider using this [https://steamcommunity.com/sharedfiles/filedetails/?id=2516720224 Sunny Weather] mod.<br />
<br />
The beginning may be as simple as auto-tuning Luminosity and/or Tone to remove weird tints. Afterwards you want to reduce contrast (by a lot, even up to 100!) and probably still increase luminosity (otherwise they are likely going to look quite bleak in-game). Test in custom battle selection until it’s not a grey blob anymore.<br />
<br />
Then comes the holistic and complicated part.<br />
<br />
'''Protagonism''': the bloke must be instantly distinguishable from the background. Selecting them with lasso/magic wand and making them a separate layer is always a good idea. Afterwards you’ll probably further lighten or darken the background stuff. Blurring also works but I usually don’t like it, as it can look too fake. Giving it a ''minimalist'' oil paint touch can also help.<br />
<br />
'''Background''': when you have extra time and experience in your hands, you may want to add smoke, happy clouds, grim clouds, that sort of thing, behind the protagonist’s layer. Screenshots can often produce rather flat backgrounds and that can be off-putting. For example, grab a nice sky from another screenshot or even a random photo, resize and apply it with a layer mask that excludes the protagonist and probably the ground they’re standing on. Then tweak at will for opacity, blending and even tone. CA backgrounds are often some unnatural colour.<br />
<br />
'''Contours''': this is the secret recipe and why we lowered contrast. We said CA cards are artworks, and they have visible dark contours to highlight parts. So we start drawing them (1-2 pixel width) with medium hardness brush or pencil in black and white in a new layer. Usually it looks good when it’s set as Soft Light, probably between 60 and 100% opacity, tweak at will. Contours can make a huge difference between a flat icon and one that can blend in with vanilla ones. Examples (Swashbucklers from TEB and Teutogen Guard) without and with contour:<br />
[[File:Unit card photoshoot 4.png|none|thumb|The left one has a painted sky and super-imposed fire layers, you don’t want to bother with that sort of stuff at first.]]<br />
The cards were already heavily-engineered, but you can still notice an improvement. For example, here’s what the Swashie’s contour layer looks like on a background and at 100% opacity:<br />
<br />
[[File:Unit card photoshoot 5.png|frameless]]<br />
<br />
<br />
However, I’m actually gradually moving towards thicker contours, with one layer at size-2 brush and another up to 4 for the thickest shadows and bright surfaces.<br />
[[File:Dwf huskarls framed.png|none|thumb]]<br />
<br />
One further example (Lothern Sea Rangers):<br />
[[File:Unit card photoshoot 6.png|none|thumb|1, almost unedited;2, added two levels of fog in front and two behind at varying Normal opacity;3, added tight brush contours and a sword glint for rule of cool.]]<br />
In any case, you will still check how the card looks in custom battle roster selection (where it’s the smallest) and in the following screens. Sometimes it will suck so hard that it’s back to the drawing board, but that’s ok. Another thing that you should look at in-game is whether the lighting is ok or if the picture gets burned tfo when the unit is selected.<br />
<br />
You read through here so here’s a prize: my first and terrible unit card for WH1, versus the same unit in WH2:<br />
<br />
[[File:Unit card photoshoot 7.jpg|frameless]]<br />
<br />
== APPENDIX: Character Icons ==<br />
Characters want their portraits too, of course. Their cards are kept in ui/portraits/units/(designated culture) and are quite simpler to make. You follow the Photoshoot method, fix the tone, probably increase luminosity a bit, and bam, done.<br />
<br />
What you really want to work on at this point is that you want to use that faction’s face-to-frame size ratio to make it look better next to the other heroes and lords. For example Empire characters tend to be more zoomed-out, whereas Vampires have a creepier and closer portrait (you can recognize a bloodsucker by their selfies). When you check in-game on the custom battle roster, try to see if your faction’s character cards are all more or less the same zoom and crop. It looks a bit shady when the eyeline on all of them makes a rollercoaster wave.<br />
<br />
Notice that CA has moved on to make more artsy portrait for their LLs in particular. I can’t easily explain how to emulate that style because I don’t have yet a one-size-fits-all pattern.<br />
<br />
Making that stuff actually work in campaign is done [https://steamcommunity.com/sharedfiles/filedetails/?id=1194811468 by following the binning guide].<br />
<br />
== APPENDIX: Unit 2d Portholes ==<br />
Aka Minspec portholes. These are the 2d pictures used in the lower left corner when you disable the framerate-consuming 3d portholes. For units, you’ll find these in UI\units\minspec_portholes and are 164×164 PNG circular icons. [https://cdn.discordapp.com/attachments/448859190874603520/708658469846384720/minspec_template.psd Use this different template as a base], screenshot your unit so that you can crop an acceptable bust portrait from it and put it in the group. Move it around until it looks alright, and usually only minimal tweaks are necessary like autotune and autocontrast.<br />
<br />
After that, you usually want to cut/mask away the background so that the portrait will be properly superimposed to a smoky background in-game. You can do it via lasso or magic wand and/or brush. Hair parts will always be trickier. Use the solid colour background I put in there as a reference to check for floaty bits, make sure you hide that when you’re done.<br />
<br />
Note: minspec name needs to be the same as the main_unit.<br />
<br />
== APPENDIX: Character 2d Portholes ==<br />
Aka just portholes. Ditto with the previous paragraph, but these are explicitly for your characters. You’ll find these in UI\portraits\portholes\whateverculture and in WH2 they are 193×193 PNG circular icons, yes, do notice that these are larger than the unit minspecs. [https://cdn.discordapp.com/attachments/448859190874603520/708659416693473381/porthole_template.psd Use this different template as a base]. Same exact procedure otherwise. <br />
<br />
In Warhammer3, these 2d portholes are 300x164 ([https://cdn.discordapp.com/attachments/731080362758766652/950514953067053066/wh3_porthole_template.psd get this template instead]), made to show up in the agent recruitment pool as well. Sadly, this means that we cannot get away with keeping the screenshot's background anymore, so you have to remove it or mask it away. The good thing is that it's not a third porthole, the bad thing is that we likely have to redo all the WH2 ones.<br />
<br />
Name the character porthole exactly the same you’ve called the character’s unit card, or the bin settings will not find one of the two. As a general recommendation, just call both the same way you’ve called the character art set, e.g. dude_01, dude_02, LL_dudette, which, unless you hate yourself, will also be how you called the character art set.<br />
<br />
Remember to put the same bin in both folders (compare with vanilla or other mods).<br />
[[Category:Needs Formatting]]</div>Cataphhttps://tw-modding.com/index.php?title=Campaign_Map_Coordinates&diff=464Campaign Map Coordinates2022-02-08T09:47:58Z<p>Cataph: updated maps with latest by marth</p>
<hr />
<div><br />
<br />
- Green means passable<br />
<br />
- Black is impassable<br />
<br />
- Bronze for borders<br />
<br />
- Blue for sea<br />
<br />
Open the following with GIMP or PhotoShop or Paint or another image editor, bring scale to 100%, and use the x,y axes to find coordinates.<br />
<br />
==== Mortal Empires Map ====<br />
[[File:MortalEmpires 1016x720.png|alt=|frameless|522x522px]]<br />
<br />
==== Eye of the Vortex Map ====<br />
[[File:Vortex 726x720.png|alt=|frameless|466x466px]]<br />
[[Category:Tools & Resources]]<br />
[[Category:Warhammer 2]]</div>Cataphhttps://tw-modding.com/index.php?title=File:Vortex_726x720.png&diff=463File:Vortex 726x720.png2022-02-08T09:47:23Z<p>Cataph: </p>
<hr />
<div>asd</div>Cataphhttps://tw-modding.com/index.php?title=File:MortalEmpires_1016x720.png&diff=462File:MortalEmpires 1016x720.png2022-02-08T09:42:23Z<p>Cataph: </p>
<hr />
<div>asd</div>Cataphhttps://tw-modding.com/index.php?title=Tutorial:Unit_Card_Guide&diff=427Tutorial:Unit Card Guide2021-10-30T12:02:16Z<p>Cataph: /* Guide to the Photoshoot */</p>
<hr />
<div>=== Originally by Cataph ===<br />
<br />
== Why ==<br />
Hello, my name is Cataph and I am a cardoholic.<br />
<br />
I heard you made a new unit and you need a new flashy unit card. Simple. No, it ain’t. Unit cards are probably the unit’s component you will be staring at for the majority of the time, even more than the actual variant. Get it wrong and it can be an eyesore for the entire campaign and battle.<br />
<br />
A good unit card will:<br />
<br />
* blend in with other vanilla pieces<br />
* show the unit’s appearance<br />
* display, possibly, its character and gear and role<br />
<br />
== What ==<br />
But first things first. A unit card is a 60×130 PNG. Don’t make it larger than that or it will automatically be compressed in-game and lose more quality than if you did it yourself. Its location is ui/units/icons, and it’s a good idea to open the data.pack and extract that folder for future reference. Its name needs to be the same in the card column in the <code>unit_variants</code> table.<br />
<br />
In units/info you may find a version with a larger “shredded frame”, this is however only used in loading screens, so ignore that unless you need those for promo or stuff like that. Of course, if you ''do'' need one, start with that larger size and halve the size later for the actual unit card, or it will look like something you don’t want to look at.<br />
<br />
== How ==<br />
You can use stuff like GIMP or Photoshop to assemble a unit card. Personally I use the latter so I will use its lingo, and I’ll have to assume you already know how to play around with it a bit. Specifically, you’ll want to know how to use layers and possibly adjustment levels. If you don’t, it’s fine, there are a lot of basic guides on the interwebs, and even if you skip some of the speshul effects I may end up using you’ll still get a better result than just plopping a screenshot in there.<br />
<br />
Admittedly, during the transition between Rome2’s and Warhammer’s art style I made truly ''horrendous'' cards myself, but with time I noticed things and developed some tricks. Keep patience.<br />
<br />
Most CA cards are similar to existing GW artwork, but are still made by a proper artist. I am certainly not one, but you’ll want to respect these factors:<br />
<br />
* Positioning of the portrayed unit: not too zoomed in, not too far away; varies with races too. E.g., notice how Empire cards tend to have a western knee-cut, Dwarfs a full body.<br />
* Lighting: CA cards are generally good luminosity, low contrast but with drawn highlights. This is important, you don’t want your card to be a confused blob.<br />
<br />
Before we get to the chase, [https://cdn.discordapp.com/attachments/731080362758766652/748925752115855530/template.psd get this template]! Always periodically test with the card frame on top, I used to get immensely pissed off when important details of my card got hidden by the UI. You will never see the entire card in the game, especially on ranged units due to the additional ammo bar. Remember to hide the frame again when you’re done. It’s a PSD file, but should work just fine in GIMP too.<br />
<br />
== The Three Jedi Ways ==<br />
[please don’t use the sampled pictures without permission]<br />
<br />
* '''THE ARTWORK'''. You grab a ''legal''* and beautiful artwork around, and tweak it until it fits and shines. Usually the quickest method, but it requires a good sample. Example below, for my Skullreapers, [https://vignette.wikia.nocookie.net/warhammerfb/images/7/76/BORKIL.jpg/revision/latest?cb=20130829160001 based on this artwork]. [[File:CTT_chs_kh_berz_framed.png|alt=|center|frameless]]'''THE MONTAGE'''. ''Even Rocky had a montage.'' You grab parts from existing CA cards and glue them together. This may look simple but it’s actually an excellent way to get god-awful cards, because each bloke in a card may have its size, positioning and lighting, and mixing them may not work like you’d think. You don’t want your card to look like the portrait of the Frankenstein’s Monster, or too samey with the neighbouring unit. Also, [https://i.imgur.com/l8Qgqwv.png avoid recycling the same base too many times in the same roster or you’ll get this effect]. Working examples: below for my Estalian Lancers, or [https://cdn.discordapp.com/attachments/374122686034477057/452435403610259457/berserker_champion.png this infopic by not-a-spoon].[[File:Unit_card_est_cav.png|alt=|center|frameless]]<br />
<br />
* '''THE PHOTOSHOOT'''. You take things in your hands and start taking screenshots of the unit in-game. This can be a lengthy process, especially for cavalry and ranged units, but can be quite satisfying and produce a faithful portrait of the unit. It’s my favourite and most used method, and the one I’m going to describe. This is also where Positioning and Lighting really come to play.<br />
<br />
<nowiki>*</nowiki> Remember that you can’t use non-WHFB stuff and if fan-art, you want to check/ask permission.<br />
<br />
== Guide to the Photoshoot ==<br />
First off you need to take a good screenshot in which the unit comes with a good pose, possibly no animation glitches and clipping. As said, you need something that will fit in a 60×130, so some photography experience may come in handy.<br />
<br />
Here are two examples that can give you an idea of how to crop and photoshop a battle screenshot and what the final result can potentially look like.<br />
<br />
[[File:Unit card photoshoot 1.jpg|frameless]]<br />
<br />
[[File:Unit card photoshoot 2.jpg|frameless]]<br />
<br />
These two blokes are Estalian reskins for Swordsmen and Spearmen. As you can see, the pose needs to fit in a quite longilineal frame, so not all stances will work and also why cavalry is more difficult. You want to show at least part of the body and weaponry. If they have a shield, avoid it occupying too much of the card.<br />
[[File:Unit card photoshoot 3.png|none|thumb|Cavalry cropping is particularly annoying. You want enough horse but not too much, and enough rider that is not hidden by the beastie’s massive neck: '''pro tip, temporarily put mount size at 0.95.''' (I later photoshopped the lance to be more visible)]]<br />
''Protip! Use a better camera mod and the >N< key high-detail camera for better screenshots.''<br />
<br />
Usually you will want a decent lighting, so no early dawn or cloudy battles. You can still make those work but it’s harder. <br />
<br />
For these guys I wanted a sunny look instead of the gloomy Empire cards, so I edited the sky background. Consider using this [https://steamcommunity.com/sharedfiles/filedetails/?id=2516720224 Sunny Weather] mod.<br />
<br />
The beginning may be as simple as auto-tuning Luminosity and/or Tone to remove weird tints. Afterwards you want to reduce contrast (by a lot, even up to 100!) and probably still increase luminosity (otherwise they are likely going to look quite bleak in-game). Test in custom battle selection until it’s not a grey blob anymore.<br />
<br />
Then comes the holistic and complicated part.<br />
<br />
'''Protagonism''': the bloke must be instantly distinguishable from the background. Selecting them with lasso/magic wand and making them a separate layer is always a good idea. Afterwards you’ll probably further lighten or darken the background stuff. Blurring also works but I usually don’t like it, as it can look too fake. Giving it a ''minimalist'' oil paint touch can also help.<br />
<br />
'''Background''': when you have extra time and experience in your hands, you may want to add smoke, happy clouds, grim clouds, that sort of thing, behind the protagonist’s layer. Screenshots can often produce rather flat backgrounds and that can be off-putting. For example, grab a nice sky from another screenshot or even a random photo, resize and apply it with a layer mask that excludes the protagonist and probably the ground they’re standing on. Then tweak at will for opacity, blending and even tone. CA backgrounds are often some unnatural colour.<br />
<br />
'''Contours''': this is the secret recipe and why we lowered contrast. We said CA cards are artworks, and they have visible dark contours to highlight parts. So we start drawing them (1-2 pixel width) with medium hardness brush or pencil in black and white in a new layer. Usually it looks good when it’s set as Soft Light, probably between 60 and 100% opacity, tweak at will. Contours can make a huge difference between a flat icon and one that can blend in with vanilla ones. Examples (Swashbucklers from TEB and Teutogen Guard) without and with contour:<br />
[[File:Unit card photoshoot 4.png|none|thumb|The left one has a painted sky and super-imposed fire layers, you don’t want to bother with that sort of stuff at first.]]<br />
The cards were already heavily-engineered, but you can still notice an improvement. For example, here’s what the Swashie’s contour layer looks like on a background and at 100% opacity:<br />
<br />
[[File:Unit card photoshoot 5.png|frameless]]<br />
<br />
<br />
However, I’m actually gradually moving towards thicker contours, with one layer at size-2 brush and another up to 4 for the thickest shadows and bright surfaces.<br />
[[File:Dwf huskarls framed.png|none|thumb]]<br />
<br />
One further example (Lothern Sea Rangers):<br />
[[File:Unit card photoshoot 6.png|none|thumb|1, almost unedited;2, added two levels of fog in front and two behind at varying Normal opacity;<br />
<br />
3, added tight brush contours and a sword glint for rule of cool.]]<br />
In any case, you will still check how the card looks in custom battle roster selection (where it’s the smallest) and in the following screens. Sometimes it will suck so hard that it’s back to the drawing board, but that’s ok. Another thing that you should look at in-game is whether the lighting is ok or if the picture gets burned tfo when the unit is selected.<br />
<br />
You read through here so here’s a prize: my first and terrible unit card for WH1, versus the same unit in WH2:<br />
<br />
[[File:Unit card photoshoot 7.jpg|frameless]]<br />
<br />
== APPENDIX: Character Icons ==<br />
Characters want their portraits too, of course. Their cards are kept in ui/portraits/units/(designated culture) and are quite simpler to make. You follow the Photoshoot method, fix the tone, probably increase luminosity a bit, and bam, done.<br />
<br />
What you really want to work on at this point is that you want to use that faction’s face-to-frame size ratio to make it look better next to the other heroes and lords. For example Empire characters tend to be more zoomed-out, whereas Vampires have a creepier and closer portrait (you can recognize a bloodsucker by their selfies). When you check in-game on the custom battle roster, try to see if your faction’s character cards are all more or less the same zoom and crop. It looks a bit shady when the eyeline on all of them makes a rollercoaster wave.<br />
<br />
Notice that CA has moved on to make more artsy portrait for their LLs in particular. I can’t easily explain how to emulate that style because I don’t have yet a one-size-fits-all pattern.<br />
<br />
Making that stuff actually work in campaign is done [https://steamcommunity.com/sharedfiles/filedetails/?id=1194811468 by following the binning guide].<br />
<br />
== APPENDIX: Unit 2d Portholes ==<br />
Aka Minspec portholes. These are the 2d pictures used in the lower left corner when you disable the framerate-consuming 3d portholes. For units, you’ll find these in UI\units\minspec_portholes and are 164×164 PNG circular icons. [https://cdn.discordapp.com/attachments/448859190874603520/708658469846384720/minspec_template.psd Use this different template as a base], screenshot your unit so that you can crop an acceptable bust portrait from it and put it in the group. Move it around until it looks alright, and usually only minimal tweaks are necessary like autotune and autocontrast.<br />
<br />
After that, you usually want to cut/mask away the background so that the portrait will be properly superimposed to a smoky background in-game. You can do it via lasso or magic wand and/or brush. Hair parts will always be trickier. Use the solid colour background I put in there as a reference to check for floaty bits, make sure you hide that when you’re done.<br />
<br />
Note: minspec name needs to be the same as the main_unit.<br />
<br />
== APPENDIX: Character 2d Portholes ==<br />
Aka just portholes. Ditto with the previous paragraph, but these are explicitly for your characters. You’ll find these in UI\portraits\portholes\whateverculture and are 193×193 PNG circular icons, yes, do notice that these are larger than the unit minspecs. [https://cdn.discordapp.com/attachments/448859190874603520/708659416693473381/porthole_template.psd Use this different template as a base]. Same exact procedure otherwise.<br />
<br />
Name the character porthole exactly the same you’ve called the character’s unit card, or the bin settings will not find one of the two. As a general recommendation, just call both the same way you’ve called the character art set, e.g. dude_01, dude_02, LL_dudette, which, unless you hate yourself, will also be how you called the character art set.<br />
<br />
Remember to put the same bin in both folders (compare with vanilla or other mods).<br />
[[Category:Needs Formatting]]</div>Cataphhttps://tw-modding.com/index.php?title=Tutorial:Unit_Balance_Tips&diff=426Tutorial:Unit Balance Tips2021-09-29T14:25:11Z<p>Cataph: added upkeep note</p>
<hr />
<div>=== Originally by Cataph ===<br />
<br />
== PREMISE ==<br />
This guide is aimed at unit or character modders in WH2, and while I assume we’re talking about introducing or editing stuff for vanilla balance, most of the tips should remain useful even if you’re doing your own battle overhaul or whatever it is you’re doing. What I intend to do is suggest ways towards tuning your stuff so that it fits in the whole shebang and avoiding the common mistakes.<br />
<br />
I’m sure that many of you may be thinking “but balance is subjective!”, which is possibly true, but it’s especially true only because balance ''is'' fickle and ''does'' depend on context a lot. On the other hand, there are scenarios in which what you’re doing is objectively too weak or too strong.<br />
<br />
There is also the spiky and infamous matter of SP or MP balance.<br />
<br />
I agree that MP poses issues that SP doesn’t, but I personally disagree with those that see the two aspects of the game as incompatible. You ''can'' balance a unit for both, give or take. Of course, MP’s tendency towards min-maxing and cheesing will expose issues faster than a Karen in a retail shop.<br />
<br />
Then there’s the famous “all units become OP in campaign” which is kinda true but sort of an excuse, and out of our hands insofar as we do our job balancing the unit’s baseline stats.<br />
<br />
“But I want unbalanced OP units!” Sure, then read no further and we won’t talk about it.<br />
<br />
Keep in mind this guide will avoid technicalities of how to create a unit, that’s for the [https://steamcommunity.com/sharedfiles/filedetails/?id=1694945483 unit creation guides] to do.<br />
<br />
== CONTEXT: THE ROSTER ==<br />
Alrighty, you’re making a new unit. One of the main features of Warhammer is that its balance is asymmetrical, in that there are many diverse factions and most of them have their own strengths and weaknesses, usually much more marked than they’d be in a historical setting of human-only warfare. <br />
<br />
We want to preserve those factional strengths and weaknesses; the usual examples being how Warriors of Chaos are a meatheaded faction poised for a decisive melee push with expensive and elite melee units, with little in the way of missile potential, and predictably fielding heavy armour stuff. Dwarfs are a tanky and shooty faction famously suited for corner camping because of how lacky they are in terms of mobility. The Empire is a faction built for width rather than height, with only a couple units that can shine in their department. Wood Elves are supposed to be the kings of squishy skirmishers. And so on. <br />
<br />
So while it may be your active choice to, say, add a unit comparable to Chaos Chosen to Wood Elves, and assuming you’re still reading because you still somehow want to balance them, know that you’re removing a faction’s weakness, specifically the lack of a uber heavy infantry unit. <br />
<br />
Relatedly, you could be tempted to exactly copy the stats of a unit to add one to another faction. Hey, they can’t be OP if they’re the same as vanilla unit X, right? Wrong, some units may be deliberately stronger for a faction exactly because that’s where that faction is supposed to shine and to compensate other weaknesses. In other words, pooling good units from multiple factions into one still creates an OP chimera.<br />
<br />
This also works from another perspective. If you’re designing, say, a heavy cavalry unit for whatever non-elven non-chaos faction, you should likely avoid making it more powerful than what the supposed kings of heavy cav can bring, aka Bretonnia. If your Halfling Rooster Knights can keep up with Grail Knights there’s definitely something wrong.<br />
<br />
Which brings us to…<br />
<br />
== CONTEXT: THE METERSTICK ==<br />
Which is like a yardstick, but we don’t do that sort of measure in these parts.<br />
<br />
A healthy habit I found is identifying possibly two or even up to four vanilla units that you can use to delimit what your unit should be. No, vanilla balance is not perfect, and gods know I have my grievances, but that’s what we’re working with.<br />
<br />
Let’s continue the example and say your unit, hereby The Fonzies, is to be a unit of heavy infantry with greatswords. Daring, aren’t we? And what faction are they for? Dark Elves, I decide that the Fonzies are Dark Elves. <br />
<br />
Ok, what would your metersticks for the Fonzies be? Obviously, more heavy infantry with great weapons. Let’s look around, and we’ll see a lot of examples. You can rummage in Custom Battles, or compare units on [https://twwstats.com/unitscards https://twwstats.com/].<br />
[[File:Example comparison twwstats Fonzies2.jpg|right|frameless|381x381px]]<br />
First, we look at units from the same race: Executioners, White Lions, Swordmasters, Wildwood Rangers. Then, from other races, we have Greatswords, Foot Squires, GW Longbeards. Ok, that’s a wild range, innit? <br />
<br />
Let’s narrow it down a bit and decide that the unit will be more or less for a tier 3 slot of sorts, so we definitely don’t want it to be remotely as good as the Executioners or the Swordmasters. Lions and WW Rangers are a good meterstick, since they are tier 3 elves with a big choppa, but both have their own peculiarities: one with pelt shenanigans plus martial prowess (BIG +12 MD while healthy), one with immpsy, a custom passive and beefier stats. A Delf unit would come with its own murderous prowess, and might be more aggressive in overall style. <br />
<br />
When we proceed to juggling stats, we want to keep an eye on the human units, to make sure we don’t go as low as that, that we don’t increase unit size, since elves cap at 100@ultra for non-chaff, that we don’t make the Fonzies as tough as the Rangers or the Longbeards. Again, we don’t want to make Executioners look bad, since they have to coexist. So, for example, we can play on less armour, more speed, squishy stats. The point here is making sure the Fonzies don’t make other units obsolete. And since Dark Elves already have killy anti-infantry units, we should let Corsairs and Witch Elves be more efficient against lightly-armoured foes, focusing more on the Fonzies as a contemporary source of armour-piercing (perhaps with no Bonus vs Infantry), with a bit of armour.<br />
<br />
== CONTEXT: THE TABLETOP ==<br />
Woooh, what a can of worms. However, if you know how to read tabletop stats, the 8E TT was better balanced than people usually give it credit for. That’s not to say perfect by any far-fetched means, but good enough for the purpose: whether your Fonzies had tabletop stats or you’d have to imagine them, TT stats can provide a further meterstick for you, or provide information and inspiration for abilities and stuff. <br />
<br />
In other words, similarly to the conventional meterstick approach, you can also apply the same logic to the metersticks’ statlines and make sure you’re not accidentally down/overstepping. This is particularly important when you’re designing units for a race that has very definite limits, like humans or even dwarfs. A non-character human can’t be as good as a Swordmaster of Hoeth, ever, a Dwarf is slow, and elves will be frailer than most other things. <br />
<br />
== THE CUSTOM BATTLE TEST ==<br />
This is the obvious place to test the Fonzies in terms of actual performance. A staple is testing for 1v1 duels. Lords will usually interfere so you want to get a “all units are generals” mod or do it yourself so you can get rid of them. Get a nice flat map and duke it out with the metersticks AND with other units. Keep in mind that the post-battle result will heal not-dead entities, note down the results like kills, losses and hitpoints at battle-end, then possibly tweak. Possibly run at least 3 tests per duel because there is always a RNG component that will cause deviations. This is particularly true for characters, where a single blow can change the course of the fight and there aren’t tens of entities flattening the statistical variation of those hits.<br />
<br />
Keep in mind that the vacuum of a 1v1 unit duel is not how battles are going to go, you’re just testing sheer statistics devoid of the context in which the unit may have to be used. For example, you usually want a glasscannon unit to flank a battle line (which you can still simulate of course), and will probably underperform in a frontal assault. What you want to know is whether the glasscannon Fonzies are STILL rolling over the competition even in an unsuitable context, which would be bad.<br />
<br />
Also, if your unit is for example very defensive and perhaps even with Charge Defence vs All, don’t charge with it because you’re going to waste one of its main benefits. Or if your unit is anti-large, it’s ok for it to suffer a bit against good infantry. And so on.<br />
<br />
== THE AI ==<br />
If possible, check what the AI does with the Fonzies if they happen to be a weird unit. It may not know what to do with it, which may not be something that you can fix, but keep in mind that if a unit is particularly strong in the hands of the player, it should also be not completely useless in the hands of the AI. This typically happens on very polarized units or just very powerful ones. You may know that you need to focus fire the Big Nasty Emperor Dragon Of Doom with its 25k hitpoints, but the AI doesn’t and will allow it to wreck the entire army. <br />
<br />
Excursus: I’ve seen this a lot. “Unit is very strong but if you focus fire it with five armour-piercing missile units it goes down” is not an excuse. Everything dies if you shoot it with enough firepower. Nerf it or accept that it’s a cheat unit.<br />
<br />
== THE PERNICIOUS STATS ==<br />
Like I said, I’m not going to talk about how the single tables work, but I’ll point out some individual stats that are often underestimated. <br />
<br />
* Hitpoints: CA heavily uses these to make a unit jump from a tier to another. This is a major performance tool.<br />
* Unit size: on top of not going above the usual unit size for that race, keep in mind that you can manipulate it to better balance your Fonzies. For example you might have an infantry unit that overperforms no matter what you sensibly do while at 120 size, so you might want to downgrade them to 100 and see what happens. Higher numbers expose the unit to more missiles and more damage in general, adds damage soaking potential on the same hitpoints, adds damage dishing potential because more entities may be dealing that oomph, adds entities that will deal that charge bonus. Smaller numbers usually demand better stats but are nullified if you’re boosting both hp and damage. Unit size is particularly important for missile units, as each entity will fire and become an active multiplier of its missile damage.<br />
* Unit spacing: this is a subtle one. A unit of high elves and one of norscan marauders will behave differently in terms of how many entities get into contact, how many overlap beyond the flanks, how many will get hit and how easily when shot at.<br />
* Damage: even shifting one point of base damage towards ap can change the outcome of a 1v1 test. <br />
* Bonus vs X and Charge bonus: keep in mind that both will add that number to both Melee Attack and Damage (in the same base/ap ratio). It’s a huge thing. Charge bonus only lasts for a few seconds, but its impact can be huge especially when there is a lot of entities on the first ranks. You could increase these stats and reduce MA and damage to make a unit shine more in a very specific time or target frame.<br />
* Speed: on top of mattering for collision impacts and mass comparisons, the simple truth of speed is that you probably want to avoid having a unit that is both relatively fast and has three tons of armour on it. <br />
* Attributes: they can be cool, but nobody is cool anymore when everybody has all the attributes, so use them with moderation and understand what they do. I’ve seen many that don’t know what’s the actual effect of Causes Fear (-8 Leadership aura, unless target also causes it or is immpsy), or that make a unit both unbreakable and immpsy, which is useless. Actually, normally just pretend Unbreakable and Perfect Vigour don’t even exist.<br />
* Cost: costs are tricky, because there’s basically no chance that two different units priced at about 700 will be exactly worth the same in all prospects. You might be satisfied with pricing the Fonzies at 800ish due to their performance, and then a 700-cost anti-infantry unit comes and completely wrecks them. It happens. Just try your best. More importantly, keep in mind that there is no cost high enough to justify a unit from single-handedly nuking half the battlefield. Upkeep in vanilla is 25% of the unit's front cost, with very few exceptions: no reason to stray away from that norm and it makes things easy for us. <br />
* Animations: this is actually quite a painful note. Many unit attacks are quite animation-driven in WH and will need special attention. Typicall it’s chariots, each dealing damage according to its parameters in collision attacks, charge impacts, draught mounts and crew members, which for the moment I’ll spare you. Sometimes it’s slightly straightforward and an animation will only support so much reload speed or so much splash attack size. Sometimes you have Nakai hitting like thrice during the same charge animation. In practice, you don’t have a foolproof way of telling how something like a big monster or chariot unit will behave before testing.<br />
<br />
== THE CAMPAIGN ==<br />
Like we premised and like it’s well-known, campaign-side tends to eventually bring enough buffs to make even a gobbo a solid unit. More or less. However, if you’ve fine-tuned the Fonzies well enough to be decent in custom battle and in respect of the points above, chances are you did good and the unit will grow similarly to others once junctioned to vanilla unit set buffs or made your own to be similar. <br />
<br />
Of course, if you are making your own campaign effects to be +100 armour for Fonzie units or some such, it might be the case of putting that back into perspective.<br />
<br />
Where you place the Fonzies for recruitment also matters a lot. Quite obviously, there is a huge difference between putting a good unit on the main settlement chain, on the barracks chain, or on an isolated building that does nothing else. Especially when you’re adding very powerful or otherwise game-changing stuff, it might be a good idea to make sure the owner has to go out of their way to get it.<br />
<br />
Relatedly, there’s tier, which is very important with CA balance, and sometimes you can see a more advanced unit completely replacing an earlier one because it’s simply better. Some people are fine with that, I personally despise it, but it’s a thing. My own recommendation would be to try and maintain, if at all possible, a tradeoff if the Fonzies are a virtual upgrade/downgrade to something else. Basically, avoid the Longbeard syndrome.<br />
[[Category:Needs Formatting]]</div>Cataphhttps://tw-modding.com/index.php?title=Troubleshooting&diff=425Troubleshooting2021-09-04T13:37:43Z<p>Cataph: improved steam issues</p>
<hr />
<div>This is a troubleshooting guide for mod users in TW: Warhammer 2. The generic pointers should be valid for all recent TW games.<br />
<br />
– Your neighbourhood Cataph<br />
<br />
<br />
'''!!!'''<br />
<br />
'''Sadly I have to pin this: Steam is <s>currently</s>still and constantly failing at updating a lot of TW mods. <s>At the merest sign of trouble, check the last update on the mod page and check your local pack's date. If that is not the same, unsub and delete and let Steam redownload.</s> Use KMM to keep mods up to date, among other things.''' <br />
<br />
'''!!!'''<br />
<br />
== Managing Mods ==<br />
So, you have subscribed to mods on the workshop. You now open CA’s current mod manager (hereby called George II) and – blimey, they don’t work or something’s not right.<br />
<br />
We called it George II cause it’s the new launcher. He’s new in town, prettier than George, but he’s still not good at what he should be doing and forgets to make mods work. We’re sorry but George II needs some time.<br />
<br />
First thing to keep in mind, if you have issues with George II you should definitely report them to CA so that they know what they should look at.<br />
<br />
That said, you can just use the [https://github.com/Kaedrin/warhammer-mod-manager community mod manager] (normally called KMM). Long story short, George is unwieldy and has grown responsible for a lot of issues of its own, becoming hated by modders and users alike. Among other things, KMM is more reliable and provides mod profiles.<br />
<br />
==== How to Load Order ====<br />
One of the things George I, the old launcher, couldn’t do is allow load order editing because it only uses the default alphabetical order. KMM and even George II have that function, so you’d be tempted to change load order manually, right?<br />
<br />
'''''WRONG.'''''<br />
<br />
Ok, I’ll spare some time for this before we get into the actually useful tips, because this is one of the nastiest tropes around the community. The truth is that compatibility-minded modders already handle load order on their own as far as possible. Manually changing load order may do absolutely nothing, move the problem elsewhere or break everything.<br />
<br />
Some context. There are six main possible categories of folders in a mod pack and this is how they handle load order, either through actual pack name or table name:<br />
<br />
* Db: table name.<br />
* Scripts: pack name.<br />
* Startpos (the big bad): pack name.<br />
* Text: table name.<br />
* UI: pack name.<br />
* Variants: pack name.<br />
<br />
And that is if the modder doesn’t redirect content. KMM can only affect pack name order, so there are things like balance submods (Db overrides) that are still completely in the hands of the modders and intentionally so.<br />
<br />
In other words, there are only two possible cases in which you may want to alter load order manually: UI and variants, basically if you want to use specific reskin B.pack in the midst of larger reskin A.pack, in which case you push B on top.<br />
<br />
''In conclusion, you want to follow KMM’s instructions, give Steam time to download/remove mods and mostly keep load order in an alphabetical fashion (e.g. order by name and save profile), especially after adding new mods.''<br />
<br />
Which, incidentally, is this:<br />
<br />
! # $ % & ‘ ( ) + , – ; = @ 0-9 a-z [ ] ^ _ ` { } ~<br />
<br />
Where “!” wins over “a”.<br />
<br />
== Common Troubleshooting ==<br />
In an efficient mod, at least half of the reported issues are down to user error or what is technically called launcher f***-up. We’re going to try and cut that amount down for the greater good.<br />
<br />
==== User good practices: ====<br />
<br />
# Read the mod description. Seriously, this alone would prevent 80% of comments on Steam pages. Even if a description looks long, do it, it’s there for a reason. Some mods will also have FAQs or a list of known issues, incompatibilities and instructions. Read the comments before yours too if you have to post one. There’s an excellent chance the question you’re going to ask is already answered in in descriptions, FAQs and recent comments.<br />
# Don’t ignore the required items. The mod may show you a popup upon subscribing, disregarding that is almost always cue for disaster. This popup is ''not'' shown when subbing from a Steam collection (thanks Gaben), so actually check the mod’s page.<br />
# Keep the mod list in alphanumerical order. We’ve been over that already. If you have new mods that have popped at the tail of the list, just click again on the <code>File Name</code> column in KMM and save your profile.<br />
# Troubleshoot yourself! The thing is, we don’t have time to help everybody, and in most cases the problem is local. We’ll get to best practices on this, don’t worry.<br />
# Upon commenting about an issue, provide context. Ok, you did everything right but that ugly bug is still there. That’s fine. The worst thing you could do at this point is comment “mod doesn’t work” because that means absolutely nothing. Modders aren’t telepaths. Steam comments aren’t the best place for this, so use a discussion or the discord server/channel lurked by that given modder.<br />
#* Context: when and how the thing happened. E.g. during the interturn after X’s turn, or clicking this button, whether it was Vortex/ME/multiplayer, custom battle or campaign battle.<br />
#* Mod list: Link a collection or a screenshot to the KMM list. For example, the big thing is not being naif enough that the overhaul in your list can’t affect other mods. For some reason, sometimes it feels like pulling teeth to know what else is there.<br />
#* Screenshot: always helps for clarity and visual context.<br />
#* Save game: if requested, you can find your save game in (example) C:\Users\%USER%\AppData\Roaming\The Creative Assembly\Warhammer2\save_games. Remember the mod list, because the modder may not be able to load without it.<br />
#* Results of your own troubleshooting: for example it’s good to know it happens with that one mod only. Relatedly, if you posted about an issue and later find the cause, let us know.<br />
<br />
''This list is of course not meant to insult anybody’s intelligence, but you’d be surprised at how many issues and massive wastes of time are due to neglect of these simple rules. Following them is in the user’s interest in order to find a solution sooner, and it will allow the modder more time for improvement rather than wasted in unnecessary bug-hunts.''<br />
<br />
<br />
'''Frequent Steam issues:'''<br />
# Corrupted and botched download: this is relatively frequent and it causes 'random' crashes with mods that ''don't'' otherwise crash. Delete locally and redownload until it works. If using KMM, use the unsub+delete option, and resub.<br />
# Mod not updated: Steam may also not fetch the latest version of a random TW mod. At the merest issue, always double check the local file's last date and that of the mod on the workshop (on the top right, Last Updated).<br />
<br />
==== Common launcher/game issues: ====<br />
<br />
# Failed to download/remove mod. This happens relatively often and if in doubt you should always check in the mod download folder (example: Z:\Steamsteamapps\workshop\content\594570\??????) whether that mod was successfully downloaded/removed. Open George/Steam again until it is. The final folder id is the same as the one on the mod’s Steam url and you can sort by date for the most recently poked folder.<br />
#* More on this if using KMM: Kaedrin’s manager copies packs from that content/ to the game’s data/ folder. Moreover, when mods update you will likely need to refresh/restart KMM.<br />
# Ghost mods. Definitely spooky. You have toggled off that mod, but somehow it turns out it was still being loaded and crashing your game. Or a mod updates and self-enables. Using KMM seems enough to prevent this kind of poltergeist.<br />
# Random crashes: sometimes stuff just breaks and you have to verify your game’s cache: Steam Library>right click on game>Properties>Local Files>Verify yadda yadda. Or check with the game’s support.<br />
# Failure to enable mods or borked load order: sometimes George simply won’t fire what you want, or you’ve accidentally touched load order and now it won’t revert. Use KMM.<br />
# Soft cap: as of King’s Shilling update, this is completely fixed and the cap is indefinite. You can stop merging stuff or believing conspiracies about CA intentionally capping mods.<br />
<br />
==== Some specific KMM issues: ====<br />
<br />
# Doesn’t work: KMM can be installed anywhere, BUT in the game’s stuff. Don’t install in data/ or anywhere close. Hell, plop it in the desktop.<br />
# Doesn’t work cause I’m pirating the game: KMM can smell piracy. Buy the game.<br />
# KMM freezes on start: reboot it.<br />
# Game crashes on load: if you get that or suddenly crash for no good reason, just refresh/restart KMM first thing. If it persists, time to actually troubleshoot. KMM doesn’t often suffer of corrupted downloads but it may theoretically still happen.<br />
# Movie packs: still crashing? Even with no packs enabled at all? Ok, keep in mind that once they are in the data/ folder, movie packs will always be enabled no matter if you’ve toggled them on or not. KMM shows if a mod is a conventional pack file or movie pack (Type column), and it will tell you on the lower right how many movie packs you’re currently running. To effectively disable a movie pack, use the right click option <code>Unsubscribe (Steam) and Delete</code>. This should get rid of that mod in one go, instead of doing a mix of things that will probably still cause KMM to copy the pack again. Movie packs are mostly used for vfx, but sometimes also come with data baggage that you don’t always want around. Modders: you ''really'' want to only have harmless vfx in the movie pack, not db and scripts.<br />
<br />
== APPENDIX: Trimming the Mod List ==<br />
Again, there is virtually no such thing as a soft cap in WH2 anymore. So it’s up to you to keep your mod list functional, and if you have more than 100 mods enabled, risks and maintenance time will increase for you. Making that work is up to how careful you are, and even if a mod list doesn’t produce an instant crash you can’t be sure there aren’t less visible issues, e.g. script breaks.<br />
<br />
As a rule of thumb, don’t be cocky with your list of 250 mods because it’s all fun and games until everything works perfectly (and with those numbers chances are it doesn’t already, you just can’t see it), at which point there’s a lot of stuff to check.<br />
<br />
If you’re not experienced yet (and don’t assume you are just because you played Skyrim, this is different), use the mod list of someone that has very carefully been curating it, and check that it looks ok with the help of the modders themselves. For example, start by a modder’s own collection on Steam, they often have one.<br />
<br />
=== Finding the culprit ===<br />
The usual problem with large mod lists is this: bad, I got a crash; worse, which one of the N mods I have is the culprit?<br />
<br />
==== Generic pointers: ====<br />
<br />
* Pure Text, Variant and UI mods can basically NEVER crash the game for the user. If they do, it’s a botched download.<br />
* Momentarily sort by date either on KMM to find the most recent updates, if you didn’t add additional mods those ''may'' be responsible.<br />
* If you had the issue during a campaign, do not remove mods that have custom items, units or buildings because you’re just going to crash harder if those are around in the campaign map.<br />
* As mentioned above, watch out for movie packs. If you’re inexplicably crashing even with no mods on, you might have a movie pack with crashy data in it.<br />
<br />
==== Bisect and Conquer: ====<br />
Especially when dealing with big mod lists, the quickest method is to enable half of it. If you crash, that’s the troublesome half. Halven again to tighten the noose.<br />
<br />
Keep in mind mod requirements while you do this.<br />
<br />
If you want to check on a particular mod, disable everything and load the bare minimum to make that mod work, in other words mod+whatever required mods that comes with. And up from there, adding one or small groups of mods at a time until you can reproduce the issue.<br />
<br />
It’s patient work but the modder will appreciate it, and it takes less than panicking for hours in a comment section. Assume that a modder won’t troubleshoot your mod list of 150 packs because you say it’s their mod doing it, unless they have proof because you tested without anything else plus requirements.<br />
<br />
Remember: a happy modder is a happy user.<br />
<br />
== APPENDIX: Scripts ==<br />
Scripts are being increasingly used by mods. While most scripters are getting smarter by the day to maintain compatibility, some require a framework or some mods will just struggle to work when there are too many mods around.<br />
<br />
You may encounter symptoms of broken scripts, due to botched downloads, bad compatibility or just plain unforeseen issues because we can just mess stuff up sometimes. Script glitches tend to be quite tricky to root out.<br />
<br />
A few examples of broken scripts:<br />
<br />
* Starting lords that should be custom are not custom, or don’t spawn, or don’t have the correct army or settlement.<br />
* Sword of Khaine button is unchained right off.<br />
* Chaos and all Rogue armies may spawn immediately.<br />
* Campaign camera on a fresh campaign starts zoomed-out and doesn’t pan in.<br />
* Chivalry starts at 0.<br />
* One of the worst, characters do not gain XP (this may sometimes happen in full vanilla too, requires repair).<br />
<br />
==== Scropt broken, what do? ====<br />
In some cases, it’s just a botched download (see Launcher error 3). Otherwise it gets trickier and requires you to start trimming the mod list to find the culprit. When/if you report the issue to modders, remember to provide as much info as humanly possible because finding a script break can turn ugly and complicated.<br />
<br />
Particularly useful to help with scripting issues: please enable [https://steamcommunity.com/sharedfiles/filedetails/?id=1271877744 this debugger], reproduce the bug and send the resulting log, which will be a lenghty txt generated in ''Steam\steamapps\common\Total War WARHAMMER II''. Specific scripty mods may come with additional instructions in their mod descriptions/faqs.<br />
<br />
Do not keep the script logger there unless you need it, since it will noticeably slow down your game.<br />
<br />
One of the most frequent issues at the moment is a performance-related clog-up at the start of a campaign. This basically means that too many scripts are trying to fit into that time frame to do their stuff (legendary lords, changing armies, this kinda stuff) and results in some of them not working. This is where size of the mod list, in regards to any mod with a first-tick script, becomes serious.<br />
<br />
Quick note about Communiy Modding Framework: an obsolete scripting system, it’s basically only used by Crynsos’s unlocker at this point in time (september 2020) and will cause issues more often than not when enabled and not required.<br />
<br />
''Basically disable it unless you’re using CFU''.<br />
<br />
I repeat, it often breaks stuff. When in doubt, shoot it in the face.<br />
<br />
== APPENDIX: [https://steamcommunity.com/sharedfiles/filedetails/?id=1354363596 UI Modding Framework] ==<br />
This framework is technically not required to do UI modding at all, but it may be used as a framework by some scripty mods. Unless it happens to have broken functions after a patch, there are zero reasons not to have it around just in case one of your mods is actually using it or starts doing it.<br />
<br />
== APPENDIX: [https://steamcommunity.com/sharedfiles/filedetails/?id=1354363596 Mod Configuration Tool] ==<br />
This other framework is used to provide settings for compatible mods, i.e. to tweak some details at your heart’s content. Usually a good thing to keep it around because there’s quite a few mods supporting it, or that may do it in the future. For example, you may use it to configure some scripts to fire in a performance mode to reduce impact on campaign start.</div>Cataphhttps://tw-modding.com/index.php?title=Tutorial:Unit_Card_Guide&diff=418Tutorial:Unit Card Guide2021-08-16T18:48:05Z<p>Cataph: </p>
<hr />
<div>=== Originally by Cataph ===<br />
<br />
== Why ==<br />
Hello, my name is Cataph and I am a cardoholic.<br />
<br />
I heard you made a new unit and you need a new flashy unit card. Simple. No, it ain’t. Unit cards are probably the unit’s component you will be staring at for the majority of the time, even more than the actual variant. Get it wrong and it can be an eyesore for the entire campaign and battle.<br />
<br />
A good unit card will:<br />
<br />
* blend in with other vanilla pieces<br />
* show the unit’s appearance<br />
* display, possibly, its character and gear and role<br />
<br />
== What ==<br />
But first things first. A unit card is a 60×130 PNG. Don’t make it larger than that or it will automatically be compressed in-game and lose more quality than if you did it yourself. Its location is ui/units/icons, and it’s a good idea to open the data.pack and extract that folder for future reference. Its name needs to be the same in the card column in the <code>unit_variants</code> table.<br />
<br />
In units/info you may find a version with a larger “shredded frame”, this is however only used in loading screens, so ignore that unless you need those for promo or stuff like that. Of course, if you ''do'' need one, start with that larger size and halve the size later for the actual unit card, or it will look like something you don’t want to look at.<br />
<br />
== How ==<br />
You can use stuff like GIMP or Photoshop to assemble a unit card. Personally I use the latter so I will use its lingo, and I’ll have to assume you already know how to play around with it a bit. Specifically, you’ll want to know how to use layers and possibly adjustment levels. If you don’t, it’s fine, there are a lot of basic guides on the interwebs, and even if you skip some of the speshul effects I may end up using you’ll still get a better result than just plopping a screenshot in there.<br />
<br />
Admittedly, during the transition between Rome2’s and Warhammer’s art style I made truly ''horrendous'' cards myself, but with time I noticed things and developed some tricks. Keep patience.<br />
<br />
Most CA cards are similar to existing GW artwork, but are still made by a proper artist. I am certainly not one, but you’ll want to respect these factors:<br />
<br />
* Positioning of the portrayed unit: not too zoomed in, not too far away; varies with races too. E.g., notice how Empire cards tend to have a western knee-cut, Dwarfs a full body.<br />
* Lighting: CA cards are generally good luminosity, low contrast but with drawn highlights. This is important, you don’t want your card to be a confused blob.<br />
<br />
Before we get to the chase, [https://cdn.discordapp.com/attachments/731080362758766652/748925752115855530/template.psd get this template]! Always periodically test with the card frame on top, I used to get immensely pissed off when important details of my card got hidden by the UI. You will never see the entire card in the game, especially on ranged units due to the additional ammo bar. Remember to hide the frame again when you’re done. It’s a PSD file, but should work just fine in GIMP too.<br />
<br />
== The Three Jedi Ways ==<br />
[please don’t use the sampled pictures without permission]<br />
<br />
* '''THE ARTWORK'''. You grab a ''legal''* and beautiful artwork around, and tweak it until it fits and shines. Usually the quickest method, but it requires a good sample. Example below, for my Skullreapers, [https://vignette.wikia.nocookie.net/warhammerfb/images/7/76/BORKIL.jpg/revision/latest?cb=20130829160001 based on this artwork]. [[File:CTT_chs_kh_berz_framed.png|alt=|center|frameless]]'''THE MONTAGE'''. ''Even Rocky had a montage.'' You grab parts from existing CA cards and glue them together. This may look simple but it’s actually an excellent way to get god-awful cards, because each bloke in a card may have its size, positioning and lighting, and mixing them may not work like you’d think. You don’t want your card to look like the portrait of the Frankenstein’s Monster, or too samey with the neighbouring unit. Also, [https://i.imgur.com/l8Qgqwv.png avoid recycling the same base too many times in the same roster or you’ll get this effect]. Working examples: below for my Estalian Lancers, or [https://cdn.discordapp.com/attachments/374122686034477057/452435403610259457/berserker_champion.png this infopic by not-a-spoon].[[File:Unit_card_est_cav.png|alt=|center|frameless]]<br />
<br />
* '''THE PHOTOSHOOT'''. You take things in your hands and start taking screenshots of the unit in-game. This can be a lengthy process, especially for cavalry and ranged units, but can be quite satisfying and produce a faithful portrait of the unit. It’s my favourite and most used method, and the one I’m going to describe. This is also where Positioning and Lighting really come to play.<br />
<br />
<nowiki>*</nowiki> Remember that you can’t use non-WHFB stuff and if fan-art, you want to check/ask permission.<br />
<br />
== Guide to the Photoshoot ==<br />
First off you need to take a good screenshot in which the unit comes with a good pose, possibly no animation glitches and clipping. As said, you need something that will fit in a 60×130, so some photography experience may come in handy.<br />
<br />
Here are two examples that can give you an idea of how to crop and photoshop a battle screenshot and what the final result can potentially look like.<br />
<br />
[[File:Unit card photoshoot 1.jpg|frameless]]<br />
<br />
[[File:Unit card photoshoot 2.jpg|frameless]]<br />
<br />
These two blokes are Estalian reskins for Swordsmen and Spearmen. As you can see, the pose needs to fit in a quite longilineal frame, so not all stances will work and also why cavalry is more difficult. You want to show at least part of the body and weaponry. If they have a shield, avoid it occupying too much of the card.<br />
[[File:Unit card photoshoot 3.png|none|thumb|Cavalry cropping is particularly annoying. You want enough horse but not too much, and enough rider that is not hidden by the beastie’s massive neck: '''pro tip, temporarily put mount size at 0.95.''' (I later photoshopped the lance to be more visible)]]<br />
''Protip! Use a better camera mod and the >N< key high-detail camera for better screenshots.''<br />
<br />
Usually you will want a decent lighting, so no early dawn or cloudy battles. Don’t pick a vampire battle, then.<br />
<br />
You can still make those work but it’s harder. For these guys I wanted a sunny look instead of the gloomy Empire cards, so I edited the sky background.<br />
<br />
The beginning may be as simple as auto-tuning Luminosity and/or Tone to remove weird tints. Afterwards you want to reduce contrast (by a lot, even up to 100!) and probably still increase luminosity (otherwise they are likely going to look quite bleak in-game). Test in custom battle selection until it’s not a grey blob anymore.<br />
<br />
Then comes the holistic and complicated part.<br />
<br />
'''Protagonism''': the bloke must be instantly distinguishable from the background. Selecting them with lasso/magic wand and making them a separate layer is always a good idea. Afterwards you’ll probably further lighten or darken the background stuff. Blurring also works but I usually don’t like it, as it can look too fake. Giving it a ''minimalist'' oil paint touch can also help.<br />
<br />
'''Background''': when you have extra time and experience in your hands, you may want to add smoke, happy clouds, grim clouds, that sort of thing, behind the protagonist’s layer. Screenshots can often produce rather flat backgrounds and that can be off-putting. For example, grab a nice sky from another screenshot or even a random photo, resize and apply it with a layer mask that excludes the protagonist and probably the ground they’re standing on. Then tweak at will for opacity, blending and even tone. CA backgrounds are often some unnatural colour.<br />
<br />
'''Contours''': this is the secret recipe and why we lowered contrast. We said CA cards are artworks, and they have visible dark contours to highlight parts. So we start drawing them (1-2 pixel width) with medium hardness brush or pencil in black and white in a new layer. Usually it looks good when it’s set as Soft Light, probably between 60 and 100% opacity, tweak at will. Contours can make a huge difference between a flat icon and one that can blend in with vanilla ones. Examples (Swashbucklers from TEB and Teutogen Guard) without and with contour:<br />
[[File:Unit card photoshoot 4.png|none|thumb|The left one has a painted sky and super-imposed fire layers, you don’t want to bother with that sort of stuff at first.]]<br />
The cards were already heavily-engineered, but you can still notice an improvement. For example, here’s what the Swashie’s contour layer looks like on a background and at 100% opacity:<br />
<br />
[[File:Unit card photoshoot 5.png|frameless]]<br />
<br />
<br />
However, I’m actually gradually moving towards thicker contours, with one layer at size-2 brush and another up to 4 for the thickest shadows and bright surfaces.<br />
[[File:Dwf huskarls framed.png|none|thumb]]<br />
<br />
One further example (Lothern Sea Rangers):<br />
[[File:Unit card photoshoot 6.png|none|thumb|1, almost unedited;2, added two levels of fog in front and two behind at varying Normal opacity;<br />
<br />
3, added tight brush contours and a sword glint for rule of cool.]]<br />
In any case, you will still check how the card looks in custom battle roster selection (where it’s the smallest) and in the following screens. Sometimes it will suck so hard that it’s back to the drawing board, but that’s ok. Another thing that you should look at in-game is whether the lighting is ok or if the picture gets burned tfo when the unit is selected.<br />
<br />
You read through here so here’s a prize: my first and terrible unit card for WH1, versus the same unit in WH2:<br />
<br />
[[File:Unit card photoshoot 7.jpg|frameless]]<br />
<br />
== APPENDIX: Character Icons ==<br />
Characters want their portraits too, of course. Their cards are kept in ui/portraits/units/(designated culture) and are quite simpler to make. You follow the Photoshoot method, fix the tone, probably increase luminosity a bit, and bam, done.<br />
<br />
What you really want to work on at this point is that you want to use that faction’s face-to-frame size ratio to make it look better next to the other heroes and lords. For example Empire characters tend to be more zoomed-out, whereas Vampires have a creepier and closer portrait (you can recognize a bloodsucker by their selfies). When you check in-game on the custom battle roster, try to see if your faction’s character cards are all more or less the same zoom and crop. It looks a bit shady when the eyeline on all of them makes a rollercoaster wave.<br />
<br />
Notice that CA has moved on to make more artsy portrait for their LLs in particular. I can’t easily explain how to emulate that style because I don’t have yet a one-size-fits-all pattern.<br />
<br />
Making that stuff actually work in campaign is done [https://steamcommunity.com/sharedfiles/filedetails/?id=1194811468 by following the binning guide].<br />
<br />
== APPENDIX: Unit 2d Portholes ==<br />
Aka Minspec portholes. These are the 2d pictures used in the lower left corner when you disable the framerate-consuming 3d portholes. For units, you’ll find these in UI\units\minspec_portholes and are 164×164 PNG circular icons. [https://cdn.discordapp.com/attachments/448859190874603520/708658469846384720/minspec_template.psd Use this different template as a base], screenshot your unit so that you can crop an acceptable bust portrait from it and put it in the group. Move it around until it looks alright, and usually only minimal tweaks are necessary like autotune and autocontrast.<br />
<br />
After that, you usually want to cut/mask away the background so that the portrait will be properly superimposed to a smoky background in-game. You can do it via lasso or magic wand and/or brush. Hair parts will always be trickier. Use the solid colour background I put in there as a reference to check for floaty bits, make sure you hide that when you’re done.<br />
<br />
Note: minspec name needs to be the same as the main_unit.<br />
<br />
== APPENDIX: Character 2d Portholes ==<br />
Aka just portholes. Ditto with the previous paragraph, but these are explicitly for your characters. You’ll find these in UI\portraits\portholes\whateverculture and are 193×193 PNG circular icons, yes, do notice that these are larger than the unit minspecs. [https://cdn.discordapp.com/attachments/448859190874603520/708659416693473381/porthole_template.psd Use this different template as a base]. Same exact procedure otherwise.<br />
<br />
Name the character porthole exactly the same you’ve called the character’s unit card, or the bin settings will not find one of the two. As a general recommendation, just call both the same way you’ve called the character art set, e.g. dude_01, dude_02, LL_dudette, which, unless you hate yourself, will also be how you called the character art set.<br />
<br />
Remember to put the same bin in both folders (compare with vanilla or other mods).<br />
[[Category:Needs Formatting]]</div>Cataphhttps://tw-modding.com/index.php?title=File:Dwf_huskarls_framed.png&diff=417File:Dwf huskarls framed.png2021-08-16T18:42:10Z<p>Cataph: </p>
<hr />
<div>asd</div>Cataphhttps://tw-modding.com/index.php?title=Tutorial:Submodding&diff=347Tutorial:Submodding2021-06-05T08:38:00Z<p>Cataph: </p>
<hr />
<div>=== Originally written by Cataph ===<br />
If you’re a modder, one of the most frequent comments next to romantical proposals (YMMV) will be “SFO/Radious/CTT/Lucky/yomama compatibility when”. Many modders don’t have an interest in making a submod simply because they don’t know and play a given overhaul and wouldn’t know how to balance it anyway.<br />
<br />
So, what if it could be you making that submod? Or maybe you just want to make X mod work better with Y. Be the submodder you want to see in the world!<br />
<br />
A few things first.<br />
<br />
== WHAT IS A SUBMOD? ==<br />
Basically, an optional plugin designed to make mod X work or work better with mod Y, thanks to this mod Z. A user that wants to use X and Y together will download mod Z and keep all three enabled.<br />
<br />
Can a submod be a standalone? Well, yes, but it wouldn’t be a submod then, would it? Besides, it’s normally a dick move to take mod X and fully reupload it with a few differences. Plus, it’s 90% never necessary and we’re going to see why.<br />
<br />
Ok, but can I just edit a mod and keep it to myself? Sure, keep in mind that you should rename the pack into something else to avoid automatic updates to overwrite what you changed.<br />
<br />
== WHY IS A SUBMOD? ==<br />
I need you to focus.<br />
<br />
== HOW IS A SUBMOD? ==<br />
Fine, thank you. About how it’s made, we don’t necessarily need mod X and Y to make sweet love to each other but only you, bloke with a basic knowledge of RPFM and TW modding.<br />
<br />
== WHAT DO? ==<br />
Ok, as a basic example let’s say we want a compatibility submod between the Sea Patrol mod and a fictional 2x unit size mod, so we want to grab whatever lines define unit numbers in the former and multiply those by 2. Daring.<br />
<br />
First thing we open the first mod as a reference, then we create a new pack for the submod. We’ll call it seapatrol_yourname_unitsize.pack.<br />
<br />
Upon viewing the db of Sea Patrol we see a whole lotta tables.<br />
<br />
Since I am a bloke with basic knowledge of [https://github.com/Frodo45127/rpfm/releases/latest RPFM] and TW modding, I know that unit sizes are in main_units.<br />
<br />
[[File:Submodding 1.jpg|frameless]]<br />
<br />
Thus, in the submod I’ll import said table/s by right click>Add…>Add from Packfile, find the pack, find the table and double click it. Close the add from packfile panel and we’re good to go, we have Sea Patrol’s main_units in our shizzle. We go in there and edit the numbers we want to change, in this case we select any num_men that is not a hero/lord’s, right click, apply math as ''{x}*2'' and done. Done? No, some of those units may be cavalry, so we need to adapt the number of mounts too. We import land_units as well and do the same thing on num_mounts. In the rarer case that there’s a multi-chariot unit, we leave mounts alone and multiply num_engines in land_units.<br />
<br />
== PRIORITY ==<br />
But it’s a submod, and we want to make sure we’re overriding the original mod’s values. No, not with load order on the mod manager, [[Troubleshooting|and incidentally you shouldn't touch that and you should use KMM]].<br />
<br />
We currently have two tables, we select those table fragments (in this case, called “AK_seahelm”) and we rename them to take priority according to this alphanumerical order:<blockquote>! # $ % & ‘ ( ) + , – ; = @ 0-9 a-z [ ] ^ _ ` { } ~ Where “!” wins over “a”.</blockquote>Usually, adding a “!” in front does it. But we also want to make clear what submod this is for. Right click> Rename> type ''!{x}_unitsize'', which will become “!AK_seahelm_unitsize”.<br />
<br />
''Note: DO NOT leave the table names as is, or you’ll crash. DO NOT leave a number as last character or it might glitch and crash anyway.''<br />
<br />
Aaaand, done! Now this submod of only two tables will correctly override unit sizes for a specific mod. Yeah, any non-vanilla key will be red in here, since you don’t define those in your pack, but no worries, it’s a submod that is designed to exist with the mod that actually has those keys.<br />
<br />
Now, like with any mod we make a PNG icon and upload if we want to share it publicly. If you upload it on the workshop, add mods X and Y as required by clicking on Add/Remove Required Items. This will prompt a user to go and fetch those required mods as well. Most of them will somehow ignore it and crash, but at least you tried.<br />
<br />
== ADDENDUM: ETIQUETTE ==<br />
By most accounts, a clean submod like the above doesn’t really need permission since you’re not stealing anything. However, you should still ask as good courtesy, and it can’t hurt to still let the og author know as they may link it in description, let you know about required changes, etc.<br />
<br />
It’s also good practice not to add donation links to a submod.<br />
<br />
== ADDENDUM: UPDATING ==<br />
It should be your interest and responsibility to stay up-to-date with the original mods as soon as you have time. For example if you’re submodding a unit mod and you see the ‘parent’ mod has updated with balance changes, some key changes or new units, you should definitely hear a couple bells ringing.<br />
<br />
Sometimes the parent mod changes a few keys and then you might even crash until you update.<br />
<br />
== ADVANCED SUBMODDING: BALANCE OVERHAULS ==<br />
The submodder should also be the one who is familiar with the overhaul they’re adapting a mod for. If you are at a loss about how to tweak some things, definitely consider asking one of the two original modders (depending on the kind of question) for advice on how to proceed. For example, “this unit is weird and I’m not sure what role it should keep”.<br />
<br />
== UNIQUE NUMERICAL IDs ==<br />
In some tables, each line has a unique numerical id in front of it (or sometimes way off like in unit_special_abilities). That’s specific for each line, and it works like other important keys like those in land_units or main_units, as in there can only be one line about that key or num id.<br />
<br />
Why am I saying all this? Because if in your submod you happen to need to ''add'' some lines in, for example, building_units_allowed, you’ll need your own unique num ids to make them work proppa. Pick any number below 2 billions and something and make sure they never repeat. This is important, do not continue off the num ids from the mod you’re submodding or you’ll cause issues at some point.<br />
<br />
== ADVANCED SUBMODDING: STICKY TABLES ==<br />
Some tables and related features are slightly more complicated to submod. For example, you want to remove a unit from a certain building level. Easy, go in building_units_allowed again. Remember those unique ids? Keep that exactly intact (so it still refers to that specific line from the og mod) and change the building to random gibberish (since that specific field is tolerant, aka won’t crash on invalid key) or even better rename it to “originalbuilding_REMOVED” so you will immediately know in the future what building level it used to be. DO NOT touch the unit field. Bam, the building level will be red in RPFM, won’t crash, and that unit won’t be available there.<br />
[[File:Submodding 2.jpg|left|frameless|533x533px]]<br />
<br />
<br />
<br />
<br />
'''Harder example''': I really don’t want any of these units to have the new-fangled Edgelord Deluxe passive ability, which is added by this mod. Cool, that means I can kill that ability from existence without it ever affecting anything else. We do that by:<br />
<br />
* grabbing its line from unit_abilities, we make it hidden in UI.<br />
* grabbing its line from unit_special_abilities, we make it a passive (boolean). Make sure you remove any activated projectile/bombardment/summon etc from here too.<br />
* grabbing its line in special_ability_to_special_ability_phase_junctions. Change the phase to a new special_ability_phase that we created and that does absolutely nothing. There, done. The ability still exists, but does nothing and is invisible. In my own private jargon this is called a pillow. Again, ''notice that you’re neutering this ability for any unit that happens to get it.''<br />
<br />
'''Even harder example''': I want this unit to not have the Regeneration passive ability. Oooh, that’s a vanilla ability, isn’t it? We can’t just dumpster it. Either we tolerate it or…<br />
<br />
== ADVANCED SUBMODDING: DEPENDENCY MANAGER ==<br />
This is a RPFM feature. ''USE WITH CAUTION''. We enable it by right clicking on the packfile itself in tree view (not on a table, not on anything else, literally the very first line in tree view), Open>Open Dependency Manager. We add a line as if it was a table (ctrl+shift+A) and type EXACTLY the pack name of the mod we want to override. As in “AK_seahelm.pack”. From this point onwards, everything we do in the submod will completely override content from the parent mod no matter the load or table order for stuff with the same name. Example, I can import a table, not change its name and completely delete its content. This would normally crash, but not with DepManager. I said use this with caution because if you do this you REALLY need to stay up-to-date with the og mod. For example, you can remove the line that gives unit A the Regen passive, and it will work. However, any further update from the parent mod in that table won’t take place unless you also mirror it. Again, this is normally not remotely required and you should steer clear of it because it’s just as bad as leaving a vanilla table called “data__”.<br />
<br />
Additionally, '''this will auto-enable the linked mod''' as soon as it’s in data/ as if it was a movie pack. As such, you don’t want to do this unless you’re doing a submod that already requires that linked mod. Because having stuff popping up even when you’ve disabled a mod is the worst.<br />
<br />
== ADVANCED SUBMODDING: BACKGROUND TABLES ==<br />
Let's say we aren't doing a submod whose only purpose is changing unit size for that other mod, but it's our own standalone mod A and we're doing some compatibility stuff to make it work better with B, without needing a separate submod C that requires both. '''For example, we want something from B in A, ''if B is also enabled''. Sometimes we can do that without C'''. <br />
<br />
Let's say I add some new units in A, and mod B adds fancy officers to all units. Officers are connected to the unit in db/land_units, but if we just pasted B's officer key in there, A would go boom if B is not enabled. We don't want that, and we may not want to force people to use B. So we paste that officer key there, replacing A_blank_record, but we also check what table that key relies on by hovering on its top (title, header, whatever), which is... db/land_units_officers. Without it, that officer key is going to go boom, [[Tolerant Tables|because it's not a tolerant key]], at all, to the point that even a non-existant officer needs an actual key called A_blank_record, which does exist. <br />
<br />
What we do is create land_units_officers, add that officer key under key, keep personality location as front or rear (honestly don't know if that crashes if left blank, don't care), but we leave the officer 1 etc columns empty. '''IMPORTANT: we rename this table fragment with something like zzzzz_mod_a_mod_b'''. Notice the zeds? Keep those in mind.<br />
<br />
So, what is this doing? It's telling the unit that it's going to use that officer group, but it's got nothing in it, no ''actual'' officers (battle_personalities). By using our mod A without B, the game finds an empty box for this officer, shrugs, and doesn't replace unit models with any officer personality. The game moves on without crashing, because that key exists. Basically, we created another blank record, but this very specific one gets filled in when B is enabled. <br />
<br />
Remember those zeds? They are there so that our blank record gets overridden by B's table (which we assume has a higher alphabetical priority than a bunch of zeds, unless B's author is not trying hard enough). Keep in mind that if B's author ever changes those officer keys you won't crash, but you'll still need to adapt because your blank record would stay blank.<br />
<br />
<br />
This can be done in a bunch of situations, but you'll need some specific knowledge of how specific contexts work. You could want to use this method to nerf some effects from mod B, in which case you might need more than one background table (the zzzzz boys), including db/effects, which by itself does absolutely nothing, but using an effect key that doesn't exist in there will go kaboom.<br />
<br />
== ADVANCED SUBMODDING: SCRIPTS ==<br />
Uhh, sorry, not my field, but you can certainly do stuff. Either a scripty fella writes this or you have to ask in Discord about the specific case you’re facing.</div>Cataphhttps://tw-modding.com/index.php?title=Tutorial:Submodding&diff=346Tutorial:Submodding2021-06-05T08:36:14Z<p>Cataph: background tables tut</p>
<hr />
<div>=== Originally written by Cataph ===<br />
If you’re a modder, one of the most frequent comments next to romantical proposals (YMMV) will be “SFO/Radious/CTT/Lucky/yomama compatibility when”. Many modders don’t have an interest in making a submod simply because they don’t know and play a given overhaul and wouldn’t know how to balance it anyway.<br />
<br />
So, what if it could be you making that submod? Or maybe you just want to make X mod work better with Y. Be the submodder you want to see in the world!<br />
<br />
A few things first.<br />
<br />
== WHAT IS A SUBMOD? ==<br />
Basically, an optional plugin designed to make mod X work or work better with mod Y, thanks to this mod Z. A user that wants to use X and Y together will download mod Z and keep all three enabled.<br />
<br />
Can a submod be a standalone? Well, yes, but it wouldn’t be a submod then, would it? Besides, it’s normally a dick move to take mod X and fully reupload it with a few differences. Plus, it’s 90% never necessary and we’re going to see why.<br />
<br />
Ok, but can I just edit a mod and keep it to myself? Sure, keep in mind that you should rename the pack into something else to avoid automatic updates to overwrite what you changed.<br />
<br />
== WHY IS A SUBMOD? ==<br />
I need you to focus.<br />
<br />
== HOW IS A SUBMOD? ==<br />
Fine, thank you. About how it’s made, we don’t necessarily need mod X and Y to make sweet love to each other but only you, bloke with a basic knowledge of RPFM and TW modding.<br />
<br />
== WHAT DO? ==<br />
Ok, as a basic example let’s say we want a compatibility submod between the Sea Patrol mod and a fictional 2x unit size mod, so we want to grab whatever lines define unit numbers in the former and multiply those by 2. Daring.<br />
<br />
First thing we open the first mod as a reference, then we create a new pack for the submod. We’ll call it seapatrol_yourname_unitsize.pack.<br />
<br />
Upon viewing the db of Sea Patrol we see a whole lotta tables.<br />
<br />
Since I am a bloke with basic knowledge of [https://github.com/Frodo45127/rpfm/releases/latest RPFM] and TW modding, I know that unit sizes are in main_units.<br />
<br />
[[File:Submodding 1.jpg|frameless]]<br />
<br />
Thus, in the submod I’ll import said table/s by right click>Add…>Add from Packfile, find the pack, find the table and double click it. Close the add from packfile panel and we’re good to go, we have Sea Patrol’s main_units in our shizzle. We go in there and edit the numbers we want to change, in this case we select any num_men that is not a hero/lord’s, right click, apply math as ''{x}*2'' and done. Done? No, some of those units may be cavalry, so we need to adapt the number of mounts too. We import land_units as well and do the same thing on num_mounts. In the rarer case that there’s a multi-chariot unit, we leave mounts alone and multiply num_engines in land_units.<br />
<br />
== PRIORITY ==<br />
But it’s a submod, and we want to make sure we’re overriding the original mod’s values. No, not with load order on the mod manager, [[Troubleshooting|and incidentally you shouldn't touch that and you should use KMM]].<br />
<br />
We currently have two tables, we select those table fragments (in this case, called “AK_seahelm”) and we rename them to take priority according to this alphanumerical order:<blockquote>! # $ % & ‘ ( ) + , – ; = @ 0-9 a-z [ ] ^ _ ` { } ~ Where “!” wins over “a”.</blockquote>Usually, adding a “!” in front does it. But we also want to make clear what submod this is for. Right click> Rename> type ''!{x}_unitsize'', which will become “!AK_seahelm_unitsize”.<br />
<br />
''Note: DO NOT leave the table names as is, or you’ll crash. DO NOT leave a number as last character or it might glitch and crash anyway.''<br />
<br />
Aaaand, done! Now this submod of only two tables will correctly override unit sizes for a specific mod. Yeah, any non-vanilla key will be red in here, since you don’t define those in your pack, but no worries, it’s a submod that is designed to exist with the mod that actually has those keys.<br />
<br />
Now, like with any mod we make a PNG icon and upload if we want to share it publicly. If you upload it on the workshop, add mods X and Y as required by clicking on Add/Remove Required Items. This will prompt a user to go and fetch those required mods as well. Most of them will somehow ignore it and crash, but at least you tried.<br />
<br />
== ADDENDUM: ETIQUETTE ==<br />
By most accounts, a clean submod like the above doesn’t really need permission since you’re not stealing anything. However, you should still ask as good courtesy, and it can’t hurt to still let the og author know as they may link it in description, let you know about required changes, etc.<br />
<br />
It’s also good practice not to add donation links to a submod.<br />
<br />
== ADDENDUM: UPDATING ==<br />
It should be your interest and responsibility to stay up-to-date with the original mods as soon as you have time. For example if you’re submodding a unit mod and you see the ‘parent’ mod has updated with balance changes, some key changes or new units, you should definitely hear a couple bells ringing.<br />
<br />
Sometimes the parent mod changes a few keys and then you might even crash until you update.<br />
<br />
== ADVANCED SUBMODDING: BALANCE OVERHAULS ==<br />
The submodder should also be the one who is familiar with the overhaul they’re adapting a mod for. If you are at a loss about how to tweak some things, definitely consider asking one of the two original modders (depending on the kind of question) for advice on how to proceed. For example, “this unit is weird and I’m not sure what role it should keep”.<br />
<br />
== UNIQUE NUMERICAL IDs ==<br />
In some tables, each line has a unique numerical id in front of it (or sometimes way off like in unit_special_abilities). That’s specific for each line, and it works like other important keys like those in land_units or main_units, as in there can only be one line about that key or num id.<br />
<br />
Why am I saying all this? Because if in your submod you happen to need to ''add'' some lines in, for example, building_units_allowed, you’ll need your own unique num ids to make them work proppa. Pick any number below 2 billions and something and make sure they never repeat. This is important, do not continue off the num ids from the mod you’re submodding or you’ll cause issues at some point.<br />
<br />
== ADVANCED SUBMODDING: STICKY TABLES ==<br />
Some tables and related features are slightly more complicated to submod. For example, you want to remove a unit from a certain building level. Easy, go in building_units_allowed again. Remember those unique ids? Keep that exactly intact (so it still refers to that specific line from the og mod) and change the building to random gibberish (since that specific field is tolerant, aka won’t crash on invalid key) or even better rename it to “originalbuilding_REMOVED” so you will immediately know in the future what building level it used to be. DO NOT touch the unit field. Bam, the building level will be red in RPFM, won’t crash, and that unit won’t be available there.<br />
[[File:Submodding 2.jpg|left|frameless|533x533px]]<br />
<br />
<br />
<br />
'''Harder example''': I really don’t want any of these units to have the new-fangled Edgelord Deluxe passive ability, which is added by this mod. Cool, that means I can kill that ability from existence without it ever affecting anything else. We do that by:<br />
<br />
* grabbing its line from unit_abilities, we make it hidden in UI.<br />
* grabbing its line from unit_special_abilities, we make it a passive (boolean). Make sure you remove any activated projectile/bombardment/summon etc from here too.<br />
* grabbing its line in special_ability_to_special_ability_phase_junctions. Change the phase to a new special_ability_phase that we created and that does absolutely nothing. There, done. The ability still exists, but does nothing and is invisible. In my own private jargon this is called a pillow. Again, ''notice that you’re neutering this ability for any unit that happens to get it.''<br />
<br />
'''Even harder example''': I want this unit to not have the Regeneration passive ability. Oooh, that’s a vanilla ability, isn’t it? We can’t just dumpster it. Either we tolerate it or…<br />
<br />
== ADVANCED SUBMODDING: DEPENDENCY MANAGER ==<br />
This is a RPFM feature. ''USE WITH CAUTION''. We enable it by right clicking on the packfile itself in tree view (not on a table, not on anything else, literally the very first line in tree view), Open>Open Dependency Manager. We add a line as if it was a table (ctrl+shift+A) and type EXACTLY the pack name of the mod we want to override. As in “AK_seahelm.pack”. From this point onwards, everything we do in the submod will completely override content from the parent mod no matter the load or table order for stuff with the same name. Example, I can import a table, not change its name and completely delete its content. This would normally crash, but not with DepManager. I said use this with caution because if you do this you REALLY need to stay up-to-date with the og mod. For example, you can remove the line that gives unit A the Regen passive, and it will work. However, any further update from the parent mod in that table won’t take place unless you also mirror it. Again, this is normally not remotely required and you should steer clear of it because it’s just as bad as leaving a vanilla table called “data__”.<br />
<br />
Additionally, '''this will auto-enable the linked mod''' as soon as it’s in data/ as if it was a movie pack. As such, you don’t want to do this unless you’re doing a submod that already requires that linked mod. Because having stuff popping up even when you’ve disabled a mod is the worst.<br />
<br />
== ADVANCED SUBMODDING: BACKGROUND TABLES ==<br />
Let's say we aren't doing a submod whose only purpose is changing unit size for that other mod, but it's our own standalone mod A and we're doing some compatibility stuff to make it work better with B, without needing a separate submod C that requires both. '''For example, we want something from B in A, ''if B is also enabled''. Sometimes we can do that without C'''. <br />
<br />
Let's say I add some new units in A, and mod B adds fancy officers to all units. Officers are connected to the unit in db/land_units, but if we just pasted B's officer key in there, A would go boom if B is not enabled. We don't want that, and we may not want to force people to use B. So we paste that officer key there, replacing A_blank_record, but we also check what table that key relies on by hovering on its top (title, header, whatever), which is... db/land_units_officers. Without it, that officer key is going to go boom, [[Tolerant Tables|because it's not a tolerant key]], at all, to the point that even a non-existant officer needs an actual key called A_blank_record, which does exist. <br />
<br />
What we do is create land_units_officers, add that officer key under key, keep personality location as front or rear (honestly don't know if that crashes if left blank, don't care), but we leave the officer 1 etc columns empty. '''IMPORTANT: we rename this table fragment with something like zzzzz_mod_a_mod_b'''. Notice the zeds? Keep those in mind.<br />
<br />
So, what is this doing? It's telling the unit that it's going to use that officer group, but it's got nothing in it, no ''actual'' officers (battle_personalities). By using our mod A without B, the game finds an empty box for this officer, shrugs, and doesn't replace unit models with any officer personality. The game moves on without crashing, because that key exists. Basically, we created another blank record, but this very specific one gets filled in when B is enabled. <br />
<br />
Remember those zeds? They are there so that our blank record gets overridden by B's table (which we assume has a higher alphabetical priority than a bunch of zeds, unless B's author is not trying hard enough). Keep in mind that if B's author ever changes those officer keys you won't crash, but you'll still need to adapt because your blank record would stay blank.<br />
<br />
<br />
This can be done in a bunch of situations, but you'll need some specific knowledge of how specific contexts work. You could want to use this method to nerf some effects from mod B, in which case you might need more than one background table (the zzzzz boys), including db/effects, which by itself does absolutely nothing, but using an effect key that doesn't exist in there will go kaboom.<br />
<br />
== ADVANCED SUBMODDING: SCRIPTS ==<br />
Uhh, sorry, not my field, but you can certainly do stuff. Either a scripty fella writes this or you have to ask in Discord about the specific case you’re facing.</div>Cataphhttps://tw-modding.com/index.php?title=Tutorial:Unit_Balance_Tips&diff=300Tutorial:Unit Balance Tips2021-03-24T20:17:17Z<p>Cataph: link fix and pic</p>
<hr />
<div>=== Originally by Cataph ===<br />
<br />
== PREMISE ==<br />
This guide is aimed at unit or character modders in WH2, and while I assume we’re talking about introducing or editing stuff for vanilla balance, most of the tips should remain useful even if you’re doing your own battle overhaul or whatever it is you’re doing. What I intend to do is suggest ways towards tuning your stuff so that it fits in the whole shebang and avoiding the common mistakes.<br />
<br />
I’m sure that many of you may be thinking “but balance is subjective!”, which is possibly true, but it’s especially true only because balance ''is'' fickle and ''does'' depend on context a lot. On the other hand, there are scenarios in which what you’re doing is objectively too weak or too strong.<br />
<br />
There is also the spiky and infamous matter of SP or MP balance.<br />
<br />
I agree that MP poses issues that SP doesn’t, but I personally disagree with those that see the two aspects of the game as incompatible. You ''can'' balance a unit for both, give or take. Of course, MP’s tendency towards min-maxing and cheesing will expose issues faster than a Karen in a retail shop.<br />
<br />
Then there’s the famous “all units become OP in campaign” which is kinda true but sort of an excuse, and out of our hands insofar as we do our job balancing the unit’s baseline stats.<br />
<br />
“But I want unbalanced OP units!” Sure, then read no further and we won’t talk about it.<br />
<br />
Keep in mind this guide will avoid technicalities of how to create a unit, that’s for the [https://steamcommunity.com/sharedfiles/filedetails/?id=1694945483 unit creation guides] to do.<br />
<br />
== CONTEXT: THE ROSTER ==<br />
Alrighty, you’re making a new unit. One of the main features of Warhammer is that its balance is asymmetrical, in that there are many diverse factions and most of them have their own strengths and weaknesses, usually much more marked than they’d be in a historical setting of human-only warfare. <br />
<br />
We want to preserve those factional strengths and weaknesses; the usual examples being how Warriors of Chaos are a meatheaded faction poised for a decisive melee push with expensive and elite melee units, with little in the way of missile potential, and predictably fielding heavy armour stuff. Dwarfs are a tanky and shooty faction famously suited for corner camping because of how lacky they are in terms of mobility. The Empire is a faction built for width rather than height, with only a couple units that can shine in their department. Wood Elves are supposed to be the kings of squishy skirmishers. And so on. <br />
<br />
So while it may be your active choice to, say, add a unit comparable to Chaos Chosen to Wood Elves, and assuming you’re still reading because you still somehow want to balance them, know that you’re removing a faction’s weakness, specifically the lack of a uber heavy infantry unit. <br />
<br />
Relatedly, you could be tempted to exactly copy the stats of a unit to add one to another faction. Hey, they can’t be OP if they’re the same as vanilla unit X, right? Wrong, some units may be deliberately stronger for a faction exactly because that’s where that faction is supposed to shine and to compensate other weaknesses. In other words, pooling good units from multiple factions into one still creates an OP chimera.<br />
<br />
This also works from another perspective. If you’re designing, say, a heavy cavalry unit for whatever non-elven non-chaos faction, you should likely avoid making it more powerful than what the supposed kings of heavy cav can bring, aka Bretonnia. If your Halfling Rooster Knights can keep up with Grail Knights there’s definitely something wrong.<br />
<br />
Which brings us to…<br />
<br />
== CONTEXT: THE METERSTICK ==<br />
Which is like a yardstick, but we don’t do that sort of measure in these parts.<br />
<br />
A healthy habit I found is identifying possibly two or even up to four vanilla units that you can use to delimit what your unit should be. No, vanilla balance is not perfect, and gods know I have my grievances, but that’s what we’re working with.<br />
<br />
Let’s continue the example and say your unit, hereby The Fonzies, is to be a unit of heavy infantry with greatswords. Daring, aren’t we? And what faction are they for? Dark Elves, I decide that the Fonzies are Dark Elves. <br />
<br />
Ok, what would your metersticks for the Fonzies be? Obviously, more heavy infantry with great weapons. Let’s look around, and we’ll see a lot of examples. You can rummage in Custom Battles, or compare units on [https://twwstats.com/unitscards https://twwstats.com/].<br />
[[File:Example comparison twwstats Fonzies2.jpg|right|frameless|381x381px]]<br />
First, we look at units from the same race: Executioners, White Lions, Swordmasters, Wildwood Rangers. Then, from other races, we have Greatswords, Foot Squires, GW Longbeards. Ok, that’s a wild range, innit? <br />
<br />
Let’s narrow it down a bit and decide that the unit will be more or less for a tier 3 slot of sorts, so we definitely don’t want it to be remotely as good as the Executioners or the Swordmasters. Lions and WW Rangers are a good meterstick, since they are tier 3 elves with a big choppa, but both have their own peculiarities: one with pelt shenanigans plus martial prowess (BIG +12 MD while healthy), one with immpsy, a custom passive and beefier stats. A Delf unit would come with its own murderous prowess, and might be more aggressive in overall style. <br />
<br />
When we proceed to juggling stats, we want to keep an eye on the human units, to make sure we don’t go as low as that, that we don’t increase unit size, since elves cap at 100@ultra for non-chaff, that we don’t make the Fonzies as tough as the Rangers or the Longbeards. Again, we don’t want to make Executioners look bad, since they have to coexist. So, for example, we can play on less armour, more speed, squishy stats. The point here is making sure the Fonzies don’t make other units obsolete. And since Dark Elves already have killy anti-infantry units, we should let Corsairs and Witch Elves be more efficient against lightly-armoured foes, focusing more on the Fonzies as a contemporary source of armour-piercing (perhaps with no Bonus vs Infantry), with a bit of armour.<br />
<br />
== CONTEXT: THE TABLETOP ==<br />
Woooh, what a can of worms. However, if you know how to read tabletop stats, the 8E TT was better balanced than people usually give it credit for. That’s not to say perfect by any far-fetched means, but good enough for the purpose: whether your Fonzies had tabletop stats or you’d have to imagine them, TT stats can provide a further meterstick for you, or provide information and inspiration for abilities and stuff. <br />
<br />
In other words, similarly to the conventional meterstick approach, you can also apply the same logic to the metersticks’ statlines and make sure you’re not accidentally down/overstepping. This is particularly important when you’re designing units for a race that has very definite limits, like humans or even dwarfs. A non-character human can’t be as good as a Swordmaster of Hoeth, ever, a Dwarf is slow, and elves will be frailer than most other things. <br />
<br />
== THE CUSTOM BATTLE TEST ==<br />
This is the obvious place to test the Fonzies in terms of actual performance. A staple is testing for 1v1 duels. Lords will usually interfere so you want to get a “all units are generals” mod or do it yourself so you can get rid of them. Get a nice flat map and duke it out with the metersticks AND with other units. Keep in mind that the post-battle result will heal not-dead entities, note down the results like kills, losses and hitpoints at battle-end, then possibly tweak. Possibly run at least 3 tests per duel because there is always a RNG component that will cause deviations. This is particularly true for characters, where a single blow can change the course of the fight and there aren’t tens of entities flattening the statistical variation of those hits.<br />
<br />
Keep in mind that the vacuum of a 1v1 unit duel is not how battles are going to go, you’re just testing sheer statistics devoid of the context in which the unit may have to be used. For example, you usually want a glasscannon unit to flank a battle line (which you can still simulate of course), and will probably underperform in a frontal assault. What you want to know is whether the glasscannon Fonzies are STILL rolling over the competition even in an unsuitable context, which would be bad.<br />
<br />
Also, if your unit is for example very defensive and perhaps even with Charge Defence vs All, don’t charge with it because you’re going to waste one of its main benefits. Or if your unit is anti-large, it’s ok for it to suffer a bit against good infantry. And so on.<br />
<br />
== THE AI ==<br />
If possible, check what the AI does with the Fonzies if they happen to be a weird unit. It may not know what to do with it, which may not be something that you can fix, but keep in mind that if a unit is particularly strong in the hands of the player, it should also be not completely useless in the hands of the AI. This typically happens on very polarized units or just very powerful ones. You may know that you need to focus fire the Big Nasty Emperor Dragon Of Doom with its 25k hitpoints, but the AI doesn’t and will allow it to wreck the entire army. <br />
<br />
Excursus: I’ve seen this a lot. “Unit is very strong but if you focus fire it with five armour-piercing missile units it goes down” is not an excuse. Everything dies if you shoot it with enough firepower. Nerf it or accept that it’s a cheat unit.<br />
<br />
== THE PERNICIOUS STATS ==<br />
Like I said, I’m not going to talk about how the single tables work, but I’ll point out some individual stats that are often underestimated. <br />
<br />
* Hitpoints: CA heavily uses these to make a unit jump from a tier to another. This is a major performance tool.<br />
* Unit size: on top of not going above the usual unit size for that race, keep in mind that you can manipulate it to better balance your Fonzies. For example you might have an infantry unit that overperforms no matter what you sensibly do while at 120 size, so you might want to downgrade them to 100 and see what happens. Higher numbers expose the unit to more missiles and more damage in general, adds damage soaking potential on the same hitpoints, adds damage dishing potential because more entities may be dealing that oomph, adds entities that will deal that charge bonus. Smaller numbers usually demand better stats but are nullified if you’re boosting both hp and damage. Unit size is particularly important for missile units, as each entity will fire and become an active multiplier of its missile damage.<br />
* Unit spacing: this is a subtle one. A unit of high elves and one of norscan marauders will behave differently in terms of how many entities get into contact, how many overlap beyond the flanks, how many will get hit and how easily when shot at.<br />
* Damage: even shifting one point of base damage towards ap can change the outcome of a 1v1 test. <br />
* Bonus vs X and Charge bonus: keep in mind that both will add that number to both Melee Attack and Damage (in the same base/ap ratio). It’s a huge thing. Charge bonus only lasts for a few seconds, but its impact can be huge especially when there is a lot of entities on the first ranks. You could increase these stats and reduce MA and damage to make a unit shine more in a very specific time or target frame.<br />
* Speed: on top of mattering for collision impacts and mass comparisons, the simple truth of speed is that you probably want to avoid having a unit that is both relatively fast and has three tons of armour on it. <br />
* Attributes: they can be cool, but nobody is cool anymore when everybody has all the attributes, so use them with moderation and understand what they do. I’ve seen many that don’t know what’s the actual effect of Causes Fear (-8 Leadership aura, unless target also causes it or is immpsy), or that make a unit both unbreakable and immpsy, which is useless. Actually, normally just pretend Unbreakable and Perfect Vigour don’t even exist.<br />
* Cost: costs are tricky, because there’s basically no chance that two different units priced at about 700 will be exactly worth the same in all prospects. You might be satisfied with pricing the Fonzies at 800ish due to their performance, and then a 700-cost anti-infantry unit comes and completely wrecks them. It happens. Just try your best. More importantly, keep in mind that there is no cost high enough to justify a unit from single-handedly nuking half the battlefield. <br />
* Animations: this is actually quite a painful note. Many unit attacks are quite animation-driven in WH and will need special attention. Typicall it’s chariots, each dealing damage according to its parameters in collision attacks, charge impacts, draught mounts and crew members, which for the moment I’ll spare you. Sometimes it’s slightly straightforward and an animation will only support so much reload speed or so much splash attack size. Sometimes you have Nakai hitting like thrice during the same charge animation. In practice, you don’t have a foolproof way of telling how something like a big monster or chariot unit will behave before testing.<br />
<br />
== THE CAMPAIGN ==<br />
Like we premised and like it’s well-known, campaign-side tends to eventually bring enough buffs to make even a gobbo a solid unit. More or less. However, if you’ve fine-tuned the Fonzies well enough to be decent in custom battle and in respect of the points above, chances are you did good and the unit will grow similarly to others once junctioned to vanilla unit set buffs or made your own to be similar. <br />
<br />
Of course, if you are making your own campaign effects to be +100 armour for Fonzie units or some such, it might be the case of putting that back into perspective.<br />
<br />
Where you place the Fonzies for recruitment also matters a lot. Quite obviously, there is a huge difference between putting a good unit on the main settlement chain, on the barracks chain, or on an isolated building that does nothing else. Especially when you’re adding very powerful or otherwise game-changing stuff, it might be a good idea to make sure the owner has to go out of their way to get it.<br />
<br />
Relatedly, there’s tier, which is very important with CA balance, and sometimes you can see a more advanced unit completely replacing an earlier one because it’s simply better. Some people are fine with that, I personally despise it, but it’s a thing. My own recommendation would be to try and maintain, if at all possible, a tradeoff if the Fonzies are a virtual upgrade/downgrade to something else. Basically, avoid the Longbeard syndrome.<br />
[[Category:Needs Formatting]]</div>Cataphhttps://tw-modding.com/index.php?title=File:Example_comparison_twwstats_Fonzies2.jpg&diff=299File:Example comparison twwstats Fonzies2.jpg2021-03-24T20:14:36Z<p>Cataph: </p>
<hr />
<div>redux</div>Cataphhttps://tw-modding.com/index.php?title=File:Example_comparison_twwstats_Fonzies.jpg&diff=298File:Example comparison twwstats Fonzies.jpg2021-03-24T20:12:18Z<p>Cataph: </p>
<hr />
<div>asfdaf</div>Cataphhttps://tw-modding.com/index.php?title=Main_Page&diff=297Main Page2021-03-24T20:06:48Z<p>Cataph: /* External Tutorials */</p>
<hr />
<div>== NEW WEBSITE ==<br />
Yes, yes, we're on our sixth or seventh or eight iteration of this website!<br />
<br />
This newest version is built upon MediaWiki (same thing Wikipedia uses), and is very much a work in progress, but it's hopefully a much better time all around.<br />
<br />
<s>If you need to access the old version of the website, it'll remain up for a couple months (taken down by April 1 2021) at [https://159.65.167.83 159.65.167.83]</s> right now it's not up, we'll see if that changes in the future but it may be gone for good. :)<br />
<br />
== Hello ==<br />
Welcome to the very in-progress Total War: Modding Wiki! Maintained by Vandy, filled in by anyone!<br />
<br />
This Wiki is intended to be as good of a one-stop-shop as possible for modding the Total War series, when it comes to walkthroughs for early set-up and understanding, or tutorials to do specific tasks, or general wiki pages as an overview for various modding and game concepts. It should contain all the resources and tutorials really needed to go forward in modding - when all is said and done.<br />
<br />
This project is born out of the members of the [https://discord.gg/dd4TUDm Modding Den Discord channel], which is focused on the Total War: Warhammer side of the franchise due to its original founding by two popular Warhammer modders - but other Total Wars are more than welcome here!<br />
<br />
The [https://www.totalwar.com/ Total War] Franchise is a product of [https://www.creative-assembly.com/home Creative Assembly], they own it and other important legal business here.<br />
<br />
== Navigation ==<br />
All available [[Tutorial:Main Page|Tutorials]]:<br />
<br />
{{Special:Prefixindex/Tutorial:}}<br />
<br />
[[:Category:Tools & Resources|Tools & Resources]]<br />
<br />
=== All Pages ===<br />
{{Special:AllPages}}<br />
<br />
=== External Tutorials ===<br />
<br />
* [https://steamcommunity.com/sharedfiles/filedetails/?id=1698960734 Abilities]<br />
* [https://steamcommunity.com/sharedfiles/filedetails/?id=1761202425 Ancillaries (Items, Mounts, etc)]<br />
* [https://steamcommunity.com/sharedfiles/filedetails/?id=1696051257 Character Skills]<br />
* [https://steamcommunity.com/sharedfiles/filedetails/?id=1694945483 Creating Custom Units]<br />
* [https://steamcommunity.com/sharedfiles/filedetails/?id=1761177338 Effects]<br />
* [https://steamcommunity.com/sharedfiles/filedetails/?id=2180764161 Modding 101/FAQs]<br />
* [https://steamcommunity.com/sharedfiles/filedetails/?id=2233644229 Modding Etiquette and Guidelines]<br />
<br />
== Help Out ==<br />
There's a lot to do to help out! Most importantly, '''share what knowledge you have.''' If you are very knowledgeable about some subject, write a few new pages about it. Make edits to existing pages. Add new categories, fill out details. This is a communal effort, and while I'll be trying to shepherd it along and keep everything relatively organized, this is very intentionally a group effort!<br />
<br />
''Note: Only verified accounts can make edits. Just register a new account with your username and log in, and you can make edits. They will currently enter approval queue to prevent spam.''<br />
<br />
'''To make a new page:''' You just have to search for a page in the search bar. The website will ask "Do you want to create a page with name X?" or something similar - click the red link, and start creating a new page from there!<br />
<br />
- [[Tutorial:Main Page|Tutorials]] should be named "Tutorial:Tutorial Name Here"<br />
<br />
- Any other page can be named anything else, it doesn't matter. Please mind that only one page can exist with that name, of course, so be proper with your names.<br />
<br />
==Helpful Links For Now==<br />
*[[mediawikiwiki:Help:Editing_pages|Best practices for editing pages]]<br />
*[[mediawikiwiki:Help:Formatting|A How-To on using the MediaWiki Formatting]]<br />
*[[mediawikiwiki:Special:MyLanguage/Manual:Configuration_settings|Configuration settings list]]<br />
*[[mediawikiwiki:Special:MyLanguage/Manual:FAQ|MediaWiki FAQ]]<br />
*[https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]<br />
*[[mediawikiwiki:Special:MyLanguage/Localisation#Translation_resources|Localise MediaWiki for your language]]<br />
*[[mediawikiwiki:Special:MyLanguage/Manual:Combating_spam|Learn how to combat spam on your wiki]]</div>Cataphhttps://tw-modding.com/index.php?title=Tutorial:Custom_Lords_%26_Heroes&diff=296Tutorial:Custom Lords & Heroes2021-03-24T20:06:37Z<p>Cataph: fixed link to unit guide</p>
<hr />
<div>=== By Nanu ===<br />
<br />
=== Contents ===<br />
<br />
* Creating a Character<br />
** agent_subtypes<br />
** agent_uniforms<br />
** campaign_character_art_sets<br />
** campaign_character_arts<br />
** character_skill_node_sets_tables<br />
** faction_agent_permitted_subtypes<br />
* Agent Actions<br />
** agent_actions_tables<br />
* Legendary Lords and Heroes<br />
<br />
==== Setup ====<br />
This guide assumes you have created the unit for you custom hero/lord, see [https://steamcommunity.com/sharedfiles/filedetails/?id=1694945483 Cryswar's Unit Guide] if you haven't yet. <br />
<br />
You should also have [https://github.com/Frodo45127/rpfm/releases Rusted Pack File Manager] (RPFM). It's free, it's easy to use, and it's well maintained.<br />
<br />
Below is a list of tables, localization files, and other resources that are required to add a new agent to the game, as well as a few optional ones.<br />
<br />
Required<br />
<br />
* Tables<br />
** agent_subtypes<br />
** agent_uniforms<br />
** campaign_character_art_sets<br />
** campaign_character_arts<br />
** character_skill_node_sets<br />
** faction_agent_permitted_subtypes<br />
* Localizations<br />
** agent_subtypes.loc<br />
* [https://steamcommunity.com/sharedfiles/filedetails/?id=1194811468 Porthole Process]<br />
<br />
Optional<br />
<br />
* Tables<br />
** agent_actions<br />
** effect_bonus_value_agent_action_record_junctions_tables<br />
** character_skill_level_to_effects_junctions_tables<br />
** character_skill_nodes_tables<br />
** names<br />
* Localizations<br />
** names.loc<br />
* Lua script to spawn your character<br />
<br />
Now I can drone on about the tables and whats in them or we can build a mod together. Lets do the latter. We're going to make a mod that adds new characters to the game.<br />
<br />
So what kind of characters should we mod into the game? What kind of characters does Total War Warhammer II need?<br />
<br />
How about a Chaos Sorcerer of Life, and a Chaos Sorcerer Lord of Life. Maybe Archaon had a change of heart and wants to heal the world.<br />
<br />
We're going to ignore the unit tables, if you want to build this mod along with this guide then go ahead and set up the unit tables now. [[Tutorial:Creating Custom Units|This guide]] will help you set everything up<br />
<br />
Great! Now that we have our units ready lets walk through the tables we need to create our tree hugging Champions of Chaos. I have provided the tables needed in this guide, but some are too large to fit on the page. You'll need to zoom out (left ctrl + mouse wheel) to see them fully.<br />
<br />
One more thing, [https://steamcommunity.com/sharedfiles/filedetails/?id=2137707555 this is our completed mod], you can download it and use it to follow along if you'd like.<br />
----<br />
<br />
=== Creating the Character ===<br />
<br />
==== agent_subtypes ====<br />
Any character or lord on the campaign map or embedded into an army is an agent. The agent_subtypes table contains basic information about this specific subtype of agent.<br />
<br />
Here's the agent_subtypes table for our new chaos characters<br />
<br />
I know, theres a lot, but don't worry! Its not as hard as it looks and most of it is self explanatory<br />
<br />
* Key<br />
** Key is well, the key of our agent subtype. This is a unique key that will be used to reference our agent from the db or scripts. This must be a unique key and if possible should match the main_unit key for your agent.<br />
* Auto Generate<br />
** Whether or not the game should automatically generate this character and add them to the character pool. Leave this unchecked for unique characters like Legendary Lords. Names will be generated from the factions name list. Starting traits have to be added to a list for each subtype. More on that later. For our characters, we are going to leave this checked, since we want the game to make generic versions of these characters<br />
* Is Caster<br />
** This just determines whether or not this character can use casting items.<br />
* Small Icon<br />
** The icon you'll see on the campaign map for this character. Lords have this icon overridden so you can leave it blank for them.<br />
* Associated Unit Override<br />
** The main_unit key associated with this character. You don't need a new subtype for each mount, only the base unit is needed here.<br />
* Audio Voiceover Actor Group<br />
** The voice that this character has on the campaign map. Battle voice actor is determined in main_units (yes, they can be different).<br />
* Show in Ui<br />
** Whether or not this character shows up in the recruitment panel. Set to false for Legendary Heroes like Cylostra's Damned Paladin or Wulfhart's unique hereos.<br />
* Cap<br />
** This is only used for Gotrek, Felix, Lord Kroak, and Henri le Massif. As far as I know it isn't needed even for Legendary Lords or unique heroes. Leave this as -1.<br />
* Has Female Name<br />
** Self Explanatory<br />
* Can Gain Xp<br />
** Self Explanatory<br />
* Loyalty is Applicable<br />
** This doesn't add your lord to the loyalty system, it only shows the loyalty icon above their banner and in their details panel. Loyalty is scripted, you must add your lords to the loyalty scripts to add them to the loyalty system<br />
* Contributes to Agent Cap<br />
** Whether or not this subtype takes up an agent slot. I set this to false for my unique Heroes, but you can leave it as true if you want. This should always be true for Lords.<br />
* Recruitment Category<br />
** As of the Warden and the Paunch, Lords now are separated into different groups like Heroes. This value determines which group your lord should be sorted into. Leave this blank for Heroes<br />
* Magic Lore<br />
** Used only for sorting Lords into categories under their respective Recruitment Category. Leave this blank for Heroes<br />
* Audio Vo Culture Override<br />
** Only Grom and the River Troll Hag use this. Just leave it blank<br />
<br />
----<br />
<br />
==== agent_uniforms ====<br />
This one is simple, and you should have already done this when you went through the [https://steamcommunity.com/sharedfiles/filedetails/?id=1194811468 porthole process]. I won't go through it since this its pretty simple, just reference the variant key for your subtype (or for this variation, you need a uniform for each variant unless you want this hero type to all look the same).<br />
----<br />
<br />
==== campaign_character_art_sets ====<br />
This table is one of two that determine your agent's campaign variant.<br />
<br />
* Art Set Id<br />
** Unique ID for your character Art Set. This is needed for every variation of your subtype. Most vanilla agents have 2-5 different art sets (and subsequent uniforms/portholes). Our characters only have one each to make things easy.<br />
* Is Custom<br />
** Leave this false. Only a few unique characters like Kemmler and Mannfred use this and idk why<br />
* Agent Type<br />
** The agent type your subtype belongs to. Lords are all generals, heroes can be wizards, champions, spies, dignitaries, and engineers. There are others but they're deprecated<br />
* Faction<br />
** I'm pretty sure this is how you limit which faction this art set applies to, Lokhir is the only one I'm aware of that uses this. Best to leave this blank<br />
* Culture<br />
** Same as above, just follow a vanilla equivalent<br />
* Subculture<br />
** Again, same as above. Chaos Lords and Heroes use this column, so I did too. When in doubt do what CA does<br />
* Is Male<br />
** Leave this checked. Yes, even if your character is a girl.<br />
* Agent Subtype<br />
** Your agent_subtype key<br />
* Campaign Map Scale<br />
** Leave as 1<br />
<br />
----<br />
<br />
==== campaign_character_arts ====<br />
<br />
* Art Set Id<br />
** Same as your art set Id from the above table<br />
* Level<br />
** Leave this as 0<br />
* Season<br />
** Leave this as none<br />
* Age<br />
** Leave this as 0<br />
* Portrait<br />
** Leave this blank<br />
* Uniform<br />
** The agent_uniform this character art uses<br />
* Card<br />
** Leave blank<br />
* Info<br />
** Leave blank<br />
* Sea Uniform<br />
** The ship you see on the campaign map when this agent embarks onto the water<br />
* Navy Uniform<br />
** Deprecated. Use the faction's default lord Navy Uniform<br />
* Land Animation<br />
** The animation your character uses on the campaign map. Must be a campaign animation, battle animations don't work here.<br />
* Sea Animation<br />
** The animation your ship uses on the water.<br />
* Navy Animation<br />
** again, deprecated, copy the vanilla Lord default value<br />
* Id<br />
** Unique ID for this character art. This must be a unique number.<br />
* Religion<br />
** Leave blank<br />
* Land Animation Vfx Filter<br />
** Leave as 0<br />
* Sea Animation Vfx Filter<br />
** Leave as 0<br />
* Navy Animation Vfx Filter<br />
** Leave as 0<br />
<br />
----<br />
<br />
==== character_skill_node_sets_tables ====<br />
This table connects your character skill node set to your subtype. Without this table, your character won't have any skills to use when they level up. I won't go through the basics of skills in this guide, [[Tutorial:Custom Skills, Items, and Effects|there already exists a guide for that]], but you will need this to fully flesh out your characters so I've added it.<br />
<br />
* Key<br />
** Unique Key for this node set<br />
* Faction Key<br />
** Leave blank<br />
* Campaign Key<br />
** Leave Blank<br />
* Agent Key<br />
** The Agent type for you subtype. Yes, you have to specify it again. This isn't even the last time either.<br />
* Subculture<br />
** Leave Blank<br />
* For Army<br />
** Leave unchecked<br />
* For Navy<br />
** Leave unchecked<br />
* Agent Subtype<br />
** This will add this character node set to your agent subtype. All characters with this subtype will have the same skill node set. If you want your characters to have different skill node sets you need to make new subtypes<br />
<br />
----<br />
<br />
==== faction_agent_permitted_subtypes ====<br />
This mess of a table is what adds your agent subtype to the faction of your choice. You have to add your subtype to every faction that will have access to the subtype.<br />
<br />
* Faction<br />
** The faction that will now have access to this agent subtype<br />
* Agent<br />
** Yes, you have to specify this again. No, I don't know why<br />
* Subtype<br />
** Your agent subtype<br />
<br />
----<br />
<br />
==== agent_subtypes.loc ====<br />
You should be familiar with loc files by now, this just specifies the name and description of your agent subtypes.<br />
----And thats it! With those tables filled out, you've done everything you need to turn your unit into a recruitable character! Assuming you have your unit tables finished, you can now go into campaign and recruit your new Chaos Sorcerer Lord of Life.<br />
<br />
If it's crashing or your characters aren't showing up as recruitable, check that you filled out everything right, or [https://steamcommunity.com/sharedfiles/filedetails/?id=2137707555 use the example mod as a comparison].<br />
----<br />
<br />
=== Adding Agent Actions ===<br />
But wait! What about our Chaos Sorcerer's campaign actions? How can we get our new campaign hero to assault units or assassinate a character? <br />
<br />
Well, the campaign actions are added via skills, and we can just add a skill that CA already defined for us to our characters skill node set. But maybe we want our character to be a little more unique? <br />
<br />
Lets give them a different set of abilities, we'll need to create a new skill, which you can do by following [[Tutorial:Custom Skills, Items, and Effects|this guide]]. After you made a new skill and added it to the skill node set, lets add some agent actions to it in the character_skill_level_to_effects_junctions table:<br />
<br />
This is a copy of the vanilla wh2_main_skill_all_dummy_agent_actions_chs_sorcerer skill, but we want to make some changes, so lets replace the passive wh2_main_effect_agent_action_enable_wizard_hinder_settlement_steal_technology, which give our hero the ability to boost technolofy by attacking a settlement, and replace it with wh2_main_effect_agent_action_enable_wizard_hinder_settlement_damage_walls, which lets him damage the walls instead:<br />
<br />
Great! Now we have a hero who has a different set of campaign actions. Keep in mind you must use effects that apply to your agent type, if you want to add an agent action that doesn't exist already, you must make the agent action and effect to apply it. Lets go ahead and make a new agent action for the Chaos Sorcerer of Life. We'll give him the ability to assassinate, something normal wizards can't do in the base game. Here are the tables you'll need:<br />
<br />
* agent_actions<br />
* effect_bonus_value_agent_action_record_junctions_tables<br />
<br />
I'm going to skip over the effect tables, you can make a new empty effect using [[Effects|this guide]] if you want to follow along, otherwise, I'll assume you have your effect ready.<br />
<br />
==== agent_actions ====<br />
This table is very convoluted and particularly finicky, you'll want to start with an agent action that already exists to avoid making mistakes. Lets start with the Exalted Hero's assassinate ability, defined as wh2_main_agent_action_champion_hinder_agent_assassinate<br />
<br />
in the agent_actions table.<br />
<br />
We're not going to change much here, just the Agent and the Unique Id. We'll copy this row from the CA data.pack into our mod, change Agent to wizard and Unique Id to chs_chaos_sorcerer_life_assassinate<br />
<br />
Now we can add the agent action to the effect_bonus_value_agent_action_record_junctions_table<br />
<br />
And finally add our effect to the chs_chaos_sorcerer_life_agent_actions skill we made<br />
<br />
And that's it! We now have a custom hero subtype that has a unique set of campaign actions!<br />
<br />
=== Legendary Lords and Heroes ===<br />
Making Legendary Lords and Heroes is simple, plus you've already done most of the legwork. A guide on how to name them and spawn them on the campaign map is available [[Tutorial:Custom Legendary Lords|here]].<br />
[[Category:Unfinished]]<br />
[[Category:Outdated]]<br />
[[Category:Warhammer 2]]</div>Cataphhttps://tw-modding.com/index.php?title=Modding&diff=295Modding2021-03-24T19:59:27Z<p>Cataph: enter</p>
<hr />
<div>Modding, or creating [[mods]], is the act of modifying the game files in order to cause changes or create new behavior within the game. There's a lot that can be done with modding - this page seeks to be a clear outline of what modding is, what you can and cannot mod, and other important high-level concepts.<br />
<br />
If you're looking for [[installing mods]], check that page.<br />
<br />
And you can check the [[modding tutorials]] page for a portal about various available, specific tutorials.<br />
<br />
== What's a Mod ==<br />
A mod - short for "Modification" - can be anything user-created that edits the game in a meaningful way.<br />
<br />
In the Total War series, mods are composed of a single file - a .pack file - which contain all of the changes within that mod. Packs act like a .zip or .rar file, a compressed folder in a single file. Much of the vanilla game is composed of various CA-made pack files.<br />
<br />
Packs can contain a lot of various pieces, such as:<br />
<br />
* '''Data:''' One of the most-used parts of a mod is databasing. Total War uses database files, similar to spreadsheets, which can be used to change behavior and values, or add new objects to the game. This is used for much of the game, from units and their stats to the cost of buildings and much in between.<br />
* '''Text:''' On top of that, text you see in the game - from the name of a lord to the flavour text of a skill - is done within packs, in .loc files. These files attach text to the database, and they can be used for translations as well!<br />
* '''Assets:''' This is a wide topic - but much of the game can be edited through assets. Assets range from .png images scattered throughout the UI, to altered .dds files which are used on the various unit models in the game, to entirely new models or otherwise.<br />
* '''Battle Maps:''' Battle maps are created through the Terry tool, from within the [[Assembly Kit]].<br />
* '''Scripts:''' There's a layer of the game that can be interacted with through scripts (.lua files). Scripts power things such as characters getting experience, legendary lord defeat traits, and the Chaos Invasion - and much in between!<br />
<br />
There's natural limitations to modding the game, since the game is written in a way that cannot be decompiled easily - meaning much of the game code and engine is unreadable and untouchable. That said, Creative Assembly does a comparatively excellent job at making sure much of the game is exposed to being modified!<br />
<br />
== Getting Started ==<br />
You've decided on a general mod idea you want to do, and you're ready to set aside some time to try, fail, try, fail, try and then inexplicably succeed the third time. This is the spot for you!<br />
<br />
First thing's first, before you go on, you need to grab the [https://github.com/Frodo45127/rpfm/releases/latest Rusted Pack File Manager], by Frodo. It's the primary tool available to create a .pack file, edit it, and manipulate it in whatever way, and comes with a lot of excellent functionality.<br />
<br />
Right after installing RPFM, you should decide on a folder on your computer that you'll store your mods. This'll be your primary directory for modding. For instance, I have S:/modding/ determined as my main spot on disk. Name it whatever you want, put it wherever you want.<br />
<br />
Then, within RPFM, open the Preferences menu (through Ctrl+P, or PackFile -> Preferences), and begin to set up the necessary preferences within. Target all of the folders for all installed Total War games, targeting the folder where the .exe of the game is. Underneath, in "MyMod's Folder", fill in your new folder.<br />
[[File:Screenshot 2021-01-31 205343.png|left|thumb|710x710px|Fill in your MyMod folder here!]]<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
Fill out whatever other preferences you may like, but most of this stuff you'll see through time. Keep "Allow Editing of CA PackFiles" to false, I prefer to have all of the checks valid on start, and of course the Use Dark Theme setting is an absolute must.<br />
<br />
With RPFM, we can do an absolute load of modding. I recommend [[Setting up GitHub|using GitHub]] for version and source control - it's saved me several dozen times when I almost certainly would've lost an entire mod, or gotten two versions (ie. an update version and the retail version) mixed up.<br />
<br />
You may also want to download the [[Assembly Kit]] for the game you're modding, as well as [https://www.microsoft.com/en-us/microsoft-365/excel Excel] or another spreadsheet program - it can come in hand a billion times over.<br />
<br />
With all of our tools set up, we can get [[First Mod|started on our first mod]]!<br />
<br />
== Guidelines ==<br />
This is a list of hopefully helpful tips for modders - new or old.<br />
<br />
* '''Start small, build up.''' One of the oldest tricks in the book is having a tremendously bloated idea, trying to make it all at once, getting overwhelmed, and then quitting. We've literally all done it. Instead of trying to build a pyramid from the bottom up, try to build a glacier from the top down, starting with a simpler idea and continuing it naturally.<br />
* '''Ask for help.''' The Total War modding community, especially that around the Modding Den Discord, is a big help - you're not in this alone.</div>Cataphhttps://tw-modding.com/index.php?title=Main_Page&diff=294Main Page2021-03-24T19:53:24Z<p>Cataph: /* External Tutorials */</p>
<hr />
<div>== NEW WEBSITE ==<br />
Yes, yes, we're on our sixth or seventh or eight iteration of this website!<br />
<br />
This newest version is built upon MediaWiki (same thing Wikipedia uses), and is very much a work in progress, but it's hopefully a much better time all around.<br />
<br />
<s>If you need to access the old version of the website, it'll remain up for a couple months (taken down by April 1 2021) at [https://159.65.167.83 159.65.167.83]</s> right now it's not up, we'll see if that changes in the future but it may be gone for good. :)<br />
<br />
== Hello ==<br />
Welcome to the very in-progress Total War: Modding Wiki! Maintained by Vandy, filled in by anyone!<br />
<br />
This Wiki is intended to be as good of a one-stop-shop as possible for modding the Total War series, when it comes to walkthroughs for early set-up and understanding, or tutorials to do specific tasks, or general wiki pages as an overview for various modding and game concepts. It should contain all the resources and tutorials really needed to go forward in modding - when all is said and done.<br />
<br />
This project is born out of the members of the [https://discord.gg/dd4TUDm Modding Den Discord channel], which is focused on the Total War: Warhammer side of the franchise due to its original founding by two popular Warhammer modders - but other Total Wars are more than welcome here!<br />
<br />
The [https://www.totalwar.com/ Total War] Franchise is a product of [https://www.creative-assembly.com/home Creative Assembly], they own it and other important legal business here.<br />
<br />
== Navigation ==<br />
All available [[Tutorial:Main Page|Tutorials]]:<br />
<br />
{{Special:Prefixindex/Tutorial:}}<br />
<br />
[[:Category:Tools & Resources|Tools & Resources]]<br />
<br />
=== All Pages ===<br />
{{Special:AllPages}}<br />
<br />
=== External Tutorials ===<br />
<br />
* [https://steamcommunity.com/sharedfiles/filedetails/?id=1694945483 Creating Custom Units by Cryswar]<br />
<br />
== Help Out ==<br />
There's a lot to do to help out! Most importantly, '''share what knowledge you have.''' If you are very knowledgeable about some subject, write a few new pages about it. Make edits to existing pages. Add new categories, fill out details. This is a communal effort, and while I'll be trying to shepherd it along and keep everything relatively organized, this is very intentionally a group effort!<br />
<br />
''Note: Only verified accounts can make edits. Just register a new account with your username and log in, and you can make edits. They will currently enter approval queue to prevent spam.''<br />
<br />
'''To make a new page:''' You just have to search for a page in the search bar. The website will ask "Do you want to create a page with name X?" or something similar - click the red link, and start creating a new page from there!<br />
<br />
- [[Tutorial:Main Page|Tutorials]] should be named "Tutorial:Tutorial Name Here"<br />
<br />
- Any other page can be named anything else, it doesn't matter. Please mind that only one page can exist with that name, of course, so be proper with your names.<br />
<br />
==Helpful Links For Now==<br />
*[[mediawikiwiki:Help:Editing_pages|Best practices for editing pages]]<br />
*[[mediawikiwiki:Help:Formatting|A How-To on using the MediaWiki Formatting]]<br />
*[[mediawikiwiki:Special:MyLanguage/Manual:Configuration_settings|Configuration settings list]]<br />
*[[mediawikiwiki:Special:MyLanguage/Manual:FAQ|MediaWiki FAQ]]<br />
*[https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]<br />
*[[mediawikiwiki:Special:MyLanguage/Localisation#Translation_resources|Localise MediaWiki for your language]]<br />
*[[mediawikiwiki:Special:MyLanguage/Manual:Combating_spam|Learn how to combat spam on your wiki]]</div>Cataphhttps://tw-modding.com/index.php?title=Main_Page&diff=293Main Page2021-03-24T19:53:07Z<p>Cataph: added unit guide, maybe</p>
<hr />
<div>== NEW WEBSITE ==<br />
Yes, yes, we're on our sixth or seventh or eight iteration of this website!<br />
<br />
This newest version is built upon MediaWiki (same thing Wikipedia uses), and is very much a work in progress, but it's hopefully a much better time all around.<br />
<br />
<s>If you need to access the old version of the website, it'll remain up for a couple months (taken down by April 1 2021) at [https://159.65.167.83 159.65.167.83]</s> right now it's not up, we'll see if that changes in the future but it may be gone for good. :)<br />
<br />
== Hello ==<br />
Welcome to the very in-progress Total War: Modding Wiki! Maintained by Vandy, filled in by anyone!<br />
<br />
This Wiki is intended to be as good of a one-stop-shop as possible for modding the Total War series, when it comes to walkthroughs for early set-up and understanding, or tutorials to do specific tasks, or general wiki pages as an overview for various modding and game concepts. It should contain all the resources and tutorials really needed to go forward in modding - when all is said and done.<br />
<br />
This project is born out of the members of the [https://discord.gg/dd4TUDm Modding Den Discord channel], which is focused on the Total War: Warhammer side of the franchise due to its original founding by two popular Warhammer modders - but other Total Wars are more than welcome here!<br />
<br />
The [https://www.totalwar.com/ Total War] Franchise is a product of [https://www.creative-assembly.com/home Creative Assembly], they own it and other important legal business here.<br />
<br />
== Navigation ==<br />
All available [[Tutorial:Main Page|Tutorials]]:<br />
<br />
{{Special:Prefixindex/Tutorial:}}<br />
<br />
[[:Category:Tools & Resources|Tools & Resources]]<br />
<br />
=== All Pages ===<br />
{{Special:AllPages}}<br />
<br />
=== External Tutorials ===<br />
[https://steamcommunity.com/sharedfiles/filedetails/?id=1694945483 Creating Custom Units by Cryswar]<br />
<br />
== Help Out ==<br />
There's a lot to do to help out! Most importantly, '''share what knowledge you have.''' If you are very knowledgeable about some subject, write a few new pages about it. Make edits to existing pages. Add new categories, fill out details. This is a communal effort, and while I'll be trying to shepherd it along and keep everything relatively organized, this is very intentionally a group effort!<br />
<br />
''Note: Only verified accounts can make edits. Just register a new account with your username and log in, and you can make edits. They will currently enter approval queue to prevent spam.''<br />
<br />
'''To make a new page:''' You just have to search for a page in the search bar. The website will ask "Do you want to create a page with name X?" or something similar - click the red link, and start creating a new page from there!<br />
<br />
- [[Tutorial:Main Page|Tutorials]] should be named "Tutorial:Tutorial Name Here"<br />
<br />
- Any other page can be named anything else, it doesn't matter. Please mind that only one page can exist with that name, of course, so be proper with your names.<br />
<br />
==Helpful Links For Now==<br />
*[[mediawikiwiki:Help:Editing_pages|Best practices for editing pages]]<br />
*[[mediawikiwiki:Help:Formatting|A How-To on using the MediaWiki Formatting]]<br />
*[[mediawikiwiki:Special:MyLanguage/Manual:Configuration_settings|Configuration settings list]]<br />
*[[mediawikiwiki:Special:MyLanguage/Manual:FAQ|MediaWiki FAQ]]<br />
*[https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]<br />
*[[mediawikiwiki:Special:MyLanguage/Localisation#Translation_resources|Localise MediaWiki for your language]]<br />
*[[mediawikiwiki:Special:MyLanguage/Manual:Combating_spam|Learn how to combat spam on your wiki]]</div>Cataphhttps://tw-modding.com/index.php?title=Troubleshooting&diff=292Troubleshooting2021-03-22T09:26:10Z<p>Cataph: news flash</p>
<hr />
<div>This is a troubleshooting guide for mod users in TW: Warhammer 2. The generic pointers should be valid for all recent TW games.<br />
<br />
– Your neighbourhood Cataph<br />
<br />
<br />
'''!!!'''<br />
<br />
'''News flash: Steam is currently failing at updating a lot of mods. At the merest sign of trouble, check the last update on the mod page and check your local pack's date. If that is not the same, unsub and delete and let Steam redownload. This is not a permanent fix, none known right now, it's their issue.'''<br />
<br />
'''!!!'''<br />
<br />
== Managing Mods ==<br />
So, you have subscribed to mods on the workshop. You now open CA’s current mod manager (hereby called George II) and – blimey, they don’t work or something’s not right.<br />
<br />
We called it George II cause it’s the new launcher. He’s new in town, prettier than George, but he’s still not good at what he should be doing and forgets to make mods work. We’re sorry but George II needs some time.<br />
<br />
First thing to keep in mind, if you have issues with George II you should definitely report them to CA so that they know what they should look at.<br />
<br />
That said, you can just use the [https://github.com/Kaedrin/warhammer-mod-manager community mod manager] (normally called KMM). Long story short, George is unwieldy and has grown responsible for a lot of issues of its own, becoming hated by modders and users alike. Among other things, KMM is more reliable and provides mod profiles.<br />
<br />
==== How to Load Order ====<br />
One of the things George I, the old launcher, couldn’t do is allow load order editing because it only uses the default alphabetical order. KMM and even George II have that function, so you’d be tempted to change load order manually, right?<br />
<br />
'''''WRONG.'''''<br />
<br />
Ok, I’ll spare some time for this before we get into the actually useful tips, because this is one of the nastiest tropes around the community. The truth is that compatibility-minded modders already handle load order on their own as far as possible. Manually changing load order may do absolutely nothing, move the problem elsewhere or break everything.<br />
<br />
Some context. There are six main possible categories of folders in a mod pack and this is how they handle load order, either through actual pack name or table name:<br />
<br />
* Db: table name.<br />
* Scripts: pack name.<br />
* Startpos (the big bad): pack name.<br />
* Text: table name.<br />
* UI: pack name.<br />
* Variants: pack name.<br />
<br />
And that is if the modder doesn’t redirect content. KMM can only affect pack name order, so there are things like balance submods (Db overrides) that are still completely in the hands of the modders and intentionally so.<br />
<br />
In other words, there are only two possible cases in which you may want to alter load order manually: UI and variants, basically if you want to use specific reskin B.pack in the midst of larger reskin A.pack, in which case you push B on top.<br />
<br />
''In conclusion, you want to follow KMM’s instructions, give Steam time to download/remove mods and mostly keep load order in an alphabetical fashion (e.g. order by name and save profile), especially after adding new mods.''<br />
<br />
Which, incidentally, is this:<br />
<br />
! # $ % & ‘ ( ) + , – ; = @ 0-9 a-z [ ] ^ _ ` { } ~<br />
<br />
Where “!” wins over “a”.<br />
<br />
== Common Troubleshooting ==<br />
In an efficient mod, at least half of the reported issues are down to user error or what is technically called launcher f***-up. We’re going to try and cut that amount down for the greater good.<br />
<br />
==== User good practices: ====<br />
<br />
# Read the mod description. Seriously, this alone would prevent 80% of comments on Steam pages. Even if a description looks long, do it, it’s there for a reason. Some mods will also have FAQs or a list of known issues, incompatibilities and instructions. Read the comments before yours too if you have to post one. There’s an excellent chance the question you’re going to ask is already answered in in descriptions, FAQs and recent comments.<br />
# Don’t ignore the required items. The mod may show you a popup upon subscribing, disregarding that is almost always cue for disaster. This popup is ''not'' shown when subbing from a Steam collection (thanks Gaben), so actually check the mod’s page.<br />
# Keep the mod list in alphanumerical order. We’ve been over that already. If you have new mods that have popped at the tail of the list, just click again on the <code>File Name</code> column in KMM and save your profile.<br />
# Troubleshoot yourself! The thing is, we don’t have time to help everybody, and in most cases the problem is local. We’ll get to best practices on this, don’t worry.<br />
# Upon commenting about an issue, provide context. Ok, you did everything right but that ugly bug is still there. That’s fine. The worst thing you could do at this point is comment “mod doesn’t work” because that means absolutely nothing. Modders aren’t telepaths. Steam comments aren’t the best place for this, so use a discussion or the discord server/channel lurked by that given modder.<br />
#* Context: when and how the thing happened. E.g. during the interturn after X’s turn, or clicking this button, whether it was Vortex/ME/multiplayer, custom battle or campaign battle.<br />
#* Mod list: Link a collection or a screenshot to the KMM list. For example, the big thing is not being naif enough that the overhaul in your list can’t affect other mods. For some reason, sometimes it feels like pulling teeth to know what else is there.<br />
#* Screenshot: always helps for clarity and visual context.<br />
#* Save game: if requested, you can find your save game in (example) C:\Users\%USER%\AppData\Roaming\The Creative Assembly\Warhammer2\save_games. Remember the mod list, because the modder may not be able to load without it.<br />
#* Results of your own troubleshooting: for example it’s good to know it happens with that one mod only. Relatedly, if you posted about an issue and later find the cause, let us know.<br />
<br />
''This list is of course not meant to insult anybody’s intelligence, but you’d be surprised at how many issues and massive wastes of time are due to neglect of these simple rules. Following them is in the user’s interest in order to find a solution sooner, and it will allow the modder more time for improvement rather than wasted in unnecessary bug-hunts.''<br />
<br />
==== Common launcher/game issues: ====<br />
<br />
# Failed to download/remove mod. This happens relatively often and if in doubt you should always check in the mod download folder (example: Z:\Steamsteamapps\workshop\content\594570\??????) whether that mod was successfully downloaded/removed. Open George/Steam again until it is. The final folder id is the same as the one on the mod’s Steam url and you can sort by date for the most recently poked folder.<br />
#* More on this if using KMM: Kaedrin’s manager copies packs from that content/ to the game’s data/ folder. Moreover, when mods update you will likely need to refresh/restart KMM.<br />
# Ghost mods. Definitely spooky. You have toggled off that mod, but somehow it turns out it was still being loaded and crashing your game. Or a mod updates and self-enables. Using KMM seems enough to prevent this kind of poltergeist.<br />
# Corrupted download. This is more frequent than I’d like. The mod’s download is botched and it either crashes the game or presents less visible problems (e.g.: this lord’s graphics are wrong/missing). Go again in your content or data folder, delete the mod pack and let it download again. In theory, you should do this every time a mod that is clearly not supposed to do that crashes on game start, especially when the mod hasn’t been updated recently and nobody has reported such a glaring problem in a while.<br />
# Random crashes: sometimes stuff just breaks and you have to verify your game’s cache: Steam Library>right click on game>Properties>Local Files>Verify yadda yadda. Or check with the game’s support.<br />
# Failure to enable mods or borked load order: sometimes George simply won’t fire what you want, or you’ve accidentally touched load order and now it won’t revert. Use KMM.<br />
# Soft cap: as of King’s Shilling update, this is completely fixed and the cap is indefinite. You can stop merging stuff or believing conspiracies about CA intentionally capping mods.<br />
<br />
==== Some specific KMM issues: ====<br />
<br />
# Doesn’t work: KMM can be installed anywhere, BUT in the game’s stuff. Don’t install in data/ or anywhere close. Hell, plop it in the desktop.<br />
# Doesn’t work cause I’m pirating the game: KMM can smell piracy. Buy the game.<br />
# KMM freezes on start: reboot it.<br />
# Game crashes on load: if you get that or suddenly crash for no good reason, just refresh/restart KMM first thing. If it persists, time to actually troubleshoot. KMM doesn’t often suffer of corrupted downloads but it may theoretically still happen.<br />
# Movie packs: still crashing? Even with no packs enabled at all? Ok, keep in mind that once they are in the data/ folder, movie packs will always be enabled no matter if you’ve toggled them on or not. KMM shows if a mod is a conventional pack file or movie pack (Type column), and it will tell you on the lower right how many movie packs you’re currently running. To effectively disable a movie pack, use the right click option <code>Unsubscribe (Steam) and Delete</code>. This should get rid of that mod in one go, instead of doing a mix of things that will probably still cause KMM to copy the pack again. Movie packs are mostly used for vfx, but sometimes also come with data baggage that you don’t always want around. Modders: you ''really'' want to only have harmless vfx in the movie pack, not db and scripts.<br />
<br />
== APPENDIX: Trimming the Mod List ==<br />
Again, there is virtually no such thing as a soft cap in WH2 anymore. So it’s up to you to keep your mod list functional, and if you have more than 100 mods enabled, risks and maintenance time will increase for you. Making that work is up to how careful you are, and even if a mod list doesn’t produce an instant crash you can’t be sure there aren’t less visible issues, e.g. script breaks.<br />
<br />
As a rule of thumb, don’t be cocky with your list of 250 mods because it’s all fun and games until everything works perfectly (and with those numbers chances are it doesn’t already, you just can’t see it), at which point there’s a lot of stuff to check.<br />
<br />
If you’re not experienced yet (and don’t assume you are just because you played Skyrim, this is different), use the mod list of someone that has very carefully been curating it, and check that it looks ok with the help of the modders themselves. For example, start by a modder’s own collection on Steam, they often have one.<br />
<br />
=== Finding the culprit ===<br />
The usual problem with large mod lists is this: bad, I got a crash; worse, which one of the N mods I have is the culprit?<br />
<br />
==== Generic pointers: ====<br />
<br />
* Pure Text, Variant and UI mods can basically NEVER crash the game for the user. If they do, it’s a botched download.<br />
* Momentarily sort by date either on KMM to find the most recent updates, if you didn’t add additional mods those ''may'' be responsible.<br />
* If you had the issue during a campaign, do not remove mods that have custom items, units or buildings because you’re just going to crash harder if those are around in the campaign map.<br />
* As mentioned above, watch out for movie packs. If you’re inexplicably crashing even with no mods on, you might have a movie pack with crashy data in it.<br />
<br />
==== Bisect and Conquer: ====<br />
Especially when dealing with big mod lists, the quickest method is to enable half of it. If you crash, that’s the troublesome half. Halven again to tighten the noose.<br />
<br />
Keep in mind mod requirements while you do this.<br />
<br />
If you want to check on a particular mod, disable everything and load the bare minimum to make that mod work, in other words mod+whatever required mods that comes with. And up from there, adding one or small groups of mods at a time until you can reproduce the issue.<br />
<br />
It’s patient work but the modder will appreciate it, and it takes less than panicking for hours in a comment section. Assume that a modder won’t troubleshoot your mod list of 150 packs because you say it’s their mod doing it, unless they have proof because you tested without anything else plus requirements.<br />
<br />
Remember: a happy modder is a happy user.<br />
<br />
== APPENDIX: Scripts ==<br />
Scripts are being increasingly used by mods. While most scripters are getting smarter by the day to maintain compatibility, some require a framework or some mods will just struggle to work when there are too many mods around.<br />
<br />
You may encounter symptoms of broken scripts, due to botched downloads, bad compatibility or just plain unforeseen issues because we can just mess stuff up sometimes. Script glitches tend to be quite tricky to root out.<br />
<br />
A few examples of broken scripts:<br />
<br />
* Starting lords that should be custom are not custom, or don’t spawn, or don’t have the correct army or settlement.<br />
* Sword of Khaine button is unchained right off.<br />
* Chaos and all Rogue armies may spawn immediately.<br />
* Campaign camera on a fresh campaign starts zoomed-out and doesn’t pan in.<br />
* Chivalry starts at 0.<br />
* One of the worst, characters do not gain XP (this may sometimes happen in full vanilla too, requires repair).<br />
<br />
==== Scropt broken, what do? ====<br />
In some cases, it’s just a botched download (see Launcher error 3). Otherwise it gets trickier and requires you to start trimming the mod list to find the culprit. When/if you report the issue to modders, remember to provide as much info as humanly possible because finding a script break can turn ugly and complicated.<br />
<br />
Particularly useful to help with scripting issues: please enable [https://steamcommunity.com/sharedfiles/filedetails/?id=1271877744 this debugger], reproduce the bug and send the resulting log, which will be a lenghty txt generated in ''Steam\steamapps\common\Total War WARHAMMER II''. Specific scripty mods may come with additional instructions in their mod descriptions/faqs.<br />
<br />
Do not keep the script logger there unless you need it, since it will noticeably slow down your game.<br />
<br />
One of the most frequent issues at the moment is a performance-related clog-up at the start of a campaign. This basically means that too many scripts are trying to fit into that time frame to do their stuff (legendary lords, changing armies, this kinda stuff) and results in some of them not working. This is where size of the mod list, in regards to any mod with a first-tick script, becomes serious.<br />
<br />
Quick note about Communiy Modding Framework: an obsolete scripting system, it’s basically only used by Crynsos’s unlocker at this point in time (september 2020) and will cause issues more often than not when enabled and not required.<br />
<br />
''Basically disable it unless you’re using CFU''.<br />
<br />
I repeat, it often breaks stuff. When in doubt, shoot it in the face.<br />
<br />
== APPENDIX: [https://steamcommunity.com/sharedfiles/filedetails/?id=1354363596 UI Modding Framework] ==<br />
This framework is technically not required to do UI modding at all, but it may be used as a framework by some scripty mods. Unless it happens to have broken functions after a patch, there are zero reasons not to have it around just in case one of your mods is actually using it or starts doing it.<br />
<br />
== APPENDIX: [https://steamcommunity.com/sharedfiles/filedetails/?id=1354363596 Mod Configuration Tool] ==<br />
This other framework is used to provide settings for compatible mods, i.e. to tweak some details at your heart’s content. Usually a good thing to keep it around because there’s quite a few mods supporting it, or that may do it in the future. For example, you may use it to configure some scripts to fire in a performance mode to reduce impact on campaign start.</div>Cataphhttps://tw-modding.com/index.php?title=Main_Page&diff=291Main Page2021-02-28T09:30:09Z<p>Cataph: added queue note</p>
<hr />
<div>== NEW WEBSITE ==<br />
Yes, yes, we're on our sixth or seventh or eight iteration of this website!<br />
<br />
This newest version is built upon MediaWiki (same thing Wikipedia uses), and is very much a work in progress, but it's hopefully a much better time all around.<br />
<br />
<s>If you need to access the old version of the website, it'll remain up for a couple months (taken down by April 1 2021) at [https://159.65.167.83 159.65.167.83]</s> right now it's not up, we'll see if that changes in the future but it may be gone for good. :)<br />
<br />
== Hello ==<br />
Welcome to the very in-progress Total War: Modding Wiki! Maintained by Vandy, filled in by anyone!<br />
<br />
This Wiki is intended to be as good of a one-stop-shop as possible for modding the Total War series, when it comes to walkthroughs for early set-up and understanding, or tutorials to do specific tasks, or general wiki pages as an overview for various modding and game concepts. It should contain all the resources and tutorials really needed to go forward in modding - when all is said and done.<br />
<br />
This project is born out of the members of the [https://discord.gg/dd4TUDm Modding Den Discord channel], which is focused on the Total War: Warhammer side of the franchise due to its original founding by two popular Warhammer modders - but other Total Wars are more than welcome here!<br />
<br />
The [https://www.totalwar.com/ Total War] Franchise is a product of [https://www.creative-assembly.com/home Creative Assembly], they own it and other important legal business here.<br />
<br />
== Navigation ==<br />
All available [[Tutorial:Main Page|Tutorials]]:<br />
<br />
{{Special:Prefixindex/Tutorial:}}<br />
<br />
[[:Category:Tools & Resources|Tools & Resources]]<br />
<br />
=== All Pages ===<br />
{{Special:AllPages}}<br />
<br />
== Help Out ==<br />
There's a lot to do to help out! Most importantly, '''share what knowledge you have.''' If you are very knowledgeable about some subject, write a few new pages about it. Make edits to existing pages. Add new categories, fill out details. This is a communal effort, and while I'll be trying to shepherd it along and keep everything relatively organized, this is very intentionally a group effort!<br />
<br />
''Note: Only verified accounts can make edits. Just register a new account with your username and log in, and you can make edits. They will currently enter approval queue to prevent spam.''<br />
<br />
'''To make a new page:''' You just have to search for a page in the search bar. The website will ask "Do you want to create a page with name X?" or something similar - click the red link, and start creating a new page from there!<br />
<br />
- [[Tutorial:Main Page|Tutorials]] should be named "Tutorial:Tutorial Name Here"<br />
<br />
- Any other page can be named anything else, it doesn't matter. Please mind that only one page can exist with that name, of course, so be proper with your names.<br />
<br />
==Helpful Links For Now==<br />
*[[mediawikiwiki:Help:Editing_pages|Best practices for editing pages]]<br />
*[[mediawikiwiki:Help:Formatting|A How-To on using the MediaWiki Formatting]]<br />
*[[mediawikiwiki:Special:MyLanguage/Manual:Configuration_settings|Configuration settings list]]<br />
*[[mediawikiwiki:Special:MyLanguage/Manual:FAQ|MediaWiki FAQ]]<br />
*[https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]<br />
*[[mediawikiwiki:Special:MyLanguage/Localisation#Translation_resources|Localise MediaWiki for your language]]<br />
*[[mediawikiwiki:Special:MyLanguage/Manual:Combating_spam|Learn how to combat spam on your wiki]]</div>Cataphhttps://tw-modding.com/index.php?title=Troubleshooting&diff=288Troubleshooting2021-02-27T15:01:50Z<p>Cataph: removed faux links</p>
<hr />
<div>This is a troubleshooting guide for mod users in TW: Warhammer 2. The generic pointers should be valid for all recent TW games.<br />
<br />
– Your neighbourhood Cataph<br />
<br />
== Managing Mods ==<br />
So, you have subscribed to mods on the workshop. You now open CA’s current mod manager (hereby called George II) and – blimey, they don’t work or something’s not right.<br />
<br />
We called it George II cause it’s the new launcher. He’s new in town, prettier than George, but he’s still not good at what he should be doing and forgets to make mods work. We’re sorry but George II needs some time.<br />
<br />
First thing to keep in mind, if you have issues with George II you should definitely report them to CA so that they know what they should look at.<br />
<br />
That said, you can just use the [https://github.com/Kaedrin/warhammer-mod-manager community mod manager] (normally called KMM). Long story short, George is unwieldy and has grown responsible for a lot of issues of its own, becoming hated by modders and users alike. Among other things, KMM is more reliable and provides mod profiles.<br />
<br />
==== How to Load Order ====<br />
One of the things George I, the old launcher, couldn’t do is allow load order editing because it only uses the default alphabetical order. KMM and even George II have that function, so you’d be tempted to change load order manually, right?<br />
<br />
'''''WRONG.'''''<br />
<br />
Ok, I’ll spare some time for this before we get into the actually useful tips, because this is one of the nastiest tropes around the community. The truth is that compatibility-minded modders already handle load order on their own as far as possible. Manually changing load order may do absolutely nothing, move the problem elsewhere or break everything.<br />
<br />
Some context. There are six main possible categories of folders in a mod pack and this is how they handle load order, either through actual pack name or table name:<br />
<br />
* Db: table name.<br />
* Scripts: pack name.<br />
* Startpos (the big bad): pack name.<br />
* Text: table name.<br />
* UI: pack name.<br />
* Variants: pack name.<br />
<br />
And that is if the modder doesn’t redirect content. KMM can only affect pack name order, so there are things like balance submods (Db overrides) that are still completely in the hands of the modders and intentionally so.<br />
<br />
In other words, there are only two possible cases in which you may want to alter load order manually: UI and variants, basically if you want to use specific reskin B.pack in the midst of larger reskin A.pack, in which case you push B on top.<br />
<br />
''In conclusion, you want to follow KMM’s instructions, give Steam time to download/remove mods and mostly keep load order in an alphabetical fashion (e.g. order by name and save profile), especially after adding new mods.''<br />
<br />
Which, incidentally, is this:<br />
<br />
! # $ % & ‘ ( ) + , – ; = @ 0-9 a-z [ ] ^ _ ` { } ~<br />
<br />
Where “!” wins over “a”.<br />
<br />
== Common Troubleshooting ==<br />
In an efficient mod, at least half of the reported issues are down to user error or what is technically called launcher f***-up. We’re going to try and cut that amount down for the greater good.<br />
<br />
==== User good practices: ====<br />
<br />
# Read the mod description. Seriously, this alone would prevent 80% of comments on Steam pages. Even if a description looks long, do it, it’s there for a reason. Some mods will also have FAQs or a list of known issues, incompatibilities and instructions. Read the comments before yours too if you have to post one. There’s an excellent chance the question you’re going to ask is already answered in in descriptions, FAQs and recent comments.<br />
# Don’t ignore the required items. The mod may show you a popup upon subscribing, disregarding that is almost always cue for disaster. This popup is ''not'' shown when subbing from a Steam collection (thanks Gaben), so actually check the mod’s page.<br />
# Keep the mod list in alphanumerical order. We’ve been over that already. If you have new mods that have popped at the tail of the list, just click again on the <code>File Name</code> column in KMM and save your profile.<br />
# Troubleshoot yourself! The thing is, we don’t have time to help everybody, and in most cases the problem is local. We’ll get to best practices on this, don’t worry.<br />
# Upon commenting about an issue, provide context. Ok, you did everything right but that ugly bug is still there. That’s fine. The worst thing you could do at this point is comment “mod doesn’t work” because that means absolutely nothing. Modders aren’t telepaths. Steam comments aren’t the best place for this, so use a discussion or the discord server/channel lurked by that given modder.<br />
#* Context: when and how the thing happened. E.g. during the interturn after X’s turn, or clicking this button, whether it was Vortex/ME/multiplayer, custom battle or campaign battle.<br />
#* Mod list: Link a collection or a screenshot to the KMM list. For example, the big thing is not being naif enough that the overhaul in your list can’t affect other mods. For some reason, sometimes it feels like pulling teeth to know what else is there.<br />
#* Screenshot: always helps for clarity and visual context.<br />
#* Save game: if requested, you can find your save game in (example) C:\Users\%USER%\AppData\Roaming\The Creative Assembly\Warhammer2\save_games. Remember the mod list, because the modder may not be able to load without it.<br />
#* Results of your own troubleshooting: for example it’s good to know it happens with that one mod only. Relatedly, if you posted about an issue and later find the cause, let us know.<br />
<br />
''This list is of course not meant to insult anybody’s intelligence, but you’d be surprised at how many issues and massive wastes of time are due to neglect of these simple rules. Following them is in the user’s interest in order to find a solution sooner, and it will allow the modder more time for improvement rather than wasted in unnecessary bug-hunts.''<br />
<br />
==== Common launcher/game issues: ====<br />
<br />
# Failed to download/remove mod. This happens relatively often and if in doubt you should always check in the mod download folder (example: Z:\Steamsteamapps\workshop\content\594570\??????) whether that mod was successfully downloaded/removed. Open George/Steam again until it is. The final folder id is the same as the one on the mod’s Steam url and you can sort by date for the most recently poked folder.<br />
#* More on this if using KMM: Kaedrin’s manager copies packs from that content/ to the game’s data/ folder. Moreover, when mods update you will likely need to refresh/restart KMM.<br />
# Ghost mods. Definitely spooky. You have toggled off that mod, but somehow it turns out it was still being loaded and crashing your game. Or a mod updates and self-enables. Using KMM seems enough to prevent this kind of poltergeist.<br />
# Corrupted download. This is more frequent than I’d like. The mod’s download is botched and it either crashes the game or presents less visible problems (e.g.: this lord’s graphics are wrong/missing). Go again in your content or data folder, delete the mod pack and let it download again. In theory, you should do this every time a mod that is clearly not supposed to do that crashes on game start, especially when the mod hasn’t been updated recently and nobody has reported such a glaring problem in a while.<br />
# Random crashes: sometimes stuff just breaks and you have to verify your game’s cache: Steam Library>right click on game>Properties>Local Files>Verify yadda yadda. Or check with the game’s support.<br />
# Failure to enable mods or borked load order: sometimes George simply won’t fire what you want, or you’ve accidentally touched load order and now it won’t revert. Use KMM.<br />
# Soft cap: as of King’s Shilling update, this is completely fixed and the cap is indefinite. You can stop merging stuff or believing conspiracies about CA intentionally capping mods.<br />
<br />
==== Some specific KMM issues: ====<br />
<br />
# Doesn’t work: KMM can be installed anywhere, BUT in the game’s stuff. Don’t install in data/ or anywhere close. Hell, plop it in the desktop.<br />
# Doesn’t work cause I’m pirating the game: KMM can smell piracy. Buy the game.<br />
# KMM freezes on start: reboot it.<br />
# Game crashes on load: if you get that or suddenly crash for no good reason, just refresh/restart KMM first thing. If it persists, time to actually troubleshoot. KMM doesn’t often suffer of corrupted downloads but it may theoretically still happen.<br />
# Movie packs: still crashing? Even with no packs enabled at all? Ok, keep in mind that once they are in the data/ folder, movie packs will always be enabled no matter if you’ve toggled them on or not. KMM shows if a mod is a conventional pack file or movie pack (Type column), and it will tell you on the lower right how many movie packs you’re currently running. To effectively disable a movie pack, use the right click option <code>Unsubscribe (Steam) and Delete</code>. This should get rid of that mod in one go, instead of doing a mix of things that will probably still cause KMM to copy the pack again. Movie packs are mostly used for vfx, but sometimes also come with data baggage that you don’t always want around. Modders: you ''really'' want to only have harmless vfx in the movie pack, not db and scripts.<br />
<br />
== APPENDIX: Trimming the Mod List ==<br />
Again, there is virtually no such thing as a soft cap in WH2 anymore. So it’s up to you to keep your mod list functional, and if you have more than 100 mods enabled, risks and maintenance time will increase for you. Making that work is up to how careful you are, and even if a mod list doesn’t produce an instant crash you can’t be sure there aren’t less visible issues, e.g. script breaks.<br />
<br />
As a rule of thumb, don’t be cocky with your list of 250 mods because it’s all fun and games until everything works perfectly (and with those numbers chances are it doesn’t already, you just can’t see it), at which point there’s a lot of stuff to check.<br />
<br />
If you’re not experienced yet (and don’t assume you are just because you played Skyrim, this is different), use the mod list of someone that has very carefully been curating it, and check that it looks ok with the help of the modders themselves. For example, start by a modder’s own collection on Steam, they often have one.<br />
<br />
=== Finding the culprit ===<br />
The usual problem with large mod lists is this: bad, I got a crash; worse, which one of the N mods I have is the culprit?<br />
<br />
==== Generic pointers: ====<br />
<br />
* Pure Text, Variant and UI mods can basically NEVER crash the game for the user. If they do, it’s a botched download.<br />
* Momentarily sort by date either on KMM to find the most recent updates, if you didn’t add additional mods those ''may'' be responsible.<br />
* If you had the issue during a campaign, do not remove mods that have custom items, units or buildings because you’re just going to crash harder if those are around in the campaign map.<br />
* As mentioned above, watch out for movie packs. If you’re inexplicably crashing even with no mods on, you might have a movie pack with crashy data in it.<br />
<br />
==== Bisect and Conquer: ====<br />
Especially when dealing with big mod lists, the quickest method is to enable half of it. If you crash, that’s the troublesome half. Halven again to tighten the noose.<br />
<br />
Keep in mind mod requirements while you do this.<br />
<br />
If you want to check on a particular mod, disable everything and load the bare minimum to make that mod work, in other words mod+whatever required mods that comes with. And up from there, adding one or small groups of mods at a time until you can reproduce the issue.<br />
<br />
It’s patient work but the modder will appreciate it, and it takes less than panicking for hours in a comment section. Assume that a modder won’t troubleshoot your mod list of 150 packs because you say it’s their mod doing it, unless they have proof because you tested without anything else plus requirements.<br />
<br />
Remember: a happy modder is a happy user.<br />
<br />
== APPENDIX: Scripts ==<br />
Scripts are being increasingly used by mods. While most scripters are getting smarter by the day to maintain compatibility, some require a framework or some mods will just struggle to work when there are too many mods around.<br />
<br />
You may encounter symptoms of broken scripts, due to botched downloads, bad compatibility or just plain unforeseen issues because we can just mess stuff up sometimes. Script glitches tend to be quite tricky to root out.<br />
<br />
A few examples of broken scripts:<br />
<br />
* Starting lords that should be custom are not custom, or don’t spawn, or don’t have the correct army or settlement.<br />
* Sword of Khaine button is unchained right off.<br />
* Chaos and all Rogue armies may spawn immediately.<br />
* Campaign camera on a fresh campaign starts zoomed-out and doesn’t pan in.<br />
* Chivalry starts at 0.<br />
* One of the worst, characters do not gain XP (this may sometimes happen in full vanilla too, requires repair).<br />
<br />
==== Scropt broken, what do? ====<br />
In some cases, it’s just a botched download (see Launcher error 3). Otherwise it gets trickier and requires you to start trimming the mod list to find the culprit. When/if you report the issue to modders, remember to provide as much info as humanly possible because finding a script break can turn ugly and complicated.<br />
<br />
Particularly useful to help with scripting issues: please enable [https://steamcommunity.com/sharedfiles/filedetails/?id=1271877744 this debugger], reproduce the bug and send the resulting log, which will be a lenghty txt generated in ''Steam\steamapps\common\Total War WARHAMMER II''. Specific scripty mods may come with additional instructions in their mod descriptions/faqs.<br />
<br />
Do not keep the script logger there unless you need it, since it will noticeably slow down your game.<br />
<br />
One of the most frequent issues at the moment is a performance-related clog-up at the start of a campaign. This basically means that too many scripts are trying to fit into that time frame to do their stuff (legendary lords, changing armies, this kinda stuff) and results in some of them not working. This is where size of the mod list, in regards to any mod with a first-tick script, becomes serious.<br />
<br />
Quick note about Communiy Modding Framework: an obsolete scripting system, it’s basically only used by Crynsos’s unlocker at this point in time (september 2020) and will cause issues more often than not when enabled and not required.<br />
<br />
''Basically disable it unless you’re using CFU''.<br />
<br />
I repeat, it often breaks stuff. When in doubt, shoot it in the face.<br />
<br />
== APPENDIX: [https://steamcommunity.com/sharedfiles/filedetails/?id=1354363596 UI Modding Framework] ==<br />
This framework is technically not required to do UI modding at all, but it may be used as a framework by some scripty mods. Unless it happens to have broken functions after a patch, there are zero reasons not to have it around just in case one of your mods is actually using it or starts doing it.<br />
<br />
== APPENDIX: [https://steamcommunity.com/sharedfiles/filedetails/?id=1354363596 Mod Configuration Tool] ==<br />
This other framework is used to provide settings for compatible mods, i.e. to tweak some details at your heart’s content. Usually a good thing to keep it around because there’s quite a few mods supporting it, or that may do it in the future. For example, you may use it to configure some scripts to fire in a performance mode to reduce impact on campaign start.</div>Cataph