Quaver / Quaver

The ultimate community-driven, and open-source competitive rhythm game available on Steam.
https://quavergame.com/steam
Mozilla Public License 2.0
643 stars 97 forks source link

Skin texture redirects #3975

Open leppycolon3 opened 4 months ago

leppycolon3 commented 4 months ago

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

when making a skin, sometimes you would use the same texture for different columns, which would require to copypaste the texture, for example when skinning long notes

Describe the solution you'd like

instead of duplicating the texture, create text files with a .redir extension and rename it to the texture, and inside the text file, write the texture that it is redirected to. you only store the image once and then make redir files for each texture that would look the same. so that, instead of having 4 copies of the same long note texture, you have only the image and the rest are redir files which would look something like this

image

This could be used not only for ln's but for note skins if they don't use a sheet instead of duplicating hit objects of the same sprite, you replace them by redirs

image image

Describe alternatives you've considered

i'm fine with duplicating the textures for now, but i would really prefer this, since it's atleast a bit more optimized

Additional context

yes this is literally just a feature from stepmania skinning but we don't talk about that🤫

EpiCreeper commented 3 months ago

i love this idea! it would make skinning much easier, but i have a way to implement it that might work better:

instead of naming the redir file after the object that will use the image, it would be named after the picture itself. the content of the redir file would have the name of every object using the image. each object could also modify the image by changing its scale, rotation and color. here is what the content of a arrow.png.redir file could look like:

note-hitobject-1(s=100, r=180, c=#ff0000); note-hitobject-2(s=100, r=-90, c=#00ff00); note-hitobject-3(s=100, r=90, c=#0000ff); note-hitobject-4(s=100, r=0, c=#000000); //uses the default settings

this way skins file sizes could be really light weight, and snap colored skins would not be limited by the hitobject sheet.

Enanout commented 3 months ago

I'd Like to imagine a .redir file that lets you skin multiple note types based on settings (Bar, arrows, diamonds, ETC...)