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

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

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

Перейти к: навигация, поиск
Строка 1: Строка 1:
Всем привет! Сейчас я расскажу, как мне удалось добавить сингл уровень без подключения к существующим локациям.
+
вафывфывфвфв
[[Изображение:1screen.jpg|thumb|То, что получилось]][[Изображение:2screen.jpg|thumb| ]][[Изображение:3screen.jpg|thumb| ]][[Изображение:4screen.jpg|thumb| ]]
+
== Инструментарий. ==
+
 
+
# 3D Studio MAX 8
+
##[http://stalkerin.gameru.net/downloads/SDK/max_pl_2.0.rar Plugin for 3D Studio Max версии 2.0]. Последний нам нужен для экспорта геометрии созданного нами уровня в формат SDK. Также плагин входит в X-ray Game asset tools pack FINAL (см. ниже)
+
# [http://xfiles.gsc-game.com/st/xray-sdk-setup-v0.4.exe X-Ray SDK 0.4 (ТЧ)]
+
## [http://stalkerin.gameru.net/downloads/SDK/xrSDK_patch_03.7z Глобальный патч v. 0.3]
+
# [http://stalkerin.gameru.net/modules.php?name=Downloads&d_op=viewtheoned&lid=288 X-ray Game asset tools pack FINAL]
+
##[http://stalkerin.gameru.net/modules.php?name=Downloads&d_op=viewtheoned&lid=348 X-ray Game asset tools pack update 2.0]
+
# Следующие конфиги из распакованной геймдаты «Зова Припяти» (далее как «ЗП»):
+
** <tt>gamedata\configs\game_graphs.ltx .
+
** gamedata\configs\game_levels.ltx .
+
** gamedata\configs\game_levels_music.ltx .
+
** gamedata\configs\game_maps_single.ltx .</tt>
+
 
+
== Цели. ==
+
Наша цель - создать маленький уровень с несколькими постройками, деревцами. Этот уровень будет один в игре. Подключению уровней друг к другу эта статья не посвящена.
+
 
+
== Первые шаги. ==
+
Давайте всё настроим по порядочку:
+
* Настройте SDK, converter и aiwrapper как написано [http://www.gameru.net/forum/index.php?s=&showtopic=22233&view=findpost&p=712372 '''в этом посте''']
+
* Теперь сразу подредактируем конфиги. Создаём в папке с ЗП папку gamedata а в ней - папку configs. В последнюю кидаем файлы из распакованой геймдаты оригинальной игры:
+
** <tt>game_graphs.ltx
+
** game_levels.ltx
+
** game_levels_music.ltx
+
** game_maps_single.ltx</tt>
+
 
+
1. В '''game_graphs.ltx''' вписываем новые граф-поинты:
+
почти в самом конце дописываем:
+
<pre>
+
142 = "pihan_graph_point_01"
+
143 = "pihan_graph_point_02"
+
</pre>
+
2. В '''game_levels.ltx''' следующие работы:
+
вписываем
+
<pre>
+
level183
+
и в конец:
+
[level183]
+
name  = pihan
+
caption = "pihan"
+
offset  = 12000.0,    1000.0,    10000.0
+
weathers = [default]
+
id  = 183
+
</pre>В ЗП можно добавлять уровни с числом от 183 и выше.
+
 
+
3. В '''game_levels_music.ltx''' : добавляем
+
<pre>
+
[pihan_musics]
+
music\zaton_day                  = 5, 22,  0.2,  2, 4  ;;; первые 2 цифры в строчках это с какого по какой час играет эмбиент.
+
music\zaton_night                = 22, 5,  0.3,  1, 2
+
</pre>
+
Если поняли указываются звуковые файлы из папки '''sounds'''
+
 
+
4. В '''game_maps_single.ltx''' :
+
<br/>ВНИМАНИЕ!!!
+
<br/>Находим строку '''[level_maps_single]'''
+
<br/>Несколько строк под ней - это уровни из оригинала ЗП. Нам они не нужны. Ставим перед строками знак ''';''' - это мы их так сказать "закоментили", также вписываем наш уровень. Выглядеть это должно так:
+
<pre>
+
[level_maps_single]
+
;  stohe_selo                        =
+
;  zaton                            =
+
  pihan                            =
+
;  jupiter                          =
+
;  jupiter_underground              =
+
;  pripyat                          =
+
;  labx8                            =
+
;  plecha_selo                      =
+
;  weapons_test                      =
+
;  peacemaker_selo                  =
+
</pre>
+
 
+
теперь пишем секцию ниже:
+
 
+
<pre>[pihan]
+
global_rect        = 307.0, 90.0, 717.0, 500.000000  ;; положение на глобальной карте (здесь не рассматривается)
+
music_tracks        = pihan_musics                    ;; название звуковой ambient-темы. см. выше.
+
weathers            = dynamic_default
+
</pre>
+
 
+
5. Теперь нужно подредактировать конфиг в СДК, чтобы в граф-поинт можно было указать наш уровень.
+
 
+
Открываем '''level_editor\gamedata\config\game_levels.ltx'''. Вписываем тоже что и в '''game_levels.ltx''' от ЗП (см. п. 1) (именно наш уровень со своим уникальным идентификатором)
+
С конфигами всё. Теперь приступим к самому моделированию.
+
 
+
== Моделирование. ==
+
Открываем 3D Studio MAX 8. Создаём уровень как показано в этой статье:
+
[http://stalkerin.gameru.net/wiki/index.php/%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D1%83%D1%80%D0%BE%D0%B2%D0%BD%D1%8F%2C_%D0%BF%D0%BE%D1%88%D0%B0%D0%B3%D0%BE%D0%B2%D0%BE%D0%B5_%D1%80%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE Создание уровня, пошаговое руководство]
+
<br/>Всё как надо - настраиваем текстуру, материал, шейдер.
+
<br/>Дойдя до момента экспорта в SDK. Экспортируем террейн и постройки, если таковые имеются
+
 
+
== Работа в SDK ==
+
Открываем Level Editor (далее как LE). Сейчас нам нужно добавить созданный нами террейн в библиотеку объектов. Заходим в меню '''Objects --> Library Editor'''. Там жмём на кнопку '''Import Object''' и импортируем наш террейн (земля). Затем нажмите '''Save'''. Теперь наш террейн добавился в библиотеку объектов СДК. Далее мы должны разместить этот террейн в окне редактора. Сначала выбираем в меню '''Edit Mode''' режим работы с объектами (1-я кнопка). Затем жмём '''Multiple Append''' (находится в меню '''Commands''') и выбираем наш террейн.
+
<br/>[http://radikal.ru/F/i070.radikal.ru/0911/a0/23514fbe4fb4.jpg.html '''У меня теперь всё выглядит так!''']
+
<br/>Озеленение уровня, если вам оно нужно, описано тут: [http://www.stalkerin.gameru.net/wiki/index.php/%D0%93%D0%BB%D0%BE%D0%B1%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B5_%D0%BE%D0%B7%D0%B5%D0%BB%D0%B5%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5,_%D0%B4%D0%BE%D0%B1%D0%B0%D0%B2%D0%BB%D1%8F%D0%B5%D0%BC_%D1%82%D1%80%D0%B0%D0%B2%D1%83_%D0%BD%D0%B0_%D1%83%D1%80%D0%BE%D0%B2%D0%B5%D0%BD%D1%8C Глобальное озеленение, добавляем траву на уровень]
+
<br/>Можно расположить на уровне несколько статичных объектов из библиотеки СДК (деревья, пропсы, камни и прочее)
+
<br/>Теперь обязательно надо расположить на уровне:
+
* '''actor''' - точка старта игрока. в настройках его укажите путь к визуалу, который мы положили в геймдату СДК выше.[[Изображение:Act prop.jpg|thumb|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 граф поинта:[[Изображение:Grpoint settings.jpg|thumb|Настройки графпоинта '''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'''
+
<br/><br/>Это то, что должно обязательно находится на сингловом уровне. Можете также добавить деревьев (нужны соотв. LODы), пропсов, домов (естественно создайте для них [http://sdk.stalker-game.com/ru/index.php/%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D1%91%D0%BC_HOM,_%D0%BF%D0%BE%D1%80%D1%82%D0%B0%D0%BB%D1%8B_%D0%B8_%D1%81%D0%B5%D0%BA%D1%82%D0%BE%D1%80%D0%B0 HOM'ы]). Таким же образом как мы заспавнили actor'а, добавляются и другие НПС, аномалии, монстры и прочее. Короче все вкусности сингла :).
+
<br/> Насчёт левел-чейнжеров (переходов) - всё подробно описано тут: [http://stalkerin.gameru.net/wiki/index.php/%D0%9A%D0%BE%D0%BC%D0%BF%D0%B8%D0%BB%D1%8F%D1%86%D0%B8%D1%8F_-%3DinGame_%D0%90%D0%98%3D- Компиляция -=inGame АИ=-]. Единственное НО - нужно в настройках левелчейнжера поставить галку напротив '''silence mode'''.
+
 
+
== Сборка АИ-сетки. ==
+
Сама сборка сетки - дело не трудное. Оно очень подробно описано в этой статье [http://stalkerin.gameru.net/wiki/index.php/%D0%A1%D0%B1%D0%BE%D1%80%D0%BA%D0%B0_%D0%90%D0%98-%D0%A1%D0%B5%D1%82%D0%BA%D0%B8 Сборка АИ-Сетки]
+
<br/>Напомню, что продолжительность сборки зависит от размера уровня.
+
== Настройка сцены ==
+
Настроим сцену: Идите в меню '''Scene --> Options''' там указываете как на картинке:
+
[[Изображение:Nastroyka sceny.jpg]]
+
<br/>Идём в следующему шагу.
+
== Сборка Локации ==
+
После проверки что всё настроено, ничего не забыли, и не влепили лишнего переходим к сборке.
+
# Сохраняем наш уровень командой '''File --> Save'''
+
# Теперь в меню '''Compile''' кликаем по очереди на:
+
* '''Make Game'''
+
* '''Make Details'''
+
* '''Make HOM'''
+
* '''Make AI-map'''
+
Кстати на '''Make details''' у меня вышла ошибка, т.к. у меня на уровне не было травы. Я продолжил делать всё остальное - уровень все равно работает.
+
<br/>И теперь, с криком "банзай!", жмём '''Compile --> Build'''. Это соберёт наш уровень перед компиляцией.
+
== Компиляция карты ==
+
<pre>Пуск --> Выполнить --> D:\modding\X-Ray_SDK\level_editor\xrLC.bat pihan </pre>Как догадались нужно написать в строку где находится bat-файл компилятора и через пробел имя карты.
+
<br/>Если вы добавляли детали (траву к примеру), то после компиляции xrLC следует выполнить компиляцию xrDO_light:
+
<pre>Пуск --> Выполнить --> D:\modding\X-Ray_SDK\level_editor\xrDO_light.bat pihan </pre>
+
*''Примечание: многие создаю для этого диск X:\, но если в пути до файла '''xrLC.bat''' нему пробелов (_ допускаются) и русских букв, то всё работает как по маслу.''
+
<br/>После нажатия ОК, через некоторое время появится окно компилятора. Компиляция на Draft'е не занимает много времени и ресурсов вашего компьютера. Но для компиляции уровней на высоком кач-ве лучше закрыть все ресурсопрожорливые приложения. Не даром у многих во время компиляции на таком качестве, компилятор вылетает с логом "Out Of Memory". По окончанию компиляции уровня будет написано: '''Congratulations!'''... Сейчас заходим в папку '''level_editor\gamedata\levels''', берём папку '''pihan''' (это результат нашей компиляции)и кидаем её в '''ЗП\gamedata\levels'''. Едем дальше.
+
== Работа с aiwrapper'ом и грандиозное завершение. ==
+
Почти всё. Теперь нас ждёт работа с утилитой аивраппер (aiwrapper) автор утилиты - bardak, пламенное ему спасибо за неё.
+
<br/>Сама инструкция описана тут [http://www.gameru.net/forum/index.php?showtopic=22233 Цитата '''Kostya V''']
+
<br/>В папке X-Ray_SDK\aiwrapper, где лежит сам aiwrapper.exe (если вы настраивали по [http://www.gameru.net/forum/index.php?showtopic=22233&st=0&p=712372&#entry712372 инструкции], то он у вас как раз тут и лежит) создаём файл с расширением '''*.bat'''. Открываем его блокнотом и пишем по очереди:
+
<pre>
+
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
+
</pre>
+
т.е. к примеру написали в батник
+
<pre>aiwrapper -draft -f pihan
+
pause</pre>
+
сохранили батник, запустили, всё прошло, пишем далее:
+
<pre>aiwrapper -verify pihan
+
pause</pre>
+
опять сохранили, запустили, прошло и так все 6 шагов.
+
<br/>Сейчас весь результат работы с аивраппером помещается в '''level_editor\2215\gamedata'''. После последней команды будет создан уже и '''all.spawn''' и '''game.graph''', но это всё не то.
+
<br/>После всего пишем в батник заветную команду:
+
<pre>aiwrapper -upgrade 3502</pre>Эта команда перешьёт и '''all.spawn''', и части уровня.
+
<br/>Всё, отныне файл '''game.graph''' зашит в '''all.spawn''', а то что нам надо лежит в папке level_editor\3502\gamedata
+
 
+
<br/>Из этой папки (из 3502) берём:
+
<br/>1. Из gamedata\levels\pihan берём всё содержимое и кидаем в папку ЗП\gamedata\levels\pihan с заменой существующих файлов.
+
<br/>2. Из gamedata\spawns берём all.spawn (он по идее как то по другому сейчас называется, переименуйте в all.spawn) кидаем в ЗП\gamedata\spawns.
+
<br/>3. Также скидываем в геймдату ЗП текстуры, звуки, модели (если надо).
+
<br/>4. Совет как запустить быстро карту: в корневой папке с ЗП создаём батник, в него вгоняем:
+
<pre>@start bin\xrEngine.exe -nointro -external -start server(all/single/alife/pihan) client(localhost)</pre>Запускаем батник - игра грузится и вуаля - жните плоды работы.
+
Собственно всё. Мучайтесь. Данный урок позволяет создать локацию, но не объединяет локации (как объединить аллспавны формата ЗП, я пока не знаю).
+
 
+
<br/>Автор статьи - '''Pihan13'''
+
 
+
== Примеры (examples): ==
+
*[http://ifolder.ru/14778741 Игровой вариант (делался на версии 1.6.00)]
+
*[http://ifolder.ru/14784136 Исходники для СДК без некоторых текстур (извиняйте - забыл какие)]
+
 
+
[[Категория:SDK]]
+

Версия 07:07, 16 мая 2010

вафывфывфвфв

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