Мы всю жизнь бродим вокруг своей могилы.
Франсуа Рене де Шатобриан
Как вы успели убедиться, для The Sims 2 существует множество неофициальных расширений, созданных любителями для таких же любителей. А можем ли мы с вами делать нечто подобное? Разумеется, да.
По моему опыту, всегда соблюдается правило: чем качественнее написана игра (равно как и любая другая программа), тем легче вносить в нее изменения, поддерживать и модифицировать ее. Sims 2 — пример добротной, кропотливой работы на всех уровнях, поэтому экспериментировать с ней — одно удовольствие.
Что нам понадобится? Во-первых — голова на плечах, но я нисколько не сомневаюсь, что у читателей ЛКИ в этом вопросе полный порядок. Затем — некоторое количество специализированных программ. В первую очередь это — редактор пакетов SimPE, чтобы распаковывать файлы, вносить в них изменения и запаковывать обратно. Наконец — несколько рабочих примеров, разобравшись с которыми, вы без труда сможете продолжать самостоятельные изыскания. С одним из таких примеров я и познакомлю вас в этой статье.
В следующем номере: создаем собственную карьеру
Знакомство с жертвой
Чтобы успешно проводить бесчеловечные эксперименты, с жертвой, то бишь с The Sims 2, нужно обстоятельно познакомиться. В первую очередь — разобраться, как игра хранит свои данные.
Что-то подобное представляет собой пакет *.package. |
Главный и единственный тип файлов, с которым мы будем иметь дело на данном этапе — это Package, другими словами, — «пакет» или «ресурс». Позволю себе немного рассказать о том, что это такое. Предположим, у нас есть какая-то куча файлов различных типов: картинки, тексты, музыка, трехмерные модели и т.п. Все они как-то используются в игре — рисуются на заставке, выводятся в диалогах, проигрываются на заднем плане, шастают взад-вперед... Для того, чтобы обеспечить подобными данными игру класса The Sims 2, этих файлов нужно много. Чудовищно много. Соответственно, чтобы каталог игры не содержал миллионы мелких файлов, по сумме занимающих много гигабайт дискового пространства, их архивируют и «сшивают» вместе.
Получается один огромный файл, в котором хранится вперемешку все. В заголовке размещается описание содержимого, но не для нас — для самой программы. Когда она считает нужным, например, нарисовать картинку, то просто открывает эту «упаковку», читает заголовок и находит в архиве нужный файл с изображением, а после — разархивирует его и показывает на экране.
В принципе, наверное, можно было бы упорядочивать файлы по типам. В одном хранить все картинки, в другом — музыку, в третьем — тексты. Но разработчики пошли немного другим путем и упорядочили пакеты по области применения. Так, в пакете вроде N001_Neighborhood.package лежит все, что касается поселения Pleasant View — и списки семей, и расположение домиков, и история с географией. Каждый пакет имеет определенное назначение.
Следовательно, нам нужно знать две вещи: в каких пакетах искать интересующую нас информацию, и — какими средствами ее изменять. Начнем с первого.
Каталоги и файлы
Все полезные для нас файлы, можно разделить на две части: данные самой игры и данные пользователя. Первые отвечают за все, что не связано с действиями игрока, поэтому не меняются с момента инсталляции. Вторые, напротив, только для того и созданы, чтобы быть измененными, так как фиксируют все достижения игрока.
В зависимости от того, что мы хотим в итоге получить, мы будем модифицировать ту или другую группу пакетов. Для работы с собственными поселениями, домиками, семьями и отдельными персонажами — пользовательские данные. Для создания или изменения объектов, поведения — данные самой игры. Радует тот факт, что упомянутые группы пакетов находятся далеко друг от друга.
Игровые ресурсы ищите в TSData\Res\ относительно каталога, в который вы установили игру (например, C:\Program Files\The Sims 2\TSData\Res\).
Сохраненные игры, как я уже упоминал в предыдущих статьях, лежат в папке EA Games\The Sims 2\ относительно папки «Мои документы» (например, C:\Documents and Settings\Stager\Мои документы\EA Games\The Sims 2\).
Для первого раза мы не будем трогать глобальные данные, поэтому сейчас я расскажу только о каталоге сохраненных игр. Вот, на что стоит обратить внимание:
EA Games\The Sims 2
Cameras. Текстовые файлы — настройки камеры для различных режимов.
Collections. Коллекции предметов (один *.package-файл — одна коллекция).
Config. Стартовые настройки игры для текущего пользователя.
Downloads. Пакеты с дополнительными объектами игры.
Logs. Информация об имевших место ошибках.
Neighborhoods. Внимание — это оно. Здесь живут все симы вместе с семьями, домиками и городскими улицами, упакованные в файлы *.package.
PackagedLots. Пакеты с отдельно сохраненными домиками в транспортируемом формате *.Sims2Package.
SavedSims. Отдельные персонажи, сохраненные в виде «свободно конвертируемых» пакетов *.Sims2Package.
Остальные каталоги, надеюсь, не понадобятся вам в любом обозримом будущем. Заглянем в Neighborhoods. Несложно заметить, что число вложенных каталогов равно количеству городов, плюс Tutorial. Их смысл очевиден: N001 — Pleasant View, N002 — Strange Town, N003 — Verona Ville, а остальные, если они есть — пользовательские.
На заметку: вот, кстати, исчерпывающий ответ на вопрос, какие файлы надо сохранять на случай переноса игры на другой компьютер. Теперь вы можете не копировать все подряд, а только то, что нужно.
Зайдем в любой каталог, например — в самый первый. Обратите внимание на картинку 001_Neighborhood.png. Открыв ее, убедитесь, что мы не ошиблись — перед нами действительно городок Pleasant View. Все, мы на месте. Осталось совсем вкратце остановиться и «обозреть окрестности».
N001\Characters\. Каталог симов, каждый — в своем собственном файле. Не удивляйтесь, что их так много. Кроме вашей семьи и соседей, тут еще масса «технических» персонажей — горничных, полицейских, социальных работников и случайных прохожих.
N001\Lots\. Каталог домиков, или, как они здесь называются, лотов.
N001\001_Neighborhood.package. Файл — описание города.
Осмотр оружия
Жертва найдена, обследована и признана пригодной к употреблению. Теперь пора познакомиться с инструментом, перед которым она трепещет, с ужасом ожидая своей участи. Это будет SimPE — замечательный редактор пакетов, созданный программистом-фанатом по имени Quaxi и в двух словах описанный в обзоре программ для The Sims 2.
Это важно: перед инсталляцией редактора SimPE с нашего компакт-диска обязательно ознакомьтесь с инструкцией по установке — там есть своя специфика, без учета которой программа вообще не будет запускаться.
Запускаем редактор и видим... ну да, а чего вы ожидали? Дружелюбного интерфейса? Ну уж нет. Несмотря на невзрачный вид, эта программа способна творить чудеса при умелом использовании. Откроем файл-описание города Pleasant View (мы только что его находили: Мои документы\EA Games\The Sims 2\Neighborhoods\N001\001_Neighborhood.package). Что же мы видим?
Слева в окне редактора — список типов файлов. Учтите: то, что я говорил о картинках, музыке и текстах — всего лишь пример, на самом деле типов данных намного больше и они другие. Вот Sim Description — описание персонажа, Neighborhood/Memory -список воспоминаний, Family Information — информация о семье и так далее. Все это — типы файлов, лежащих в пакете, и ничто иное.
Щелкнув по любому из них, в окне справа (Packed Files) мы получим список файлов этого типа. Так, несложно убедиться, что все воспоминания хранятся в одном файле, а персонажи — в отдельных, по файлу на каждого, равно как и семьи.
Проба пера: Умения, профессия
Перейдем от слов к делу и попытаемся найти среди этой каши букв и цифр что-нибудь знакомое: допустим — персонажа. Пусть это будет Daniel Pleasant, известный зеленоглазый франт с рыжей бородкой, проживающий в домике 215 Sim Lane. Открываем Plugins -> Search Packed Files..., переходим на закладку Sims и набираем его полное имя. Search!
Ищем Даниеля, нашли Даниеля. |
В качестве результата поиска мы получили одну строчку, содержащую четыре группы шестнадцатеричных цифр. Запомните самую последнюю — 00000011. Можете сразу нажать Open, но так вы не запомните, где его искать на будущее. Поэтому закрываем окно поиска, выбираем тип файла — Sim Description, а в таблице ищем значение 0x00000011 по колонке Instance. Числа идут в порядке возрастания, поэтому достаточно промотать таблицу, чтобы глазами быстро найти нужную строчку. Щелкаем по ней, а потом переходим на закладку Plugin View. Узнаете? Он самый — Daniel Pleasant.
Для нас он — «номер одиннадцать». |
На заметку: посмотрите на заголовок (белый текст на темно-сером фоне). На самом деле, персонаж хранится не в главном файле города, а в отдельном пакете — N001_User00004.package в каталоге Characters. В городе содержится лишь ссылка на него, но умный редактор проследил путь и открыл нужный файл.
Первые успехи не могут не радовать. |
Теперь убедимся, что программа может не только искать, но и изменять значения. Давайте научим Даниеля, например, готовить, а также поменяем ему профессию, сделав из спортсмена повара.
Не покидая Plugin View, перейдем на вложенную закладку Skills (Умения). Сдвинем ползунок Cooking на максимум: так, чтобы в окошке справа появилось число 1000. Ну, или введите это число вручную, как вам удобнее. Закончив, нажмите кнопку Commit. Если она не видна, прокрутите окно, она должна быть где-то в правом нижнем углу. Готово? Продолжаем.
Отправимся теперь на закладку Character и в списке Career выберем Culinary. Подтвердим изменения кнопкой Commit, а затем сохраним их командой File -> Save. Вроде бы должно сработать. Закрываем редактор, запускаем игру... И ведь точно — повар.
Вторая проба пера: Двоеженство
Теперь возьмем задачу посложнее: сделаем что-нибудь такое, чего в игре добиться абсолютно невозможно. Например, в компенсацию за надругательство над спортивными успехами Даниеля, сделаем из него сверхчеловека, помирим с дочерью и... сделаем горничную Kaylynn Langerak его второй женой.
Пойдем по порядку. Закроем игру, вновь запустим SimPE и найдем в списке Sim Description нашего «одиннадцатого». Нажав кнопку max на закладке Interests, сделаем из него любопытнейшего эрудита. Только уберем обратно Man Preference в область нулевых значений — нечего ему мужиками интересоваться. Далее — на закладке Character поднимем все личностные показатели до максимума, как изначальные (Genetic), так и нынешние. Не забывайте после изменений нажимать Commit, иначе все изменения аннулируются, если вы перейдете на другого персонажа.
Такого в игре не сделать. Посмотрите на колечки. |
Перейдем к связям — закладка Relations. Большой список имен — это все персонажи, с которыми когда-либо имел дело данный сим. Если вы вдруг захотите добавить в круг общения нового человека, выберите его в списке слева и нажмите add Relation -->. Но мы собирались изменять уже существующие, поэтому найдите в списке Lilith Pleasant.
Да... Отношения у них, мягко говоря, так себе. Ни враги, ни друзья — просто члены одной семьи: отец и дочь. Что ж, разрядим обстановку. Верхняя группа цифр и «галочек» — How this Sim likes ... — показывает отношение Даниеля к дочери, нижняя — How ... likes this Sim — дочери к нему. Выставляем во всех окошках «100», а также «галочки» Friends и Buddies. Перед тем, как выбирать в списке контактов следующего сима, нажмите синюю кнопку commit relation, иначе пропадет часть работы. Готово.
Это важно: если при нажатии на Save вы получаете множество ошибок — весьма вероятно, что вы забыли закрыть игру перед тем, как редактировать файлы. Другая возможная причина — запущено несколько копий SimPE, где открыт один и тот же файл.
Еще мы что-то говорили о двоеженстве — так пожалуйста. Находим в том же списке контактов Kaylynn Langerak и смотрим на отношения. Все на месте: и дружба, и любовь, но как-то не очень официально — непорядок. Поставим две встречные галочки Married, а в выпадающих списках вида родственной связи обоим выставим Spouses (Супруги). Как обычно, не забываем нажать все требуемые кнопки Commit, а затем сохраняем исправленный пакет. Запустив игру, вы убедитесь, что у Даниеля теперь две жены, а новый брак не привел к разводу. А заглянув на закладку интересов и личных черт — увидите, что остальные наши труды тоже не пропали даром.
Восставший из мертвых
Вы уже вполне готовы для того, чтобы провести самый смелый эксперимент, на грани жизни и смерти. Если опасаетесь за результат — не переживайте, вы ведь сделали резервную копию. Как? Еще не сделали? Тогда немедленно сохраните все файлы города в каком-нибудь безопасном месте, да и на будущее не отказывайте себе в этом удовольствии. Когда резервная копия есть, можно делать все, что заблагорассудится. Например — убивать.
Итак, долго ли, коротко ли, но смерть пришла и за Даниелем. Он предстал перед Богом прямо на лужайке возле своего дома, в самом расцвете сил, а над его могилой горько заплакала безутешная вдова.
На заметку: как именно убить персонажа, в общем-то, не имеет значения. Можете заморить его голодом, утопить в бассейне или придумать любой другой способ. Лично я воспользовался специальным предметом Voodoo Bottle с опцией Kill by Hunger. Еще один вариант — производить эксперименты над «готовым» мертвецом.
Первый шаг: Привидение
Итак, труп есть. Будем реанимировать. Как всегда, выходим из игры и запускаем SimPE. Находим нашего «покойничка» в списке симов и изучаем — что изменилось? Вот несколько отличий, сразу бросающихся в глаза:
Среди общих параметров пропал номер семьи (был — 0x0002, стал — 0x0000).
На закладке Character включилась «галочка» Is Ghost (Привидение)
На закладке Relations полностью пропали отношения все с женой — Mary-Sue Pleasant. Кстати, это не коснулось второй жены, которую мы ему сделали. На такой состав семьи игра оказалась не рассчитана.
В качестве первых мер по воскрешению надо вернуть все эти параметры к изначальному виду. Если вы не помните номер семьи, найдите другого члена семейства (хоть ту же Mary-Sue) и подсмотрите его в профиле.
Далее, уберите галочку Is Ghost, подправьте отношения. Commit, Save — само собой разумеется. Но это еще далеко не все — если вы сейчас запустите игру, ничего полезного не произойдет.
Второй шаг: Назад в семью
Следующим шагом Даниеля на пути с того света станет окончательный возврат в лоно семьи. Оказывается, недостаточно указать персонажу, в какой семье он состоит. Нужно еще найти список семей, отыскать там семейство Pleasant и заново добавить усопшего в его состав. Это два совершенно независимых действия.
Среди типов файлов выбираем Family Information, а в списке записей находим семью с номером 2 (то есть — ищем число 0x00000002 в колонке Instance). Семей в природе меньше, чем отдельных персонажей, так что найти нетрудно — у меня нужный файл был третьим в списке.
Как видите, под этой фамилией на данный момент числятся только трое: Mary-Sue, Lilith и Angela. Выберите в огромном алфавитном списке Даниеля (Daniel Pleasant) и нажмите <-- add Sim. Добавился. Теперь Commit, Save, и поехали дальше.
Третий шаг: Memento mori
Кто бы мог подумать, что воспоминание о собственной смерти — серьезное препятствие, мешающее воскреснуть?! Но оказывается, что это так. Пока Даниель помнит, что он мертв, ему не жить. Следовательно — будем чистить память.
Переходим на тип Neighborhood/Memory и выбираем единственный файл из списка. Подозреваете, что программа зависла? Нет — она думает. Это действительно не быстрый процесс, придется подождать порядка 15-20 секунд.
Когда загрузка наконец завершится, в левом окне поищите Даниеля. К сожалению — только вручную, но вам поможет фотография и полное имя. Нашли? Переключайтесь в окно Memories — Daniel Pleasant и смело проматывайте список в самый конец в поисках последней строчки: [invisible] Token — I am dead. Удалите эту строчку (delete, Commit).
Для красоты можете добавить ему воспоминание о том, что он умирал. Чувствуете разницу? Вместо «я мертв» в памяти будет мысль «я умер тогда-то», что никак не противоречит дальнейшей жизни. Нажмите add, в списках Event Owner и Subject выберите Daniel Pleasant, а напротив GUID поставьте Memory: $Subject Died. Cохраняйте и готовьтесь к финальному этапу.
Четвертый шаг: Дракула
Загрузите игру. Выбрав домик Pleasant вы увидите всех членов семьи, включая воскресшего. Однако на семейном коллаже, сопровождающем загрузку, его пока не будет.
Войдя в дом, вы встретите здорового, крепкого и вполне живого Даниеля. Но на том месте, где его настигла смерть, по-прежнему будет стоять могила, принадлежащая — угадайте кому?. «Daniel Pleasant... он был хорошим человеком, но время разрушает все...». Да, это его могила. И безутешная вдова (которая теперь — снова жена) будет по-прежнему рыдать на ней. Можете даже подойти и вдвоем помянуть покойного...
История одних похорон... |
Это интересно: первая реакция игрока — продать могилу. Зачем она живому человеку? Не спешите. Стоит убрать ее, и Даниель мгновенно растает в воздухе, как не бывало. В остальном — он абсолютно нормальный сим: ест, спит, может иметь детей, работать, любить и мыть посуду. Но смерть не прошла для него бесследно — он привязан к своей могиле, как граф Дракула.
Сразу после того, как вы сохраните игру, Даниель снова появится на семейном коллаже и больше никуда с него не денется. Если хотите, чтобы родственники перестали сокрушаться о безвременной кончине живого человека, почистите им память — ведь теперь вы это умеете. Хотя я бы так делать не стал. Ведь The Sims 2 — это симулятор жизни, поэтому интереснее оставить все как есть. Пусть помнят и скорбят.
Это важно: если смерть наступила от старости — в ходе воскрешения дополнительно продлите персонажу жизнь: Remaining Days в основных параметрах и Age Duration на закладке Extended.
Заключение
Надеюсь, этой короткой статьи хватило на то, чтобы продемонстрировать вам всю мощь редактора пакетов, показать некоторые основные приемы работы с ним и вдохновить на дальнейшие эксперименты. Может быть, кому-то придутся впору советы по воскрешению, благодаря которым погибшие, но горячо любимые симы вернутся к нормальной жизни. Как бы там ни было, я уверен, что вы обязательно попробуете свои силы и сделаете несколько первых шагов — ведь в следующем номере мы уже вплотную приступим к созданию объектов и попробуем сделать еще одну дополнительную карьеру, которой пока нет нигде в мире.
А чтобы месяц ожидания не пропал даром, предлагаю вам небольшое «домашнее задание», чтобы на досуге поломать голову и еще чуть-чуть попрактиковаться. Попробуйте «отвязать» воскресшего сима от его могилы двумя способами:
Вообще убрать могилу средствами SimPE
Оставить могилу, но позволить продавать ее без риска для жизни
Даю подсказку: пропадание Даниеля связано с тем, что его уникальный ID совпадает с ID могилы, а игра при продаже удаляет все элементы, объединенные этим кодом.