Un fichier .osr contient toutes les informations à propos d'un replay. Pour l'utiliser, il suffit juste d'avoir la beatmap de ce replay dans le dossier Songs.
Nom (nom anglais) | Nombre d'octets | Description |
---|---|---|
Octet (Byte) | 1 | Une seule valeur de 8 bits. |
Court (Short) | 2 | Une valeur petit-boutiste de 2 octets. |
Entier (Integer) | 4 | Une valeur petit-boutiste de 4 octets. |
Long (Long) | 8 | Une valeur petit-boutiste de 8 octets. |
ULEB128 (ULEB128) | Variable | nombre entier à taille variable ; en savoir plus : ULEB128. |
Chaîne de caractère (String) | Variable | Contient trois partie ; un octet qui est soit défini par 0x00, indiquant que les deux autres parties ne sont pas présentes, ou 0x0b (11 en décimal), indiquant que les deux autres parties sont présentes. Si la première partie est définie par 0x0b, alors, la deuxième partie est un ULEB128, définissant la longueur de la chaîne de caractère, et ensuite la chaîne de caractère elle-même, encodée en UTF-8. En savoir plus: UTF-8 |
Les Byte offsets ne sont pas inclus dans ce tableau à cause des valeurs à taille variable.
Type de donnée en français (en anglais) | Description |
---|---|
Octet (Byte) | Mode de jeu du replay (0 = osu!, 1 = osu!taiko, 2 = osu!catch, 3 = osu!mania) |
Entier (Integer) | Version du jeu au moment où le replay a été créé (exemple : 20131216) |
Chaîne de caractère (String) | Hash de la beatmap en MD5 |
Chaîne de caractère (String) | Nom du joueur ayant effectué ce replay |
Chaîne de caractère (String) | Hash de la beatmap en MD5 (comprend certaines propriétés du replay) |
Court (Short) | Nombre de 300 |
Court (Short) | Nombre de 100 dans le mode osu!, de 150 en osu!taiko, de 100 en osu!catch, ou de 100 en osu!mania |
Court (Short) | Nombre de 50 dans le mode osu!, petit fruits en osu!catch, ou de 50 en osu!mania |
Court (Short) | Nombre de Gekis dans le mode osu!, ou de Max 300 en osu!mania |
Court (Short) | Nombre de Katus dans le mode osu!, ou de 200 en osu!mania |
Court (Short) | Nombre de fautes (misses) |
Entier (Integer) | Score total |
Court (Short) | Combo maximum effectué lors du replay |
Octet (Byte) | Combo parfait (1 = pas de miss, pas de sliderbreaks et pas de sliders lâchés trop tôt). |
Entier (Integer) | Mods utilisés (voir en dessous pour plus d'infos) |
Chaîne de caractère (String) | Graphique de la barre de vie : paires u/v séparées par des virgules, où u est le temps en millisecondes dans la musique et v est un float allant de 0 à 1 qui représente la quantité de vie du joueur à un temps donné (0 = barre de vie vide, 1 = barre de vie remplie) |
Long (Long) | Horodatage (ticks Windows) |
Entier (Integer) | Taille en octets des données du replay compressé |
Tableau d'octets (Byte Array) | Données du replay compressées |
Long (Long) | ID du score en ligne |
Double (Double) | Informations supplémentaires sur le mod. Présent uniquement si Target Practice est activé. |
Informations supplémentaires sur le mod :
Mod | Informations stockées |
---|---|
Target Practice | Précision totale de tous les hits. Divisez ce chiffre par le nombre de cibles sur la beatmap pour obtenir la précision affichée dans le jeu. |
Il y a encore d'autres données comme le mouvement de la souris et des touches appuyées dans des données en LZMA.
Une fois décompressé, le texte contient des données séparées par des virgules. Chacune présente des actions présentées par 4 nombres: w | x | y | z
.
Variable | Type de donnée en français (en anglais) | Description |
---|---|---|
w | Long (Long) | Temps en millisecondes depuis l'action précédente |
x | Flottante (Float) | Valeur de l'abscisse (x) de la position du curseur (de 0 à 512) |
y | Flottante (Float) | Valeur de l'ordonnée (y) de la position du curseur (de 0 à 384) |
z | Entier (Integer) | Combinaison bit à bit des actions (M1 = 1, M2 = 2, K1 = 4, K2 = 8, Fumée = 16) (K1 et M1 sont toujours utilisés simultanément ; K2 et M2 sont toujours utilisés simultanément : 1+4=5 ; 2+8=10) |
Pour les replays effectuées à partir de la version 20130319
, la graine RNG de 32 bits utilisée pour le score sera encodée dans une frame supplémentaire à la fin du flux LZMA, au format -12345|0|0|seed
.
Comme décrit dans l'API osu!
Mod | Valeur (BitOffset) | Commentaire |
---|---|---|
None | 0 | |
NoFail | 1 (0) | |
Easy | 2 (1) | |
TouchDevice | 4 (2) | Remplace le mod NoVideo non utilisé |
Hidden | 8 (3) | |
HardRock | 16 (4) | |
SuddenDeath | 32 (5) | |
DoubleTime | 64 (6) | |
Relax | 128 (7) | |
HalfTime | 256 (8) | |
Nightcore | 512 (9) | Toujours utilisé avec DT : 512 + 64 = 576. Remplace le mod Taiko inutilisé |
Flashlight | 1024 (10) | |
Autoplay | 2048 (11) | |
SpunOut | 4096 (12) | |
Relax2 | 8192 (13) | Autopilot |
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) | Cinema |
TargetPractice | 8388608 (23) | osu!cuttingedge uniquement |
Key9 | 16777216 (24) | |
Coop | 33554432 (25) | |
Key1 | 67108864 (26) | |
Key3 | 134217728 (27) | |
Key2 | 268435456 (28) | |
ScoreV2 | 536870912 (29) | |
Mirror | 1073741824 (30) |