Skins

Skin.ini

Configuring skin.ini

Sometimes the default configuration for skins may not be good enough and you want to adjust them. By making a skin.ini file in the root directory of the skin folder, you are allowed to manipulate some of the values to change the look of the game.

Important note: If you are modifying the RGBA Colors and if you left the Alpha(opacity of the color) unassigned, it will use the default value, which is 255.

General

The [General] section of the config file contains metadata about the skin—who it's by, what it's called, and the version—as well as non keymode-specific properties. It's mainly to let people know what your skin is all about.

Value Data Type Default
Name String -
The name of the skin
Author String -
The creator/author of the skin
Version String -
The version number of the skin
CenterCursor True or False False
Whether the cursor image should be centered (for example, if it's a circle)
UseSkinBackgrounds True or False False
Whether the game should use backgrounds from the skin or not

Main Menu

The [MainMenu] section contains the modifications of the main menu's colors and the opacity of the audio and note visualizer. The values below may provide effects to the specific textures.

Affected Textures: navigation-button.png, navigation-button-selected.png, navigation-button-hovered
Value Data Type Default
NavigationButtonTextColor R,G,B,A (0-255) 255,255,255,255
The color of the text in navigation button
NavigationQuitButtonTextColor R,G,B,A (0-255) 249,100,93,255
The color of the Quit Game text in navigation button
NavigationButtonHoveredAlpha Float (0.00~1.00) 0.35
The opacity of the hovered navigation button element

Tip Panel

Affected Textures: tip-panel.png
Value Data Type Default
TipTitleColor R,G,B,A (0-255) 69,214,245,255
The color of the tip title
TipTextColor R,G,B,A (0-255) 255,255,255,255
The color of the tip text

News Post Panel

Affected Textures: news-panel.png
Value Data Type Default
NewsTitleColor R,G,B,A (0-255) 69,214,245,255
The color of the news title
NewsDateColor R,G,B,A (0-255) 128,128,128,255
The color of the news date
NewsTextColor R,G,B,A (0-255) 255,255,255,255
The color of the news text

Affected Textures: jukebox-overlay.png
Value Data Type Default
JukeboxProgressBarColor R,G,B,A (0-255) 255,222,124,255
The color of the song's progress bar in the jukebox

Audio Visualizer & Note Visualizer Values:

Affected Textures: note-visualizer.png
Value Data Type Default
AudioVisualizerColor R,G,B,A (0-255) 9,165,200,255
The color of the audio visualizer
AudioVisualizerOpacity Float (0.0-1.0) 0.85
The opacity of the audio visualizer
NoteVisualizerOpacity Float (0.0-1.0) 0.60
The opacity of the note visualizer that falls down in main menu

Menu Border

The [MenuBorder] section contains modifications for the menu border background. The values below may provide effects for specific textures.

Affected Textures: menu-border-background.png
Value Data Type Default
BackgroundLineColor R,G,B,A (0-255) 9,165,200,255
The color of the background of the border's outline
ForegroundLineColor R,G,B,A (0-255) 255,255,255,255
The color of the moving line in the border's outline
ButtonTextColor R,G,B,A (0-255) 9,165,200,255
The color of the text in both top and bottom borders
ButtonTextHoveredColor R,G,B,A (0-255) 81,197,249,255
The color of the text in both top and bottom borders when hovered with cursor

Song Selection

The [SongSelect] section contains the possible modifications of song selection menu including the leaderboard panel's color, personal best panel's color, mapset panel's color, mapset banner size, enabling or disabling the map background, and adjusting the map background's brightness. The values below may provide effects for specific textures.

Leaderboard Panel Values:

Affected Textures: leaderboard-panel.png
Value Data Type Default
LeaderboardScoreColorEven R,G,B,A (0-255) 54,54,54,255
The color of the leaderboard panel in even numbers
LeaderboardScoreColorOdd R,G,B,A (0-255) 36,36,36,255
The color of the leaderboard panel in odd numbers
LeaderboardScoreRankColor R,G,B,A (0-255) 255,255,255,255
The color of the rank numbers
LeaderboardScoreRatingColor R,G,B,A (0-255) 233,183,54,255
The color of the rating numbers
LeaderboardScoreAccuracyColor R,G,B,A (0-255) 255,255,255,255
The color of the accuracy numbers
LeaderboardScoreUsernameSelfColor R,G,B,A (0-255) 81,197,249,255
The color of your username in leaderboard
LeaderboardScoreUsernameOtherColor R,G,B,A (0-255) 251,255,182,255
The color of other players name in leaderboard
LeaderboardTitleColor R,G,B,A (0-255) 255,255,255,255
The color of the leaderboard title
LeaderboardRankingTitleColor R,G,B,A (0-255) 255,255,255,255
The color of leadorboard ranking title
LeaderboardDropdownColor R,G,B,A (0-255) 16,200,246,255
The color of the dropdown in leaderboard
LeaderboardStatusTextColor R,G,B,A (0-255) 255,255,255,255
The color of the leaderboard's status text

Personal Best Panel Values:

Affected Textures: personalbest-panel.png
Value Data Type Default
PersonalBestTitleColor R,G,B,A (0-255) 255,255,255,255
The color of the personal best title
PersonalBestTrophyColor R,G,B,A (0-255) 233,183,54,255
The color of the personal best trophy
PersonalBestRankColor R,G,B,A (0-255) 255,255,255,255
The color of the personal best rank
NoPersonalBestColor R,G,B,A (0-255) 255,255,255,255
The color of the non-personal best text

Mapset Panel

Affected Textures: mapset-deselected.png, mapset-selected.png, mapset-hovered.png, mapset-banner-mask.png, status-ranked.png, status-unranked.png, status-notsubmitted.png, status-status-osu.png, status-status-sm.png, game-mode-4k.png, game-mode-7k.png, game-mode-4k7k.png, game-mode-other.png
Value Data Type Default
MapsetPanelSongTitleColor R,G,B,A (0-255) 255,255,255,255
The color of the mapset title
MapsetPanelSongArtistColor R,G,B,A (0-255) 5,151,229,255
The color of the text of song's artist
MapsetPanelCreatorColor R,G,B,A (0-255) 5,135,229,255
The color of the text of the map creator
MapsetPanelByColor R,G,B,A (0-255) 117,117,117,255
The color of the text By:
MapsetPanelBannerSize Integer(Width, Length) 421,82
The size of the mapset panel banner
MapsetPanelHoveringAlpha Float (0.00~1.00) 0.35
The opacity of the hovered mapset panel element
GameModePosOffsetX Integer -18
The X offset of the game mode badge on mapset panel
RankedStatusPosOffsetX Integer -18
The X offset of the ranked status badge on mapset panel
MapBackgroundBrightness Byte (0-255) 15
The brightness of the map background
DisplayMapBackground True or False False
If true, it displays the mapset's background. Otherwise, it uses the default song select background

Results Screen

The [Results] section contains the possible modifications of results screen background.

Results Screen Background

Affected Textures: background.png, background-filter.png
Value Data Type Default
ResultsBackgroundType Header, Background, or None Header
The type of background displayed in results screen. Background uses the mapset's background image while None uses the custom background.png.
ResultsBackgroundFilterAlpha Float (0.00~1.00) 1
The opacity of the image filter used for results background. If the skin does not have a custom background-filter.png file, it uses the default one instead.

Gameplay

This section is to manipulate the elements for the Keys game modes

  • To start manipulating elements for a specific keymode or sharedk, create a section in the file titled with the format [{keymode}] and have all of your config properties under it.
  • Relevant titles: [SHAREDK], [1K],[2K],[3K],[4K],[5K],[6K],[7K],[8K],[9K],[10K]

Fallbacks

Fallbacks are a great way to make a skin efficently with as few textures as possible, especially across multiple keymodes, as you can re-use the same texture multiple times instead of duplicating with a different filename.

To get started: Use the sharedk folder for all your gameplay textures and [SHAREDK] in skin.ini for all your keymode configuration. Have UseFallback to True and all *Fallbacks = Integer List under each keymode title except for [SHAREDK].

You can overwrite what you've written in [SHAREDK] under each keymode title. For example ColumnSize = 50 in [SHAREDK] with ColumnSize = 100 in [3K] will result in a ColumnSize of 100 in the 3K gamemode.

The integer lists work by starting at lane 1 with subsequent lanes separated by a comma, the number referencing the suffix to the texture in the sharedk folder. For example HoldBodyFallbacks = 1,3 in [1K] will use note-holdbody-1.png for the first lane and note-holdbody-3.png for the scratch lane in the 1K gamemode.

Value Data Type Default
UseFallback True or False False
If set to True under a keymode title, then the keymode will use the /sharedk/... folder as texture fallback.
HitObjectFallbacks Integer List -
Uses specific fallback texture(s) for each lane. If [4K] example 1,1,1,1,1
HoldBodyFallbacks Integer List -
Uses specific fallback texture(s) for each lane. If [4K] example 1,1,1,1,1
HoldEndFallbacks Integer List -
Uses specific fallback texture(s) for each lane. If [4K] example 1,1,1,1,1
MineFallbacks Integer List -
Uses specific fallback texture(s) for each lane. If [4K] example 1,1,1,1,1
MineBodyFallbacks Integer List -
Uses specific fallback texture(s) for each lane. If [4K] example 1,1,1,1,1
MineEndFallbacks Integer List -
Uses specific fallback texture(s) for each lane. If [4K] example 1,1,1,1,1
ReceptorFallbacks Integer List -
Uses specific fallback texture(s) for each lane. If [4K] example 1,1,1,1,1

Notes

Affected Textures: note-hitobject-{1-11}.png, note-holdhitobject-{1-11}.png, note-holdbody-{1-11}.png, note-holdend-{1-11}.png, note-hitobject-sheet@{rows}x{columns}.png, note-mine-{1-11}.png, note-minestart-{1-11}.png, note-minebody-{1-11}.png, note-mineend-{1-11}.png, note-mine-sheet@{rows}x{columns}.png, note-minestart-sheet@{rows}x{columns}.png
Value Data Type Default
DefaultSkin Arrow, Bar or Circle Bar
Sets the skin's default skin. If set to Arrow without setting RotateHitObjectsByColumn to False, the hitobjects will be rotated
ColorObjectsBySnapDistance True or False False
If true, it will look for file names relative to snap distance. See the Hit-Object Sheet for more information.
UseHitObjectSheet True or False False
If true, the game will look for a spritesheet named note-hitobject-sheet@{rows}x{columns}.png to use as objects. Useful for easily creating skins that use different beat snap colors.
UsePerLaneSpriteSheets True or False False
If true, the game will look for spritesheets named note-hitobject-sheet-{lane}@{rows}x{columns}.png to use as objects for each lane. Only used when UseHitObjectSheet = True.
RotateHitObjectsByColumn True or False False
If true, the game will rotate the notes according to the lane it's in. Recommended to set to True if a skin uses an Arrow note Hit-Object Sheet.
HitObjectRotations Integer List False
Per lane HitObject rotation, each lane separated by a comma. An integer of 1 is 1 degree of rotation.
RotateEditorObjectsByColumn True or False False
If true, the game will rotate the objects according to the lane it's in. Recommended to set to True if a skin uses an Arrow note Hit-Object Sheet.
FlipNoteImagesOnUpscroll True or False False
If true, the notes will be flipped upside down if upscroll is enabled
FlipNoteEndImagesOnUpscroll True or False False
If true, the note-holdends will be flipped upside down if upscroll is enabled
DeadNoteColor R,G,B,A (0-255) 200,200,200,255
The tint of the dead notes (for example, long notes released too early)
DrawLongNoteEnd True or False True
True by default. If set to False, LN ends are not rendered and LN starts don't "slide" along as you hold LNs
NotePadding Integer 0
The amount of space between each column
WidthForNoteHeightScale Integer 0
The column size the notes will use for scaling the objects' heights. If 0 or below, it will automatically use ColumnSize for scaling the height.

Playfield

Affected Textures: column-lighting.png, receptor-up-{1-11}.png, receptor-down-{1-11}.png, stage-bgmask.png, stage-distant-overlay.png, stage-hitposition-overlay.png, stage-left-border.png, stage-right-border.png
Value Data Type Default
BgMaskAlpha Float (0.0-1.0) 1.0
The alpha channel/opacity of the Stage BG Mask
BgMaskPadding Integer 0
The amount of space between the Stage BG Mask and the edges of the stage
ColumnAlignment Integer (Percentage) 0
A percentage value of the width of the screen where the stage will be placed
ColumnSize Integer 90
The size of each column. Equal size for each column. Increasing the column size may also increase the receptor's size by scaling and adjust the visual hit position.
ColumnColor{1-11} R,G,B,A (0-255) 255,255,255,255
The color in which the Column Lighting is tinted in the specified lane
ColumnLightingOffsetY Integer 0
The Y Offset of the Column Lighting relative to the receptors
ColumnLightingScale Float (0.0-1.0) 1.0
The height scale of the column lighting to make it bigger or smaller.
HitPosOffsetY Integer 0
The offset of the hit position relative to its default location at the edge of the receptors. Setting this value higher will make the hit position lower.
ReceptorPosOffsetY Integer 0
The Y position of the receptors relative to its default location on the screen. Setting this value higher will make the receptors at higher position.
ReceptorsOverHitObjects True or False True
If true, the receptors will be over the hitobjects when they fall down and vice versa.
RotateReceptorsByColumn True or False False
If true, the game will rotate the receptors according to the lane it's in. Recommended to set to True
ReceptorRotations Integer List -
Per lane receptor rotation, each lane separated by a comma. An integer of 1 is 1 degree of rotation.
StageReceptorPadding Integer 0
The amount of space between between the stage background's border and first/last column
CoopPlayfieldPadding Integer 92
The amount of space between between the sides of the screen and the playfield, only active in coop play.

Judgement Burst and Hit Error

Affected Textures: judge-marv.png, judge-perf.png, judge-great.png, judge-good.png, judge-okay.png, judge-miss.png
Value Data Type Alignment Default
HitErrorChevronSize Integer - 8
The size of the chevron that displays the player's last hit above the hit error
HitErrorHeight Integer - 10
The height of the hit error
HitErrorPosX Integer MidCenter 0
The X position of the hit error
HitErrorPosY Integer MidCenter 45
The Y position of the hit error
HitErrorAlpha Float (0.0-1.0) - 0.5
The alpha of the hit error lines
HitErrorWidthScale Float (0.0-1.0) - 1
The scale factor for hit error width
HitErrorEarlyColor R,G,B,A (0-255) - 9,165,200,255
The hiterror chevron color for early hit
HitErrorLateColor R,G,B,A (0-255) - 255,152,164,255
The hiterror chevron color for late hit
HitErrorNeutralColor R,G,B,A (0-255) - 255,255,255,255
The hiterror chevron color for neutral hit
JudgementHitBurstFps Integer - 60
The frames per second the judgement hit burst animation will run at
JudgementBurstPosY Integer MidCenter 0
The Y Offset of the judgement hit burst
JudgementHitBurstBumpY Integer - -5
The Y added to the judgement hit burst when it starts bumping
JudgementHitBurstBumpTime Integer - 183
The time it takes to move the judgement hit burst from its bump position to its original position
JudgementHitBurstScale Byte (0-255) - 100
The size of the judgement hit burst. 255 = 357x357px at 1080p
DisplayJudgementsInEachColumn True or False - False
Displays the judgments in each column.

Lighting

Affected Textures: hitlighting.png, holdlighting.png
Value Data Type Alignment Default
HitLightingX Integer MidCenter 0
The X position of the hit/holdlighting relative to the center of the receptor
HitLightingY Integer MidCenter 0
The Y position of the hit/holdlighting relative to its default position
HitLightingFps Integer - 60
The frames per second the hitlighting animation will run at
HitLightingScale Integer - 100
The size scale of the hitlighting element
HitLightingColumnRotation True or False - False
Determines whether the hitlighting will be rotated according to the column it's in
HoldLightingFps Integer - 60
The frames per second the holdlighting animation will run at
HoldLightingScale Float - 100
The size scale of the holdlighting element
HoldLightingColumnRotation True or False - False
Determines whether the holdlighting will be rotated according to the column it's in

Health Bar

Affected Textures: health-background.png, health-foreground.png
Value Data Type Alignment Default
HealthBarKeysAlignment LeftStage, RightStage or TopLeft Depends RightStage
Where the health bar is positioned in relation to the stage
HealthBarType Horizontal or Vertical - Vertical
The type of health bar your image is. If it is horizontal, specify horizontal and vice versa
HealthBarPosOffsetX Integer Depends 5
The health bar's X position relative to its default location
HealthBarPosOffsetY Integer Depends 5
The health bar's Y position relative to its default location
HealthBarScale Integer (Percentage) - 100
The size of the health bar display

Hit Bubbles

Affected Textures: bubbles-background.png, bubble.png
Value Data Type Alignment Default
HitBubblesAlignment LeftStage, RightStage or BelowStage Depends LeftStage
Where the hit bubbles is positioned in relation to the stage
HitBubblesType FallDown, FallUp, FallLeft or FallRight - FallDown
The direction towards which the bubbles fall
HitBubblesPosX Integer Depends -10
The hit bubbles X position relative to its default location
HitBubblesPosY Integer Depends 170
The hit bubbles Y position relative to its default location
HitBubblesScale Float - 1
The scale of the hit bubbles display
HitBubbleScale Float - 1
The scale of an individual hit bubble
HitBubbleBorderPadding Float - 7
The padding between the edges of the bubbles display (along line of falling) to the bubbles
HitBubblePadding Float - 3
The padding between any two bubbles (along line of falling)
HitBubblesRecordedJudgements Marv, Perf, Great, Good, Okay, Miss, NoMarv, All, Default or any combination of them joined by commas (,) - NoMarv
The judgements that will generate a bubble

Numbers

Affected Textures: combo-{0-9}.png, score-{0-9}.png, score-percent.png, score-decimal.png

Combo

Value Data Type Alignment Default
ComboDisplayScale Integer - 100
The size of the combo display
ComboPosX Integer MidCenter 0
The X position of the combo display relative to its default position
ComboPosY Integer MidCenter -40
The Y position of the combo display relative to its default position
ComboDisplayBumpY Integer - -5
The Y added to the combo display when it starts bumping
ComboDisplayBumpTime Integer - 370
The time it takes to move the combo display from its bump position to its original position

Rating

Value Data Type Alignment Default
RatingDisplayScale Integer - 100
The size of the combo display
RatingDisplayPosX Integer TopLeft 10
The X position of the display that shows the current score rating
RatingDisplayPosY Integer TopLeft 15
The Y position of the display that shows the current score rating

Accuracy

Affected Textures: grade-small-a.png, grade-small-b.png, grade-small-c.png, grade-small-d.png, grade-small-f.png, grade-small-s.png, grade-small-ss.png, grade-small-x.png
Value Data Type Alignment Default
AccuracyDisplayScale Integer - 100
The size of the accuracy display
AccuracyDisplayPosX Integer TopRight -10
The X position of the accuracy display relative to its default position
AccuracyDisplayPosY Integer TopRight 5
The Y position of the accuracy display relative to its default position

KPS

Value Data Type Alignment Default
KpsDisplayScale Integer - 100
The size of the keys per second display
KpsDisplayPosX Integer TopRight -10
The X position of the keys per second display relative to its default position
KpsDisplayPosY Integer TopRight 15
The Y position of the keys per second display relative to its default position

Score

Value Data Type Alignment Default
ScoreDisplayScale Integer - 100
The size of the score display
ScoreDisplayPosX Integer TopLeft 10
The X position of the score display relative to its default position
ScoreDisplayPosY Integer TopLeft 5
The Y position of the score display relative to its default position

Judgement Counter

Affected Textures: judgement-overlay.png, judgement-overlay-background-{marv, perf, great, good, okay, miss}.png
Value Data Type Alignment Default
JudgementCounterAlpha Float (0.0-1.0) - 1
The alpha/opacity of the judgement counter
JudgementCounterFontColor R,G,B,A (0-255) - 255,255,255,255
The color of the judgement counter font
JudgementCounterSize Integer - 40
The width and height of the judgement counter
JudgeColorMarv R,G,B,A (0-255) - 255,255,255,255
The color of the Marvelous counter overlay
JudgeColorPerf R,G,B,A (0-255) - 255,231,107,255
The color of the Perfect counter overlay
JudgeColorGreat R,G,B,A (0-255) - 86,254,110,255
The color of the Great counter overlay
JudgeColorGood R,G,B,A (0-255) - 0,209,255,255
The color of the Good counter overlay
JudgeColorOkay R,G,B,A (0-255) - 217,107,206,255
The color of the Okay counter overlay
JudgeColorMiss R,G,B,A (0-255) - 249,100,93,255
The color of the Miss counter overlay
JudgementCounterPosX Integer MidRight 0
The horizontal position of the judgement counter relative to its default position
JudgementCounterPosY Integer MidRight 0
The vertical position of the judgement counter relative to its default position
JudgementCounterPadding Integer - 0
The amount of space between the judgement counters
JudgementCounterHorizontal True or False - False
If set to True, the judgement counter arranges horizontally instead of vertically
JudgementCounterFadeToAlpha True or False - False
If set to True, judgement-counter-overlay changes animation to fade with alpha instead of fading with color
UseJudgementColorForNumbers True or False - False
If set to True, color of numbers in judgement counter will use the color based on of judge colors value set

Additional Notes:

  • JudgeColor{Marv, Perf, Great, Good, Okay, Miss} values also affects: Hitlighting tint if enabled in settings, hiterror and hitbubbles.

Stage Timing Bar

Value Data Type Default
SongTimeProgressActiveColor R,G,B,A (0-255) 255,231,107,255
The color of the song time progress bar (active)
SongTimeProgressInactiveColor R,G,B,A (0-255) 136,136,136,255
The color of the song time progress bar (inactive)
SongTimeProgressScale Integer 45
The size of the song’s time progress
SongTimeProgressPositionAtTop True or False False
If set to True, The song time progress bar will be positioned at the top of the screen
TimingLineColor R,G,B,A (0-255) 255,255,255,255
The color of the timing lines

Mini song progress bar

Value Data Type Default
ShowMiniSongBar True or False False
If set to True, The mini song progress bar will be displayed
MiniSongBarDisplayPosX Integer 75
The X position of the mini song progress bar
MiniSongBarDisplayPosY Integer 0
The Y position of the mini song progress bar
MiniSongBarDisplayWidthFactor Integer 30
The scaling factor of the mini song progress, where the bar's width is (screen size)/value
MiniSongBarDisplayHeight Integer 4
The Height of the mini song progress bar

Skip

Affected Textures: skip.png, skip@{rows}x{columns}.png
Value Data Type Default
SkipDisplayPosX Integer 0
The X position skip
SkipDisplayPosY Integer 30
The Y position skip