Skip to content

Skin System English

SK-la edited this page Oct 11, 2026 · 7 revisions

Skin System (English)

中文 | English

What It Is

Ez2Lazer provides an independent skin system separate from the original, focusing on Mania scene performance and highly customizable HUD resources.

  • More features can be explored in-game. These features are subject to continuous improvement. This page only describes some of the key features.

New Built-in Skins

  • Built-in EzPro Skin: The most comprehensive skin foundation with high customization capabilities, maintaining performance while offering rich extended features.
  • Built-in SBI Skin: (Pure code-generated graphics) Power Bond skin, a solid-color skin suitable for top-tier minimalist players. Everything pursues simplicity and high performance, retaining only basic corner radius adjustment and note size adjustment capabilities.
  • Built-in Ez2 Skin: (Pure code-generated graphics) The original Ez2Lazer built-in skin.
  • All three built-in skins feature unique event subscription mechanisms that effectively reduce performance pressure in high KPS scenarios (e.g., 10k full key sound, Full LN charts, at peak 80 KPS, frame drop situations can be reduced by more than 50%).

Skin Editor

Improvements

  • When entering the skin editor, the scene maintains the original display aspect ratio scaling for better layout organization.
  • Opening the official skin editor from the main menu picks a preview beatmap for the active ruleset, so the intro does not switch the ruleset to osu!.
  • Shared HUD settings include position sliders and a uniform scale slider (about 0.01–10).
  • Added deserialization protection during skin loading to reduce failure prompts after version changes.

Ez Pro Skin Tab (New Left Tab)

  • The left picker writes the current skin config by component type: Note, Stage, Panel, EarlyLate, judgement, combo, ColumnLight.
  • EarlyLate, judgement, and combo write that HUD widget's theme. They do not change the global GameTheme. The global theme remains the apply-to-all entry.

Ez Skin Settings Tab (New Right Tab)

  • Custom dynamic dropdown: Dynamically refreshes dropdown options based on resource pack content.
  • Dedicated/global judgement line position, lane width, special lane width multiplier, etc.
  • Throw-skin tail: enable the pseudo tail first, then pick a distance step (UI 0–8, (step / 32) × BPM). 0 is off. The choice is locked when entering play. With dynamic throw off, the whole play uses the main BPM beat length; with it on, the distance follows the live beat length.

Ez Skin Custom Tab (New Right Tab)

  • Provides better custom skin color mechanisms, used in conjunction with column types.
  • Column types: Configure classification for each column based on different KeyModes. For example, Type S columns are treated as special columns and affected by the special lane width multiplier.
  • Background color blur and darkening for better background adaptation.
  • Panel skew transformation for skewed track effects (usage results are not optimal yet; detailed tuning needed in the future).

EzResources Library — Custom Features

Skin resource pack path is located in the EzResources folder within the data directory. If you cannot find the EzResources folder, refer to Installation Guide (English)

Ez Pro Skin Custom Features

  • Custom notes, judgement images, the stage plate, a Panel background, and column key lights.
  • EzResources/note for notes. At minimum, one white note such as EzResources/note/air/whitenote/000.png. EzPro builds the long note from it, then applies column colours.
  • EzResources/Stage/{stage}/ is one foreground set. Folders directly under Stage/ can be renamed; nested folder and file names must match a built-in set. The list refreshes when settings open.
  • EzResources/Panel/{name}.png is one image for the whole stage. Only png is listed. When selected, it scales to the total column width, sits with its bottom on the judgement line, and draws under column blur. Column blur above 0 blurs the beatmap background and this image together; 0 draws it sharp. The colour setting includes alpha and is multiplied onto the image before blur. Default is opaque white. None draws nothing.
  • EzResources/ColumnLight/{set}/ is the key light. The old Column/ path is no longer used. Lookup stays inside the selected subfolder: the column type first, then S, E, P, B, A, then ColumnLight. If none of those exist, nothing is shown. Built-in art is used only when EzColumnLight still has no match.
  • EzResources/GameTheme/{theme}/ holds judgement, combo, and Early/Late art. Theme names are a built-in enum. A new folder does not add a theme. Frame lookup is below.

Frame lookup

With no frame template, lookup stops at the first hit. Notes, stage sequences, column lights, judgement, combo, and the full-combo clip all use this order.

  1. Bare frames in a subdirectory: {name}/000 (three digits), then {name}/0 (one digit).
  2. Hyphen frames inside that subdirectory: {name}-, then {name}_, three digits before one digit.
  3. Same-level hyphen frames in the parent directory: {name}-, then {name}_, with the same digit order.
  4. One still image under the resource name. For the same stem, png wins over jpg, jpeg, then gif. A gif keeps its extension, because the texture loader does not probe gif on its own.

Frame indices accept {0} and {000} only. {00} is not a frame index. Separators are - and _ only.

A non-empty frame template skips the four steps and looks up that one pattern. On a miss it takes one still image by resource name. A / before the placeholder is a subdirectory, so {result}/{000} only loads the sequence starting at name/000.

Judgement art has one name step before that: the current HitMode resource name is probed first, then the fallback name.

Lists you can add to

The list is read from disk when that settings section opens. A folder created while the game is running shows up after the section is opened again.

List Path Can you add or remove entries?
Note Set One folder level under EzResources/note/ Yes. The folder name is the entry.
Stage Set One folder level under EzResources/Stage/ Yes, including renames. Files inside the set must still match a built-in set.
Panel EzResources/Panel/*.png Yes. Only png is listed. The file name without the extension is the entry.
Column Set One folder level under EzResources/ColumnLight/ Yes.
Modify path Every subdirectory under EzResources/Modify/ Yes. Read when EzHUDSpritePlus settings open.
Modify sprite name Images in the current Modify directory Yes. Reread when the path or frame template changes.

Lists that do not grow from a new folder:

  • GameTheme / judgement, combo, and EarlyLate fonts: the dropdown is a built-in enum. A folder under EzResources/GameTheme/ whose name the program does not already know does not become a theme. The left picker only shows enum names that also exist on disk.
  • Column width and the special-column factor also size the panel columns, the key counter, and the timing columns.
  • For Ez Pro-based custom skins, see Video Introduction

Stage layout.json

Each stage set has EzResources/Stage/{stage}/Stage/layout.json. Without that file, or without meter, the stage plate is not drawn.

Coordinates are source pixels with Y up. Both X and Y are flipped when drawn.

Field Role
body / back / grooveLight / overObject / character Fixed slots. path is relative to Stage/{stage}/Stage. Omit it to keep that slot's original file.
meter Health gauge. Includes gauge, bright, and mask, in the same coordinates as the body.
parts Extra images outside the fixed slots. path is required. Names are not branched by skin.
score / combo Score and max combo printed on the stage (not the HUD live combo). Each has its own enabled.

score / combo path is relative to Stage/{stage}. A shared glyph set uses number; split sets use number/score and number/combo. Glyphs are resolved by the body name. The units digit shares the body's coordinate space; the next digit is at x + spacing.

Key-count folders: use the folder that matches the current key count. If it is missing, search the same odd/even group first (down to 4K, then upward), and only then the other parity. 7K therefore falls back to 5K before 6K.

A single-frame GrooveLight or gauge light breathes in alpha. Multi-frame art still plays as a sequence.

HUD Component Custom Features

  • For example, EzHUDSpritePlus allows custom sprite sheets with customizable dynamic frame filename templates, BPM-synchronized animation speed, etc.
  • This is just an example. Please check components starting with EzHUD in-game for more widgets. More customizable components will be gradually added in the future.

C# Scripting Skin Custom Features

README:Scripted Skin Documentation Index

System Description and Naming/Loading Rules (Required Reading): Scripted Skin Overview Documentation

Interface and key class API reference: Scripted Skin API Documentation

Getting started and :Scripted Skin User Guide

Access Points

  • Settings -> Skin and Skin Editor
  • Resource directories under EzResources path (named according to component conventions)

Notes

  • Some features are skin-specific. Pay attention to setting item prefixes or hover over components to view tooltip information for more details.
  • Legacy imported skins have less extensibility compared to Ez Pro. Consider using Ez Pro as a base to create your own customized version.
  • Ez Pro-based custom skin features are subject to modification and enhancement at any time. Refer to actual in-game content.
  • If you see a "Failed to load skin configuration" prompt right after entering the game, it means your local skin configuration is outdated. You can ignore it and directly enter the skin editor to preview and save once (this usually resolves the issue).

Clone this wiki locally