Project Zomboid

Project Zomboid

67 ratings
Определение качества модов
By star
Про бажность модов из мастерской.
   
Award
Favorite
Favorited
Unfavorite
Вступление
Я попытаюсь объяснить, чем отличается хороший мод от плохого, каков шанс багов в моде и т.д.
(English)

Дисклаймер
Вообще это не так уж и просто, судить о других модах и об их авторах. Так что я чувствую себя немного не в своей тарелке. Имею ли я право судить людей и их труд? Но мне кажется, что проливая свет на данную тему, я поспособствую улучшению качества модов в целом.
Типы модов
Главное правило:
Наличие и отсутствие багов в моде важнее, чем идея или дизайн мода.

Уровень 0 - Неизвестный мод (Unknown mod)
Про такой мод пока что ничего не известно.

Уровень 1 - Очень плохой мод (VERY BAD mod)
Такой мод заменяет игровые файлы целиком! Замена файлов действует до тех пор, пока мод активен. Если выключить мод, то его эффект замены исчезнет. Чтобы распознать такой мод, достаточно найти точное совпадение имени файла в папке мода и в папке игры.

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

Конечно же, такой мод будет несовместим с другими модами, которые заменяют те же самые файлы.

Обратите внимание, что иногда нет другого способа создать мод, кроме как замена файла. Например, мод, заменяющий текстуры, будет исключением из этого правила. Но если он заменяет текстур-паки целиком, то это всё же очень плохой мод.

Уровень 2 - Плохой мод (BAD mod)
Такой мод хоть и не заменяет файлы целиком, но зато заменяет целиком функции в коде или определения объектов. Замена действует, только когда мод активен (аналогично предыдущему уровню).

Распознать такой мод не просто. Вы можете поискать наличие признаков в файлах мода, особенно в txt файлах предметов. Определение предмета начинается с этого:
item ItemName {
Если вы нашли такой же "ItemName" (идентификатор предмета) в папке игры (/media/scripts/), то будьте уверены, что мод заменяет определение целиком. Это признак того, что мод плохой.

В качестве результата замены есть средний шанс несовместимости с игрой или другими модами в будущем. Но это гораздо лучше, чем заменять файлы целиком.

Не плохие моды
(т.е. уровня 3 и выше)

Чтобы увидеть, что мод не плохой, достаточно убедиться, что он не заменяет ни файлов, ни функций, ни предметов. Вы должны хотя бы немного разбираться в программировании.

Примеры:
ПЛОХО
НЕ ПЛОХО
Файлы
В моде есть файл:
/media/scripts/newitems.txt
Такой же файл есть в папке игры:
/media/scripts/newitems.txt
В моде есть файл:
/media/scripts/my_items.txt
Нет файла с таким же именем в папке игры.
Файлы
В моде есть файл:
/media/lua/client/TimedActions/ISReadABook.lua
Такой же файл есть в папке игры:
/media/lua/client/TimedActions/ISReadABook.lua
В моде есть файл:
/media/lua/client/ISReadABook_fix.lua
Функции
-- Reduce read time function ISReadABook:new(character, item, time) local o = {} setmetatable(o, self) self.__index = self o.character = character; o.item = item; o.stopOnWalk = true; o.stopOnRun = true; ................... -- reduce total read time time = time * 0.5 ................... o.ignoreHandsWounds = true; o.maxTime = time; o.caloriesModifier = 0.5; o.pageTimer = 0; o.forceProgressBar = true; if character:isTimedActionInstant() then o.maxTime = 1; end return o; end
-- Reduce read time local old_fn = ISReadABook.new; function ISReadABook:new(...) local o = old_fn(self, ...); if o.maxTime ~= 1 then o.maxTime = o.maxTime * 0.5; end return o; end
Предметы
Определение предмета:
item Cigarettes { Count = 1, Weight = 0.05, Type = Normal, DisplayName = Pack of Cigarettes, Icon = SMPackClosed, CantBeFrozen = TRUE, }
Такое же определение предмета (item Cigarettes) есть в txt-файлах самой игры.

Обратите внимание, что замена типа предмета (Type) - это очень плохо, потому что это приводит к удалению всех старых предметов (Cigarettes в данном случае) из сохранения.
item CigarettePack { Count = 1, Weight = 0.05, Type = Normal, DisplayName = Pack of Cigarettes, Icon = SMPackClosed, CantBeFrozen = TRUE, }
(такого ванильного предмета не существует)
ИЛИ
name = "Base.Cigarettes" item = ScriptManager.instance:getItem(name) if item then item:DoParam("Count = 1") item:DoParam("Weight = 0.05") item:DoParam("Icon = SMPack") end
(изменение непосредственно свойств предмета)

Уровень 3 - Неопрятный мод (UNTIDY mod)
Автор такого мода может быть хорошим программистом или художником, но создаёт мод в ленивой манере. Поэтому мод будет содержать много опечаток и допущений, что приведёт к проблемам и багам (небольшой шанс).

Такой автор будет ждать фидбека (обратной связи) от пользователей в комментариях. В противном случае автор не будет исправлять баги, даже если мод вообще не работает.

Как видите, такой мод не так уж и плох, но я всё ещё рекомендую подумать дважды, прежде чем устанавливать такой мод. Как преданный игрок PZ, вы должны примерно знать, кто есть кто в сообществе моддинга Зомбоида: кто ленив, кто стеснителен, кто эгоистичен, кто горделив и т.д.

Чтобы распознать данный тип модов, если вы не особо разбираетесь в программировании или художествах, для начала посмотрите на оформление мода в мастерской Стима. Подробное описание и наглядные картинки означают, что автор потратил много времени на это, и, возможно, также потратил много времени на разработку и тестирование мода (это признак, но не доказательство). И конечно, если вы видите логотип Indie Stone вместо иконки мода, это однозначно говорит, что мод является неопрятным.

Если же вы разбираетесь в программировании, взгляните на код (конечно, если в моде вообще есть луа-файлы). Изящная инъекция кода выглядит примерно так (это отличает мод от плохих модов):
local old_fn = gameFunction function gameFunction(...) ........... -- механики мода return old_fn(...) end
Аккуратная модификация свойств предмета выглядит примерно так (через скрипты Луа, а не через txt-файлы):
ScriptManager.instance:getItem("Base.Battery"):DoParam("Weight = 0.05")
Очень аккуратная модификация - так (но это больше свойственно хорошим модам уровня 4 и выше):
local item = ScriptManager.instance:getItem("Base.Battery") if item then item:DoParam("Weight = 0.05") end

Начиная с уровня 3, моды можно считать хорошо совместимыми как с игрой, так и с другими модами. Также мод МОЖЕТ быть заброшен автором, но всё равно вероятно не забагуется ещё долгое время, не смотря на изменения в игре от разработчиков. Конечно, если уже прошли годы, то уже стоит задуматься, а не устарел ли мод.

Уровень 4 - Приемлемый мод (OK mod)
Такой мод не содержит багов, особенно если он очень простой. Но геймдизайн вызывает сомнения.

Вердикт здесь очень субъективный и может быть вынесен только опытным геймдизайнером.
Но для быстрого принятия решения вы можете посмотреть на следующее:
  • делает ли мод игру сильно проще или сложнее;
  • являются ли механики слишком детализированными и отнимают ли слишком много времени при взаимодействии с ними (захламление игры);
  • много ли выгоды от использования механик (или они бесполезны?) по сравнению с другими механиками игры;
  • реалистичный ли мод (в конце концов, это же Зомбоид!);

Уровень 5 - Хороший мод (GOOD mod)
Ничего из вышеперечисленного. :)

Обратите внимание, что всегда есть ненулевая вероятность того, что очередное обновление испортит даже хороший мод. Всплывающие красные ошибки не обязательно означают, что мод сам по себе бажный и не является хорошим. Помните, что все люди ошибаются, в том числе даже профессиональные мододелы и разработчики игры.

Что касается меня лично, то не все мои моды являются хорошими. Увы.
Шпаргалка
Уровень 1
Очень плохой
VERY BAD
Уровень 2
Плохой
BAD
Уровень 3
Неопрятный
UNTIDY
Уровень 4
Приемлемый
OK
Уровень 5
Хороший
GOOD
Замена файлов
Да
Нет
Нет
Нет
Нет
Замена объектов и функций
?
Да
Нет
Нет
Нет
Ленивая манера
?
?
Да
Нет
Нет
Геймдизайн
?
?
?
Странный
Хороший
Примеры модов
Название мода
Вердикт
Дата проверки
BAD
2021-01-28
BAD
2021-01-28
GOOD
2021-01-28
UNTIDY
2021-01-28
BAD*
2021-01-28
OK
2021-01-28
VERY BAD
2021-01-28
GOOD
2021-01-28
GOOD?
2021-01-28
VERY BAD
2021-01-28
GOOD
2021-01-28
GOOD
2021-01-28
GOOD
2021-01-28
GOOD
2021-01-28
OK
2021-01-28
GOOD
2021-01-28
* Незначительная замена, так что мод можно оценить как OK или GOOD.
33 Comments
star  [author] 25 Oct, 2023 @ 4:47pm 
Думаю, связано с модом (или модами), который работает со зданиями или комнатами.
Поищи по всей папки модов текст "getRoom", "getBuilding", ну или просто "Room" и "Building".
lelouch vi britannia 25 Oct, 2023 @ 9:59am 
всем привет, столкнулся с проблемой играю на модах и выдает ерорры исключительно в зданиях, использую моды такие же как и раньше и все было хорошо, с чем может быть связанно и как посмотреть причину эрора?
cutt. 10 Oct, 2023 @ 5:32am 
Хочу вас удивить, ребята, но я собрал сборку на 380 модов и так и играю) Главная проблема это вылет из-за нехватки оперативной памяти спустя 20-30 минут игры.
star  [author] 2 Jan, 2022 @ 1:43pm 
@Deadlod,
во-первых, суть статьи не зависит от версии PZ, основные положения те же, эту концепцию можно применять даже на другие игры,
и во-вторых, хорошие моды обычно совместимы с новыми обновлениями PZ, разве что очень крупное обновление может что-то поломать, но это редкость.
Deadlod 2 Jan, 2022 @ 5:42am 
Доброго времени суток! Есть такой же разбор модов, но уже для новейшей версии PZ?
star  [author] 14 Dec, 2021 @ 10:56am 
Отключить очень глючные моды до запуска игры можно через файл:
C:\Users\user\Zomboid\mods\default.txt
Forest Warden 14 Dec, 2021 @ 8:20am 
И некоторые моды уже стабильны, и[ вытянули на адекватный уровень.
Forest Warden 14 Dec, 2021 @ 7:20am 
А если в режиме дебаг темный экран, в чем может быть проблема? Ф11 не рабобтает. Вместо главного меню просто чернота, только курсор меняеться. Пробовал х32 и х64 - туфта.
star  [author] 30 Aug, 2021 @ 5:40pm 
C:\Users\user\Zomboid\console.txt
Glukkon [UA] 30 Aug, 2021 @ 1:07pm 
Доброго времени суток. А подскажите где можно посмотреть лог ошибок модов. У меня при загрузке игры обязательно вылазит красное окошечко с тремя ошибками. Хотелось бы узнать какие моды у меня кривые. У меня их не слишком много но не хотелось бы что бы в определенный момент забаговалось сохранение.