[Request] Master Thread of Externalization Requests
AndreaColombo
Member Posts: 5,530
I'm starting this thread to put together all requests to externalize (i.e. make soft-coded) one or more aspects of the game so that they can be modded. Although this thread is especially geared toward modders for their obviously superior insight on the matter (making some aspects of the game moddable falls well within their needs and desires, after all), anyone is welcome to contribute their requests.
As per @CameronTofer's reccomendations, please make every requests as detailed and unambiguous as possible.
For the devs' convenience, here forth is a list of externalization requests that have been made in this post.
- Externalize stats (STR / DEX / CON / INT / WIS / CHA) [requested by: AndreaColombo; @Galactygon]
This way, modders could take care of this and this without having to resort to hacky workarounds, as well as implement any house-ruled personalization to stat effects they may require for their mods/total conversions.
- Externalize projectiles [requested by: @Avenger_teambg]
Well, my biggest request for externalization would be about projectiles. No hard coded projectiles please. I've made (in GemRB) all the bg1/bg2 (and a significant majority of the other IE games') projectiles externalized. If any dev needs the file specs for that they can see it here.
I'm available for any more info and open for changes. These flags are already added to DLTCEP, but it is easy to change.
- Externalize character creation [requested by: @Avenger_teambg]
Moddable character generation would be the best. Though, i'm not sure how much you want to unhardcode, later this would be useful (if you create more than 1-2 games). Also modders would be awed.
-Externalize Item type / Inventory slot relation [requested by: @Avenger_teambg]
More details in this bugfix request.
- Externalize the way spells/abilities are extended [requested by: @Galactygon]
You could always open up the possibility to modders to somehow "softcode" the way spells/abilities are expended (ie. traditional one-for-one, sorcerer-style, or points system). A better alternative might be to allow modders to link spell casting conditions to external script blocks so that the points system can be mimicked via LOCALs as well as open up the possibility for material components for spells/abilities. (originally found in this thread).
- Externalize the effects and magnitudes of the weapons styles [requested by: @Boaster]
Make a 2DA file that lets modders control and/or modify the effects of weapon style specialization (e.g. Sword and Shield, Two-weapon Fighting, etc.). You may refer to this thread for further reference.
- Externalize animation slots [requested by: @Avenger_teambg]
Actually, it is possible to have entirely custom animation slots. PST had this. And GemRB also got it. We support the different animation schemes of all IE games. You just have to have a 2da that maps the animation slot id to the animation type. And for extras, you can list feet circle, blood color, etc in this 2da (or separate 2da's if you want to spare some space). This is just an externalization request: instead of hardcoding a few more slots, make the entire stuff softcoded.
- Externalize gear restrictions for kits & classes [requested by: @Dazzu]
Gear restrictions to custom kits/classes/multi-classes/dual-classes should be easier to do. Say, I want to make a thief kit that can use and take points in Longbows, or even if I want to allow Dwarven Clerics and multi-Clerics to use and potentially specialize in Axes if the dwarf wishes, BUT not allow the same luxury for other races. I, from what I can find, can conclude that to be impossible.
- Externalize item restrictions based on characters. [requested by: @Avenger_teambg]
1. npc refuses to unequip item (like MINSC's boo)
2. npc would unequip item only if provided with an equivalent (observed this in PST, Annah/Grace bodices, TNO's eye)
3. only npc can equip item (Xan's sword)
- Externalize proficiency effects and creation [requested by: @Grammarsalad]
Related to the character creation and style effects and magnitude requests, I would like to request that there be no restriction on proficiency effects and creation. To make myself clearer let me illustrate with a few examples.
I assume--though I don't know--that as of now it is not possible for a modder to create a weapon type with a corresponding proficiency selectable on level up. I know i've seen a mod with a bola weapon type that uses the sling art, animations and proficiency. I understand that not much can be done about the first two but it would be nice if it was possible to, for example, create a proficiency tier that allowed a small chance to immobilize a foe (if they fail some save) with a bola rather then, say, bonus attacks.
Or perhaps create their own style like unarmed or.armor specialization if they so choose.
It would also be nice if it was even possible to use proficiencies to emulate a "skill", feat or nonweapon proficiency system if they are feeling ambitious.
-Externalize item sounds (override default itemtype based sounds) [requested by: @Avenger_teambg]
itemsnd.2da
PICK DROP
MISC72 GAM_12A GAM_12B
- Externalize container icons/sound [requested by: @Avenger_teambg]
containr.2da
2DA V1.0
*
SOUND BAM CLOSE
* * *
BAG GAM_12A1 CONTSACK GAM_12A
CHEST AMB_D05A CONTCHST AMB_D05B
DRAWER AMB_D05A CONTDRWR AMB_D05B
PILE AMB_D18 CONTGRND *
TABLE AMB_D08 CONTTABL *
SHELF AMB_D07 CONTSHLF *
ALTAR AMB_D07 CONTALTR *
NONVISIBLE AMB_D18 * *
SPELLBOOK GAM_06 CONTBOOK GAM_05
BODY AMB_D08G CONTBODY *
BARREL AMB_D12 CONTBARL AMB_D13
CRATE AMB_D05A CONTCRAT AMB_D05B
- Externalize banter timer value [requested by: @jcompton]
Allowing the player (and/or content developer) to directly affect the wait time between banters (INTERDIA.2DA-govered intraparty DLGs) would be appreciated. Right now there is some sort of internal clock which governs how long the game waits between trying to initiate a banter, but we have no control over it except the CTRL+I key, which attempts to start one.
A UI slider control "Banters less frequently - - - - More frequently" would be nice. A GLOBAL-level control would be okay.
In core BGEE content this would allow players to control the frequency of the "mini-banters" between NPCs. Many mods add large quantities of banters and use scripting to take a stab at increasing the frequency, but a single, transparent and flexible control would give players more control over the experience.
- Externalize familiars from GAM-File. [requested by: @Jarl]
There should be a 2da for each alignment, which lists a alterable number of possible familiars and then the game chooses one randomly.
- Externalize NPC-specific innate abilities (e.g. Minsc's Berserk, Tiax's Summon Ghast, Yeslick's Dispel Magic, etc.). [requested by: @Miloch]
Otherwise, we have to account for them on each NPC .cre file and this is subject to error (and there are such errors in BG1), as well as getting wiped by mods that rebuild spells. We could have a simple .2da that has NPC DV and ability or abilities, if any. Mods could change this if they want, and it will be apparent they are doing so intentionally, rather than just wiping all spells. Moreover, NPC mods can extend it easily, more so than editing .cre files.
- Externalize the hardcoded limit of 24 selectable HLAs. [requested by: @Grammarsalad]
I understand that there is a hard coded limit of 24 selectable high level abilities. I think this is like kits in that you can create more than 9 kits for a given class, but only 9 will be selectable at character creation.
- Externalize bard song. [requested by: @Avenger_teambg, @Wisp, @CamDawg]
Base bardsong is hardcoded, but here are the effects:
1. display portrait icon 40
2. resets morale to 10
3. cure fear - removes opcode 24
4. protection from opcode 24
The current setup sounds pretty stupid and if the devs want to implement a bard song that improves with levels, I would imagine it makes a good deal more sense to use the existing SPL framework instead of writing ad-hoc hardcode for it.
- Externalize the Barbarian, Monk and Sorcerer classes. [requested by: @Deis]
If that happened we could finally get some fully working kits for them (not to mention the creation of a favored soul type kit for sorcerer).
- Externalize NPCs' stats, class/kit, and alignment. [requested by: @Deis]
So that changes can be permanent (unlike Shadowkeeper which is per game only in party).
- Externalize projectile explosions. [requested by: @Avenger_teambg; @Galactygon]
Because they are just so much fun.
- Externalize weapons' sounds. [requested by: @Jarl]
Please externalise the weapons' sounds (attack, hit), so modders could add more variety here.
This should include the possibility to add different sounds depending on the armor-class, when getting hit (like it was in NWN). So a successful hit by a longsword on a leather armor will sound different to a hit on a plate mail.
- Externalize Monk's AC bonuses. [requested by: @Demivrgvs]
The current AC progression is not as per PnP, but the main problem here is that it's implemented in a way (set AC) that makes Bracers of Defense not properly work for Monks. So, the best thing to do would be to make it not hardcoded, and grant AC bonuses via spl files in the relative clab 2da file, using incremental AC bonuses to allow the use of bracers. If such thing is not done you may as well make bracers unusable by Monks, because in the current state a pair of Bracers of Defense may actually worsen a Monk's AC.
- Externlize Monk's fists. [requested by: @Demivrgvs]
These are semi-hardcoded (at least we can mess a little with 'mfist#' files), but still causes a bunch of issues. For example Monks are unable to wield Staves because their off-hand slot is secretly used by his fists. For the same reason, Monk's doesn't gain any benefit from Single Weapon Style when wielding only 1 weapon in their main hand (if not fixed at least make Monk not able to spend prof points into 1W style!).
- Externalize the hardcoded limit of settable traps. [requested by @CamDawg]
Traps that can be set by Thieves are currently capped at 7 and the limit is hardcoded. Please externalize this limit so that modders can alter it at their leisure.
-Externalize character animation ID assignment for arbitrary stat combinations. [requested by: @Avenger_teambg; AndreaColombo]
In GemRB we have the following system:
1. a master list of parts, basically a 2da list of resource names (of 2da's).
It looks like this for most of the games:
2DA V1.0
*
RESOURCE
0 0x6000
1 avprefr
2 avprefg
3 avprefc
You can notice 0x6000 - the base value, and 3 files (race, gender, class)
These four things make up a player avatar's animation ID.
For simplicity, look at the gender file:
2DA V1.0
*
GENDER
TYPE 35
MALE 0
FEMALE 0x10
35 is the gender stat as you can see in STAT.IDS
This system allowed us to externalize any IE game's PC animation IDs with a huge modding potential and minimal effort.
- Externalize the summon cap for monsters and celestials. [requested by @CamDawg]
Please make the summon cap adjustable for all creatures, including celestials.
As per @CameronTofer's reccomendations, please make every requests as detailed and unambiguous as possible.
For the devs' convenience, here forth is a list of externalization requests that have been made in this post.
- Externalize stats (STR / DEX / CON / INT / WIS / CHA) [requested by: AndreaColombo; @Galactygon]
This way, modders could take care of this and this without having to resort to hacky workarounds, as well as implement any house-ruled personalization to stat effects they may require for their mods/total conversions.
- Externalize projectiles [requested by: @Avenger_teambg]
Well, my biggest request for externalization would be about projectiles. No hard coded projectiles please. I've made (in GemRB) all the bg1/bg2 (and a significant majority of the other IE games') projectiles externalized. If any dev needs the file specs for that they can see it here.
I'm available for any more info and open for changes. These flags are already added to DLTCEP, but it is easy to change.
- Externalize character creation [requested by: @Avenger_teambg]
Moddable character generation would be the best. Though, i'm not sure how much you want to unhardcode, later this would be useful (if you create more than 1-2 games). Also modders would be awed.
-Externalize Item type / Inventory slot relation [requested by: @Avenger_teambg]
More details in this bugfix request.
- Externalize the way spells/abilities are extended [requested by: @Galactygon]
You could always open up the possibility to modders to somehow "softcode" the way spells/abilities are expended (ie. traditional one-for-one, sorcerer-style, or points system). A better alternative might be to allow modders to link spell casting conditions to external script blocks so that the points system can be mimicked via LOCALs as well as open up the possibility for material components for spells/abilities. (originally found in this thread).
- Externalize the effects and magnitudes of the weapons styles [requested by: @Boaster]
Make a 2DA file that lets modders control and/or modify the effects of weapon style specialization (e.g. Sword and Shield, Two-weapon Fighting, etc.). You may refer to this thread for further reference.
- Externalize animation slots [requested by: @Avenger_teambg]
Actually, it is possible to have entirely custom animation slots. PST had this. And GemRB also got it. We support the different animation schemes of all IE games. You just have to have a 2da that maps the animation slot id to the animation type. And for extras, you can list feet circle, blood color, etc in this 2da (or separate 2da's if you want to spare some space). This is just an externalization request: instead of hardcoding a few more slots, make the entire stuff softcoded.
- Externalize gear restrictions for kits & classes [requested by: @Dazzu]
Gear restrictions to custom kits/classes/multi-classes/dual-classes should be easier to do. Say, I want to make a thief kit that can use and take points in Longbows, or even if I want to allow Dwarven Clerics and multi-Clerics to use and potentially specialize in Axes if the dwarf wishes, BUT not allow the same luxury for other races. I, from what I can find, can conclude that to be impossible.
- Externalize item restrictions based on characters. [requested by: @Avenger_teambg]
1. npc refuses to unequip item (like MINSC's boo)
2. npc would unequip item only if provided with an equivalent (observed this in PST, Annah/Grace bodices, TNO's eye)
3. only npc can equip item (Xan's sword)
- Externalize proficiency effects and creation [requested by: @Grammarsalad]
Related to the character creation and style effects and magnitude requests, I would like to request that there be no restriction on proficiency effects and creation. To make myself clearer let me illustrate with a few examples.
I assume--though I don't know--that as of now it is not possible for a modder to create a weapon type with a corresponding proficiency selectable on level up. I know i've seen a mod with a bola weapon type that uses the sling art, animations and proficiency. I understand that not much can be done about the first two but it would be nice if it was possible to, for example, create a proficiency tier that allowed a small chance to immobilize a foe (if they fail some save) with a bola rather then, say, bonus attacks.
Or perhaps create their own style like unarmed or.armor specialization if they so choose.
It would also be nice if it was even possible to use proficiencies to emulate a "skill", feat or nonweapon proficiency system if they are feeling ambitious.
-Externalize item sounds (override default itemtype based sounds) [requested by: @Avenger_teambg]
itemsnd.2da
PICK DROP
MISC72 GAM_12A GAM_12B
- Externalize container icons/sound [requested by: @Avenger_teambg]
containr.2da
2DA V1.0
*
SOUND BAM CLOSE
* * *
BAG GAM_12A1 CONTSACK GAM_12A
CHEST AMB_D05A CONTCHST AMB_D05B
DRAWER AMB_D05A CONTDRWR AMB_D05B
PILE AMB_D18 CONTGRND *
TABLE AMB_D08 CONTTABL *
SHELF AMB_D07 CONTSHLF *
ALTAR AMB_D07 CONTALTR *
NONVISIBLE AMB_D18 * *
SPELLBOOK GAM_06 CONTBOOK GAM_05
BODY AMB_D08G CONTBODY *
BARREL AMB_D12 CONTBARL AMB_D13
CRATE AMB_D05A CONTCRAT AMB_D05B
- Externalize banter timer value [requested by: @jcompton]
Allowing the player (and/or content developer) to directly affect the wait time between banters (INTERDIA.2DA-govered intraparty DLGs) would be appreciated. Right now there is some sort of internal clock which governs how long the game waits between trying to initiate a banter, but we have no control over it except the CTRL+I key, which attempts to start one.
A UI slider control "Banters less frequently - - - - More frequently" would be nice. A GLOBAL-level control would be okay.
In core BGEE content this would allow players to control the frequency of the "mini-banters" between NPCs. Many mods add large quantities of banters and use scripting to take a stab at increasing the frequency, but a single, transparent and flexible control would give players more control over the experience.
- Externalize familiars from GAM-File. [requested by: @Jarl]
There should be a 2da for each alignment, which lists a alterable number of possible familiars and then the game chooses one randomly.
- Externalize NPC-specific innate abilities (e.g. Minsc's Berserk, Tiax's Summon Ghast, Yeslick's Dispel Magic, etc.). [requested by: @Miloch]
Otherwise, we have to account for them on each NPC .cre file and this is subject to error (and there are such errors in BG1), as well as getting wiped by mods that rebuild spells. We could have a simple .2da that has NPC DV and ability or abilities, if any. Mods could change this if they want, and it will be apparent they are doing so intentionally, rather than just wiping all spells. Moreover, NPC mods can extend it easily, more so than editing .cre files.
- Externalize the hardcoded limit of 24 selectable HLAs. [requested by: @Grammarsalad]
I understand that there is a hard coded limit of 24 selectable high level abilities. I think this is like kits in that you can create more than 9 kits for a given class, but only 9 will be selectable at character creation.
- Externalize bard song. [requested by: @Avenger_teambg, @Wisp, @CamDawg]
Base bardsong is hardcoded, but here are the effects:
1. display portrait icon 40
2. resets morale to 10
3. cure fear - removes opcode 24
4. protection from opcode 24
The current setup sounds pretty stupid and if the devs want to implement a bard song that improves with levels, I would imagine it makes a good deal more sense to use the existing SPL framework instead of writing ad-hoc hardcode for it.
- Externalize the Barbarian, Monk and Sorcerer classes. [requested by: @Deis]
If that happened we could finally get some fully working kits for them (not to mention the creation of a favored soul type kit for sorcerer).
- Externalize NPCs' stats, class/kit, and alignment. [requested by: @Deis]
So that changes can be permanent (unlike Shadowkeeper which is per game only in party).
- Externalize projectile explosions. [requested by: @Avenger_teambg; @Galactygon]
Because they are just so much fun.
- Externalize weapons' sounds. [requested by: @Jarl]
Please externalise the weapons' sounds (attack, hit), so modders could add more variety here.
This should include the possibility to add different sounds depending on the armor-class, when getting hit (like it was in NWN). So a successful hit by a longsword on a leather armor will sound different to a hit on a plate mail.
- Externalize Monk's AC bonuses. [requested by: @Demivrgvs]
The current AC progression is not as per PnP, but the main problem here is that it's implemented in a way (set AC) that makes Bracers of Defense not properly work for Monks. So, the best thing to do would be to make it not hardcoded, and grant AC bonuses via spl files in the relative clab 2da file, using incremental AC bonuses to allow the use of bracers. If such thing is not done you may as well make bracers unusable by Monks, because in the current state a pair of Bracers of Defense may actually worsen a Monk's AC.
- Externlize Monk's fists. [requested by: @Demivrgvs]
These are semi-hardcoded (at least we can mess a little with 'mfist#' files), but still causes a bunch of issues. For example Monks are unable to wield Staves because their off-hand slot is secretly used by his fists. For the same reason, Monk's doesn't gain any benefit from Single Weapon Style when wielding only 1 weapon in their main hand (if not fixed at least make Monk not able to spend prof points into 1W style!).
- Externalize the hardcoded limit of settable traps. [requested by @CamDawg]
Traps that can be set by Thieves are currently capped at 7 and the limit is hardcoded. Please externalize this limit so that modders can alter it at their leisure.
-Externalize character animation ID assignment for arbitrary stat combinations. [requested by: @Avenger_teambg; AndreaColombo]
In GemRB we have the following system:
1. a master list of parts, basically a 2da list of resource names (of 2da's).
It looks like this for most of the games:
2DA V1.0
*
RESOURCE
0 0x6000
1 avprefr
2 avprefg
3 avprefc
You can notice 0x6000 - the base value, and 3 files (race, gender, class)
These four things make up a player avatar's animation ID.
For simplicity, look at the gender file:
2DA V1.0
*
GENDER
TYPE 35
MALE 0
FEMALE 0x10
35 is the gender stat as you can see in STAT.IDS
This system allowed us to externalize any IE game's PC animation IDs with a huge modding potential and minimal effort.
- Externalize the summon cap for monsters and celestials. [requested by @CamDawg]
Please make the summon cap adjustable for all creatures, including celestials.
Post edited by AndreaColombo on
20
Comments
Mind if I put forth a request on your behalf, then? :-)
Externalize chapter music
In vanilla Baldur's Gate, there was music playing in the background whenever the narrator introduced a new chapter, and that music was good. When porting the game to the BG2 engine (see Tutu/EasyTutu), that music got lost and didn't play any longer. A mod exists to forcedly remix it into the chapter-introducing screen, but the solution is hacky and doesn't work too well (not all chapters have their music restored). The reason is that the music is hard-coded. Please make it soft-coded so that it can easily be restored and, if modders require it for their project, changed (or new music can be put in if more chapters are added through mods).
@aVENGER, @Cuv, @devSin, @CamDawg, @Ascension64, @GrimSqueaker, @Demivrgvs, @Balquo, @erephine
Did I forget someone? ;-)
The best course of action would be to professionally mix the Chapter.MUS from BG1 with the chapter narration. The music in question is DREAMA.ACM btw. Perhaps a developer can answer as to their plans for this.
TobEx has a lot of features externalised, that I haven't gotten around to making separate requests for these yet.
@Ascension64 yet is the key word in your last sentence
I'm available for any more info and open for changes. These flags are already added to DLTCEP, but it is easy to change.
I would've wanted to add a list of ToBEx's non-fix features from the ToBEx readme file, but since @Ascension64 is a member of this forum I thought I wouldn't tread on his toes and let him post them if and when he sees fit (I sure would like to see them all implemented in BG:EE).
In connection with this discussion :
http://forum.baldursgate.com/discussion/1328/hardocoded-limitations-centralization#latest
"list of hard-coded stuff that should really, really be soft-coded"
I would just like to address practical cases, that may be, be solved with the help of the community ...
"Foot circles are also hardcoded to specific animations.":
Here in my case, I would like to assign different circles colors (by eg : the blue one spell color, bellow)/.FX, depending on : the bard'song or the use of an artifact (or an item like a sword enchanted precisely here : a singing sword) .
I have not found anything about it (Foot circles), whether in Near Infinity or in Infinity Explorer .
However, I would like to find / view. related Bams, there are 5 colors of cursors: red, light blue, green, yellow, purple,
Where they are located in the game engine ?
Someone could help me on this, or get information, thank you.
Otherwise, indeed, I would like to see this : GUI animation Cursor accessible to modding, I think it would add some of game-play.
Source :
http://forum.baldursgate.com/discussion/comment/8608/#Comment_8608
http://www.baldursgateworld.fr/lacouronne/menace-sur-le-royaume-de-diamant-eternel/24722-adaptation-des-ressources-de-temple-elemental-evil-2.html#post284212
I would personally just like to see all of the IWD and PST animations slots added/enabled so that modders can move animations themselves from one game to the other without special coding or hack slot creation. Also give us a whole bunch of 'extra' slots with varying foot circle sizes and bam format support so that new animations can be added on the fly... we would just need to keep a list of which mod is using which new slot much like the Mod Prefix reservations list.
@Cuv : "ToEE animations (...) has already been requested"
About it, precisely, would it be possible that the Engine can manage: Particle/System/Effect (very interesting especially for spell/environment, effects) ?
P.S. :
@Cuv : ToEE animations (Spells) could, already, be integrated in IE (*) (it certainly needs to be improved), but the maximum size of BAMS: 256X256 require us to split the images if we want a biggest size effect area (which is possible but constraining) (**).
By cons that it seems, the Particle System would require : DirectX9 like TOEE, and for BG. EE ?, that is the question ... ?
(*) :
http://opv11.metatoile.com/up/moe/2012/07/12/img-205303gpsw3.gif (^^)
(**) :
"EnhancedFireball with 1d10/level damage and big radias. 6th/7th level for insane wizards"
Source :
http://www.co8.org/forum/showthread.php?t=7294
Particle System
@AndreaColombo,
Not necessarily implemented (of course it would be best) as modders are able to integrate some of these visual effects, but in terms of rendering/modding : facilitated, certainly yes.
Source :
About,
http://en.wikipedia.org/wiki/Particle_system
Particle System Tutorial
http://www.co8.org/forum/showthread.php?t=7317
BTW :
Speaking of .FXs, an Editor /Spells Tool, would have a great success !
(Off : & .SFXs associated, Lossless Audio Codec support, like FLAC, too)
If the animations become externalized... then that solves all kinds of problems for anyone wishing to add to the animation pool. It also presents some risks of breaking your game... so some care will need to be taken. Anyway, @Avenger_teambg has got the right idea here. Not exactly sure what would be involved, but perhaps @PhillipDaigle and @CameronTofer can take a look at your coding for GemRB! Name dropping sometimes helps to get there attention to something I believe is really important!
Gear restrictions to custom kits/classes/multi-classes/dual-classes should be easier to do. Say, I want to make a thief kit that can use and take points in Longbows, or even if I want to allow Dwarven Clerics and multi-Clerics to use and potentially specialize in Axes if the dwarf wishes, BUT not allow the same luxury for other races. I, from what I can find, can conclude that to be impossible.