Именование файлов в Unity 3D
22 сентября 2022
Валерия Пудова
Аннотация: Документ не является соглашением по именованию файлов, это лишь рекомендации, которые вы можете использовать для создания своего соглашения. В документе рассмотрены основные техники именования файлов в Unity 3D. Однако, эти принципы можно использовать и с другими игровыми движками. Этот документ является частью серии статей по структурированию игрового проекта в Unity 3D. Tags: #unity #unity3d #namingconvention #gamedev #gamedeveloper #gamedevelopment #indiedev #indiegaming #indiegamedev История обновлений: 22/09/2022 [R01] Первая опубликованная версия |
Содержание
Префикс по назначению файла (Target)
Префикс для сортировки файлов (Sequence)
Префикс для временных файлов (Temp)
Суффикс по назначению файла (Target)
Суффикс для версии файла (Version)
Суффикс для сортировки файлов (Sequence)
Суффикс для подвида файла (Aspect)
Суффикс по содержанию файла (Content)
Зарезервированные правила Unity
Именование файлов исходного кода описано в документе Microsoft Coding Conventions C#, тогда как в этом документе предлагается рассмотреть варианты именования файлов для медиаконтента.
Существует два стиля именования файлов (таблица 1). Необходимо выбрать один из них и следовать ему от начала и до конца проекта.
Таблица 1 Два основных стиля именования файлов
1 | PascalCase | Записывать слова без пробелов и отделить слова заглавной буквой. Для дополнительного разделения можно использовать символ подчеркивания: MagneticRifle Использовать только заглавные для префиксов и суффиксов: SM_RailwayStation |
2 | lower-case | Использовать символы нижнего регистра для имен, префиксов и суффиксов. Вместо пробелов использовать знак подчеркивания. magnetic_rifle Альтернативно, вместо пробелов использовать дефис. magnetic-rifle |
Вариант PascalCase наиболее распространен среди Unity разработчиков, так как вытекает из C# соглашения[1]. Вариант с использованием lower-case может быть в приоритете, если используется собственная система управления и стриминга ассетов — так как это предотвратит любые ошибки, связанные с регистром ввода.
В обоих случаях необходимо использовать только латинский алфавит, цифры и некоторые символы. Выше говорилось о подчеркивании и дефисе, но в Unity используется символ @ для именования анимационных файлов.
При этом, не следует применять выбранный стиль на сторонние ассеты. Эти ассеты стоит оставить без изменений структуры файлов, а если вносить изменения, то лишь косметические. Так как в будущем, возможно, придется обновлять эти файлы новой версией ассета и вы просто упростите себе работу.
Использование "пробелов" приводит к ошибкам, на поиск и устранение которых потребуется много времени.
Некоторые разработчики предлагают использовать специальный префикс в имени файла. Такой префикс может быть использован разными способами, ниже рассмотрим варианты. Особенность префикса в том, что из-за него файлы будут сортироваться так, что все файлы с одним префиксом будут расположены рядом. Это пожалуй, самый важный результат использования префикса.
Префикс, в целом, ухудшает читаемость остальной части имени файла, поэтому пользоваться этим инструментом необходимо с осторожностью. И если использовать, то в каждом файле — это позволит команде натренировать способность читать имя файла с префиксом.
Использование префиксов по типу файлов не дает преимущества внутри Unity, но может быть полезно в системе VCS или в файловой системе компьютера . Из-за сортировки все файлы одного типа окажутся рядом. Если это то, чего вы добиваетесь, то используйте префикс.
SM_ Static Mesh |
Используется у некоторых файлов, чтобы обозначить их назначение (а не тип, как выше). Это может быть полезно для prefabs и assets, для того чтобы сделать имя ресурса более информативным.
В качестве примера, если применять для сцен:
SC_FishingVillage Любая сцена, которую можно загрузить и запустить SA_FishingVillage Сцена загружается в аддитивном режиме TST_FishingVillage Тестовая сцена TSA_FishingVillage Тестовая аддитивно загружаемая сцена |
Цифровой префикс используется для ресурсов у которых разные имена, но определенный порядок использования. Использование таких префиксов полезно при хранении аудио – для сцен диалогов со множеством разных персонажей для того, чтобы упорядочивать очередь диалога. Желательно использовать незначащие нули в количестве достаточном для роста числа вариантов, чаще всего двузначное число.
01_BootScene |
Учитывая особенность этого префикса и редкость его использования, не стоит использовать другой префикс совместно с этим.
Любые временные папки или файлы могут быть отмечены двойным подчеркиванием (или дефисом, в зависимости от вашего стиля именования) в начале имени файла. Использование двойного символа позволяет проще искать такие файлы по запросу[4].
__RailwayStationScene |
Такой файл может быть удален без нанесения ущерба проекту. Но еще лучше для таких файлов использовать специальную папку для экспериментов. О такой папке и многом другом будет сказано в документе о структурировании проекта.
Суффикс лишь незначительно влияет на сортировку и поэтому вне всякого сомнения очень удобный инструмент. Рассмотрим некоторые примеры.
Использование суффикса позволяет сообщить разработчику о том, какое назначение у ресурса, иными словами, немного больше сообщить о его содержимом. Например:
BootScene_1P Для однопользовательской версии игры |
Не смотря на то, что версионирование происходит с помощью VCS бывают случаи когда на определенном этапе необходимо в одной сцене видеть все версии одного объекта. В этом случае можно использовать ручное версионирование с помощью этого метода. Для этого добавьте номер версии в конце имени файла. Желательно использовать незначащие нули в количестве достаточном для роста числа вариантов, чаще всего двузначное число.
RedStone_V01 Версия 1 RedStone_V02 Версия 2 RedStone_V03 Версия 3 |
Использовать в имени файла слова означающего версию не целесообразно. В качестве примера: StoneFinal или StoneBetter. Используйте только цифровые номера версий. Так как в разработке игр редко можно предсказать то, является ли ресурс финальным.
Желательно не использовать нумерацию для по сути разных объектов. Например вместо Bird_0, Bird_1, Bird_2 лучше использовать Flamingo, Eagle, Swallow. Все же бывают случаи, когда все объекты по сути одно и тоже и отличаются лишь незначительно. Этот метод чаще всего используется для деталей и текстур.
В этом случае, именуются различные варианты одного и того же файла. Принцип подобен версионированию, но разница в том, что в случае с вариантом, результатом является не пошаговая итерация, а просто различные варианты одного ресурса. Если таких объектов будет около десяти, то лучше использовать незначащие нули в количестве достаточном для роста числа вариантов, чаще всего достаточно использовать двузначное число. При этом, лучше начинать отсчет с 0, это позволит индексу файла в массиве совпадать с именем файла.
RedStone_00 Вариант 0 RedStone_01 Вариант 1 RedStone_02 Вариант 2 |
Иногда лучше вместо числового суффикса варианта файла использовать слово.
Для того чтобы имя файла сообщало немного больше о содержимом файла, можно добавлять суффикс к имени файла. Ниже предлагается перечень суффиксов для текстур.
_RGB Albedo |
Суффикс не ухудшает читаемость, а суффикс по содержимому файла наиболее необходимый и удобный инструмент. Для того чтобы он был более заметным и эффективным он должен находился в самом конце имени файла.
Порядковый суффикс и суффикс версии может быть использован с другим и должен быть предпоследним в имени файла. Формат имени выглядит так:
Версия файла не располагается в конце, так как суффикс «по содержимому» имеет более высокое значение и должен быть расположен в самом конце имени. В качестве примера, два варианта текстуры травы и один вариант текстуры неба:
Grass_00_V01_RGB Grass_00_V01_A Sky_Top_V01_RGB Sky_North_V01_RGB |
Смешивание нескольких суффиксов ухудшает читаемость и запоминаемость имен файлов. Разумно минимизировать число суффиксов в одном имени, например, не использовать более трех.
Редактор Unity полностью игнорирует файлы и папки которые:
Именование объектов кажется простым и очевидным, но это не совсем так. Необходимо тщательно подбирать наиболее точное и грамматически корректное описание объекта в имени файла.
Ошибки в написании слова могут быть малозаметными, но исправление проблем, связанных с этим, отнимает очень много времени. Перед именованием не лишним будет проверить слова в словаре — эти несколько минут времени в результате сэкономят часы работы всей команды.
Выбранное соглашение должно быть простым и запоминающимся. Необходимо, чтобы каждый сотрудник помнил соглашение и следовал ему. Тогда всем будет намного легче работать над одним проектов.