Suggestions Thread: Structural (file formats, references, "hardcodedness", configuration)
Symphony
Member, Developer Posts: 142
Hello folks, I'm Symphony.
In order to keep things collated, I'm starting category based suggestion/bug discussions. Please use your best judgement to find which discussion best suits your range of items!
This Suggestions Discussion is for Structural Suggestions. In order to preserve the working (for 15 years!) arrangement of NWN's engine, Trent Oster has mentioned (in his live stream) that he does not think it is as good of an idea to change the structure of the game as it would be to change the individual components, but I think there are certainly some concepts that may fall into the realm of "structure" for future considerations.
Structure changes could be the adoption of new file formats (such as the new .shd shader files), the way the game utilizes .ini configuration documents, which aspects of the game are controlled by scripts compared to data, where source text comes from (tlk, nss, 2da, etc.), and how the game handles game resources (preloading haks for multiplayer server character creation, buffering textures, directory layout).
Feel free to post your suggestions below in a hopefully clean and concise manner, and if you have time, try to read the other suggestions so you don't duplicate any requests.
In order to keep things collated, I'm starting category based suggestion/bug discussions. Please use your best judgement to find which discussion best suits your range of items!
This Suggestions Discussion is for Structural Suggestions. In order to preserve the working (for 15 years!) arrangement of NWN's engine, Trent Oster has mentioned (in his live stream) that he does not think it is as good of an idea to change the structure of the game as it would be to change the individual components, but I think there are certainly some concepts that may fall into the realm of "structure" for future considerations.
Structure changes could be the adoption of new file formats (such as the new .shd shader files), the way the game utilizes .ini configuration documents, which aspects of the game are controlled by scripts compared to data, where source text comes from (tlk, nss, 2da, etc.), and how the game handles game resources (preloading haks for multiplayer server character creation, buffering textures, directory layout).
Feel free to post your suggestions below in a hopefully clean and concise manner, and if you have time, try to read the other suggestions so you don't duplicate any requests.
6
Comments
We could really modernize the DM Client that way.
-Add a module event or even just a script which fires when an effect is removed. Does not need to be able to block it. Just needs effect spellid and the creature object it's running on.
-Numerous events otherwise lacking standard
*OnAttemptToCastSpell event to allow advanced spellcasting(such as without an animation) or block spells in special situations.
*OnAttemptToUseItem event to block an item from being used without requiring the player to actually go through the animation of using it
*OnAttemptToUseFeat event to block infinite use feats in specific situations
*OnFeatApplied event to register if a knockdown or otherwise applied feat actually did apply it's effects without requiring a while loop to check for the effect.
*OnAttemptToUseSkill event to block skill usage in specific scenarios without requiring the animation first or when otherwise hardcoded(IE healing).
*OnAttack event to allow special effects such as my modified barbarian terrifying rage which rolls a will save when an attack is rolled on the barbarian(maximum of 1 time per round).
*OnAttemptToToggleMode event to permit special circumstances for attack modes(called shot arm, means no power attack option).
*OnExamined event to allow special circumstances where when scrying you can see extra information that normally isn't there on creatures.
*OnApplyDamage event to allow undead to actually heal from all negative damage sources and all flesh golems to actually heal from all electrical damage sources. Current vanilla event doesn't allow modifying the damage and even giving the creature 100% immunity shows 0 damage in the log instead of -healed-.
-A utility to allow players to print out their build's stats. Currently this is done by 4 nwnx_funcs functions.
*string NWNXFuncs_GetFeatsGainedAtLevel(object oCreature, int iLevel);
*string NWNXFuncs_GetSkillRanksGainedAtLevel(object oCreature, int iLevel);
*string NWNXFuncs_GetSpellsGainedAtLevel(object oCreature, int iSpellLevel, int iLevel);
*struct levelstats_s NWNXFuncs_GetStatsGainedAtLevel(object oCreature, int iLevel);
-A method to send any message on any channel and define the sender and receiver. This is primarily used for guild chat(/g) or when people have others blocked so they don't have to see shout or talk from that person either.
-Literally EVERYTHING from nwnx_sysdata. File control, timestamp reads, ACTUAL REAL CLOCK TIME AND DATE. All of it.
-Array functionality
-Allow non-monks to have more speed than 50%, really important one for gameplay. Purple Dragon Knight class vanilla is almost worthless without it. Also just mentioning, but there is a very bad speed bug with monks... It is not scaling correctly and they get ludicrously fast with any amount of speed bonuses outside the norm.
-Fix Weapon Master's Ki Damage ability to deal maximum weapon damage(but not allow critical hits).
- The OnBlocked event only fires when creatures are blocked by doors. If possible, I would like to see this extended to also run when being blocked by placeables. (Example usage: Creature gets blocked by placeable, bashes it to create an entry and continues chasing player)
- On-screen timing bars. This is something included in NWNX currently but I would like to see it introduced to the base game.
- Additional event scripts from NWNX included into the base game. OnAttacked is most preferred, but would like to see all additional events included at the module level.
- All of the NWNX_Chat functionality introduced into the base game.
- All of the NWNX_Funcs functionality introduced into the base game.
Basically, put as much of the NWNX features into the core game.
1) [MP/DM] Could you add a sort of teamspeak tool directly in the game?
2) CinematicMovie: the vanilla engine can only read (800*600 or 640*480 don't remember, it was ten years ago) .bik file, will you allow bigger resolution for movie, or do you add mega upscaling filters to avoid little windowed movie?
- The ability to make visual effects only show to a certain target (not necessarily the center of the effect - you could for example implement detect evil by applying a glow effect on evil creatures that only the caster sees.)
-The ability to set shader effects per area and even dynamically by scripting functions (perhaps by a visual effect with the same features as the above suggestion.)
1) Using the console one can add and modify many things. One thing that was missing though, but which was possible on NWN2, is a console command to add specific feats to a character.
2) Already mentioned elsewhere but this might be the more appropriate location; Enable Sorcerors/Wizards that have the polymorph spell to also be able to choose the Shifter Prestige Class. This is how it works in the real D&D game and it should be a simple fix.
Thank you.
-Inclusion of portraits in character files, not just their names - this one is not so important, but I think it'd be great if portrait data was included in the character files. This would allow players to see portraits of others even if they haven't downloaded them. I think it would also be valuable seeing how one of the DLCs is a portrait pack: people buying it would probably very much like it if others could see them whether they've bought it or not. I assume the portrait data was not included in original character files due to size concerns, but nowadays the added portrait size should not really make any difference. Of course, in order to maintain backward compatibility, old character file format should also be readable, but I think it's doable.
-Softcoding hardcoded feats and adding hooks for delivering/receiving damage - this one is essential. While I'm excited for the EE, I was very happy with CPP's softcoded Devastating Critical, because I could finally change it so it better fits my module's balance (it's a well-known fact that Dev Crit is overpowered for many otherwise more or less balanced settings). NWNX support is one thing, but adding support for such things out of the box (which would also make them available in singleplayer) would be very much appreciated.
If there was something that the community was annoyed with it's the hardcodedness of feats. You know very well that user customization is what made NWN what it is today - please expand that customization.
Alternatively, if for some reason you're opposed to softcoding these things, at least add support for NWNCX, so that users can do this themselves with custom content.
Thank you.
2 - The ability to make permanent stat adjustments via scripting. This way we can use custom subraces without their ability adjustments being affected by the +12 stat bonus cap.
Especially but not limited to Races loading from a HAK if a module has been selected.
There is this project, which adds the movie functionality into the Linux version but it was never the easiest thing to get working and looking like it was integrated: https://github.com/nwnlinux/nwmovies
My request is to have the videos available out of the box on Linux.
EDIT: Also, proper anti-aliasing!
The ability to designate Custom Spell Books for new classes, specifically by being able to point the line in the class.2da to the correct spellbook designated elsewhere (Likely a column in the spells.2da like the existing spellbooks).
No hardcoded spells or feats. Feats have been pretty much covered but there are some spells that are hardcoded as well. The one that immediately leaps to mind is Detect Undead which consists of a single function that does.... something we don't know what because it's a hardcoded function... Which means we can't ever replicate or alter it (for instance if we wanted to create Detect Life or Detect Automoton or Detect Whatever spells, we can't make them we have neither an example to work from nor the functions needed to do it properly).
The Quick-cast menu from NWN2 (or similar).
probably others I can't think of this moment.
Keep D&D 3.0 as the core, but allow modders to create newer rulesets for modules and PWs. Being able to change rulesets, even if it's hard detailed work, would enable some really interesting takes on the game. (NWN2's "Engines of Ascension" classless PW would be a good example of breaking out of the ruleset box. Something not even remotely possible in NWN1)
Also please allow defining names of things stored in 2da from some other places not only force to hardcode in tlk.
Something I would absolutely love to have for this Enhanced Edition, that has always frustrated me with NWN Toolset work as a whole, is the ability to EASILY translate AND rotate on ALL axes. It's always a huge pain to fiddle with exact numbers on the Z-axis in regards to translation. Getting it right can take time, depending on the precision of what you're trying to do. Likewise, the ability to rotate on ALL axes would be absolute HEAVEN. Being unable to rotate on anything but the Z-axis right now is soooo painful! Haha! But with that, it can just add an entire new level to making areas look fantastic, without having to create entirely new models just to have a tipped over, wall mounted, etc, version of said object.
- - I would really love it if we could have more then just two different height edge tiles
What I'm talking about is you can have a Terrain that you can raise once at say 5m and have a matching edge tile it. You then can raise that same Terrain again creating a 10m raised area and have a matching edge tile for it as well. However this is the limit, I would love it if you all could raise the limit.
Sen and MerricksDad has created tilesets that have 4 different heights in one Terrain. So for example their one Terrain has 3m, 6m, 9m, and 12m cliffs. The problem is they can only have two different height edge tiles per Terrain. There for, if they give one to 3m and another to 6m, they now don't have edge tiles for the 9m and 12m cliff tiles.
Is there any way for you all to fix this to help use Tileset Creators to expand on the Tilesets?
Could you Please make this happen.
Thanks for your time
Tonden Ockay
(Or, allow oficially to share campaign modules, that would work too, though knowing the nature of legal departments I doubt that's an option)
So I understand that NWN:EE is moving the Hak/Override/Portrait/Saves/vault/etc folders to the appropriate OS locations, such as in My Documents on Windows, all to be "good citizens", but will it be possible to still have instanced / self contained NWN installations as it is currently done with NWN Diamond?
What I mean is: Keeping the Hak/Override/Portrait/Saves/vault/etc folders inside the NWN installation directory. Whether by an option when you first install NWN, or as some kind of .ini setting or other solution, to still be a "good citizen" unless dictated otherwise by an "advanced user".
Why? Because some people like me have multiple installations, each with different haks, overrides, etc.
Personally I have 4 NWN installations: 3 for the different servers I play on that all require different haks/overrides/etc (There's quite a few haks of the same filename but with differing versions, so conflicts arise...), and 1 for playing whatever singleplayer module I'm playing that month.
Why is this a problem? Well, if all 4 of those installations I require were all sharing the same content folders in My Documents, then things would explode/implode.
Sometimes I also run NWN in multiple instances, to dual/multibox, or to be playing with one game while I have the other loaded up in a character creation module to be creating or revising my character build, etc. So support for that too would be nice.
Here is an example error I am receiving now when trying to compile a large script:
11/24/2017 5:06:29 PM: Error. 'death_ondeath' did not compile.
x2_i0_spells.nss(644): ERROR: IDENTIFIER LIST FULL
Combined with WASD movement, this would give a control scheme very much like most other third-person games.