Just-Natsuki-Team / NatsukiModDev

The official repository of Team JN.
Other
84 stars 42 forks source link

[ FEATURE REQUEST ] - dealing with blank arm poses for clothing spritepacks programically to future proof for updates? #783

Closed mayday-mayjay closed 1 year ago

mayday-mayjay commented 1 year ago

Overview:

make optional sections for spritepack jsons when theres no art for certain poses, so a spritepack creator doesnt need to include a blank image to make the spritepack work

Must haves:

an optional section to jsons thats something like 'fingers_on_desk = true' for each pose so people dont need to include their own blank images for spritepacks, it just uses a default blank provided in the mod

Could haves:

to not break current spritepacks you could have it be made so a spritepack json without the optional section (or without a pose defined with true/false) just automatically be assigned 'true', and then people can just mark poses as false in future jsons

Is this feature request related to a problem? Please describe.

QOL/future proofing/cutting down on useless blank file bloat

Blizzardsev commented 1 year ago

Thanks for your suggestion!

While I understand the tedium with having to include dummy files for created clothing packs, unfortunately this is something I would personally struggle to justify investing development time for.

The main issue here is the additional complexity this introduces versus the development/testing time required, and the benefit we see from a maintenance perspective (plus the benefit a regular user would experience).

Introducing this would involve extra checks for every single clothing slot, every single time the game needs to generate new sprites (which happens on the fly) - such as whenever a new line of dialogue is shown, or Natsuki changes expressions in an animation sequence - and then determining whether to use the custom asset or the fallback asset. This isn't impossible, but it is not particularly efficient and the dynamic nature of the sprite generation doesn't help. Adding to this, we'd also be looking at further modifications and testing for our definition file code, custom outfit loading and so on - all of which would need extensive testing given the complexity of the system and the importance of the feature given how prevalent use of it has become.

Regarding file bloat, it's also worth noting that the blank images don't need to be in the native 1280/720px resolution of the game: since these don't have to be positioned relative to Natsuki's body, they can simply be a 1x1 transparent image, reducing overall pack file size. The resource pack we distribute just provides full-size images as a base for creators to work with: however we can look at updating the guidance with our next release to make this clear.

Lastly while we take measures to ensure pack creators are kept up to date with changes to poses and how clothing is handled, ultimately the responsibility of keeping packs up to date with consideration to poses is down to the authors of those packs. By declining to load packs without explicitly defined assets, the user is at least informed something is noticeably wrong (I.E their pack is out of date, so Natsuki has swapped her clothing out) and they can take steps to update their packs (or find new ones) without being greeted by Natsuki intermittently missing parts of her outfit after an update during gameplay - then resulting in support tickets for content not affiliated with the official mod effort. In a nutshell, simply allowing items to be loaded regardless of the definition files and assets by making assumptions in this way doesn't feel like future-proofing in a meaningful sense, but masking a problem.

Given the above, and that we almost certainly won't be introducing any more poses given the expressiveness of the current range and effort involved in adding more, I think this is going to have to be a no from me for the foreseeable future. I understand the reasoning coming from a prevalent pack creator, but ultimately this just isn't something we can justify right now.