Конфликты переменных и файлов и как их избежать
...статья, также известная под названием рекомендации по предотвращению конфликтов переменных и файлов.
Эта статья станет ещё понятнее, если перед прочтением узнать, как в Ren'Py работают переменные и объекты store!
Часто в описаниях модов можно увидеть такие фразы:
Рекомендуется использовать Менеджер модов.1
Так же используйте менеджер модов2
Для большей работоспособности настоятельно рекомендую использовать "Менеджер модов".3
Некоторые моды прибегают к крайним мерам, просят удалить все моды кроме себя. А сделано это для простейшего предотвращения конфликтов переменных и файлов.
Под конфликтами переменных и файлов понимается конфликт двух или более переменных с одинаковым именем или файлов с одинаковыми итоговыми путями. При инициализации переменных с одинаковым именем их значение перезаписывается и может отличаться от ожидаемого игрой, а при загрузке файлов с одинаковыми путями игра может и вовсе отказаться запускаться.
Но как это предотвращать?
Предотвращение конфликтов переменных
Для предотвращения конфликтов переменных достаточно чтобы название вашей переменной было уникальным по сравнению с другими.
Можно, конечно, написать всякую белиберду в название переменной...
init python:
kauzqfeeobdtf = Character("Алексей")
ommfhhpdpateqm = renpy.music.play
wjgqhckymp = 0
...но этого крайне не рекомендуется делать. Никто, включая вас, не поймёт что содержат эти переменные.
Вместо этого рекомендуется называть переменные соблюдая несколько важных правил.
В идеале названия ваших переменных должны выглядеть так:
mymod_chr_al
mymod_func_play
mymod_var_tries
...или так:
chr_al_mymod
func_play_mymod
var_tries_mymod
То есть:
<Сокращение мода>_<Тип переменной>_<Название переменной>
...или:
<Тип переменной>_<Название переменной>_<Сокращение мода>
1. Сокращённое название мода
Первое правило леса называния переменных!
Каждая переменная должна иметь префикс или постфикс в виде короткого названия мода.
Это может быть как и часть или полное название мода...
Пионериада4 —
d2_me_necktie_pioneriada
...так и аббревиатура...
Сквозь Страх (англ. Through The Fear)5 —
TTF_Day1
...или другое сокращение.
Distorted Souls6 —
disoul_amb_camera_siren_st
2. Тип переменной
Далее, тип переменной, средняя часть.
Он позволяет группировать переменные по тому, как используется переменная. Звук, персонаж или обычная переменная, для всего этого есть сокращения.
| Группа | Сокращение |
|---|---|
| Фоновые звуки | ambient/amb, ambience |
| Звуковые эффекты | sfx, sound/snd |
| Музыка | music/mus |
| Персонаж | character/char/chr |
| Функция | function/func |
| Класс | class/cls |
| Прочие переменные | variable/var |
То есть переменная из мода mymod и содержащая музыкальный трек tension должна называться так:
mymod_mus_tension
↑↑↑ Именно такой тип
3. Правильное название переменной
И последнее (или первое, смотря как вы расставляете эти части) — правильное название переменной.
Правильное в этом случае значит наиболее информативное и наиболее короткое.
Называйте переменные так, чтобы вы понимали, что в них хранится, но при этом сокращайте название до такого состояния, пока оно не станет наиболее коротким, сохраняя смысл.
Например, название переменной mymod_sfx_boom будет куда менее понятно чем mymod_sfx_statue_explosion.
Транслитерация (написание русских слов латиницей) не рекомендуется, но и не запрещается. Но имейте ввиду, что в сообществе программистов это считается плохой практикой.
Автоматическая инициализация
Также переменные может создавать сама игра, это называется автоматической инициализацией или автоинитом. Почитать об автоинитах вы можете в этой статье.
Предотвращение конфликтов путей файлов
Помимо переменных конфликтовать могут ещё и файлы. Но перед этим стоит рассказать как в принципе работают пути в Бесконечном Лете.
При запуске игры все файлы из каждой папки в <Папка Steam>\steamapps\workshop\content\331470\ помещаются в <Папка Steam>\steamapps\common\Everlasting Summer\game\.
При этом файлы могут перезаписывать друг друга.
Таким образом, если в двух или более модах есть файлы, которые имеют одинаковые пути, то из этих файлов останется и обработается только один.
Все файлы загружаются по порядку от Я до А, от Z до A, от 9 до 0, от самого глубокого до самого повехностного файла7.
В разработке...
Источник: Официальная документация Ren'Py.
Обновлено