Устройство трехмерного объекта
Презрев системный подход, в этот раз мы начнем с конца. То есть сначала рассмотрим то, что мы хотим получить в итоге, а потом пойдем назад и выясним, как добиться желаемого результата.
Итак, из чего состоит готовый трехмерный объект? В первую очередь, это
каркасная модель (mesh), по сути — объемный многогранник. Тут самое время освежить в памяти школьный курс стереометрии, вспомнив такие понятия, как
вершина (vertex),
ребро (edge) и
грань (face). Именно с помощью этих примитивов сейчас строятся трехмерные модели в компьютерной графике, если не принимать в расчет экзотику вроде поверхностей Безье.
Каркасная модель состоит из определенного числа граней. Грань образуется тремя вершинами (да-да, та самая школьная стереометрия — три точки, задающие плоскость), то есть представляет собой треугольник. Логично, что много мелких граней позволяют построить более гладкий объект, чем несколько крупных. Кроме того, в природе существуют специальные алгоритмы, сглаживающие острые углы, не увеличивая число граней, но работают они на стадии просчета изображения, и на самом процессе моделирования не отражаются.
Далее, объекту назначается
материал. Это не то же самое, что
текстура, хотя понятия в чем-то близки. Представьте себе, что мы взяли нашу каркасную модель и принялись раскрашивать ее. Но у «краски» есть не только цвет, но и степень прозрачности, коэффициент отражения света, шероховатость — иначе говоря, еще какое-то число параметров, влияющих на итоговый внешний вид объекта. При этом для раскрашивания мы не пользуемся кистью, а натягиваем на каркасную модель уже готовую «шкурку», обладающую всеми этими разнообразные свойствами. Представили? Тогда продолжим. Помимо свойств, присущих отдельным точкам поверхности, есть и глобальные, влияющие на весь объект целиком. В частности — поведение света внутри него, блики, способ сглаживания поверхности и т.п. Есть? Тогда самое время подвести итог. Проделав все вышеозначенные манипуляции, мы сделали ничто иное, как назначили объекту
материал, превративший его из геометрической абстракции во что-то более близкое человеческому глазу.
А что же такое
текстура? Сейчас и с ней разберемся. Как я уже упоминал, свойства материала в каждой точке могут быть совершенно разными. К примеру, цвет. Берем какую-нибудь картинку (самую обычную плоскую картинку — bmp, jpg) и указываем, что именно она-то и «раскрасит» наш материал. Иначе говоря, станет
текстурой цвета. Аналогично поступают и с другими поверхностными характеристиками материала, но там уже вступают в силу некоторые условности. Допустим, чтобы назначить текстуру для степени зеркальности, мы берем некую растровую картинку, считая более яркий цвет более отражающим, и наоборот. А синий это цвет, или оливковый — уже не важно. Итак,
текстура — это двумерное изображение, накладываемое на объект и задающее какое-либо его поверхностное свойство. А
материал состоит из набора текстур, а также серии параметров, одинаковых для всего объекта целиком. В этом и состоит разница между ними.
Это важно: путаница с материалами и текстурами возникла неспроста. Цветовая текстура — самая важная, и уж точно наиболее заметная составляющая материала. Во многих играх разработчики только ею и ограничиваются.
Чего же не хватает, чтобы закончить трехмерный объект, для которого уже задана каркасная модель и назначен материал? Естественно, пока ни слова не было сказано о способе, которым мы наложили текстуры. Ведь текстура может огибать объект с разных сторон, или растягиваться, как бы проецируясь на него с плоского экрана. Иначе говоря, осталось указать, по какому принципу точки текстур «улягутся» на грани каркасной модели. Этот процесс называется заданием
текстурных координат (Mapping).
Часто используется такой прием: модель разворачивается на плоскость, совмещается с картинкой текстуры, а потом снова сворачивается. Если вы хоть раз в жизни делали выкройки одежды, или клеили из картона объемные фигурки, то с легкостью представите, как выглядит развернутый на плоскость объект.
Объекты в The Sims 2
Пора нам понемногу переходить от «трехмерной графики вообще» к объектам The Sims 2. По своему устройству они гораздо сложнее, чем просто 3D-модели. Казалось бы, почему так? Ведь из всего богатства современной графики любая игра использует лишь какую-то часть? Верно. Но также верно и то, что игровые объекты — это не только модели.
Помимо каркасов, материалов и текстур, объект «пианино» хранит проигрываемые мелодии, пункты меню пользователя, сценарии поведения симов и еще уйму других, чисто игровых характеристик. И ни в какой 3D Studio мы не сможем задать, какие именно блюда готовятся в духовке или сколько стоит шкаф. Модель — важная часть объекта, но не весь объект. Важно об этом помнить.
Создание или изменение?
Знаете, а ведь мы не будем создавать новые объекты. Только не пугайтесь — сейчас мы договоримся о терминах, и все встанет на свои места. Как я уже упоминал, любой предмет в игре — штука настолько комплексная, что создавать его с нуля — задача малореальная, или уж, по крайней мере, чрезвычайно трудоемкая. Но это и не нужно. В 99% случаев нас устроит компромиссный вариант: взять уже готовый предмет и подменить какие-то его части, знать не желая обо всем остальном, что в него входит.
Допустим, вы хотите сделать своим подопечным... диван. Ну, так в чем проблема? Берем уже готовый диван, делаем копию и просто заменяем в ней исходную 3d-модель на свою. Затем назначаем ему собственное название, описание и цену для каталога — что еще нужно? Фактически, мы создали новый предмет. И нам не потребовалось прописывать для него длинные алгоритмы поведенческих функций (BHAV), или изыскивать способ объяснить симам, что на него можно сесть или лечь. Эта информация досталась новому дивану в наследство от предшественника, а мы лишь изменили внешний вид.
Итак, давайте договоримся. Даже когда речь заходит о создании объекта, не имеется в виду его разработка «с чистого листа». Вместо этого выбирается самый подходящий аналог из игры, копируется и изменяется в соответствии с личным пониманием прекрасного.
Клонирование или перекраска?
В отличие от первой части игры, The Sims 2 предлагает два варианта создания новых объектов. А все потому, что при выборе предмета из каталога мы часто видим не одну позицию, а длинную линейку вещей, отличающихся только цветом. У них — одна каркасная модель, но разные текстуры.
У нас есть два способа создать предмет:
- Перекраска (Recolor). Новый объект при таком способе — даже не совсем объект, а комплект текстур, изменяющих вид поверхности, не меняя формы. Он не добавит даже новой позиции в каталог, став просто еще одним из вариантов раскраски существующего предмета.
- Дублирование (Cloning). А вот здесь новый объект будет абсолютно полноценным и самостоятельным. Вы можете переименовать его, установить другую цену, переделать форму: словом, все, что придет в голову.
Какой из вариантов лучше? Зависит от задачи. Если вы хотите сделать кресло с клетчатой обивкой вместо однотонной красной — подойдет перекраска. Действительно, зачем дублировать 99% информации, которую вы все равно не будете менять? А вот если душа просит журнальный столик в форме шестеренки, придется сделать полную копию и всласть надругаться над каркасной моделью.
Если говорить о распространенности вышеозначенных способов, лидером несомненно будет перекраска. Хотя бы потому, что файлы получаются компактнее, да и возни меньше. Но мы не будем отдавать предпочтение какому-либо из вариантов, а рассмотрим оба.
Копия или замена?
Если мы создаем клон предмета и больше ничего не меняем, при установке такого пакета он заменит в игре своего предшественника. Это связано с тем, что каждый объект в игре имеет уникальный GUID (Group Identifier), а у наших «близнецов» он будет совпадать. При этом, естественно, установленный в игру пакет оказывается приоритетнее оригинального. Впрочем, в этом нет ничего необратимого — как только мы удалим его, все вернется на круги своя.
Чтобы сделать полноценный дубль, придется назначить нашему предмету новый GUID, тем самым, отделив его от изначального прототипа. Чуть дальше я в двух словах напомню, как это сделать.
А пока — извечный вопрос: что лучше? Создать отдельную копию, или же замещать оригинальный предмет? Отвечу, как и прежде: смотря, что вы хотите получить в итоге. Но не стоит злоупотреблять заменами — в большинстве случаев лучше просто расширить выбор, нежели лишать пользователя вещей, которые были у него ранее.
Пожалуй, единственный разумный случай, когда может быть верно обратное — предметы из общественных заведений (Community Lots). В одном из первых экспериментов я решил поменять ассортимент журнальной продукции на книжных полках магазинов, заполнив их свежими номерами ЛКИ. Не перестраивая все магазины в игре, я просто сделал Recolor-пакет для полки с журналами, оставив прежний GUID. Теперь, куда бы я ни зашел, глаз радуют знакомые обложки.
Инструментарий
Помните мультфильм «Вокруг света за 80 дней»? Приступая к описанию программ, не могу отделаться от наваждения: «
Дай секунду подумать... Нам понадобятся: портрет мистера Фикса, сифон, четыре дротика...». Итак:
- 3D Studio Max. Или другой, аналогичный продукт, например — Maya. Несмотря на то, что в статье я исхожу из использования 3DS Max, думаю, вы без труда сможете сделать то же самое другими средствами.
- Corel Photo Paint. Или Adobe Photoshop, или любой другой растровый редактор, поддерживающий формат PNG.
- SimPE. Новая версия популярного (и, по сути, единственного) редактора пакетов The Sims 2 . Позволяет распаковывать файлы из ресурсных архивов, объединять в другие пакеты, а также поддерживает модули расширения для удобной работы с типичными данными игры. Кстати, большинство этих модулей входит в поставку.
- MilkShape 3D. Простенькая программа для работы с трехмерной графикой. Основное ее назначение в рамках нашей задачи — преобразовывать форматы файлов и точно совмещать объекты.
- Color Options Enabler. Небольшое дополнение к игре, разрешающее перекрашивание (recolor) тех объектов, для которых не была предусмотрена эта опция.
- Mech Tool. Небольшая программка для преобразования файлов 3D-моделей (*.obj) во внутренний формат *.simpe. Не используется в рамках данной статьи, но может быть полезна в более сложных случаях.
- UV Mapper. Отдельная простая утилита для задания текстурных координат. В рамках данной статьи также не используется, хотя, в принципе, может упростить этот нелегкий процесс.
На диске: все вышеперечисленные программы, кроме первых двух позиций, а также все промежуточные файлы, иллюстрирующие процесс создания нового стола для The Sims 2.
Создаем собственный предмет
Сейчас мы по шагам пройдем все этапы создания нового предмета. Напомню только, что исходные материалы, то есть объекты для клонирования и последующей переделки, мы будем брать из файла
objects.package, который лежит в каталоге
The Sims 2\TSData\Res\Objects, а устанавливаются новые пакеты путем простого копирования их в папку
My Documents\EA Games\The Sims 2\Downloads.
Шаг 1. Рождение клона
Программа: SimPE
Важные этапы:
Для создания клона я выбрал один из самых простых объектов.
- Клонирование объекта
- Переименование модели
- Получение уникального GUID
- Обновление MMATs
- Сохранение пакета
Для примера возьмем и сделаем копию одного из самых простеньких столиков —
Crazy 8 Table. Запускаем SimPE, открываем objects.package и запускаем
Object Workshop из пункта меню
Tools -> Object Creation. Дождавшись загрузки, выбираем закладку
Grouped Objects, открываем раздел
Surfaces и находим наш стол (у меня он был на 25-й позиции сверху). Теперь нужно его скопировать.
Заметьте, именно скопировать, а не перекрасить — поэтому переключитесь на закладку
Clone Settings и нажмите
Start, установив галочки, как показано на рисунке. Далее вы сможете дать новое имя объекту. Учтите — это не то название, которое игрок увидит в каталоге, а чисто техническое. Оно вполне может звучать примерно так: tableendoctagonal-[Stager-22.9.2005-21430]. Сменив имя, нажмите кнопку
Update, чтобы все файлы, из которых состоит новая модель, получили новые имена, а также установите галочку
University Ready v2, чтобы обеспечить объекту совместимость с The Sims 2: University. По кнопке
OK программа создаст новый пакет, куда заархивирует все файлы, имеющие отношение к объекту.
Объект должен быть совместим с Sims 2: University. Что мы только что сделали? Мы создали копию, которая при установке будет замещать прежний объект в игре. Можете проверить. А чтобы окончательно отделить новый объект от предшественника, сделав их независимыми, надо назначить нашему объекту новый GUID.
В дереве
Resource Tree выбираем тип данных
Object Data (OBJD), переходим на единственный файл этого типа и смотрим, что показывает
Plugin View. В верхней строчке вы, вероятнее всего, увидите, что текущий GUID равен
0x8C26E7AD. Его надо поменять на уникальный.
Это важно:обратите внимание на пункт
Get GUID справа от окошка ввода. Там обязательно нужно зарегистрироваться в качестве нового разработчика предметов для The Sims 2, если еще не сделали этого ранее, а затем получать гарантированно уникальные номера для своих объектов. Для этого потребуется соединение с интернетом. Не пренебрегайте этим шагом, иначе ваши предметы могут конфликтовать с другими объектами игры.
Регистрирую еще один объект, получая уникальный GUID. Это очень важно. Установив новый GUID, нажмите на
Update MMATs and commit, чтобы восстановить ссылки, нарушенные при смене номера. Готово? Тогда спешу поздравить — первый шаг к созданию нового объекта успешно пройден. Сохраните пакет.
На заметку: команды Commit и Save — не одно и то же. Commit означает просто «принять изменения», а Save — записать их на диск. Не забывайте делать и первое, и второе.
Шаг 2. Экспорт моделей и текстур
Программа: SimPE
Важные этапы:- Экспорт модели
- Экспорт текстуры
Объект для экспорта выбран среди теней. Здесь все будет относительно просто. Не выходя из SimPE, переходим на тип ресурсов
Geometric Data Container (GMDC) и выбираем единственный, хотелось бы надеяться, файл в этой категории. В режиме
Plugin View мы видим список всех каркасных моделей, из которых состоит объект. Но из них нам нужны не все, а одна или две: остальные пункты списка — это тени, отбрасываемые предметом в разные стороны. Сделать правильный выбор несложно: все названия, заканчивающиеся на shadow, можно смело игнорировать. Кроме того, посмотрите на примечания: если в объекте сотни граней и тысячи вершин, это определенно «наш клиент», а если всего две-три — это явная тень.
На заметку: кнопка
Preview позволит увидеть внешний вид выделенных объектов и убедиться, что туда не попало ничего лишнего. Если вы видите белый каркас без текстуры, возможно, вы забыли обновить MMATs во время предыдущего шага. Кстати, иногда Preview не работает — в таком случае попробуйте перезагрузить SimPE.
Выделив галочками только значащие объекты (в нашем случае такой только один —
wood), нажмите
Export и укажите тип файла —
Maya Object (*.obj). Именно этот файл ляжет в основу новой модели.
Осталась текстура. Выбираем тип ресурсов
Texture Image (TXTR) и видим в списке несколько файлов. Тут не составит труда на глаз определить, где собственно текстура, а где тень — все картинки сразу показываются в режиме
Plugin View. Обратите внимание, что в файле хранится несколько копий одной и той же текстуры разных размеров: нам, конечно, нужна самая крупная, внизу списка. Нажимаем кнопку
Export (прямо над окном предварительного просмотра), и сохраняем файл в формате PNG.
Шаг 3. Немного креатива
Программа: 3D Studio Max
Важные этапы:- Построение каркасной модели
- Рисование новой текстуры
- Создание материала
- Наложение текстурных координат (Unwrap UVW)
Теперь мы ненадолго отложим в сторону SimPE и зайдем с другой стороны — сделаем предмет, который предполагается впоследствии добавить в игру. Выбор программ — на ваше усмотрение: лично я пользовался вышеуказанными двумя, но кому-то, вероятно, больше придутся по душе Maya и Adobe Photoshop. Это не принципиально.
Этот стол — пока еще только 3D-модель, никак не связанная с игрой. Давайте по порядку — что же нам предстоит сделать. Для начала — создать в 3D Studio Max модель, пусть даже достаточно простенькую. Если вы хотите использовать несколько текстур (к примеру — деревянный стул с шелковой обивкой), модель может состоять из нескольких объектов (сам стул и «шелковая» подушечка). Наконец, создать материал, накладывающий на объект текстуру, присвоить его объектам и задать координаты текстур.
Это важно:автор далек от мысли научить вас всем премудростям 3D-моделирования — для этого есть специальная литература. Речь сейчас пойдет только о некоторых особенностях и типичных ошибках, а вернее — граблях, оставивших пару шишек на чувствительном авторском лбу.
Первые «грабли» — размер и ориентация трехмерной модели. Помните, что ваши подопечные — сродни лилипутам, и стол, занимающий одну клетку, в пропорциях 3D Studio Max имеет в диаметре около 2 сантиметров. Гораздо лучше сразу сделать похожий размер, чем потом со скрипом зубовным масштабировать объект в сотню раз. С ориентацией тоже интересно: в окне
Front открывается вид сверху на крышку стола. Если вы построите модель так, чтобы любоваться этим видом, как полагается — в окне
Top, потом ее придется переворачивать.
Вторые «грабли» — число вершин и граней. Помните, что объекты в игре достаточно небольшие, но их может быть много. Нет, я, конечно, понимаю, что сфера из десяти тысяч треугольников выглядит более гладкой, чем из двух сотен, но разницы все равно никто не увидит, зато лишние полигоны затормозят и без того не слишком реактивную игру.
Единственное, что нам нужно от материала — координаты текстуры. Наконец, третьи, заключительные «грабли» — материалы. Забудьте про богатейшие библиотеки материалов: мы не перенесем их в игру. Материал потребуется только для того, чтобы назначить ему текстуру и указать ее координаты. Этот момент, пожалуй, надо расписать подробнее.
Итак, мы сделали модель. Теперь нужно проделать с каждым объектом следующую манипуляцию: щелкнуть правой кнопкой и выбрать пункт
Convert To -> ... Editable Mech. Далее, пора создать материал с текстурой. Новички часто не могут найти кнопку вызова
Material Editor — подсказываю: она на верхней панели кнопок, нужно только промотать ее, схватив мышкой и потянув влево. К слову, удивительно неудобно.
Перед нами — окно материалов. Берем первый же серый шарик, открываем вкладку
Maps и назначаем текстуру для
Diffuse Color — допустим, ту самую картинку, которую мы экспортировали в шаге 2, сохранив ее в формате PNG.
Это важно:конечно же, можно нарисовать свою текстуру. Более того, так и следует поступить, как только вы посмотрите на развернутую модель и решите, как именно вы будете ее раскрашивать. Главное, что должно остаться от оригинала — его размеры.
Размещаем крышку стола в строгом соответствии с картинкой. Материал готов. Назначьте его каждому объекту модели и приготовьтесь — сейчас будет один из самых сложных моментов:
задание текстурных координат.
Выбираем любой объект, переходим на закладку редактирования (
Modify), из выпадающего списка
Modifier List выбираем
Unwrap UVW и нажимаем на кнопку
Edit в свойствах модификатора, открывшихся ниже. Появляется окно, где выбранный объект разложен на плоскость, как картонная коробочка перед склеиванием. Все эти детали нужно переместить и изменить в размерах так, чтобы они легли на нужные участки текстуры. Иначе говоря, картинка будет «наклеена» на грани объекта так, как вы это сейчас укажете. Сразу советую включить галочку
Select Elements в группе
Selection Modes.
Посмотрев на детали, которые получились при расклеивании, вы вполне можете отменить этот шаг, нарисовать новую картинку в любом графическом редакторе, заново назначить ее материалу и вернуться к заданию текстурных координат. Но учтите — на картинке придется уместить текстуры для всех объектов, составляющих модель.
На заметку: для создания хорошей текстуры иногда полезно сделать временную картинку, просто разбив ее на разноцветные области. Добившись, чтобы столешница была окрашена строго в один цвет, а ножки — в другой, замените цветные прямоугольники «смысловыми» изображениями.
Когда все элементы наконец-то улягутся на свои места, повторите аналогичную процедуру с каждым из оставшихся объектов. Для контроля за результатом время от времени можете делать Render модели.
Шаг 4. Объединение и перенос
Программа: 3D Studio Max
Важные этапы:- Collapse All
- Объединение объектов
- Экспорт модели в формат Autodesk 3D Studio
Подведем промежуточный итог. У нас есть готовая модель в 3D Studio Max, а каждому объекту назначен материал и указаны текстурные координаты — словом, на предварительном просмотре предмет смотрится именно так, как вы хотите видеть его в игре. Кроме того, у нас есть готовая текстура в виде картинки.
Теперь нужно применить к объектам все сделанные изменения. Щелкаем по любому пункту в списке модификаторов и выбираем
Collapse All. Разумеется, это нужно проделать со всеми объектами модели.
Следующий этап — объединение объектов в один (в принципе, это можно было сделать и раньше, но назначать текстурные координаты нескольким простым объектам гораздо легче, чем одному сложному). Находим кнопку
Attach List в разделе
Geometry (окно внизу от списка модификаторов), выбираем все объекты списка и соединяем в один. Наш предмет готов к... нет, до добавления в игру еще далеко, он всего лишь готов к экспорту —
File -> Export -> 3D Studio (*.3DS).
На этом 3D Studio Max уже можно закрыть, и запустить другую, гораздо более простую программу —
Milkshape 3D (есть на нашем компакте).
Шаг 5. Совмещение и экспорт
Программа: MilkShape 3D
Важные этапы:- Импорт оригинального объекта
- Импорт новой модели
- Изменение пропорций и положения
- Удаление оригинального объекта и материала
- Переименование
- Экспорт в Wavefront OBJ
Теперь задача состоит в том, чтобы адаптировать объект для показа в игре. В частности — совместить пропорции и ориентацию с оригинальным объектом. Вы ведь еще не потеряли obj-файл, который получился у вас при экспорте из SimPE? Прекрасно, вот его-то и загружаем —
File -> Import -> Wavefront OBJ. И сразу вслед за ним вставляем новый объект, только что сделанный в 3DS Max:
File -> Import -> Autodesk 3DS.
В рабочей области MilkShape — два предмета, уже совмещенных по размерам. На рабочей области программы — два стола. Старый ни в коем случае не трогайте — он служит эталоном правильных размеров и положения. А вот новый надо выровнять по нему, пользуясь инструментами
Select,
Move,
Rotate и
Scale. Если вы скажете, что это не очень удобно, я соглашусь без малейших колебаний, но в противном случае мы получим стол, лежащий на боку, провалившийся под землю или неразличимый невооруженным глазом. Особенное внимание уделяйте совмещению верха и низа, чтобы стол не парил над полом, а лежащая на нем книга не проваливалась вглубь.
Когда координаты обоих предметов совпадают, пора избавляться от всего лишнего. Удалите материал (
Materials -> Delete), доставшийся в наследство от 3DStudio Max. От него здесь все равно никакого толку, ведь координаты текстур — это свойства каркасной модели. Далее, удалите старый объект (
Groups -> Delete), а новому назначьте старое имя (
Groups -> Rename). К примеру, в моем случае объект назывался
wood.
Снова проведем инвентаризацию: у нас есть новый объект, носящий имя старого и повторяющий его по размерам и положению в пространстве. Вот и прекрасно. Сохраним наше творение в формате *.obj (
File -> Export -> Wavefront OBJ). Уж дайте ему какое-нибудь красивое имя.
Шаг 6. Импорт моделей и текстур
Программа: SimPE
Важные этапы:- Импорт модели с заменой одноименного объекта
- Импорт текстуры
- Обновление всех размеров
Импортируемая модель заменит одноименную.
Обновить текстуру для всех размеров можно автоматически. Переходим в
SimPE, где у нас давно пылится клонированный объект. Вновь переходим на тип ресурсов
Geometric Data Container (GMDC) и выбираем единственный файл из списка. В режиме
Plugin View нажимаем Import и выбираем файл, которому мы давали красивое имя при экспорте в OBJ. Тут важно указать, что импортируемую модель надо не добавить, а заменить ею другую, одноименную (
Croup Settings -> Action: Replace). Затем —
Commit. Кстати, как только сделаете импорт, можно будет насладиться видом своего творения — правда, пока еще только в предварительном просмотре.
Осталось перенести в пакет и новую текстуру. Только, умоляю, не путайте ее с материалом: речь идет о простой PNG-картинке, которую мы сначала распаковали из пакета, а потом перерисовали для нового объекта.
Выбираем тип ресурсов
Texture Image (TXTR), становимся на прежнюю строчку в списке и находим кнопку
Import в
Plugin View и подгружаем файл с новым изображением. И последний штрих — щелчком правой кнопкой по окну предварительного просмотра вызываем меню, где даем команду
Update All Sizes. Решающий
Commit... Сохраняем пакет под новым именем. Пора любоваться результатами.
На заметку: чтобы придать объекту завершенность, имеет смысл дать ему новое название и описание для каталога. Эта информация хранится в группе
Catalog Description (CTSS).
Шаг 7. Торжество или разочарование
Программа: The Sims 2
Важные этапы:- Подготовка к худшему
- Установка пакета
- Запуск игры
Подготовиться к худшему действительно стоит — очень вероятно, что вы пропустили какой-нибудь важный шаг, и вместо заслуженной гордости вас ждет огорчение. Надеюсь, вас утешит, что автору этой статьи тоже неоднократно доводилось хлопать себя по лбу, вспоминая всех чертей, симов и даже в сердцах нелестно отзываться о сотрудниках фирмы Maxis. Бывает, чего уж греха таить.
Но я отвлекся... Копируем наш пакет в папку Downloads, запускаем игру и переходим в Buy Mode, где ищем симпатичный столик со звездочкой, обозначающей, что перед нами — пользовательский предмет.
Новый стол органично вписался в интерьер.
откуда: lki.ru