wiki

Хранилище файлов osu!(lazer)

По умолчанию osu!(lazer) хранит карты, скины и записи игр в перечисленных ниже директориях:

  • %appdata%/osu/files (Windows)
  • ~/.local/share/osu/files (Linux)
  • ~/Library/Application Support/osu/files (macOS)
  • Android/data/sh.ppy.osulazer/files/files (Android)

Если osu!(lazer) установлен на компьютере, место хранения файлов можно перенести, открыв настройки игры и нажав на кнопку Переместить корневую папку osu!....

Структура

В osu!(stable) все данные доступны пользователям в виде обыкновенных файлов, что приносит немало проблем: игре нужно следить, чтобы ключевые файлы, которые она использует, не повредились. Во избежание этого в osu!(lazer) применяется более тщательный подход. Папок вроде Songs или Skins больше не существует; всем файлам, импортируемым в lazer, даются новые имена, обозначающие SHA-256-хэши их содержимого, а клиент записывает в свою базу данных, какой файл к чему относится.

Например, если SHA-256-хэш файла равен

1a47929b6056d34d25a95eeb2012395ceed66af6f40cc37c898a08482d6325d2

то он будет храниться по следующему пути:

files/1/1a/1a47929b6056d34d25a95eeb2012395ceed66af6f40cc37c898a08482d6325d2

Такой подход позволяет экономить место на диске, не давая размножиться разным копиям одного и того же файла, а также ограждает файлы от вмешательства со стороны пользователей и других программ. Неудобства от того, что объекты «разложены» по разным местам, можно обойти, либо экспортировав карту или скин, либо изменив их внутри игры. Инструменты для внутриигрового редактирования, которых сейчас не хватает, будут добавлены позднее.

Если вам нужно отредактировать карту (или скин) с помощью стороннего инструмента, конкретно сейчас её нужно экспортировать, внести необходимые правки, а потом заново импортировать в игру.

Миграция из osu!(stable)

С помощью жёстких ссылок

В большинстве операционных систем osu!(lazer) сможет самостоятельно импортировать данные из стабильной версии клиента, не создавая лишних копий. Это возможно благодаря тому, что операционная система поддерживает жёсткие ссылки.

По сути, жёсткая ссылка — это ярлык, который позволяет ссылаться на один и тот же файл из разных директорий. В то время как обыкновенный ярлык является пусть маленьким, но файлом (а значит, занимает место на диске), жёсткая ссылка работает на уровне файловой системы.

Иными словами, две жёсткие ссылки — это разные названия одной и той же физической области на жёстком диске. Это значит, что после такой миграции и папка Songs, которую использует стабильный клиент, и папка files, которую использует lazer, будут содержать файлы, указывающие на одно и то же содержимое на диске. Если вы удалите файл из одной папки, он не пропадёт из другой. Если файл отредактировать, он изменится только в одной папке (при условии, что это делается через osu!): создастся его отдельная версия, которая уже будет занимать место.

Тем не менее, если вы откроете Свойства этих папок в Проводнике, то там будет написано, что и Songs, и files занимают место на диске, что может ввести в заблуждение. В действительности, данные в них не дублируются, а то, что вы видите, объясняется тем, как операционная система подсчитывает занятое место. В этом можно убедиться, замерив объём свободного места на диске до и после миграции.

Поддерживаемые системы

Поскольку жёсткие ссылки работают на уровне файловой системы, оба клиента должны быть установлены на один и тот же диск.

  • Windows: у диска должна быть файловая система NTFS.
  • macOS: файловая система должна поддерживать жёсткие ссылки.
  • Linux: файловая система должна поддерживать жёсткие ссылки.

С помощью копирования файлов

В операционных системах, которые не поддерживают жёсткие ссылки (либо для которых мы ещё не реализовали их создание), миграция из стабильного клиента в lazer происходит с помощью копирования всех файлов из одной директории в другую. Их папки с данными полностью независимы, но будут занимать в два раза больше места на диске.