• Уважаемые гости и новички, приветствуем Вас на нашем форуме
    Здесь вы можете найти ответы практически на все свои вопросы о серии игр «Готика» (в том числе различных модах на нее), «Ведьмак», «Ризен», «Древние свитки», «Эра дракона» и о многих других играх. Можете также узнать свежие новости о разработке новых проектов, восхититься творчеством наших форумчан, либо самим показать, что вы умеете. Ну и наконец, можете обсудить общие увлечения или просто весело пообщаться с посетителями «Таверны».

    Чтобы получить возможность писать на форуме, оставьте сообщение в этой теме.
    Удачи!

Важно Работа с редактором мира Spacer (G2a)

Статус
В этой теме нельзя размещать новые ответы.

MEG@VOLT

★★★★★★★★★
ТехАдмин
Регистрация
24 Мар 2006
Сообщения
9.832
Благодарности
6.718
Баллы
1.625
Подробные сведения о навыках работы в редакторе игрового мира Spacer2 для игры Готика 2 Аддон.
Введение

Редактор находится в папке System (Spacer2.exe).
Для русификации (русификацию можно скачать у меня на сайте) программы распакуйте архив SpacerRus.rar в папку System.
Запустите «стартер» (GothicStarter_mod.exe). Вы увидите следующее окно:
1.png
В окне стартера отображены установленные Моды.
Нажимаем на кнопку «Editor Starten» запускаем редактор мира Spacer.
Программа zSpy, ведущая лог загрузки и ошибок, запускается автоматически.
Если нажимаем на кнопку «Spiel Starten», запускается выбранный в левом окне Мод, что удобно для проверки сделанных изменений. Можно сразу запустить Мод, и увидеть внесенные изменения.
Интерфейс и окна

Итак, запускаем Spacer:
2.png
Открываем мир (файл, открыть ZEN…) и выбираем из каталога Готики какой-нибудь *.Zen файл (папка :\Gothic II\_work\data\Worlds), например Addon_Part_Canyon_01.zen, (тип файлов World compiled *.zen). Мы увидим следующее:
3.png
Рассмотрим интерфейс программы. В главном окне программы находятся плавающие окна.
Окно «Objects», используемое для вставки и редактирования объектов. Окно «Vobs», в котором показаны все виртуальные объекты Вашего мира. Двойной щелчок по объекту в этом окне перенесёт камеру к объекту, и выделит его.
Окно «ObjectPages» используется для просмотра и редактирования специальных объектов, таких, как источники света, камеры, триггеры, и так далее.
В главном окне расположены также две маленькие панели со значками (горизонтальная и вертикальная) на которых расположены элементы управления. На горизонтальной панели:
  • 4.png Свойства звука. При включении этой кнопки в «объектные страницы» появляется окно, в котором можно прослушать существующие звуковые эффекты.
  • 5.png Свойства света. При включении этой кнопки в «объектные страницы» появляется окно, в котором можно выбрать свойства источников света.
  • 6.png Свойства специальных Vob.
  • 7.png Свойства камеры. При включении этой кнопки в «объектные страницы» появляется окно, в котором можно выбрать свойства и типы вставляемой камеры.
Перемещение по миру

Теперь о перемещении по миру. Камера перемещается с помощью клавиш курсора, и клавиш над курсором (insert, home…). Для ускорения перемещения нужно одновременно нажать Shift.
Настроить скорость перемещения можно в меню «Установки, настройки основные, скорость перемещения». Чтобы мгновенно переместиться к определённому объекту, нужно дважды щёлкнуть по объекту в окне объектов, Вы переместитесь к выбранному объекту, и он будет выделен красными линиями.
Работа с объектами

Все объекты в мире называются Vob (virtual object) или Mob (подкласс Vob).
Выделение объектов производится щелчком мыши (можно нажать F3, при этом Вам будет удобнее выделить мелкий объект). Активный объект выделяется красными линиями.
Здесь есть маленькая хитрость. Объект, например камень, обладает свойством «непроницаемости», ведь Ваш персонаж не должен проходить сквозь камни? Как же тогда перемещать непроницаемый объект? Для этого в свойствах объекта нужно опцию cdDyn поставить в FALSE, и обязательно применить изменение свойств, нажав кнопку «Apply».Перемещать объект можно, нажав клавишу «М» на клавиатуре, или кнопку 8.png на вертикальной панели инструментов.
Рассмотрим некоторые другие опции окна объектов.
  • VobName: имя объекта (в игре не отображается), необходимо и для ускорения поиска объекта, и, в некоторых случаях, например, для вызова функции триггера или камеры. Это мы рассмотрим позже.
  • visual: имя *.3ds файла, расположенного в директории \Gothic II\_work\data\Meshes.
  • showVisual: видим или не видим объект.
  • visualCamAlign: выравнивание камеры по отношению к объекту.
  • visualAniMode: функция «неподвижности» объекта. Если установлено в «Wind» то объект, например куст, дерево, не будет неподвижен. Например, колышущиеся на ветру кусты.
  • visualAniModeStrengh: амплитуда движения объекта.
  • vobFarClipZScale: «дальность видимости » объекта.
  • cdDyn: была рассмотрена выше («проницаемость»).
  • DynShadow: тень от объекта на земле.
Итак, мы рассмотрели свойства существующих объектов. Как создать новый объект? В этом же окне переходим на закладку «Создать». Если окно объектов не активно, нажмите кнопку «Activate»:
9.png
Попробуем вставить какой-нибудь предмет, например куст. Выделите строку oCMOB, кликните правой кнопкой мыши в окне Спейсера на свободном месте, и в контекстном меню выберите строку Insert [oCMOB]. Вот что у нас получилось:
10.png
Как Вы можете заметить, это ещё не куст! Что делать?
Необходимо назначить объекту oCMOB визуализацию.
В закладке «Модифицировать» выделите строку «Visual:», нажмите кнопку «файл» и укажите директорию объектов \Gothic II\_work\data\Meshes. В нашем случае Mobs\Nature. Выберите какой-нибудь файл визуализации, например OW_BUSHES_01.3DS, нажмите кнопку «Apply». Вот что мы получим:
11.png
Теперь перемещаем объект на его место, применяем (если это необходимо) опции «непроницаемости» и «движения на ветру». Всё очень просто, не так ли?
Всё, за исключением того, что объектов Готике больше тысячи…. Что же делать? Искать?
Не беспокойтесь, разработчики предусмотрели этот вариант! Для этого можно использовать «контейнер Vob».
Как с ним работать? Открываем какую-нибудь локацию, где, по вашему мнению, есть необходимые объекты, например NewWorld_Part_Forest_01.zen.
Вызываем контейнер Vob, нажав клавиши Ctrl+F2, появится окно контейнера. Как поместить объект в контейнер? Выделите нужный объект мышкой, и нажмите Alt+F2.
В контейнере появился выделенный объект. Ну, и так далее, помещаете в контейнер необходимые Вам объекты, и нажимаете кнопку «Действия», сохранить список Vob. Всё, теперь можно сбросить Спейсер, и открыть нужную Вам локацию.
Опять откройте по Ctrl+F2 контейнер, и приступайте к «построению нового мира».
НО! Обратите внимание! Вставлять нужно следующим образом:
  • Выделить в контейнере объект, кликнув по нему мышкой.
  • Поместить его в буфер обмена, нажав Ctrl+C.
  • ОБЯЗАТЕЛЬНО кликнуть по пустому месту в окне Спейсера! (иначе возможен «вылет» программы, и Вы потеряете с таким трудом созданное!)
  • Нажать Ctrl+V. Объект вставлен! Мои поздравления!
Далее вставляете все необходимые Вам объекты. Когда Вы закончите с объектами, можно очистить список Vob, «Действия» «Очистить все».
Мы разобрались с объектами, так сказать «не берущимися» в инвентарь главного героя. А как вставить, например меч, который можно подобрать с земли? Это объекты класса oCItem (scripted).
C этими объектами дело обстоит немного по-другому. Точно так же, в закладке «Создать», выделяем объект oCItem (scripted), кликаем в свободном месте рабочего окна Спейсера, в контекстном меню выбираем Insert [oCItem], появляется окно «Script-Instances».
12.png
Выделяем необходимый нам меч, например ITMW_2H_SWORD_M_01, и нажимаем кнопку «Вставить». Меч вставлен:
13.png
Для того, чтобы опустить меч на землю, можно использовать кнопку на вертикальной панели инструментов «Применить физику». Меч упадёт на землю.
С объектами разобрались? Тогда пойдём далее.
Как вставлять персонажи?

Персонажи (Npc и монстры) вставляются скриптами функцией Wld_InsertNpc, на объекты класса «zCVobWaypoint» и «zCvobSpot». Причём люди - на «zCVobWaypoint» (маленький флажок), а монстры на «zCvobSpot» (большой флажок).
14.png
Объекты класса «zCVobWaypoint» объединяются в путевые сети (WayNet), по которым запускаются поисковые алгоритмы путей. Чтобы посмотреть, что это такое «WayNet», откройте любую локацию, и нажмите клавишу «W»- вот, как это выглядит:
15.png
Как создать свою путевую сеть? Для начала нам необходимы минимум два вэйпойнта. Выделяем первый вэйпойнт, затем, удерживая Shift, кликаем по второму вэйпойнту (здесь лучше нажать F3). Около него должен появиться мигающий указатель.
Теперь объединяем наши вэйпойнты. На вертикальной панели инструментов есть значок: 16.png нажимаем, наши вэйпойнты объединились в сеть:
17.png
Для добавления следующих вэйпойнтов, поступаем так же.
Муверы (движущиеся обьекты)

Теперь перейдём к более сложным объектам, например, мувер.
Пещеру на острове помните? И шипы, из земли выскакивающие? Давайте попробуем сделать нечто подобное.
В окне объектов находим объект класса «zCTriiger», «zCMover», применяем к нему визуализацию «EVT_TPL_METALTHORNS_2X2X05M.3DS» (как было описано выше), называем его «MOVER», и получаем:
18.png
Но у нас получился обычный неподвижный объект!
Теперь нужно заставить его двигаться, сделать из него мувер. В Спейсере есть окно «Объектные страницы»:
19.png
Если у Вас его почему-то нет, нажмите кнопку на горизонтальной панели инструментов
20.png
, «свойства Trigger». Далее, создаём первое положение мувера.
Перемещаем шипы в нужное исходное положение, и нажимаем кнопку «new key». Затем перемещаем шипы во второе положение и опять нажимаем «new key». Теперь у нас есть два кейфрейма (положения) мувера. Можно проверить движение мувера, нажав кнопку «послать». Работает? Отлично!
Но нашим мувером что-то должно управлять? Для этого создадим объект класса «zCtrigger», получаем следующее:
21.png
Теперь необходимо связать мувер и триггер.
В свойствах триггера «Trigger Target» нужно указать название нашего мувера, в нашем случае «MOVER». В свойствах триггера есть следующие установки:
  • ActivationFilter:
  • reactToOnTrigger:TRUE Триггер реагирует на OnTrigger сообщение (Wld_SendTrigger)
  • reactToOnTouch:TRUE Trigger реагирует на OnTouch сообщение (прикосновение)
  • reactToOnDamage:TRUE Trigger реагирует на OnDamage сообщение (повреждение)
  • respondToObject:TRUE Trigger реагирует на сообщения неодушевленных объектов
  • respondToPC:TRUE Trigger реагирует на сообщения игрока (на ГГ)
  • respondToNPC:TRUE Trigger реагирует на сообщения «не ГГ»
  • startEnabled:TRUE Разрешает работу триггера при старте
  • respondToVobName: Реагирует на сообщения Vob с этим названием
  • numCanBeActivated:-1 Как часто может включаться Trigger. (-1 = бесконечно)
  • retriggerWaitSec:0 Время, необходимое для следующей активации
  • damageThreshold:0 Величина повреждения, необходимая для активации
  • FireBehavior:
  • fireDelaySec:0 Задержка включения, Сек.
  • sendUntrigger:TRUE Посылка OnUntrigger сообщения
Вот что получилось:
22.png
Но наш мувер не будет наносить повреждение персонажу. Необходимо добавить ещё один объект, «oCTouchDamage», наносящий повреждение. Но добавить, как потомок к нашему муверу. Как это сделать?
Выделяем наш мувер, в окне объектов «Создать» находим объект «oCTouchDamage», и кликаем правой кнопкой по муверу (при этом следите, чтобы выделение объекта не пропало). В контекстном меню выбираем строку «Insert [oCTouchDamage] as child of “MOVER”». В свойствах объекта выбираем тип повреждения «Damage Type», на Ваше усмотрение. Теперь необходимо задать размеры объекта «oCTouchDamage» следующим образом. Нажимаете кнопку «Edit the Bbox», появляется окно свойств. Нажимаете «Определить» и задаёте размеры объекта в сантиметрах. Затем «ОК» и «Stop». К сожалению размер объекта не всегда изменяет размер с первого раза, поэтому необходимо найти наш «oCTouchDamage» и проверить его размеры:
23.png
И, заодно, переместить объект в зону наших шипов. Теперь можно сохранить сделанное, и проверить мувер в работе, запустив игру. Подобным же образом делаются и другие муверы, задвижки, лифты, и т. д., только без объекта «oCTouchDamage».А управлять мувером можно, например, рычагом, кнопкой, и так далее. Тут всё зависит от Вашей фантазии. Пойдём далее.
Давайте попробуем создать картину, при сдвиге которой поднимается каменная плита. Создаем объект мувер, даем ему визуализацию «NM_KARTINA.3DS» и нажимаем “Apply”
24.png
Теперь перемещаем картину к стене в исходное положение (если не забыли, перемещать объект нужно, предварительно нажав клавишу «М» на клавиатуре, или кнопку 8.png), где она должна висеть, и в «объектных страницах» нажимаем кнопку «new key». Слева в «KeyFrames» нажимаем кнопку «new key», тем самым назначаем первый кейфрейм (первое положение) - «0» нашей картины.
Далее, перемещаем картину во второе положение («М» на клавиатуре, или кнопка 8.png) и опять нажимаем кнопку «new key». Мы получили второе (кейфрейм) положение «1» нашей картины. Проверим работу мувера. В «объектных страницах» выделяем строку «TRIGGER» и нажимаем кнопку «Послать »». Работает?
Параметры перемещения можно настроить в окне «Objects», в разделе “Mover”. Там же можно выбрать звук, сопровождающий перемещение мувера (в разделе “Sound”).
Но ведь картина сама по себе перемещаться не будет? Здесь есть несколько путей, все зависит от Вашей фантазии.
Можно просто вставить рычаг, объект oCMobSwitch (визуализация LEVER_1_OC.MDS) и в его свойствах указать цель «Trigger Target:KARTINA». «KARTINA», это название нашей картины-мувера. Вот что у Вас должно получится (Рис. ниже).
Синяя линия указывает на то, что рычаг управляет картиной.
25.png
Проверим работу рычага. В «объектных страницах» выделяем строку «TRIGGER» и нажимаем кнопку «Послать »». Все просто?
26.png
Вместо рычага можно вставить, например, статую Инноса, и сделать её невидимой…(строка «show Visual: FALSE»).Тогда, подойдя к определённому месту, герой встанет на колени, и картина сдвинется, естественно!
Если в строке «useWithItem: » Вы укажете какую-либо инстанцию предмета, например ключ (ItKe_MyKey), то без ключа ничего работать не будет.
Таким же образом создаёте второй мувер - каменную плиту, а у картины в «Trigger Target:» укажите название Вашей стены (например “STENA”).
Можно вместо стены создать мувер с визуализацией «Pfx», дым, туман, и т.д., присоединив к нему потомком объект повреждения «oCTouchDamage». В общем, творите!
Свет и освещение

Немного об *освещении* Вашего мира. Свет бывает статический и динамический. Объекты освещения можно просто копировать из готовой локации (используя контейнер Vob), или создавать свои, вставляя объект zCVobLight, и изменяя его свойства в «Объектных страницах».
Триггеры (реакция на события)

Разработчики предусмотрели разнообразные триггеры, которые Вы можете использовать в своём Моде. Например, Триггер-Лист выполняет не одно действие, а несколько. Причём порядок выполнения задач можно задавать в свойствах триггера.
Можно в качестве цели триггера использовать анимационную модель. Плавающих рыб помните? Это тоже триггер, но у него несколько целей. Это объект zCTriggerWorldStart. Вот как его реализовать.
Создаём объект zCTriggerWorldStart. В TriggerTarget указываем «NW_FISHMOVER_01» (обратите внимание, что ВСЕ Ваши муверы должны иметь одно и то же название). Это будут муверы, которые перемещаются в воде по определённой Вами траектории (по фреймам). То есть вы должны задать несколько положений, кейфреймов для движения Ваших рыб. Этих муверов создаём столько, сколько необходимо вставить рыб. А к муверам вставляем потомками объекты zCVobAnimate: Сделать это можно следующим образом.
Создаём объект «zCMover» и называем его, например «NW_FISHMOVER_01». Далее создаём объект zCVobAnimate, и применяем к нему визуализацию NW_MORPH_FISH_01.MMS. Копируем этот анимационный объект в буфер обмена (Ctrl + C), удаляем созданный объект.
«NW_MORPH_FISH_01.MMS» – это плавающая рыба, «NW_MORPH_SKATE_01.MMS» плавающий скат.
Далее находим в окне объектов вставленный ранее объект «NW_FISHMOVER_01» (он помечен зелёной точкойи дважды кликаем по нему Объект выделен. Теперь вставляем наш анимационный объект из буфера обмена (Ctrl + V). Готово! У Вас должно получиться так, как на левом рисунке
27.png
Теперь, при запуске Вашего мира, рыбы будут перемещаться по заданным траекториям.
28.png
Камера (сьемка игровых событий)

Рассмотрим ещё один интересный объект, камеру. На горизонтальной панели инструментов нажмите кнопку, появится окно объектных страниц, выберем камеру, например «GRAVEYARD_01», и нажмём кнопку «Вставить», у Вас получится нечто похожее:
29.png
Если у Вас не видны зеленые и белые линии, зайдите в меню «Вид правка, показывать невидимые линии, сплайны камеры». Нажав кнопку «Play», можно посмотреть движение камеры. «Stop», соответственно, остановить камеру.
По зелёной линии камера движется, а на белую направлен её объектив. Можно изменить траекторию движения камеры, выделяя точки (кейфремы), и перемещая их так, как нужно.
Однако это работа очень кропотливая и требует терпения. В свойствах камеры можно регулировать различные параметры движения камеры. Забегая вперёд, камера запускается скриптово, функцией:
//*****************************************************************************
Wld_SendTrigger("GRAVEYARD_01"); //поскольку наша камера называется«GRAVEYARD_01».
//*****************************************************************************
Для того, чтобы камера реагировала на функцию Wld_SendTrigger, в Спейсере (в свойствах камеры) необходимо поставить “reactToOnTrigger: TRUE”.
Ошибки и баги

Есть некоторые «баги» в работе Спейсера. Например, главное окно Спейсера не открывается! Для устранения этой неприятности нужно запустить редактор реестра (выполнить, regedit).
В редакторе реестра найти раздел «PIRANHA-BYTES Software GmbH, Settings». Необходимо удалить параметр «winMain». Иногда помогает такой способ. Открыть диспетчер задач Windows, и в закладке «Приложения» нажать кнопку «Переключиться».
Автор статьи - Basilio58.
 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу