Hi everyone,
I'd like to make this topic because the new skinning system that I have in mind, which should replace with the current skinning system. The current version which, had limited support for freeform skinning, and had some issues. Some examples are:
Not only playing osu! with GSkin resolves these issues mentioned, but induces additional features:
Below is part of an example of a .gsk file used in osu!gameplay (gameplay-osu.gsk):
Do you think my skinning system should replace the current one, or to remain as usual? Post your questions within this topic about what you think. Thanks for reading, it takes me minutes to type this out.
I'd like to make this topic because the new skinning system that I have in mind, which should replace with the current skinning system. The current version which, had limited support for freeform skinning, and had some issues. Some examples are:
- - Inability to change fonts separately for score and combo
- - Inability to use separate menu-button-backgrounds for separate fields (used for each)
- - Inability to use different sprites for different gamemodes
- - and few others...
Not only playing osu! with GSkin resolves these issues mentioned, but induces additional features:
- + Using separate menu-button-backgrounds for separate scenarios, each for difficulties, beatmap sets, beatmap groups, and rankings on song selection screen
- + Repositioning and restyling scorebars
- + Use custom "difficulty systems" for beatmaps while keeping its calculated star rating constant
- + Use localizable sprites (use "menu-back-en.png" when user plays in English, "menu-back-jp.png" for Japanese, etc.)
- + and many more...
Below is part of an example of a .gsk file used in osu!gameplay (gameplay-osu.gsk):
Code sample
//The following piece of code deals with osu! gameplay without any mods used
MainLayer "HitObjects" //editable, used for hitobjects
{
foreach O in orderedHitObjects //orderedHitObjects is a collection of ordered hitcircles and sliders (within this Main Layer)
{
if (O.Kind == "hitcircle") //O.Kind is a string and it can be "hitcircle" or "slider". Different sets of variables are stored for each Kind component.
{
//Below is a simple code of how a hitcircle is drawn (without numbers)
//Define the draw properties first
draw.alpha = clamp(0, (gameplay.SongPosition - O.startingVisibilityTime) / (O.visibilityPeriod/3), 1) //these time variables are in milliseconds
draw.positionX = O.positionX;
draw.positionY = O.positionY;
draw.blend = O.comboColor; //Color is defined in Hex values, e.g. $FF9AA0
//Drawing required sprites with the currently defined alpha, position and blend
draw.sprite("hitcircle.png"); //Default origins are centered
draw.blend = $FFFFFF; //Resetting blend to no blending (white)
draw.sprite("hitcircleoverlay.png"); //Draw properties will be used previously
//Draw properties are reset at the end of this codeblock.
}
}
}
Do you think my skinning system should replace the current one, or to remain as usual? Post your questions within this topic about what you think. Thanks for reading, it takes me minutes to type this out.