forum

[osu!mania] Skinning changes - Lighting & Column Positioning

posted
Total Posts
13
This is a feature request. Feature requests can be voted up by supporters.
Current Priority: +74
Topic Starter
Ruirize
Currently skinning Mania is a little awkward. Column positioning isn't offset from the center making it difficult to get a skin looking the same on every resolution, and the lighting animation is counter-intuitive.

1. Add a switch to allow columns to be offset from the center of the screen, either from all the total board's center or the first column (or of course, the default, to not center at all, which is how it behaves now).
Total Board Center  First Column
__________________ __________________
| |########| | | |########|
| |########| | | |########|
| |########| | | |########|
| |########| | | |########|
| |########| | | |########|
|___|########|___| |_______|########|

2. Change lighting animation to only cycle through the animation once, no matter the number of frames. At current it just animates incredibly fast through all available frames, looping, and as of a recent update, without fading, making the animation ugly and sometimes very distracting. Making it so that it does a single playthrough of the animation makes it so that proper fadeouts can be achieved. Ideally this would run at a speed of 60fps regardless of the actual fps.

3. Allow for the individual skinning of columns, either through a mania-[key,note][,H,L]1-8.png scheme or a system similar to the existing font system.
jemhuntr
I have a workaround for centering the mania stage. although it's dependent on the screen ratio. But having the option to automatically center it would be really helpful as well.
osu!mania Stage Centering Guide!
osu!mania Stage Centering Guide!~
Below is the method to acquire the ColumnStart values to center the osu!mania stage. This method works for all skins and for all screen resolutions, be it windowed or full screen.

1. We'll use this equation: columnStart = ((480 / (screenHeight / screenWidth)) / 2) - (columnSum / 2)
  1. columnStart - value that we will put on each nK.ini file.
  2. screenHeight - height of your screen in pixels (or height of the osu! window if you play windowed)
  3. screenWidth - width of your screen in pixels (or width of the osu! window if you play windowed)
  4. columnSum - sum of all the values on the ColumnWidth field.
Note: Since we're dividing the screen height with the screen width, any values of the same ratio would make the same answer. This means that all 16:9 screen resolutions would have the same columnStart values (given that the columnSum is constant). Same goes with other screen ratios.

2. In order to get the value of columnStart, you need to know the values of each variable (remember that these values may vary depending on the key you're currently calculating). Let's have an example for this guide. Let's say I use a custom windowed resolution of 1200px by 700px. Below are the column sizes of the stages inside my nK.ini files.
  1. 4K: ColumnWidth: 46, 46, 46, 46
  2. 5K: ColumnWidth: 46, 46, 50, 46, 46
  3. 6K: ColumnWidth: 42, 42, 42, 42, 42, 42
  4. 7K: ColumnWidth: 40, 40, 40, 40, 40, 40, 40
  5. 8K: ColumnWidth: 38, 38, 38, 38, 38, 38, 38, 38
3. Let's start with 4K. The values we have now are:
  1. screenHeight: 700
  2. screenWidth: 1200
  3. columnSum: 46 + 46 + 46 + 46 = 184
We now have all values needed in order to solve for columnStart. Let's substitute the values to the equation:
columnStart = ((480 / (700 / 1200)) / 2) - (184 / 2)
columnStart = ((480 / 0.58333) / 2) - (92)
columnStart = (822.86 / 2) - 92
columnStart = (411.43) - 92
columnStart = 319.43
columnStart319
since we can't use decimals for the columnStart value, we have to round it off to the nearest integer.

Now that we know columnStart, we can go ahead and write the value inside 4K.ini.

4. Repeat the process for all the other keys. If you try to solve for the other values using the same situation, you should get the following values:
  1. 5K: 294
  2. 6K: 285
  3. 7K: 271
  4. 8K: 259
5. After getting all the values and putting them into their respective ini files, reload your skin. Now go ahead and play some osu!mania and notice how your stage is now perfectly centered on your screen!

Note: Due to the rounding off of values, the stage may be a bit off by 1 pixel to the left or right. If you followed the instructions above correctly, I assure you that the stage will never be off by 2 or more pixels from the center.

Also, I agree that the lighting animation is messy, but I think it should follow your custom AnimationFramerate if ever you set one in skin.ini.
Bites
I'd also like to request that you add one more thing to the OP - the ability to skin the receptors and notes based on individual columns. As it stands right now, for example, the outer two keys and inner two keys when playing 4K share the same graphics in the skin. This means it is not possible to create a DDR or Pump It Up styled skin, where each column uses a different set of graphics.

I even have several friends who say that the only reason they do not play osu!mania is because of this fact.
Topic Starter
Ruirize

Bites wrote:

I'd also like to request that you add one more thing to the OP - the ability to skin the receptors and notes based on individual columns. As it stands right now, for example, the outer two keys and inner two keys when playing 4K share the same graphics in the skin. This means it is not possible to create a DDR or Pump It Up styled skin, where each column uses a different set of graphics.

I even have several friends who say that the only reason they do not play osu!mania is because of this fact.
I'll add that to the OP - very good idea!
Bites

Ruirize wrote:

I'll add that to the OP - very good idea!
thank you~
Bites
i am sorry for the bump, but i really do not wish for this feature to be lost & out of sight! these changes would be so wonderful for skinning..
Ryu Sei
I wanted to see this feature~
If I have a star to shoot...
peppy

Bites wrote:

I'd also like to request that you add one more thing to the OP - the ability to skin the receptors and notes based on individual columns. As it stands right now, for example, the outer two keys and inner two keys when playing 4K share the same graphics in the skin. This means it is not possible to create a DDR or Pump It Up styled skin, where each column uses a different set of graphics.

I even have several friends who say that the only reason they do not play osu!mania is because of this fact.
After I saw how this currently worked, I was very shocked. I will be rewriting this to fix thing. Expect every existing skin to break, but a much better setup once we are done.
Ryu Sei
Oh, also I'd suggest to allow the alignment of the stage starts from right. It should be this on nK.ini :
Alignment: 0
BarStart: 1
//0 for left, 1 for centre, 2 for right
EDIT: Alignment used for chooses from where the o!m stage aligned, while BarStart used from where offset starts.
Then, ColumnStart should accept negative scores.
Garygoh884
I wasn't able to assign the hold notes using a custom file path as I was able to assign the single notes. Also, the ColumnStart value has a limited range and will be used to the minimum/maximum possible if it's outside of the range. The range should be adujsted from 0 to the value which the right edge of the playfield lies just before the right edge of the gameplay window.
xelivous
can we also get the default column colors/keybinds changed? Obviously i don't know what you'll do with the new mania changes, but the one thing that's bothered me about the current system is the default column colors. It got to the point where i learned how to play with a single color skin because every time i switched keymodes my brain couldn't match the conflicting colors to my fingers. This was before woc added the ability to skin columns/notes by keymode, at which point i didn't bother switching back to having colors.
i mean it should be easily skinned to suit the player in the upcoming changes, but having the default make some kind of sense would be great

basically from this:


to this:
(Alternative to the 5K/7K center key would be the "blue" in this diagram)

(disclaimer, i don't play 7K+1 so the default keybindings/colors would be better left to someone else who actually plays those)

Garygoh884 wrote:

I wasn't able to assign the hold notes using a custom file path as I was able to assign the single notes. Also, the ColumnStart value has a limited range and will be used to the minimum/maximum possible if it's outside of the range. The range should be adujsted from 0 to the value which the right edge of the playfield lies just before the right edge of the gameplay window.
How it currently works looks something like this: (which as peppy said, is really dumb)
https://imgur-archive.ppy.sh/aq1MjhD.png
Assuming that W is white, R is red, S is special
VanillaBear360
wait i still dont get it. :?: :?: :?:
Matix99

JeMhUnTeR wrote:

I have a workaround for centering the mania stage. although it's dependent on the screen ratio. But having the option to automatically center it would be really helpful as well.
osu!mania Stage Centering Guide!
osu!mania Stage Centering Guide!~
Below is the method to acquire the ColumnStart values to center the osu!mania stage. This method works for all skins and for all screen resolutions, be it windowed or full screen.

1. We'll use this equation: columnStart = ((480 / (screenHeight / screenWidth)) / 2) - (columnSum / 2)
  1. columnStart - value that we will put on each nK.ini file.
  2. screenHeight - height of your screen in pixels (or height of the osu! window if you play windowed)
  3. screenWidth - width of your screen in pixels (or width of the osu! window if you play windowed)
  4. columnSum - sum of all the values on the ColumnWidth field.

Note: Since we're dividing the screen height with the screen width, any values of the same ratio would make the same answer. This means that all 16:9 screen resolutions would have the same columnStart values (given that the columnSum is constant). Same goes with other screen ratios.

2. In order to get the value of columnStart, you need to know the values of each variable (remember that these values may vary depending on the key you're currently calculating). Let's have an example for this guide. Let's say I use a custom windowed resolution of 1200px by 700px. Below are the column sizes of the stages inside my nK.ini files.
  1. 4K: ColumnWidth: 46, 46, 46, 46
  2. 5K: ColumnWidth: 46, 46, 50, 46, 46
  3. 6K: ColumnWidth: 42, 42, 42, 42, 42, 42
  4. 7K: ColumnWidth: 40, 40, 40, 40, 40, 40, 40
  5. 8K: ColumnWidth: 38, 38, 38, 38, 38, 38, 38, 38


3. Let's start with 4K. The values we have now are:
  1. screenHeight: 700
  2. screenWidth: 1200
  3. columnSum: 46 + 46 + 46 + 46 = 184

We now have all values needed in order to solve for columnStart. Let's substitute the values to the equation:
columnStart = ((480 / (700 / 1200)) / 2) - (184 / 2)
columnStart = ((480 / 0.58333) / 2) - (92)
columnStart = (822.86 / 2) - 92
columnStart = (411.43) - 92
columnStart = 319.43
columnStart319
since we can't use decimals for the columnStart value, we have to round it off to the nearest integer.

Now that we know columnStart, we can go ahead and write the value inside 4K.ini.

4. Repeat the process for all the other keys. If you try to solve for the other values using the same situation, you should get the following values:
  1. 5K: 294
  2. 6K: 285
  3. 7K: 271
  4. 8K: 259


5. After getting all the values and putting them into their respective ini files, reload your skin. Now go ahead and play some osu!mania and notice how your stage is now perfectly centered on your screen!

Note: Due to the rounding off of values, the stage may be a bit off by 1 pixel to the left or right. If you followed the instructions above correctly, I assure you that the stage will never be off by 2 or more pixels from the center.


Also, I agree that the lighting animation is messy, but I think it should follow your custom AnimationFramerate if ever you set one in skin.ini.


I got stuck for 20 minutes thinking I messed up somehow until I figured it out, so here's a PSA:
For any keycount you use SplitStages: 1(which by default is 10K and up) on you must add the value of StageSeparation(40 by default) to the number you get from the guide above.
Please sign in to reply.

New reply