Создание сингл-уровня для ТЧ — S.T.A.L.K.E.R. Inside Wiki

Создание сингл-уровня для ТЧ

Материал из S.T.A.L.K.E.R. Inside Wiki

Перейти к: навигация, поиск

Всем привет! Сейчас я расскажу, как мне удалось создать уровень для одиночной игры без подключения к существующим локациям.


Инструментарий.

  1. 3D Studio MAX 8
    1. Plugin for 3D Studio Max версии 2.0. Последний нам нужен для экспорта геометрии созданного нами уровня в формат SDK. Также плагин входит в X-ray Game asset tools pack FINAL (см. ниже)
  2. X-Ray SDK 0.4 (ТЧ)
    1. Глобальный патч v. 0.3
  3. X-ray Game asset tools pack FINAL
    1. X-ray Game asset tools pack update 2.0
  4. Следующие конфиги из распакованной геймдаты «Зова Припяти» (далее как «ЗП»):
    • gamedata\configs\game_graphs.ltx .
    • gamedata\configs\game_levels.ltx .
    • gamedata\configs\game_levels_music.ltx .
    • gamedata\configs\game_maps_single.ltx .


Цели.

Наша цель - создать маленький уровень с несколькими постройками, деревцами. Этот уровень будет один в игре. Подключению уровней друг к другу эта статья не посвящена.


Первые шаги.

Давайте всё настроим по порядочку:

  • Настройте SDK, converter и aiwrapper по инструкции
  • Теперь сразу подредактируем конфиги под наш уровень. Создаём в папке с ЗП папку gamedata а в ней - папку configs. В последнюю кидаем файлы из распакованной геймдаты оригинальной игры:
    • game_graphs.ltx
    • game_levels.ltx
    • game_levels_music.ltx
    • game_maps_single.ltx

1. В game_graphs.ltx прописываем наш уровень: почти в самом конце дописываем:

183 = "pihan"

2. В game_levels.ltx следующие работы: вписываем

level183
и в конец:
[level183]
name   = pihan
caption = "pihan"
offset  = 12000.0,     1000.0,    10000.0
weathers = [default]
id  = 183
В ЗП можно добавлять уровни с числом от 183 и выше.

3. В game_levels_music.ltx : добавляем

[pihan_musics]
music\zaton_day                  = 5, 22,  0.2,   2, 4   ;;; первые 2 цифры в строчках это с какого по какой час играет эмбиент.
music\zaton_night                = 22, 5,  0.3,   1, 2

Если поняли указываются звуковые файлы из папки sounds

4. В game_maps_single.ltx :
ВНИМАНИЕ!!!
Находим строку [level_maps_single]
Несколько строк под ней - это уровни из оригинала ЗП. Нам они не нужны. Ставим перед строками знак ; - это мы их так сказать "закоментили", также вписываем наш уровень. Выглядеть это должно так:

[level_maps_single]
;  stohe_selo                        =
;  zaton                             =
   pihan                             =
;  jupiter                           =
;  jupiter_underground               =
;  pripyat                           =
;  labx8                             =
;  plecha_selo                       =
;  weapons_test                      =
;  peacemaker_selo                   = 

теперь пишем секцию ниже:

[pihan]
global_rect         = 307.0, 90.0, 717.0, 500.000000   ;; положение на глобальной карте (здесь не рассматривается)
music_tracks        = pihan_musics                     ;; название звуковой ambient-темы. см. выше.
weathers            = dynamic_default

5. Теперь нужно подредактировать конфиг в СДК, чтобы в граф-поинт можно было указать наш уровень.

Открываем level_editor\gamedata\config\game_levels.ltx. Вписываем тоже что и в game_levels.ltx от ЗП (см. п. 1) (именно наш уровень со своим уникальным идентификатором) С конфигами всё. Теперь приступим к самому моделированию.


Моделирование геометрии уровня.

Открываем 3D Studio MAX 8. Создаём уровень как показано в этой статье: Создание уровня, пошаговое руководство
Всё как надо - настраиваем текстуру, материал, шейдер.
Дойдя до момента экспорта в SDK. Экспортируем террейн и постройки, если таковые имеются

Работа в SDK

Открываем Level Editor (далее как LE). Сейчас нам нужно добавить созданный нами террейн в библиотеку объектов. Заходим в меню Objects --> Library Editor. Там жмём на кнопку Import Object и импортируем наш террейн (земля). Затем нажмите Save. Теперь наш террейн добавился в библиотеку объектов СДК. Далее мы должны разместить этот террейн в окне редактора. Сначала выбираем в меню Edit Mode режим работы с объектами (1-я кнопка). Затем жмём Multiple Append (находится в меню Commands) и выбираем наш террейн. У меня теперь всё выглядит так:
Террейн вид.jpeg
Озеленение уровня, если вам оно нужно, описано тут: Глобальное озеленение, добавляем траву на уровень
Можно расположить на уровне несколько статичных объектов из библиотеки СДК (деревья, пропсы, камни и прочее)
Теперь обязательно надо расположить на уровне:

  • actor - точка старта игрока. в настройках его укажите путь к визуалу, который мы положили в геймдату СДК выше.
    Object Propetries - ACTOR

В меню Edit Mode кликаем по кнопочке Spawn Element. Внизу появится список, чего бы заспавнить. Идём в низ списка, находим секцию actor (у меня в списке она предпоследняя). Жмём на actor и нажимаем кнопку Create (горячая кл. A) Тыкаем курсором в место на карте куда бы заспавнить. Появляется Флажок. Жмём по нему ПКМ --> Propetries. Выполняем как на картинке:

  • light - свет. располагаем его так: В меню Edit Mode кликаем по кнопочке Light. Нажимаем кнопку Create (горячая кл. A), тыкаем курсором в место на карте куда ставить.
  • glow - В меню Edit Mode кликаем по кнопочке Glow. Нажимаем кнопку Create (горячая кл. A), тыкаем курсором в место на карте куда ставить. Даём текстуру для Glow: ПКМ по созданной Glow, далее Propetries --> напротив texture указываем текстуру.
  • Graph-point'ы: нам нужны 2 граф поинта:
    Настройки графпоинта pihan_graph_point_01
    • pihan_graph_point_01
    • pihan_graph_point_02

Сначала их создаём: в меню Edit Mode выбираем Spawn Element. В дереве всего что можно спавнить, в списке заходим в директорию (для тех кто в танке - папке) ai и выбираем graph_point. Создаём это аналогично Light и glow. Размещаем 2 графпоинта на разных концах карты. Затем у первого в настройках (ПКМ--> Propetries)делаем так как на картинке: У второго графпоинта в опциях пишем только имя - pihan_graph_point_02
Это то, что должно обязательно находится на сингловом уровне. Можете также добавить деревьев (нужны соотв. LODы), пропсов, домов (естественно создайте для них HOM'ы). Таким же образом как мы заспавнили actor'а, добавляются и другие НПС, аномалии, монстры и прочее. Короче все вкусности сингла :).
Насчёт левел-чейнжеров (переходов) - всё подробно описано тут: Компиляция -=inGame АИ=-. Единственное НО - нужно в настройках левелчейнжера поставить галку напротив silence mode.

Сборка АИ-сетки.

Сама сборка сетки - дело не трудное. Оно очень подробно описано в этой статье Сборка АИ-Сетки
Напомню, что продолжительность сборки зависит от размера уровня.

Настройка сцены.

Настроим сцену: Идите в меню Scene --> Options там указываете как на картинке: Nastroyka sceny.jpg
Идём в следующему шагу.

Сборка Локации

После проверки что всё настроено, ничего не забыли, и не влепили лишнего переходим к сборке.

  1. Сохраняем наш уровень командой File --> Save
  2. Теперь в меню Compile кликаем по очереди на:
  • Make Game
  • Make Details
  • Make HOM
  • Make AI-map

Кстати на Make details у меня вышла ошибка, т.к. у меня на уровне не было травы. Я продолжил делать всё остальное - уровень все равно работает.
И теперь, с криком "банзай!", жмём Compile --> Build. Это соберёт наш уровень перед компиляцией.

Компиляция карты

Пуск --> Выполнить --> D:\modding\X-Ray_SDK\level_editor\xrLC.bat pihan 
Как догадались нужно написать в строку где находится bat-файл компилятора и через пробел имя карты.


Если вы добавляли детали (траву к примеру), то после компиляции xrLC следует выполнить компиляцию xrDO_light:

Пуск --> Выполнить --> D:\modding\X-Ray_SDK\level_editor\xrDO_light.bat pihan 
  • Примечание: многие создаю для этого диск X:\, но если в пути до файла xrLC.bat нету пробелов (_ допускаются) и русских букв, то всё работает как по маслу.


После нажатия ОК, через некоторое время появится окно компилятора. Компиляция на Draft'е не занимает много времени и ресурсов вашего компьютера. Но для компиляции уровней на высоком кач-ве лучше закрыть все ресурсопрожорливые приложения. Не даром у многих во время компиляции на таком качестве, компилятор вылетает с логом "Out Of Memory". По окончанию компиляции уровня будет написано: Congratulations!... Сейчас заходим в папку level_editor\gamedata\levels, берём папку pihan (это результат нашей компиляции)и кидаем её в ЗП\gamedata\levels. Едем дальше.


ВНИМАНИЕ!

Данная стать в значительной степени устарела.

КАТЕГОРИЧЕСКИ предупреждаем

Использование устарешей и забагованной утилиты AiWrapper - СТРОГО ВОСПРЕЩАЕТСЯ!

Используйте только официальный софт от разработчиков игры, а именно: Официальный xrAI для SDK 0.4

За более подробной информацией обратитесь на AMK форум




Работа с aiwrapper'ом и грандиозное завершение.

Почти всё. Теперь нас ждёт работа с утилитой аивраппер (aiwrapper) автор утилиты - bardak, пламенное ему спасибо за неё.
Сама инструкция описана тут Цитата Kostya V
В папке X-Ray_SDK\aiwrapper, где лежит сам aiwrapper.exe (если вы настраивали по инструкции, то он у вас как раз тут и лежит) создаём файл с расширением *.bat. Открываем его блокнотом и пишем по очереди:

 
1.Сборка черновой сетки ИИ:
aiwrapper -draft -f <имя_уровня>
На выходе: gamedata\levels\<имя_уровня>\level.ai.
2.Проверка связности сетки ИИ:
aiwrapper -verify <имя_уровня>
В случае ошибки поправить ячейки в LE и повторить с п.2.
3.Просчёт укрытий для сетки ИИ. Предварительно необходимо произвести
сборку геометрии для получения build.cform (xrLC, здесь это не
рассматривается). Команда:
aiwrapper -f <имя_уровня>
Вообще, этот шаг необязателен на ранних этапах тестирования карты.
4.Сборка ИИ-графа:
aiwrapper -g <имя_уровня>
На выходе: gamedata\levels\<имя_уровня>\level.{graph|gct.raw}
5.Склейка ИИ-графов карт в глобальный игровой граф:
aiwrapper -m
На выходе: gamedata\game.graph и gamedata\levels\*\level.gct
(см. ниже для случая с картами без исходников)
6.Сборка all.spawn
aiwrapper -s
На выходе: gamedata\spawns\all.spawn
 

т.е. к примеру написали в батник

aiwrapper -draft -f pihan
pause

сохранили батник, запустили, всё прошло, пишем далее:

aiwrapper -verify pihan
pause

опять сохранили, запустили, прошло и так все 6 шагов.
Сейчас весь результат работы с аивраппером помещается в level_editor\2215\gamedata. После последней команды будет создан уже и all.spawn и game.graph, но это всё не то.
После всего пишем в батник заветную команду:

aiwrapper -upgrade 3502
Эта команда перешьёт и all.spawn, и части уровня.


Всё, отныне файл game.graph зашит в all.spawn, а то что нам надо лежит в папке level_editor\3502\gamedata


Из этой папки (из 3502) берём:
1. Из gamedata\levels\pihan берём всё содержимое и кидаем в папку ЗП\gamedata\levels\pihan с заменой существующих файлов.
2. Из gamedata\spawns берём all.spawn (он по идее как то по другому сейчас называется, переименуйте в all.spawn) кидаем в ЗП\gamedata\spawns.
3. Также скидываем в геймдату ЗП текстуры, звуки, модели (если надо).
4. Совет как запустить быстро карту: в корневой папке с ЗП создаём батник, в него вгоняем:

@start bin\xrEngine.exe -nointro -external -start server(all/single/alife/pihan) client(localhost)
Запускаем батник - игра грузится и вуаля - жните плоды работы.

Собственно всё. Мучайтесь. Данный урок позволяет создать локацию, но не объединяет локации (как объединить аллспавны формата ЗП, я пока не знаю).

Автор статьи - Pihan13


Подключение локации к игре

См. статью Подключение локаций к ЧН и ЗП с помощью программы от AMK Team.


Примеры (examples):

Другие места
LANGUAGE