Компиляция -=inGame АИ=- — различия между версиями
Материал из S.T.A.L.K.E.R. Inside Wiki
Строка 80: | Строка 80: | ||
<br clear="both" /> | <br clear="both" /> | ||
− | Далее мы рассмотрим как собирать несколько уровней и устанавливать между ними переходы | + | Далее мы рассмотрим как собирать несколько уровней и устанавливать между ними переходы. |
+ | |||
+ | Итак у вас два уровня... на одном из них стоит '''actor'''. Начнем с него: | ||
+ | создаем '''ai->level changer''', затем '''shape->sphere''', с помощью '''scale''' увеличиваем до необходимых размеров, теперь переключаемся в режим редактирования spawn element, выделяем '''level changer''' и жмем '''commands->attach object''', а затем кликаем на сферу... Всё, сфера и level changer теперь связаны. Далее идем в закладку '''properties''', указываем название, например '''to_atp_2''', теперь нужно прописать в custom data вейпоинт для возврата, в случае отказа игрока от перемещения с локации на локации(обязательно). Вписываем вот это: | ||
+ | |||
+ | [pt_move_if_reject] | ||
+ | path = atp_1_way_if_reject | ||
+ | //в случае отказа от перемещения, возвращаемся назад | ||
+ | |||
+ | В '''Level to change''' вписываем наименование уровня, куда мы хотим переместиться с этого левела, например '''atp_2'''. | ||
+ | В '''Level Point to change''' указываем точку, в которой игрок появится... | ||
+ | '''start_actor_01'''. С level changer на этом уровне всё, пошли далее. | ||
+ | Создаем '''graph point''' или используем пустой существующий если у вас есть. | ||
+ | В него вписываем '''start_actor_01''', этот поинт для того чтобы мы смогли со второго левела '''atp_2''' -> на '''atp_1'''. Создаем еще один '''graph point''' c названием '''exit_atp_1_01''', в разделе location выбираем, например "экскейп". В '''Connection -> Level name''' указываем уровень, с которым будет связан atp_1, то есть выбираем '''atp_2''', в '''Connection->Point Name''' вписываем точку связи из второго уровня, которую мы создадим потом '''exit_atp_2_01'''. С первым уровнем всё... | ||
+ | |||
+ | Для чего нам нужен graph point'ы ''exit_xxx''? | ||
+ | ''exit_xxx'' представляет собой '''connection_point'''(точку связи) - для того, чтобы компилятор знал, какие уровни он соединяет, а если по другому: начальный граф уровня, от него потом считаются все ноды. | ||
+ | |||
+ | start_actor_xx - точка появления актера после перехода. | ||
+ | |||
+ | Помните мы вписали в custom data level changer'а вейпоинт? Вот теперь нам придется его создать. Выбираем '''Way Points''' -> жмем "чайник" и стави 1 вейпоинт рядом с level changer(так мы создали начальную точку пути), теперь жмем '''point mode''' и ставим второй. Если они не соеденились стрелочкой, жмем '''create 1-link'''. Теперь у нас получился путь, который мы прописали в custom data '''level changer''', заходим в свойства и обзываем его также как и в custom data, тоесть atp_1_way_if_reject. Всё с первым уровнем покончили. | ||
+ | |||
+ | Итак, открываем второй уровень и поехали по новой... | ||
+ | |||
+ | Создаем там путь из двух вейпоинтов по схеме выше и обзываем '''atp_2_way_if_reject'''. Создаем level changer называем его '''to_atp_1''', | ||
+ | в custom data пишем | ||
+ | |||
+ | [pt_move_if_reject] | ||
+ | path = atp_2_way_if_reject //название вэйпоинта | ||
+ | |||
+ | В '''level to change''' указываем atp_1 //куда переходим с atp_2 | ||
+ | В '''level point to change''' - '''start_actor_01'''(дада, тот который мы создали на первом левеле :) ) | ||
+ | |||
+ | Теперь здесь же на atp_2 создаем graph point с названием '''start_actor_01'''. | ||
+ | И еще один где вписываем следущие значения: | ||
+ | '''Name:''' exit_atp_2_01 | ||
+ | '''Location:''' "свалка" //наименование локации | ||
+ | |||
+ | Connection: | ||
+ | '''Level name:''' atp_1 //первый уровень | ||
+ | '''Point name:''' exit_atp_1_01 //связующая точка с первого уровня | ||
+ | |||
+ | Незабудьте, что '''ACTOR''' должен быть только на одной локации(в нашем случае на atp_1), иначе компилятор выдаст ошибку. Всё!... Сохраняем, прекомпилим. | ||
+ | |||
+ | Запускаем '''Ai Compiler''', выбираем по очереди наши два уровня и просчитываем шаг 1, проверям сетку. Теперь создаем ''текстовый документ'' и вписываем туда | ||
+ | <code> | ||
+ | @start /wait bins\ai\1.exe -g atp_1 | ||
+ | @start /wait bins\ai\1.exe -g atp_2 | ||
+ | </code> | ||
+ | сохраняем его как .bat и запускаем. | ||
+ | |||
+ | Создаем еще один текстовик пишем | ||
+ | <code> | ||
+ | @start /wait bins\ai\1.exe -m | ||
+ | </code> | ||
+ | сохраняем как .bat и стартуем. | ||
+ | |||
+ | И наконец.. создаем 3ий "бантик"! | ||
+ | <code> | ||
+ | bins\ai\1.exe -s | ||
+ | </code> | ||
+ | Компилим, заходим в gamedata\spawns\, переименовываем получивший спавн в all.spawn и запускаем через новую игру. Как видит мы можете перемещаться с уровня на уровень туда сюда без каких-либо проблем. |
Версия 19:50, 7 января 2008
Итак, приступим... Раз вы здесь, значит есть на то причина:
- 1)либо вы нуп, увидевший аи-компилер и решивший забацать чтото крутое
- 2)вы не нуп, но всё забыли или почти всё
- 3)вы супер-аццкий про решивший глянуть на весь этот детсад свысока :)
Ну чтож... начнем с самого простого, скомпилим левел с аи, монстрами на карте mp_atp. Открываем левел.. первое что надо сделать убрать все rpoint(мультиплеерные точки спавна). Убрали? Отлично. Создаем Spawn elements -> actor ну и пожеланию в свойствах (Properties) в custom data прописываем ему предположим вот это:
[spawn]
wpn_ak74
Тем самым при появлении игрока у него в руках уже будет калаш. Далее, создаем монстра... любого по желанию, предположим кровососа и ставим на уровень. Теперь дело за AI map - аи сетка, которая необходима для того, чтобы нпс, монстры могли ориентироваться по уровню. Жмем Object и кликаем на земле(тем самым мы ее "выбрали" для дальнейших манипуляций), затем AI Map -> Commands -> Make list from selected, жмем add в разделе AI Map Nodes и add для добавления объектов слева вверху(чайник) и ставим на карте ноды в нужном вам порядке(достаточно одного), жмем Generate Full. Всё, аи-сетка сгенерированна. Теперь добавляем на левел обязательно! 1 graph point (Spawns->ai->graph point), в нем можно ничего не писать. Сохраняем уровень, билдим (build).
Следующим шагом будет правка конфигов.
Пример:
game_maps_single.ltx
[level_maps_single]
...
testing_ai
//название вашего уровня
[testing_ai]
global_rect = -6,1220.0, 248.0,1481.0
texture = map\map_escape
//текстура при загрузке
bound_rect = -502.148,-412.284,379.976,474,479
weathers = default
//погода
game_levels.ltx
[levels]
...
level190
//номер вашего уровня
[level190]
name = testing_ai
caption = "testing_ai"
offset = 2000.0, 800.0, 1000.0
id = 193
//индентифакционный номер, должен быть уникальным
game_graphs.ltx
018 = "testing_ai"
Теперь открываем AI Compiler, указываем папку с сдк(.../level_editor, либо если он объединен с игрой, путь до нее). Выбираем ваш уровень. Проходим 1ую стадию чернового просчета аи карты(шаг 1), либо если вы хотите долго ждать и просчитать укрытия для нпс то выбираем шаг 2. Далее строим граф и кросс-таблицу уровня шаг 3, потом граф игры шаг 4 и наконец фаил .spawn шаг 5. После всех стадий заходим в gamedata\spawns\ и переименовываем test.spawn в all.spawn
Далее мы рассмотрим как собирать несколько уровней и устанавливать между ними переходы.
Итак у вас два уровня... на одном из них стоит actor. Начнем с него: создаем ai->level changer, затем shape->sphere, с помощью scale увеличиваем до необходимых размеров, теперь переключаемся в режим редактирования spawn element, выделяем level changer и жмем commands->attach object, а затем кликаем на сферу... Всё, сфера и level changer теперь связаны. Далее идем в закладку properties, указываем название, например to_atp_2, теперь нужно прописать в custom data вейпоинт для возврата, в случае отказа игрока от перемещения с локации на локации(обязательно). Вписываем вот это:
[pt_move_if_reject] path = atp_1_way_if_reject //в случае отказа от перемещения, возвращаемся назад
В Level to change вписываем наименование уровня, куда мы хотим переместиться с этого левела, например atp_2. В Level Point to change указываем точку, в которой игрок появится... start_actor_01. С level changer на этом уровне всё, пошли далее. Создаем graph point или используем пустой существующий если у вас есть. В него вписываем start_actor_01, этот поинт для того чтобы мы смогли со второго левела atp_2 -> на atp_1. Создаем еще один graph point c названием exit_atp_1_01, в разделе location выбираем, например "экскейп". В Connection -> Level name указываем уровень, с которым будет связан atp_1, то есть выбираем atp_2, в Connection->Point Name вписываем точку связи из второго уровня, которую мы создадим потом exit_atp_2_01. С первым уровнем всё...
Для чего нам нужен graph point'ы exit_xxx? exit_xxx представляет собой connection_point(точку связи) - для того, чтобы компилятор знал, какие уровни он соединяет, а если по другому: начальный граф уровня, от него потом считаются все ноды.
start_actor_xx - точка появления актера после перехода.
Помните мы вписали в custom data level changer'а вейпоинт? Вот теперь нам придется его создать. Выбираем Way Points -> жмем "чайник" и стави 1 вейпоинт рядом с level changer(так мы создали начальную точку пути), теперь жмем point mode и ставим второй. Если они не соеденились стрелочкой, жмем create 1-link. Теперь у нас получился путь, который мы прописали в custom data level changer, заходим в свойства и обзываем его также как и в custom data, тоесть atp_1_way_if_reject. Всё с первым уровнем покончили.
Итак, открываем второй уровень и поехали по новой...
Создаем там путь из двух вейпоинтов по схеме выше и обзываем atp_2_way_if_reject. Создаем level changer называем его to_atp_1, в custom data пишем
[pt_move_if_reject] path = atp_2_way_if_reject //название вэйпоинта
В level to change указываем atp_1 //куда переходим с atp_2 В level point to change - start_actor_01(дада, тот который мы создали на первом левеле :) )
Теперь здесь же на atp_2 создаем graph point с названием start_actor_01. И еще один где вписываем следущие значения: Name: exit_atp_2_01 Location: "свалка" //наименование локации
Connection: Level name: atp_1 //первый уровень Point name: exit_atp_1_01 //связующая точка с первого уровня
Незабудьте, что ACTOR должен быть только на одной локации(в нашем случае на atp_1), иначе компилятор выдаст ошибку. Всё!... Сохраняем, прекомпилим.
Запускаем Ai Compiler, выбираем по очереди наши два уровня и просчитываем шаг 1, проверям сетку. Теперь создаем текстовый документ и вписываем туда
@start /wait bins\ai\1.exe -g atp_1
@start /wait bins\ai\1.exe -g atp_2
сохраняем его как .bat и запускаем.
Создаем еще один текстовик пишем
@start /wait bins\ai\1.exe -m
сохраняем как .bat и стартуем.
И наконец.. создаем 3ий "бантик"!
bins\ai\1.exe -s
Компилим, заходим в gamedata\spawns\, переименовываем получивший спавн в all.spawn и запускаем через новую игру. Как видит мы можете перемещаться с уровня на уровень туда сюда без каких-либо проблем.