ВАЖНО! Моя цель не показать своё умение красиво и емко выражать мысли на бумаге/экранах, а донести информацию для тех, кому она может пригодится, поэтому просьба не зацикливаться на моей грамматике/стилистике. Если уж что-то совсем режет глаз – пишите, поправлю.
Как известно, после Oblivion c его TES IV Construction Set, разработчики из Bethesda выпустили Fallout 3 и редактор для него под названием GECK (Garden of Eden Creation Kit). Принципиальных отличий от CS он не имеет, но в наличии есть ряд полезных функций, которые, вероятно, будут добавлены и в Creation Kit для Skyrim. Вот я и решил немного рассказать об этих нововведениях, чтобы скрасить время до выхода редактора, а заодно и просветить тех, кто GECK в глаза не видел.
Рис. 1. Fallout New Vegas - Garden of Eden Creation Kit v 1.5
Не новое, но актуальное
Для начала я опишу несколько полезных возможностей, которые присутствуют и в CS, но не все о них знают.
Продолжаем работу с файлом
Почему-то в тех туториалах для CS которые я видел, этот важный момент упускался.
Классическая ситуация: мы внесли какие-то изменения в игру, сохранили их в виде esp-файла и вышли из редактора. Вернувшись к работе вновь, возникает вопрос, как продолжить работу с тем же esp-файлом? Это делается очень просто: как обычно, после запуска редактора жмём File->Data…, затем кликаем один раз на файл, работу с которым хотим продолжить, и жмём кнопку Set As Active File (При этом статус изменится на Active File), ну а потом OK.
Рис. 2. Делаем файл мода активным
Привязка к сетке
Если хотите быстро и без швов (на сколько позволяет редактор) собрать локацию в интерьерной ячейке, вам просто необходима эта опция.
Начнём с настроек. Нажмите кнопку Preferences.
Рис. 3. Расположение кнопки Preferences.
Рис. 4. Preferences – Movement. Привязка к сетке.
Перед нами первая вкладка Preferences, под названием Movement. Именно на ней и находятся нужные нам настройки. Первое поле, которое при желании можно изменить - Movement Speed (то, с какой скоростью можно будет двигать объекты). Не вижу причин менять выставленное по умолчанию значение, но как и со всеми коэффициентами – 1.0 – значение по умолчанию, 1.1 – на 10% быстрее, 0,9 – на 10% медленнее и далее по аналогии.
Куда более полезное поле – Snap to Grid. Поставив галочку, мы активируем, собственно, привязку к сетке, а в поле правее можно ввести то количество игровых единиц, на которые будет сдвигаться объект. Оптимальные значения следующие: 64, 128, 256. По аналогии можно выставлять и значения меньше/больше (8, 16, 32, …, 512, 1024), но в большинстве случаев удобными являются упомянутые выше три.
Так же полезным может быть поле Snap to Reference. Нажав Select Snap Reference, мы можем выбрать относительно какого объекта в ячейке будет осуществляться привязка.
Привязка к углу
Так же полезная опция, позволяющая вращать предмет на заданное количество единиц (градусов).
Рис. 5. Preferences – Movement. Привязка к углу.
По аналогии с привязкой к сетке, мы можем настроить скорость вращения (только зачем?) и в поле Snap To Angle активировать саму привязку и выбрать на какое количество единиц (градусов) будет смещаться объект во время вращения. Оптимальные значения – 45, 90.
Поле Snap to Reference актуально и для этой опции.
Включить/выключить привязку к сетке и/или углу можно так же используя следующие кнопки:
Рис. 6. Кнопки привязки к сетке и углу
Или горячие клавиши:
Q – привязка к сетке;
Ctrl+Q – привязка к углу.
Полезные настройки меню Preferences
На вкладке Movement есть полезные настройки, отвечающие за скорость вращения/перемещения камеры в редакторе. Можете поэкспериментировать со значениями, выбрав наиболее комфортные. Там же можно настроить чувствительность для работы с инструментами редактирования ландшафта.
Рис. 7. Preferences – Movement. Настройки камеры.
Во вкладке Render Window можно настроить время суток и дальность обзора.
Рис. 8. Preferences – Render Window.
Так же интерес представляет вкладка LOD. В ней можно настроить дальность отображения различных объектов и персонажей в редакторе. Высокие значения позволят более комфортно работать с большими локациями, но требуют более мощного железа.
Рис. 9. Preferences – LOD.
Ну а с остальными вкладками и полями меню Preferences разбирайтесь сами :) Теперь перейдём к самому интересному – новшествам, которые и отличают GECK от CS.
Нововведения
Дублирование
Многим известно, что в CS можно создать дубликат объекта, выделив его и нажав Ctrl+D. Отличие GECK в том, что после дублирования выделение перескакивает с искомого объекта на дубликат. Мелочь, но это действительно удобно, думаю, многие оценят.
Замена объекта
Представим себе ситуацию: мы разместили несколько однотипных объектов в локации но потом поняли что нужно заменить их на аналогичные, но ретекстурированные. В CS нам бы пришлось вручную удалять старые объекты и на их место ставить новые (а если их расположение должно быть выверено до миллиметра, то ещё и заново устанавливать или копировать настройки координат). В GECK это делается редактором при минимальном содействии с нашей стороны. Просто выделяем один из этих объектов и нажимаем Ctrl+F. Выскакивает меню Search & Replace.
Рис. 10. Search & Replace.
Убеждаемся что в поле Search for объект, который нужно заменить, а в поле Replace with выбираем объект, на который будет произведена замена (в нашем примере – ретекстурированный предмет). Далее ставим галочку напротив одного из полей ниже:
- Current World Only – замена всех подобных объектов в игровом мире.
- Current Cell Only – замена всех подобных объектов в данной ячейке.
- Selection Only – замена только выбранного объекта.
Ну и в завершение жмём OK.
Reference Batch Action
Сразу рассмотрим один из примеров использования данного меню.
Цель: заменить целый невредимый дом на дымящиеся руины (пока наш ГГ охотился за похитителями рулета, злой дракон сжёг его дом).
Значит, имеем следующие объекты:
House – дом;
HouseDoor – дверь-телепорт в дом;
HouseR – разрушенный дом;
HouseDoorR – обломки двери;
Smoke – дым.
В CS нам бы пришлось каждому используемому объекту назначать Reference Editor ID и писать скрипт, который будет энейблить/дизейблить каждый из объектов, да ещё и вручную всё размещать так, чтобы руины дома были в точности на месте дома, а обломки двери там где когда-то была дверь-телепорт в жилище.
В GECK это делается куда проще. Для удобства, добавим рядом с домом XMarker (можно вместо него использовать модель дома, например, но мне так удобнее) и присвоим ему Reference Editor ID – PlayerHouseBurnRef.
Теперь зажимаем Ctrl (это позволит выделить сразу несколько объектов) и выделяем уже размещённые в игровом мире House и HouseDoor. Отпускаем Ctrl и жмём горячую клавишу вызова меню Reference Batch Action – «-» (минус).
Рис. 11. Reference Batch Action
В меню выбираем Set enable parent и обращаем внимание на чек-бокс Opposite, он нам скоро понадобится.
В блоке Target Reference нужно указать наш маркер – PlayerHouseBurnRef. Это можно сделать либо выбрав в поле Cell нужную ячейку, а в поле Reference непосредственно сам маркер, либо просто нажав Select Reference in Render Window и дважды кликнув по маркеру. Далее жмём Do и видим как появляются стрелки от привязываемых объектов к тому, к которому привязка осуществляется. Теперь, если маркер будет отображаться в игровом мире (enable), то и дом с дверью будут отображаться, в противном случае (disable) – они исчезнут.
Следующий шаг, дублируем дом (Ctrl+D) и заменяем дубликат на руины (сразу после Ctrl+D – Ctrl+F, заново кликать на объект после дублирования не нужно, т.к. заменяться будет именно дубликат). То же самое проделываем с дверью и добавляем модель дыма.
Теперь выделяем дым, руины дома и сломанную дверь, жмём «-» и так же выбираем Set enable parent, но уже поставив галочку в чек-боксе Opposite, в завершение так же жмём Do. Теперь, если маркер отображается, руины дома, двери и дыма – невидимые и наоборот.
Остаётся только создать скрипт который будет дизейблить только лишь маркер PlayerHouseBurnRef. Причём в любой момент можно привязать и любые другие объекты, которые будут появляться/исчезать с привязкой к маркеру.
Это лишь один из многих примеров использования этого меню, но и один из самых полезных. Так же, можно без усилий, например, привязать множество объектов в собственность какого-либо NPC, не ковыряясь в настройках каждого из этих объектов.
С другими возможностями этого меню можно ознакомиться здесь: http://geck.bethsoft...atch_Assignment
Вкладка All и поисковый фильтр
В GECK куда проще найти нужный объект в Object Window. Этому способствуют – вкладка All и поисковый фильтр.
Рис. 12. Вкладка All и поисковый фильтр.
Вкладка All содержит в себе абсолютно все объекты, будь то Statics, Items или Weapons.
Фильтр позволяет отобразить только те объекты, в названии которых присутствует вписанное в это поле сочетание символов. При фильтрации можно также использовать символ «*» (звёздочка) для того, чтобы заменить им символ или несколько символов, которые будут игнорироваться при поиске (не уверен что понятно объяснил, это нужно, например, когда у нас есть начало и конец имени, а то что будет в середине – не важно и заменяется *) .
Палитра объектов
Замечательный инструмент, намного упрощающий захламление локаций. Что же можно сделать с помощью этой самой палитры?
- создавать коллекции объектов по категориям (объекты для подземелий, для жилищ нордов, для казарм стражи и т.п.) ;
- задавать на каком расстоянии объекты будут появляться относительно указываемой поверхности;
- быстро размещать большое количество однотипных объектов на поверхности, при этом можно задать в каких пределах будет случайно генерироваться их масштаб, высота относительно уровня поверхности, а так же угол поворота (т.е. можно просто кликать по столу, выбрав в палитре бутылку и они сами будут расставляться повёрнутыми этикеткой в разные стороны и при этом разных размеров в пределах заданных величин);
- прилеплять плоские предметы вроде пятен крови или картин, ковров к поверхности. Т.е. теперь не нужно их вручную вращать, чтобы разместить на стене/потолке, главное правильно выбрать настройки.
Чтобы запустить палитру объектов, нужно нажать World-> Object Palette Editing.
Рис. 14. Object Palette Editing.
Пройдёмся по кнопкам/полям этого меню:
New – позволяет создать новую палитру;
Load – загрузить готовую (можно загрузить сразу несколько);
Save/Save As – сохранение палитры (ВАЖНО – сохранение палитры не приводит к сохранению мода, а сохранения мода к сохранению палитры, не забывайте сохранять и то и другое)
Merge – соединить воедино все загруженные палитры;
Apply Settings To Preview – принять все нижеописанные настройки и показать их в превью-окне;
Name – имя объекта. Сделано для удобства пользователя, можно использовать кириллицу. Нигде кроме палитры не отображается.
Object – настраиваемый объект.
Блок Angle:
X, Y, Z – насколько (единиц/градусов) повернут объект изначально относительно той или иной оси координат;
+/- - здесь и далее в каких пределах (на сколько единиц больше или меньше изначального значения) редактор выбирает случайное значение, для использования при размещении объекта;
Conform to slope – отметить если нужно разместить объект относительно поверхности (тот самый описанный выше случай с картинами, коврами, пятнами крови).
Sink – высота относительно поверхности (если значение отрицательное (напр. «-20»), то объект возвышается над поверхностью, если положительное – утопает в ней);
Scale – масштаб объекта. 1.0 – тот что использован по умолчанию, 1,5 – в полтора раза больше и т.д. по аналогии.
Для того чтобы разместить объект, нужно выбрать его в палитре, зажать Ctrl+Alt и кликнуть на нужной поверхности.
Подробнее про палитру можно почитать здесь: http://geck.bethsoft.../Object_palette
Navmesh
В GECK отсутствует привычная навигационная сетка, теперь нужно отмечать сплошной «заливкой» всю поверхность на которой может передвигаться NPC. Про навмеш нужно писать отдельную и большую статью, поэтому лишь упомяну что есть такое нововведение. Для желающих подробнее ознакомиться с этим зверем вот ссылка - http://geck.bethsoft...utorial_Navmesh
Там же есть ссылка на youtube, где всё наглядно продемонстрировано.
Готовый экстерьер с Navmesh выглядит так:
Рис. 15. Экстерьер с Navmesh.
Encounter Zones
Это группы ячеек, WorldSpace’ов, в которых игрока ждут определённые враги, заданного уровня и, опять же, заданный лут. Т.е. мы создаём ячеку, добавляем туда случайный лут, случайных врагов и привязываем её к определённой encounter zone, в соответствии с которой игра и произведёт замену случайных объектов на соответствующие этой зоне.
Случайным врагам мы можем задать уровень сложности. После этого иконка в редакторе изменит свой цвет:
Easy – зелёный;
Medium – жёлтый;
Hard – оранжевый;
Boss – красный;
None – белый.
Подробнее здесь:
http://geck.bethsoft.../Encounter_Zone
http://geck.bethsoft..._NPC_population
Маркеры
Помимо xMarker и xMarkerHeading есть и специальные маркеры, в которых можно задать время нахождения НПС в нём, результирующий скрипт.
Рис. 17. Новый вид маркеров.
Маркеры можно связывать, указывая от какого к какому будет следовать НПС/моб. Так же к ним можно привязывать персонажей, которые будут по ним следовать. Всё это наглядно отображается стрелками в редакторе.
Рис. 18. Моб, привязанный к маркерам.
Подробнее можно почитать здесь:
http://geck.bethsoft..._NPC_population
Радиус освещения
Радиус освещения для light-marker’ов теперь можно настраивать для каждой размещённой в ячейке копии маркера.
Рис. 19. Настройка радиуса освещения.
Для работы с освещение предусмотрен ряд горячих клавиш (что-то есть в CS, чего-то нет, опишу всё):
A – вкл/выкл освещение локации. При выкл – используется внутрииговое освещение локации, а при вкл – локация становится отлично освещённой;
M – вкл/выкл отображение маркеров (касается всех маркеров, а не только осветительных);
S – (зажать) – изменение с помощью мышки размера объекта/маркера;
L – вкл/выкл отображение радиуса в пределах которого находится свет от маркера.
Emittance
Теперь light-маркеры и некоторые объекты, в виде лучей света, могут копировать свойства того или иного типа освещения, в т.ч. и дневного света.
Рис. 20. Вкладка Emittance в настройках light-маркера.
Т.е., например, у нас есть модель луча света, направленного от пролома в потолке вглубь помещения. Привязав его через вкладку Emittance к дневному свету данного региона, мы получим следующее: в зависимости от времени суток и других подобных факторов, будет меняться цвет луча/light-маркера, привязанного к нему.
Подробнее тут http://geck.bethsoft...X_and_Emittance
Оптимизация
Тут так же нужно целый туториал писать/читать на эту тему, поэтому я просто опишу для чего оно нужно и что из себя представляет.
Основные используемые в оптимизации понятия это «комнаты» и «порталы». «Комнаты» строятся вокруг комнат/помещений/фрагментов комнат и помещений внутри интерьерной ячейки. «Порталы» ставятся на месте дверей и окон (проломов и т.п. элементов дизайна, через которые можно заглянуть в соседнюю «комнату»). Т.е. «комнаты» ставятся вплотную друг к другу и соединяются «порталами». Для каждого «портала» указывается какие комнаты он «соединяет».
Для чего же это всё нужно? Пока игрок находится в пределах «комнаты», ресурсы компьютера загружены только тем, что в ней находится. Всё что находится в других «комнатах» - невидимое. Исключение: если игрок смотрит на соседнюю комнату через «портал». Тогда загружается и то, что находится в соседней «комнате» и то что в этой. Загрузка происходит практически мгновенно.
Хорошая оптимизация визуально никак не заметна в игре, но производительность повышается значительно.
Подробнее про оптимизацию можно почитать тут: http://geck.bethsoft...al_Optimization
Продолжение далее...