Вероятно, лишь один человек из тысячи страстно поглощен своей работой как таковой. Разница только в том, что про мужчину скажут: «Он увлечен своим делом», а про женщину: «Она какая-то странная».
Дороти Сейерз
В предыдущем номере мы познакомились с замечательным редактором пакетов для The Sims 2, научились влиять на отношения между персонажами и воскрешать мертвых. Однако все наши эксперименты ограничивались одним отдельно взятым компьютером и не выходили за его пределы.
Теперь возьмем задачу посложнее. Наша цель — создать объект, который можно было бы оформить в виде самостоятельного файла, чтобы дать его друзьям или выложить в интернет. Пусть это будет какая-нибудь новая, одиннадцатая карьера для ваших подопечных.
Помимо советов и рекомендаций я сопровождаю урок всеми промежуточными файлами и конечным продуктом, чтобы вы могли сверять с ними результаты на каждом шаге. Приготовьтесь — мы устроим наших симов на работу в... судебно-медицинскую экспертизу.
План действий
Итак, что же мы будем делать? Для начала, чтобы не создавать неизвестный объект «с нуля», мы возьмем одну из существующих карьер — извлечем все ее файлы из пакета объектов и сохраним в каком-нибудь отдельном месте. Затем скомпилируем эти файлы в один пакет, чтобы с ними легче было работать. Дальше предстоит наименее ответственная, но зато самая интересная процедура: придумывание собственной карьеры, составление расписаний и требований к умениям, рисование картинок-логотипов и т.п. В конце мы попробуем установить получившийся пакет в игру и посмотреть, что же у нас получилось.
И еще одна оговорка. Редактирование карьеры в бинарном виде — та еще задача. В принципе, она вполне решаема, но зачем — когда к редактору SimPE существует замечательный плагин, созданный специально для работы с карьерами?
Дублируем объект
Где лежат объекты игры? Правильно — в пакете objects. Запустите SimPE и найдите этот файл в каталоге TSData\Res\Objects, если считать от каталога с игрой (например, C:\Program Files\The Sims 2).
Это важно: никогда не редактируйте сам файл objects.package! Если нужно внести какое-то изменение, всегда извлекайте из него нужный объект, подправляйте как душе угодно, а потом размещайте в виде package-файла в каталоге EA Games\The Sims 2\Downloads, расположенном в «Моих документах».
Шаг 1. Извлечение нужных файлов
Итак, вы открыли файл objects.package. Среди всех упакованных файлов нужно найти те, которые относятся к какой-нибудь одной карьере, она и послужит основой для создания своей собственной. Есть простой и надежный способ найти эти файлы — нужно использовать фильтр по идентификатору группы.
Идентификатор группы — это число, которое объединяет упакованные файлы разных типов, приписывая их одному объекту. У всех файлов, которые отвечают за выбранную карьеру, этот идентификатор будет совпадать.
Чтобы увидеть в списке только упакованные файлы из одной группы, нужно указать идентификатор этой группы в строке ввода над таблицей, которая озаглавлена «Group Filter». В принципе, вы можете выбрать идентификатор из большого списка, но проще ввести цифры вручную.
Идентификаторы групп для всех карьер | ||
Карьера |
Взрослая |
Детская |
Athletic | 0x7FC82329 | 0x7FBDC3E8 |
Business | 0x7F1575B2 | 0x7F83EF68 |
Criminal | 0x7F5AA90E | 0x7FCC33D4 |
Culinary | 0x7FF8F9B6 | 0x7F6E636C |
Law Enforcement | 0x7F05D903 | 0x7F3969B0 |
Medicine | 0x7F0E5D6B | 0x7F98C7B1 |
Military | 0x7F4C28B2 | 0x7FDAB268 |
Politics | 0x7F162387 | 0x7F80B95D |
Science | 0x7F7201DA | 0x7F1611D4 |
Slacker | 0x7F2FD049 | 0x7F4BC047 |
Сами значения вы можете взять из таблицы «Идентификаторы групп для всех карьер», а можете найти самостоятельно.
Возьмем за основу карьеру врача (группа 0x7F0E5D6B) и установим фильтр по этой группе. Если перед включением фильтра вы перейдете, например, на тип файлов «Object Data», то увидите, как сразу после фильтрации в таблице останется только одна строчка. Мы добились желаемого результата — интересующие нас файлы отделены от остальных.
Теперь надо вынести их из пакета. В списке типов (Filetypes) перейдите на самый верхний пункт (прочерк), чтобы в таблице показывались все упакованные файлы, удовлетворяющие фильтру, вне зависимости от типа. Выберите команду File -> Extract all..., а затем укажите какой-нибудь временный каталог. Если программа сообщила «Extracted 104 Files», значит, вы все сделали правильно.
Из всего множества файлов выделяем нужные. |
Шаг 2. Создание пакета
Все файлы, относящиеся к указанной группе, вынесены из пакета, распакованы и сохранены на жестком диске. От objects.package нам уже ничего не нужно — закрываем его, а вместо него открываем файл описания пакета в том каталоге, куда мы только что сохранили — страшно подумать — 104 файла. Для этого нажимаем File -> Open, в качестве типа выбираем Package Description (package.xml), переходим в наш временный каталог и открываем единственный обнаруженный файл.
Вот так выглядит распакованный набор. |
Особенность файла package.xml состоит в том, что он хранит описания множества распакованных файлов, лежащих рядом. При его открытии фактически открываются именно они.
Для упрощения дальнейшей работы нам понадобится создать новый пакет, в который будут запакованы эти файлы. Если в первом шаге мы извлекли множество отдельных файлов, то сейчас — с точностью до наоборот: мы снова запакуем их, но уже не в общий пакет, а в отдельный.
Выбирайте пункт File -> Save As... — и придумывайте имя. Желательно, чтобы оно было «говорящим», то есть давало бы пользователю какую-то информацию о содержимом пакета. В нашем случае это ForensicMedicineCareer.package.
Шаг 3. Получение уникального GUID
Очень важный шаг — присвоение объекту нового номера. Каждый объект в игре имеет уникальный номер — так называемый GUID. К примеру, для выбранной карьеры он пока равен 0x0C7761FD. Другого объекта с таким номером по понятным причинам в игре быть не должно. Следовательно, если мы хотим создать дополнительную карьеру, потребуется придумать ему новый номер.
Как сделать так, чтобы номер действительно был уникальным? Напрашивается простое и неправильное решение — взять это число из головы, а потом поискать его в objects.package. Если не нашли — значит, номер уникален и им можно воспользоваться. Так вот нет. Предположим, вы придумали замечательное число — 0х00000001, убедились в отсутствии такого GUID в игре, создали объект и выложили его в интернет. Тем временем другой любитель самоделок выложил в сеть свое творение и присвоил ему этот же номер. Угадайте, что будет, когда игрок скачает эти два объекта и попробует установить оба? Ничего хорошего.
Приготовьтесь, сейчас я расскажу правильное решение. Заходите на http://sims.ambertation.de/reguser.php и выбирайте пункт Register — так вы зарегистрируетесь в качестве разработчика дополнительных объектов The Sims 2. Покончив с логинами и паролями, заходите в собственное пользовательское меню (User Menu) и выбирайте пункт Register New GUID. Введите название объекта и получите собственный идентификатор (в моем случае — 0xC1766002). Теперь его можно спокойно использовать.
Только что я зарегистрировал новый объект и получил уникальный GUID. |
Это важно: стопроцентной гарантии, что номер будет уникальным, не дает даже такой способ. Указанный сайт поддерживает Quaxi — создатель редактора SimPE. Он гарантирует, что ваш номер не будет предоставлен другим пользователям. Но всегда найдутся те, кто пренебрежет услугами сайта и возьмет идентификатор из головы. Кроме того, в следующих версиях The Sims 2 разработчики наверняка добавят новые объекты. Вероятность совпадения номеров ничтожно мала, но все же есть.
Покончив с регистрацией и получением номера, продолжим наши упражнения. Задача — установить нашему объекту новый номер, тем самым превратив его в самостоятельную сущность игры. Вернемся в SimPE и выберем Object Data в перечне типов файлов. В таблице появилась одна-единственная строчка — она-то нам и нужна.
Это важно: когда в будущем вы будете дублировать другие объекты, возможно, в списке файлов Object Data появится несколько строк. В таком случае придется заменить все идентификаторы.
В списке нижних закладок выбираем Plugin View и видим там строку ввода под названием GUID. Вводим туда уникальный идентификатор, полученный на сайте (я ввожу 0xC1766002). Только не перепутайте его с идентификатором, который присвоили вам как пользователю, — нужен именно идентификатор объекта, полученный в пункте Register New GUID. Замечательно. Нажимаем синюю кнопку — надпись commit и наслаждаемся сообщением Changes were comitted.
Это интересно: знание английского языка — не самая сильная сторона создателя SimPE. Сама программа реализована на высшем уровне, но вот тексты-пояснения — увы. То Handel напишет вместо Handle, то в слове committed букву потеряет. Вот она — оборотная сторона узкоспециализированного западного образования.
Отвязываем все файлы от группы. |
Итак, номер есть. Теперь еще надо «отвязать» наш объект от старой группы. В списке типов выбираем «прочерк», чтобы увидеть в таблице все 104 файла. Выбираем самую верхнюю строчку, а внизу переходим на закладку Packed File (вторая слева). Строка ввода Group содержит уже знакомое нам число 0x7F0E5D6B — именно его мы вводили для фильтрации. Замените его на 0xFFFFFFFF, а затем нажмите change all listed справа от строки ввода. Нажимаем commit, а затем — File -> Save. Если сейчас поместить получившийся файл в каталог Downloads, то у медицинской карьеры появится самостоятельный «близнец». Но мы так делать не будем. Ведь наша конечная цель — создать другую, особую карьеру.
Редактирование карьеры
Пора напрячь творческую мысль и придумать действительно новую карьеру. Это долгий процесс, включающий в себя разработку списка должностей и расписания, выставление заработной платы, придумывание собственных текстов для «карточек шансов» и даже рисование картинок.
Для работы нам потребуется специальный плагин, о котором я уже упоминал. Когда он установлен, а пакет с карьерой открыт, в меню Plugins должен появиться пункт Career Editor.
Шаг 4. Параметры карьеры
Должности
Начнем с того, чтобы указать название карьеры и придумать список должностей. Раз уж мы решили посвятить жизнь судебной медицине, название будет Forensic Medicine, а упомянутый список обещает быть следующим:
Вахтер (Janitor) Санитар (Corps Man) Лаборант (Laboratory Assistant) Судебно-медицинский эксперт (Forensic Expert) Зав. отделением СМЭ (Head of a Department) Заместитель начальника бюро СМЭ (Deputy Bureau Chief) Начальник бюро (Bureau Chief ) Заместитель главного эксперта (Deputy Head Expert) Главный эксперт страны (Head Expert) Доктор Смерть (Doctor Death)Вводим эти строки на первой закладке, имея в виду, что для каждой должности есть два названия: для мужчин и для женщин. Так, к примеру, вместо Corps Man во второй графе стоит написать Corps Woman.
На заметку: вы можете изменить число ступеней карьеры, например, сделать 8 или 15 должностей в рамках одной профессии. Для этого в меню «Levels» есть пункты «Insert Level» и «Remove Level».
Под каждым названием приводится краткое описание должности. Именно этот текст игра показывает при повышении по службе. Описание для мужчин и для женщин сделано также отдельно, но редактор карьер предоставляет возможность скопировать его, не набирая повторно и не пользуясь буфером обмена.
На этой же закладке можно указать, в какой одежде и каким транспортом персонаж будет отправляться на службу. Весь список одежды я описать не возьмусь — увидите сами. Учтите, что все названия костюмов, начинающиеся с «NPC» — это наряды компьютерных персонажей (от словосочетания Non-Playing Character). В такой одежде ходят воры, няни, борцы с насекомыми и пожарники. В принципе ничто не мешает вам использовать один из них.
Это интересно: Доктору Смерти я назначил костюм Reaper NoLei — именно так выглядит смерть, приходящая по душу погибших персонажей. А транспортное средство этого «доктора» — Captain Hero Flyaway. Его суть в том, что персонаж улетает на работу своим ходом, как Captain Hero с вершины полицейской карьеры.
Расписание и условия работы
Вторая закладка редактора карьер содержит график работы, уровень ежедневной заработной платы и условия работы на каждой должности. Смысл колонок в таблице достаточно очевиден.
Lvl. Ступенька карьеры (обычно — от 1 до 10). Start. Время начала рабочего дня по 24-часовой системе. Имейте в виду, что транспорт прибывает раньше этого срока. Hours. Длительность работы. Реальное время отсутствия персонажа будет больше, так как дорога отбирает некоторое время. End. Автоматически вычисляемое время окончания рабочего дня. Wages. Ежедневная заработная плата. Sun, Mon, ... , Sat. Работа в эти дни недели. True — рабочий день, False — выходной.Редактирование происходит точно так же, как и на предыдущей закладке: вы выбираете в таблице нужную строчку, а потом на нижней левой панели устанавливаете расписание и зарплату.
Обратите внимание на вторую группу чисел, находящихся внизу справа — Motives. Фактически, это условия, в которых предстоит работать персонажу. Положительные числа означают, что параметр на работе повышается, отрицательные — падает. Можно добиться, чтобы персонаж приходил с работы сытым, веселым и выспавшимся.
Это интересно: оказывается, параметров самочувствия несколько больше, чем показано в игре. К примеру, жажда (Thirst) и голод (Hunger) существуют по отдельности друг от друга, а социальная коммуникация разделена на общественную (Public) и внутрисемейную (Family). Так, в большинстве профессий работа приносит радость общения с коллегами, но заставляет скучать по семье.
Рабочий день «доктора». |
Вернемся к Доктору Смерти — уж очень интересный тип получается. По нашим настройкам, он будет ходить на работу каждый день на один час, зарабатывая по 3 тысячи. Работа это весьма грязная и утомительная, но обратно он будет возвращаться сытым и неимоверно счастливым (см. рисунок).
Продвижение по службе
Третья закладка (Promotion) отвечает за условия, необходимые для продвижения по карьерной лестнице. Смысл всех колонок совершенно очевиден: какие уровни умений и сколько друзей семьи необходимо, чтобы занять определенную должность. Выбрав уровень, настройте требования к персонажу в нижней части окна. Никаких других особенностей здесь нет.
Карточки шансов
Что такое «карточки шансов» (Chance Cards)? Вспомните, когда в игре у вас появлялся вопрос: дескать, ваш сим на работе вляпался в историю, как ему лучше поступить? И два варианта ответов, каждый из которых может оказаться проигрышным или выигрышным. В одном случае персонаж теряет деньги, умения, должности, а то и работу как таковую, в другом — получает повышения, навыки или премии. Это и есть «карточки шансов».
Оказывается, что на каждую должность каждой карьеры есть по одной такой лотерейной карточке. То есть 100 штук на всю игру. Разумеется, их тоже можно настроить — для этого-то и предназначена четвертая, последняя закладка редактора карьер. Главная проблема там — тексты: их много. Никакие технические вопросы не сравнятся с необходимостью придумать и напечатать само описание задачи, а также позитивные и негативные исходы для обоих вариантов выбора. И так — по каждой из десяти должностей в карьере.
Кроме текста, настраивается вероятность события, а также численные эквиваленты каждого исхода: как изменяются деньги, умения и должность. Собственно, все.
Покончив с параметрами карьеры, закрывайте окно плагина — он больше не понадобится. Изменения применяются автоматически при закрытии окна, однако в главном окне редактора SimPE все равно придется нажать File -> Save, чтобы записать их на диск.
Шаг 5. Логотип
Это достаточно непростой момент — и вот почему. Картинки-логотипы профессии хранятся в запакованном виде. В ходе распаковки редактор SimPE дает им расширение JPG, но оно не соответствует их фактическому формату, содержащему, в частности, альфа-канал. Что-то я увлекся... Итак, практическая сторона вопроса.
Перейдя на тип файлов jpg/tga/png Image в редакторе SimPE, вы увидите в таблице пять файлов. Это набор картинок, содержащих все варианты начертания логотипа, которые встречаются в игре. Выберите первую строчку из списка, щелкните правой кнопкой и во всплывающем меню выберите Extract... Создайте какой-нибудь каталог и сохраните в него картинку. Готово? Теперь проделайте то же самое с оставшимися четырьмя строчками таблицы.
В итоге мы получаем двойной набор файлов — на каждую картинку приходится файл, собственно содержащий изображение (расширение *.jpg), и файл описания (расширение *.jpg.xml). XML-файл создал редактор, чтобы иметь возможность импортировать картинку обратно, если это потребуется.
Обратите внимание: помимо изображения есть еще и маска — альфа-канал. |
Теперь о самом файле с изображением. Несмотря на знакомое расширение, его реальный формат — Extended TGA. Отличие состоит в том, что помимо самого растрового изображения (столько-то на столько-то точек разных цветов), там хранится еще своеобразная параллельная картинка, определяющая прозрачность в каждой точке — альфа-канал. Его можно представить себе как рисунок в оттенках серого, где черный цвет полностью прозрачен, а белый — полностью нет. Разумеется, со всеми промежуточными значениями. При помощи альфа-канала игра решает, в какой степени будет прозрачна та или иная область логотипа.
Итак, мы сохранили файлы с картинками и можем подправить их на свой вкус с помощью любого мощного графического пакета — PhotoShop или Corel PhotoPaint. В частности — вместо западной эмблемы «скорой помощи» нарисовать собственный логотип. Постарайтесь не исказить оригинальную палитру, иначе картинки в игре будут смотреться аляповато.
Нарисовав само изображение, не забудьте про канал прозрачности. Пикселям невидимого фона должен соответствовать черный цвет альфа-канала. Если по ошибке сохранить файл, сняв отметку прозрачности, то логотип в игре будет показан на лиловом фоне.
Это важно: если вы работаете в Corel PhotoPaint, канал прозрачности показывается в виде маски-выделения. Последние версии пакета рисуют маску оттенками красного, наложенными поверх изображения. Помните: непрозрачными на картинке окажутся те части рисунка, которые включены в маску, то есть — не накрытые красным. Остальные видны не будут.
Отредактировав все картинки, нужно перенести их обратно в наш пакет. Возвращаемся в SimPE, становимся на первую строчку списка и из контекстного меню выбираем Replace.... Осталось указать подправленный файл первой картинки и нажать Open. Аналогично поступаем с остальными четырьмя, силясь не перепутать их местами. Переключив режим просмотра в Plugin View, вы сможете убедиться, что требуемые изменения сделаны. Не забудьте сохранить пакет!
Эпический финал
Доктор Смерть во всей красе. |
Теперь у нас есть файл ForensicMedicineCareer.package (или как там вы назвали свой проект?), готовый к установке. Убедившись, что игра не запущена, скопируйте его в Мои документы\EA Games\The Sims 2\Downloads, и смело стартуйте The Sims 2. Пусть кто-нибудь из персонажей посидит за компьютером в поисках работы. Если вы все сделали правильно, то рано или поздно он найдет вакантное место в только что созданной профессиональной отрасли, а слева будет красоваться придуманный вами логотип. Поздравляю!
Теперь вы можете не только играть самостоятельно, но и выложить в Сеть продукт своих трудов, чтобы поделиться им с широкой общественностью. Ведь не зря же вы регистрировались на сайте в качестве разработчика и получали уникальный GUID, призванный не допустить конфликта с другими игровыми объектами!