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

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

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

Перейти к: навигация, поиск
(Инструментарий:)
(Примеры (examples):)
 
(не показаны 42 промежуточных версий 20 участников)
Строка 1: Строка 1:
Всем привет! Сейчас я расскажу, как мне удалось добавить сингл уровень без подключения к существующим локациям.
+
Всем привет! Сейчас я расскажу, как мне удалось создать уровень для одиночной игры без подключения к существующим локациям.
[[Изображение:1screen.jpg|thumb|То, что получилось]][[Изображение:2screen.jpg|thumb| ]][[Изображение:3screen.jpg|thumb| ]][[Изображение:4screen.jpg|thumb| ]]
+
== Инструментарий: ==
+
  
 +
 +
== Инструментарий. ==
 
# 3D Studio MAX 8
 
# 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://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 (см. ниже)
Строка 10: Строка 10:
 
##[http://stalkerin.gameru.net/modules.php?name=Downloads&d_op=viewtheoned&lid=348 X-ray Game asset tools pack update 2.0]
 
##[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 .
+
** <tt>gamedata\configs\game_graphs.ltx .
* gamedata\configs\game_levels.ltx .
+
** gamedata\configs\game_levels.ltx .
* gamedata\configs\game_levels_music.ltx .
+
** gamedata\configs\game_levels_music.ltx .
* gamedata\configs\game_maps_single.ltx .</tt>
+
** gamedata\configs\game_maps_single.ltx .</tt>
# Ещё понадобится моделька '''ЛЮБОГО''' персонажа из ТЧ.
+
Собственно понадобятся следующие файлы из геймдаты ТЧ (из ЗП не пойдёт — будет вылет). Я взял:
+
* <tt>gamedata\meshes\actors\novice\green_stalker_1.ogf
+
* gamedata\meshes\actors\*.omf (все OMF-ки)
+
* gamedata\textures\act\act_head1.dds
+
* gamedata\textures\act\act_green_stalker1.dds</tt>
+
  
Анимации и текстуры положить куда надо в СДК, а модельку переименуйте в stalker_hero_1.ogf и положите в level_editor\gamedata\meshes\actors\stalker_hero
 
<br/>Это необходимо для указания правильного пути к визуалу персонажа в алл.спавне
 
  
 
== Цели. ==
 
== Цели. ==
 
Наша цель - создать маленький уровень с несколькими постройками, деревцами. Этот уровень будет один в игре. Подключению уровней друг к другу эта статья не посвящена.
 
Наша цель - создать маленький уровень с несколькими постройками, деревцами. Этот уровень будет один в игре. Подключению уровней друг к другу эта статья не посвящена.
 +
  
 
== Первые шаги. ==
 
== Первые шаги. ==
Давайте всё настроим по порядку:
+
Давайте всё настроим по порядочку:
* Настройте СДК, конвертер и аивраппер как написано [http://www.gameru.net/forum/index.php?s=&showtopic=22233&view=findpost&p=712372 тут]
+
* Настройте SDK, converter и aiwrapper [http://www.gameru.net/forum/index.php?s=&showtopic=22233&view=findpost&p=712372 '''по инструкции''']
* Теперь сразу подредактируем конфиги. Создаём в папке с ЗП папку gamedata а в ней - папку configs. В последнюю кидаем файлы из распакованой геймдаты оригинальной игры:
+
* Теперь сразу подредактируем конфиги под наш уровень. Создаём в папке с ЗП папку gamedata а в ней - папку configs. В последнюю кидаем файлы из распакованной геймдаты оригинальной игры:
* <tt>game_graphs.ltx
+
** <tt>game_graphs.ltx
* game_levels.ltx
+
** game_levels.ltx
* game_levels_music.ltx
+
** game_levels_music.ltx
* game_maps_single.ltx</tt>
+
** game_maps_single.ltx</tt>
  
1. В '''game_graphs.ltx''' вписываем новые граф-поинты:
+
1. В '''game_graphs.ltx''' прописываем наш уровень:
 
почти в самом конце дописываем:
 
почти в самом конце дописываем:
 
<pre>
 
<pre>
142 = "pihan_graph_point_01"
+
183 = "pihan"
143 = "pihan_graph_point_02"
+
 
</pre>
 
</pre>
 
2. В '''game_levels.ltx''' следующие работы:
 
2. В '''game_levels.ltx''' следующие работы:
Строка 93: Строка 85:
 
Открываем '''level_editor\gamedata\config\game_levels.ltx'''. Вписываем тоже что и в '''game_levels.ltx''' от ЗП (см. п. 1) (именно наш уровень со своим уникальным идентификатором)
 
Открываем '''level_editor\gamedata\config\game_levels.ltx'''. Вписываем тоже что и в '''game_levels.ltx''' от ЗП (см. п. 1) (именно наш уровень со своим уникальным идентификатором)
 
С конфигами всё. Теперь приступим к самому моделированию.
 
С конфигами всё. Теперь приступим к самому моделированию.
== Моделирование. ==
+
 
Открываем 3дмакс. создаём уровень как показано в этой статье:  
+
 
[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 Создание уровня, пошаговое руководство]
+
== Моделирование геометрии уровня. ==
 +
Открываем 3D Studio MAX 8. Создаём уровень как показано в этой статье:  
 +
[http://stalkerin.gameru.net/wiki/index.php?title=%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,_%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/>Всё как надо - настраиваем текстуру, материал, шейдер.
<br/>Доходим до момента экспорта в СДК. Экспортируем террейн.
+
<br/>Дойдя до момента экспорта в SDK. Экспортируем террейн и постройки, если таковые имеются
 +
 
 
== Работа в SDK ==
 
== Работа в SDK ==
Открываем LE. Сейчас нам нужно добавить созданный нами террейн в библиотеку объектов. Заходим в меню '''Objects --> Library Editor'''. Там жмём на кнопку '''Import Object''' и импортируем наш террейн (земля). Затем нажмите '''Save'''. Теперь наш террейн добавился в библиотеку объектов СДК. Далее мы должны разместить этот террейн в окне редактора. Сначала выбираем в меню '''Edit Mode''' режим работы с объектами (кнопка). Затем жмём Multiple Append (находится в меню '''Commands''') и выбираем наш террейн. <br/>У меня теперь всё выглядит так:  
+
Открываем 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 http://i070.radikal.ru/0911/a0/23514fbe4fb4t.jpg]
+
<br/>[[Image:Террейн_вид.jpeg|512px]]
<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/>Озеленение уровня, если вам оно нужно, описано тут: [http://www.stalkerin.gameru.net/wiki/index.php?title=%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/>Теперь обязательно надо расположить на уровне:
 
<br/>Теперь обязательно надо расположить на уровне:
 
* '''actor''' - точка старта игрока. в настройках его укажите путь к визуалу, который мы положили в геймдату СДК выше.[[Изображение:Act prop.jpg|thumb|Object Propetries - ACTOR]]  
 
* '''actor''' - точка старта игрока. в настройках его укажите путь к визуалу, который мы положили в геймдату СДК выше.[[Изображение:Act prop.jpg|thumb|Object Propetries - ACTOR]]  
Строка 114: Строка 110:
 
Сначала их создаём: в меню '''Edit Mode''' выбираем '''Spawn Element'''. В дереве всего что можно спавнить, в списке заходим в директорию (для тех кто в танке - папке) '''ai''' и выбираем '''graph_point'''. Создаём это аналогично Light и glow. Размещаем 2 графпоинта на разных концах карты. Затем у первого в настройках (ПКМ--> Propetries)делаем так как на картинке:
 
Сначала их создаём: в меню '''Edit Mode''' выбираем '''Spawn Element'''. В дереве всего что можно спавнить, в списке заходим в директорию (для тех кто в танке - папке) '''ai''' и выбираем '''graph_point'''. Создаём это аналогично Light и glow. Размещаем 2 графпоинта на разных концах карты. Затем у первого в настройках (ПКМ--> Propetries)делаем так как на картинке:
 
У второго графпоинта в опциях пишем только имя - '''pihan_graph_point_02'''
 
У второго графпоинта в опциях пишем только имя - '''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/>Это то, что должно обязательно находится на сингловом уровне. Можете также добавить деревьев (нужны соотв. 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'''.
 
<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'''.
  
Строка 120: Строка 116:
 
Сама сборка сетки - дело не трудное. Оно очень подробно описано в этой статье [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 Сборка АИ-Сетки]
 
Сама сборка сетки - дело не трудное. Оно очень подробно описано в этой статье [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/>Напомню, что продолжительность сборки зависит от размера уровня.
 
<br/>Напомню, что продолжительность сборки зависит от размера уровня.
== Настройка сцены ==
+
== Настройка сцены. ==
 
Настроим сцену: Идите в меню '''Scene --> Options''' там указываете как на картинке:
 
Настроим сцену: Идите в меню '''Scene --> Options''' там указываете как на картинке:
 
[[Изображение:Nastroyka sceny.jpg]]
 
[[Изображение:Nastroyka sceny.jpg]]
Строка 138: Строка 134:
 
<br/>Если вы добавляли детали (траву к примеру), то после компиляции xrLC следует выполнить компиляцию xrDO_light:
 
<br/>Если вы добавляли детали (траву к примеру), то после компиляции xrLC следует выполнить компиляцию xrDO_light:
 
<pre>Пуск --> Выполнить --> D:\modding\X-Ray_SDK\level_editor\xrDO_light.bat pihan </pre>
 
<pre>Пуск --> Выполнить --> D:\modding\X-Ray_SDK\level_editor\xrDO_light.bat pihan </pre>
*''Примечание: многие создаю для этого диск X:\, но если в пути до файла '''xrLC.bat''' нему пробелов (_ допускаются) и русских букв, то всё работает как по маслу.''  
+
*''Примечание: многие создаю для этого диск X:\, но если в пути до файла '''xrLC.bat''' нету пробелов (_ допускаются) и русских букв, то всё работает как по маслу.''  
 
<br/>После нажатия ОК, через некоторое время появится окно компилятора. Компиляция на Draft'е не занимает много времени и ресурсов вашего компьютера. Но для компиляции уровней на высоком кач-ве лучше закрыть все ресурсопрожорливые приложения. Не даром у многих во время компиляции на таком качестве, компилятор вылетает с логом "Out Of Memory". По окончанию компиляции уровня будет написано: '''Congratulations!'''... Сейчас заходим в папку '''level_editor\gamedata\levels''', берём папку '''pihan''' (это результат нашей компиляции)и кидаем её в '''ЗП\gamedata\levels'''. Едем дальше.
 
<br/>После нажатия ОК, через некоторое время появится окно компилятора. Компиляция на Draft'е не занимает много времени и ресурсов вашего компьютера. Но для компиляции уровней на высоком кач-ве лучше закрыть все ресурсопрожорливые приложения. Не даром у многих во время компиляции на таком качестве, компилятор вылетает с логом "Out Of Memory". По окончанию компиляции уровня будет написано: '''Congratulations!'''... Сейчас заходим в папку '''level_editor\gamedata\levels''', берём папку '''pihan''' (это результат нашей компиляции)и кидаем её в '''ЗП\gamedata\levels'''. Едем дальше.
 +
 +
 +
=ВНИМАНИЕ!=
 +
Данная стать в значительной степени устарела.
 +
 +
==КАТЕГОРИЧЕСКИ предупреждаем==
 +
Использование устарешей и забагованной утилиты '''AiWrapper''' - '''СТРОГО ВОСПРЕЩАЕТСЯ!'''
 +
 +
Используйте только официальный софт от разработчиков игры, а именно: [http://stalkerin.gameru.net/modules.php?name=Downloads&d_op=getit&lid=376 Официальный xrAI для SDK 0.4]
 +
 +
За более подробной информацией обратитесь на [http://www.amk-team.ru/forum/ AMK форум]
 +
 +
 +
<hr>
 +
 +
 
== Работа с aiwrapper'ом и грандиозное завершение. ==
 
== Работа с aiwrapper'ом и грандиозное завершение. ==
 
Почти всё. Теперь нас ждёт работа с утилитой аивраппер (aiwrapper) автор утилиты - bardak, пламенное ему спасибо за неё.
 
Почти всё. Теперь нас ждёт работа с утилитой аивраппер (aiwrapper) автор утилиты - bardak, пламенное ему спасибо за неё.
 
<br/>Сама инструкция описана тут [http://www.gameru.net/forum/index.php?showtopic=22233 Цитата '''Kostya V''']
 
<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'''. Открываем его блокнотом и пишем по очереди:
 
<br/>В папке X-Ray_SDK\aiwrapper, где лежит сам aiwrapper.exe (если вы настраивали по [http://www.gameru.net/forum/index.php?showtopic=22233&st=0&p=712372&#entry712372 инструкции], то он у вас как раз тут и лежит) создаём файл с расширением '''*.bat'''. Открываем его блокнотом и пишем по очереди:
<pre>
+
<ini>
 
1.Сборка черновой сетки ИИ:
 
1.Сборка черновой сетки ИИ:
> aiwrapper -draft -f <имя_уровня>
+
aiwrapper -draft -f <имя_уровня>
 
На выходе: gamedata\levels\<имя_уровня>\level.ai.
 
На выходе: gamedata\levels\<имя_уровня>\level.ai.
 
2.Проверка связности сетки ИИ:
 
2.Проверка связности сетки ИИ:
> aiwrapper -verify <имя_уровня>
+
aiwrapper -verify <имя_уровня>
 
В случае ошибки поправить ячейки в LE и повторить с п.2.
 
В случае ошибки поправить ячейки в LE и повторить с п.2.
 
3.Просчёт укрытий для сетки ИИ. Предварительно необходимо произвести
 
3.Просчёт укрытий для сетки ИИ. Предварительно необходимо произвести
 
сборку геометрии для получения build.cform (xrLC, здесь это не
 
сборку геометрии для получения build.cform (xrLC, здесь это не
 
рассматривается). Команда:
 
рассматривается). Команда:
> aiwrapper -f <имя_уровня>
+
aiwrapper -f <имя_уровня>
 
Вообще, этот шаг необязателен на ранних этапах тестирования карты.
 
Вообще, этот шаг необязателен на ранних этапах тестирования карты.
 
4.Сборка ИИ-графа:
 
4.Сборка ИИ-графа:
> aiwrapper -g <имя_уровня>
+
aiwrapper -g <имя_уровня>
 
На выходе: gamedata\levels\<имя_уровня>\level.{graph|gct.raw}
 
На выходе: gamedata\levels\<имя_уровня>\level.{graph|gct.raw}
 
5.Склейка ИИ-графов карт в глобальный игровой граф:
 
5.Склейка ИИ-графов карт в глобальный игровой граф:
> aiwrapper -m
+
aiwrapper -m
 
На выходе: gamedata\game.graph и gamedata\levels\*\level.gct
 
На выходе: gamedata\game.graph и gamedata\levels\*\level.gct
 
(см. ниже для случая с картами без исходников)
 
(см. ниже для случая с картами без исходников)
 
6.Сборка all.spawn
 
6.Сборка all.spawn
> aiwrapper -s
+
aiwrapper -s
 
На выходе: gamedata\spawns\all.spawn
 
На выходе: gamedata\spawns\all.spawn
</pre>
+
</ini>
 
т.е. к примеру написали в батник  
 
т.е. к примеру написали в батник  
 
<pre>aiwrapper -draft -f pihan
 
<pre>aiwrapper -draft -f pihan
Строка 187: Строка 199:
 
Собственно всё. Мучайтесь. Данный урок позволяет создать локацию, но не объединяет локации (как объединить аллспавны формата ЗП, я пока не знаю).
 
Собственно всё. Мучайтесь. Данный урок позволяет создать локацию, но не объединяет локации (как объединить аллспавны формата ЗП, я пока не знаю).
  
<br/>Автор статьи - '''Pihan13'''
+
Автор статьи - '''Pihan13'''
 +
 
 +
 
 +
==Подключение локации к игре==
 +
 
 +
См. статью [[Подключение локаций к ЧН и ЗП с помощью программы от AMK Team]].
 +
 
  
 
== Примеры (examples): ==
 
== Примеры (examples): ==
 
*[http://ifolder.ru/14778741 Игровой вариант (делался на версии 1.6.00)]
 
*[http://ifolder.ru/14778741 Игровой вариант (делался на версии 1.6.00)]
 
*[http://ifolder.ru/14784136 Исходники для СДК без некоторых текстур (извиняйте - забыл какие)]
 
*[http://ifolder.ru/14784136 Исходники для СДК без некоторых текстур (извиняйте - забыл какие)]
 +
 +
<center><gallery>
 +
Изображение:1screen.jpg|То, что получилось
 +
Изображение:2screen.jpg
 +
Изображение:3screen.jpg
 +
Изображение:4screen.jpg
 +
</gallery></center>
  
 
[[Категория:SDK]]
 
[[Категория:SDK]]

Текущая версия на 19:27, 18 августа 2017

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


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

  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