The Sims 2
Занятие 2: Создаем собственную карьеру
Вероятно, лишь один человек из тысячи страстно поглощен своей работой как таковой. Разница только в том, что про мужчину скажут: «Он увлечен своим делом», а про женщину: «Она какая-то странная».
Дороти Сейерз
В предыдущем номере мы познакомились с замечательным редактором пакетов для The Sims 2, научились влиять на отношения между персонажами и воскрешать мертвых. Однако все наши эксперименты ограничивались одним отдельно взятым компьютером и не выходили за его пределы.
Теперь возьмем задачу посложнее. Наша цель — создать объект, который можно было бы оформить в виде самостоятельного файла, чтобы дать его друзьям или выложить в интернет. Пусть это будет какая-нибудь новая, одиннадцатая карьера для ваших подопечных.
Помимо советов и рекомендаций я сопровождаю урок всеми промежуточными файлами и конечным продуктом, чтобы вы могли сверять с ними результаты на каждом шаге. Приготовьтесь — мы устроим наших симов на работу в... судебно-медицинскую экспертизу.
План действий
Итак, что же мы будем делать? Для начала, чтобы не создавать неизвестный объект «с нуля», мы возьмем одну из существующих карьер — извлечем все ее файлы из пакета объектов и сохраним в каком-нибудь отдельном месте. Затем скомпилируем эти файлы в один пакет, чтобы с ними легче было работать. Дальше предстоит наименее ответственная, но зато самая интересная процедура: придумывание собственной карьеры, составление расписаний и требований к умениям, рисование картинок-логотипов и т.п. В конце мы попробуем установить получившийся пакет в игру и посмотреть, что же у нас получилось.
И еще одна оговорка. Редактирование карьеры в бинарном виде — та еще задача. В принципе, она вполне решаема, но зачем — когда к редактору SimPE существует замечательный плагин, созданный специально для работы с карьерами?
- На компакте:
- редактор 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, призванный не допустить конфликта с другими игровыми объектами! Кроме того, вы можете отправить свой пакет в редакцию ЛКИ — мне (stager@lki.ru) или Татьяне Оболенской (post@lki.ru), чтобы он попал на компакт-диск журнала в одном из ближайших номеров. Желаю удачи и прекрасного творческого настроения!
Назад