Реборн Control Any Sim: что с ним не так
Как и многие из вас, я не могу жить без управления НПС. Интересно ведь посмотреть, что они думают, и дать им какие-то действия. Ранее я пользовалась Control Any Sim, но со временем ушла на Control Sim Hub от Dquiet. Однако несколько дней назад увидела, что предыдущий мод был обновлен, и на радостях собиралась его заценить.
Заценила. И поняла, что эту штуку я ставить точно не буду. Давайте объясню и вам, в чем дело.
Не имеющее никакого смысла описание
Для начала уточню: мод обновлен другим моддером, а не автором. Давайте посмотрим, что сказано об обновлении.
Кажется, что звучит неплохо. Однако я изучала обе версии скрипта (упрощенный обзор ниже), и никаких модификаций атвономии там нет. Уже странно, не правда ли? Да и во втором пункте повторяется информации из первого.
Думаете, что-то есть о LOD и state transitions (не заморачивайтесь о том, что это значит)? Тоже нет!
Но самое странное не это, а то, что я обнаружила при чтении комментариев.
Как оказалось, это не первая версия описания. Комментатор (Aravyn), задавший отличные вопросы, цитировал пункты из оригинала, и вот они совершенно лишены какой-либо логики. Поехали!
Rebuilt tuning package via S4Tools
Поясню. Пэкеджи – нескриптовая часть мода, которая содержит в себе XML файлы и, вообще-то, собирается при помощи Sims 4 Studio. Что такое S4Tools? Я без понятия! Не говоря уже о том, что это тривиальный технический шаг, который никому в голову не придет описывать.
В ответе автор, apocrate_arto, пояснил, что неправильно написал название инструмента, и привел ссылку на репозиторий S4 Shell Tools от SimsonianLibrary. Действительно, это альтернативный способ управлять package файлами, но встает вопрос: зачем? Для этого мода нет никакой нужды проводить специфичные манипуляции – любой моддер использовал бы Студию.
Fixed loading issues related to older versions
Простой и банальный вопрос: какие еще проблемы загрузки мода на старых версиях? Что вообще это значит?
И нет, ответ автора об ошибке в скрипте странный, потому что так просто никто не выражается.
Roles and Restrictions: Offer the ability to limit control to certain types of Sims (e.g., only adult Sims, or exclude Sims linked to active quests)
Совершенно непонятно, о каких ограничениях ролей идет речь, если мод не об этом, а об управлении НПС. Ответ автора – вишенка на торте.
???))) То есть ничего не сделано, но зачем-то про это написан целый абзац. Вот уж да, недопонимание!
Action History: Save the last actions performed by a controlled Sim (e.g., skills learned, relationships changed) for narrative continuity
Эмм?)) Все, кто ранее пользовались этим или альтернативным модом, и так в курсе, что весь прогресс управляемых симов сохраняется. Куда ему деться вообще? И автор признается, что это тоже неправда ;D
Dynamic Loading: Load scripts only when the mod is actively in use to reduce the impact on load times
Один из самых бредовых пунктов. Динамическая загрузка или нет зависит от движка игры. И у движка симса вся загрузка статическая. Более того, как мы вообще собираемся брать под управление НПС, если мод якобы не загружается, если мы им еще не пользуемся? х)
Бро, какое еще "Я запутался"? В твоем коде нет ничего, что хотя бы могло намекнуть на попытку это сделать.
Community Translations: Facilitate the addition of translations via an external file (e.g., JSON) to support more languages without modifying the main code.
Другой бредовый пункт. Любой переводчик игры знает, что переводы содержатся в package файлах и могут загружаться только так. Никаким JSON-ом не получится ничего подгрузить. И да, в коде нет даже попытки это сделать. Как и самого JSON-а в архиве обновленного мода. Что автор также вынужден признать.
Allow control of multiple Sims simultaneously (e.g., create coordinated crowd behaviors on any terrain by assigning interactions to a configurable percentage of nearby Sims).
Это называется "Сформировать группу", действие из базовой игры, ага. Автор, конечно, опять все перепутал и в бугалтерии зарплату выдали Лупе за Пупу.
Collaboration with other mods: Develop cross-functional features, such as controlling Sims via the MCCC interface.
КЦ уже позволяет это делать. Никакой коллаборации тоже нет. Автор уже сдался это комментировать.
Ну хорошо, а что в итоге было сделано?
По заявлению автора, сделано следующее:
- Проблема импорта никак не связана с версией 1.121 – это сугубо технические изменения в Питоне, на котором пишутся все скрипты.
- Спасибо за подтверждение, что взаимодействия мода рабочие. Мы-то это сами не сделали за годы использования мода ;D
- Вообще-то краш мода происходил не от переключения между контролируемыми симами, а при попытке контролировать сотрудников малого бизнеса. Это подтверждено автором оригинала, и указано на сайте Scarlet's Realm
Отдельно меня позабавила меркантильность автора обновления, который любезно предложил оформить платную подписку на его Патреон в ответ на просьбу опубликовать его скрипт (поскольку это все выглядит ну очень подозрительно).
Если что, ts4script файлы – это обычные архивы с зашифрованными Python скриптами, которые легко расшифровать при помощи несложного кода. Чем я, будучи программным инженером в том числе на Python, и воспользовалась. Не волнуйтесь, с моими пояснениями вам не придется учить программирование, чтобы все понять.
Что было сделано на самом деле
Итак, при помощи среды разработки я открыла окно сравнения двух скриптов. Здесь не так уж и много изменений.
В первом файле просто изменен номер версии мода, ничего особенного. В _init_.py нового модуля /patches просто пояснение, зачем он нужен.
Вам не нужно вникать в смысл файлов ниже, достаточно лишь прочитать мои пояснения о том, что было изменено.
canys_interactions.py
Небольшой фикс параметра функции, чтобы не задавать его строгий тип для специфичных случаев. Это нормально.
main.py
Бесполезный импорт модуля. Он здесь не используется.
Небольшая обертка вызова функции, которая внедряет изменения в основной код игры. В целом полезная вещь на случай возникновения ошибок, но такие вещи в любом случае логгирует КЦ. Так что это не фикс сам по себе.
integrity.py
Очень забавная вещь. Автор обновления заявлял о поддержке других модов, но вообще-то это было сделано автором оригинала на будущее. В обновлении же код наоборот потерт, лол.
interactions_service.py
В пэкедже зачем-то был изменен айди одного действия, поэтому в скрипте он тоже изменился. Опять же, не вижу смысла вообще трогать пэкедж.
Просто добавлены допоплнительные логи. Как будто бы это должно быть хорошо, но все тоже не так радужно. Поясню чуть позже.
selection_group.py
По заявлению автора, якобы импорт typing_extensions вместо typing блокировал инжект взаимодействий мода. Это не так, и мы все с вами это знаем.
Ниже он просто стер служебный код для определения пути, по которому лежит скрипт. Он не используется (скорее всего, автором оригинала тоже было сделано на будущее), так что это окей.
game_events.py
Убран импорт класса Any. Без понятия зачем, он поддерживается Питоном 3.8, на котором написана игра.
logger.py
Я упала, когда увидела эти изменения. Зачем было вообще вводить какие-то новые логи, если автор обновления, по-видимому, не разбирается в том, как поддерживать класс логгера и просто отключил его, лол. Ему, кстати, в комментариях об этом написал уже другой моддер.
serialize.py
Бессмысленные изменения. Функция pop удаляет из структуры элемент. Ровно как и del.
Зачем-то стертый комментарий-документация метода.
Убрана строгая типизация параметра функции. Ничего критичного не было, но окей. Просто этот файл вообще не было смысла трогать.
small_business_income_data.py
Новый файл, который фиксит ошибку при попытке управления сотрудниками малого бизнеса. Единственный реально полезный код.
Так что же происходит?
Что мы имеем? Один фикс, парочка минорных улучшений, и странный, не работающий и попросту бесполезный код. Даже если вы не программист, не кажется ли вам, что это, мягко говоря, некачественный скрипт?
Озвучу, к чему я веду. Этот человек не разбирается в программировании. Скорее всего, он новичок, активно использующий нейронки для написания кода.
Вы можете сказать, что в этом такого. А я поясню. Если в 2022 году ГПТ 3.0 действительно помогал писать код быстрее и эффективнее, то с годами всем корпорациям стало очевидно, что он убыточен, и они стали делать его тупее, поднимая при этом ценник. Все еще не помогает, кстати. Если не верите, вышло уже множество исследований (как пример), доказывающих, что применение нейронок при написании кода ухудшает его качество и тратит больше времени, чем если бы человек не прибегал к этому инструменту.
Так, помимо всего прочего, нам всем уже известно о том, как сильно галлюцинируют эти модели. И нет, это не баг. Это неизбежное свойство их архитектуры. Я не только программный инженер, но еще и разбираюсь в машинном обучении и нейронных сетях, если чо.
P.S. Это не значит, что нейронки вообще зло. Просто корпорации вырастили раковую опухоль и огромный пузырь из, вообще-то, полезного научного и математического помощника, который работал действительно хорошо.
Но что самое ужасное: ни у одной нейронки нет никаких данных о документации и коде симса. Вообще. С ними попросту нельзя писать скрипты, есть огромные шансы все поломать, даже если код вообще запустится. Нужно учиться программировать и общаться с другими моддерами, читать гайды от комьюнити.
Именно поэтому в скриптах так много нелогичных моментов и бессмысленных изменений. В единственном полезном куске кода сделаны примитивнейшие проверки, которые напишет любой программист без каких-либо нейронок.
Выдает автора не только код, но и описание мода. Там галлюцинация на галлюцинации, а человек даже не замечает их. Да и его ответы на критику очевидно прогонялись через нейронку. Думаю, стиль ответа бросается в глаза.
Помимо всего прочего, это единственный проект автора, так еще и сразу выложенный на CurseForge (а это приносит доход) заодно с быстро организованным платным Патреоном. Мое мнение: человек просто решил срубить денег на популярном моде.
К чему эта статья?
Безусловно, я не собираюсь обвинять никого из вас в том, что вы могли порадоваться и скачать обновление. Нужно разбираться в программировании или же внимательно читать комментарии. Но это нормально доверять креаторам. Ненормально этим доверием пользоваться. Это пока что худший скрипт, что я видела.
Да, фикс для сотрудников малого бизнеса должен работать. Да, вы, скорее всего, не столкнетесь с новыми ошибками (поскольку остальные изменения бессмысленные и нерабочие). Но я призываю вас подумать: а точно ли вы хотите пользоваться модом, автор которого позволяет себе выпускать настолько некачественный контент, совершенно в нем не разбираясь? Где гарантии, что его следующий апдейт не наспавнит вам ошибки?
Более того, автор отключил нормальные логи. Вам будет практически нереально найти проблему и сообщить о ней. Удобно, но не для вас.
Да, я посчитала необходимым не просто дополнить критику комментаторов, но и сделать технический обзор. Я не хочу быть голословной, поэтому наглядно показала качество кода.
Что я могу вам посоветовать? Поставьте Sim Control Hub от Dquiet и ничем не рискуйте. Там отлично написанный код, который я тщательно изучила. Ошибка с путешествием при наличии контролируемых НПС исправлена Ichnusa. Автор написал самостоятельно хороший фикс. Замните им скрипт из оригинального мода – и будет вам счастье.
Это очередной пример того, как необходимо относиться критически ко всему, что попадает к вам в папку.
Надеюсь, эта статья оказалась для вас полезна!
Больше моддерских инсайдов в моем ТГК ;)