wiki
This page contains an outdated translation of the original content. Please check the English version for the most accurate information (and consider updating the translation if you are able to help out)!

.osr (формат файлу)

.osr - це формат файлу, який зберігає інформацію про osu! повтор. Його можливо використати лише якщо карта з повтору є у папці "Songs".

Типи даних

Назва Кількість байтів Опис
Byte 1 Одне 8-бітне значення.
Short 2 2-байтне значення з порядком від молодшого до старшого.
Integer 4 4-байтне значення з порядком від молодшого до старшого.
Long 8 8-байтне значення з порядком від молодшого до старшого.
ULEB128 Змінна Ціле число змінної довжини. Деталі ULEB128.
String Змінна Складається з трьох частин: одного байта, який матиме значення або 0x00, що вказуватиме на відсутність наступних двох частин, або 0x0b (в десятковій системі - 11), що вказуватиме на наявність двох наступних частин. Якщо це 0x0b, тоді далі йтиме ULEB128, представляючи довжину байтів строки, що йде слідом, і після цього сама строка, закодована у форматі UTF-8. Деталі UTF-8

Формат

Зсуви байтів не включені в таблицю через значення змінної довжини.

Тип даних Опис
Byte Ігровий режим повтору (0 = osu! Standard, 1 = Taiko, 2 = Catch the Beat, 3 = osu!mania)
Integer Версія гри, в якій створено повтор (наприклад, 20131216)
String MD5 хеш бітмапи osu!
String Нікнейм гравця
String MD5 хеш повтору osu! (включаючи певні властивості повтору)
Short Кількість 300
Short Кількість 100 в стандарті, 150 в тайко, 100 у КТБ, 100 в манії
Short Кількість 50 в стандарті, маленьких фруктів у КТБ, 50 в манії
Short Кількість Гекі в стандарті, Максимальних 300 в манії
Short Кількість Кату в стандарті, 200 в манії
Short Кількість промахів
Integer Загальний рахунок, що відображається в звіті про скор
Short Найбільше комбо, що відображається в звіті про скор
Byte Ідеально/повне комбо (1 = немає промахів, слайдербрейків та зарано доведених слайдерів)
Integer Використані моди. Нижче вказанмй список значень для кожного мода.
String Графік індикатора життя: розділені комою пари u/v, де u - це час в мілісекундах з початку пісні, а v - значення з плаваючою комою в діапозоні від 0 до 1, що відображає кількість життя в конкретний момент часу (0 = індикатор життя пустий, 1 = індикатор життя повний)
Long Позначка часу (Windows такти)
Integer Довжина стиснутих даних повтору в байтах
Byte Array Стиснуті дані повтору
Long ID онлайн-скору
Double Додаткова інформація про моди. Наявна тільки якщо мод Target Practice активний.

Додаткова інформація про моди:

Мод Збережена інформація
Target Practice Загальна точність всіх попадань. Розділивши це на кількість об'єктів на карті, можна дізнатись точність, відображену в грі.

Дані, що залишились, зберігають інформацію про рухи миші й натискання клавіш в потоці LZMA.

При декомпресії текст, що зберігає дані, розділяється комами. Кожна ділянка позначає дію, що представлена 4-ма числами в такій формі: w | x | y | z.

Частина Тип даних Опис
w Long Час після попередньої дії в мілісекундах
x Float x-координата курсору від 0 до 512
y Float y-координата курсору від 0 до 384
z Integer Побітова комбінація натискань клавіш/кнопок миші (М1 = 1, М2 = 2, К1 = 4, К2 = 8, Дим = 16) (К1 завжди використовується з М1; К2 завжди використовується з М2: 1+4=5; 2+8=10)

На повторах, зроблених у версії гри 20130319 або пізніше, 32-бітне ціле число RNG seed, яке використовується для рахунку, буде закодовано в додатковий кадр повтору в кінці потоку LZMA в такому форматі: -12345|0|0|seed.

Моди

Взято з osu! API.

Мод Значення (Бітове зміщення) Коментар
None 0
NoFail 1 (0)
Easy 2 (1)
TouchDevice 4 (2) Заміщає мод NoVideo, який не використовується
Hidden 8 (3)
HardRock 16 (4)
SuddenDeath 32 (5)
DoubleTime 64 (6)
Relax 128 (7)
HalfTime 256 (8)
Nightcore 512 (9) завжди використовується з DT: 512 + 64 = 576
Flashlight 1024 (10)
Autoplay 2048 (11)
SpunOut 4096 (12)
Relax2 8192 (13) Автопілот
Perfect 16384 (14)
Key4 32768 (15)
Key5 65536 (16)
Key6 131072 (17)
Key7 262144 (18)
Key8 524288 (19)
keyMod 1015808 k4+k5+k6+k7+k8
FadeIn 1048576 (20)
Random 2097152 (21)
LastMod 4194304 (22) Кінотеатр
TargetPractice 8388608 (23) тільки для osu!cuttingedge
Key9 16777216 (24)
Coop 33554432 (25)
Key1 67108864 (26)
Key3 134217728 (27)
Key2 268435456 (28)
ScoreV2 536870912 (29)
Mirror 1073741824 (30)