|
|
Строка 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]]
| + | |