Альтернативный способ связки локаций — различия между версиями — S.T.A.L.K.E.R. Inside Wiki

Альтернативный способ связки локаций — различия между версиями

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

Перейти к: навигация, поиск
(Росток)
(АСДС)
Строка 36: Строка 36:
 
Распаковываем Алл спавн и ищем ваш лвл ченжер 1, в его секцие ищем такие строки
 
Распаковываем Алл спавн и ищем ваш лвл ченжер 1, в его секцие ищем такие строки
  
position = -183.81120300293,2.23819088935852,-289.468292236328
+
*position = -183.81120300293,2.23819088935852,-289.468292236328
direction = 0,-0.69812798500061,0
+
*direction = 0,-0.69812798500061,0
 
и
 
и
game_vertex_id = 0
+
*game_vertex_id = 0
level_vertex_id = 436
+
l*evel_vertex_id = 436
 
копируем эти значения. Затем ищем лвл чеинжер 2 с которым связанн чейнжер 1 и вставляем скопированное по соответсвующим позициям
 
копируем эти значения. Затем ищем лвл чеинжер 2 с которым связанн чейнжер 1 и вставляем скопированное по соответсвующим позициям
dest_game_vertex_id = 0  <== сдюда копируем значения game_vertex_id
+
*dest_game_vertex_id = 0  <== сдюда копируем значения game_vertex_id
dest_level_vertex_id = 436 <== сдюда копируем значения level_vertex_id
+
*dest_level_vertex_id = 436 <== сдюда копируем значения level_vertex_id
dest_position = 0,0,0 <== сдюда копируем значения position
+
*dest_position = 0,0,0 <== сдюда копируем значения position
dest_direction = 0,0,0 <== сдюда копируем значения direction (по желанию)
+
*dest_direction = 0,0,0 <== сдюда копируем значения direction (по желанию)
  
 
затем повторяем все эти действия только наоборот (значения чейнжера 1 заменяем значениями чейинжера 2)
 
затем повторяем все эти действия только наоборот (значения чейнжера 1 заменяем значениями чейинжера 2)
 +
 
=== Подправил и довел до ума статью - Sine ===
 
=== Подправил и довел до ума статью - Sine ===
 
[[Категория:SDK]]
 
[[Категория:SDK]]

Версия 18:09, 29 мая 2010

Итак, порассскинув мозгами и ниасилив последний урок лохотрона, мне пришла в голову следующая мысль.

Теория

У вас есть собственный уровень, годный для сингла? Есть level_changer на билдовые локации и вы хотите объеденить его с ними? Итак, мой метод основан на том, что

  1. нужно разобрать одну из билдовых локаций(ту, куда вы хотите вставить переход).
  2. Вставить секцию с уровнем в файлы конфигов.
  3. Вставить туда нужные граф поинты и левел чейнджер.
  4. Собрать локацию и скомпилировать.
  5. Собрать графы уровней и графы игры, собрать алл.спавн и вставить всё это в игру.

Преимущества данного метода:

  • Сравнительно прост для среднего мододела.
  • При отсутствии нужного граф поинта или левел ченжера его можно легко добавить.
  • Позволяет создать нормальный, продуманный переход между уровнями
  • Не требуется АИ враппера от бардака, ЛВИД_ГВИД скрипта и прочей мороки.

Недостатки:

  • Требуется замена файлов уровня.
  • Игра иногда вылетает, но работает при загрузке последнего сейва (авто сейв при переходе с локации на локацию)

Практика

Радар

Итак, я разобрал локацию "радар" - что же мне делать дальше? Первым делом, я поставлю переход на мою локацию, скажем на росток из мультиплеера. Создаю 2 graph point. 1-й обзываю exit_radar_100(я догадываюсь, что 1-е 99 граф поинтов уже названы так XD) 2-й - start_actor_100. Предварительно создал вейпоинт для перехода между уровнями - sp_rostok_way_if_reject. И создаю level_changer для смены локаций. Туда вписываю уровень для смены(не забывайте перед началом работ править конфиги!!!), и точку для появления игрока на локации: sp_rostok и start_actor_01 соответственно. пишу в custom data следующие 2 строки: [pt_move_if_reject] path = sp_rostok_way_if_reject - в случае отказа игрок встанет на место 1-го вэйпоинта и его взгляд будет направлен в сторону 2-го вейпоинта. Так, на радаре вроде всё, в настройках уровня выбираю драфт-качество, сохраняю и строю.

Росток

Далее загружаю росток(из мультиплеера), и аналогично создаю 2 граф поинта, 1 level_changer и 1 вейпоинт. Заполняю их, как и в радаре, билдю. Дальше открываю компилятор ИИ от НЕО][, просчитываю ИИ сетки радара и ростка... Какая досада - черновые и финальные названия уровней не совпадают! Иду в папку gamedata/levels и переименовываю l10_radar в radar, повторяю попытку просчёта - получилось! Дальше компилирую оба уровня и создаю графы уровней(всех сингловских). Создаю граф игры и собираю all.spawn.

АСДС

Теперь требуется подправить конфиги в АСДС (лвл эдитор не просчитывает некоторые параметры, поэтому раньше имелся вылет при переходе.) Распаковываем Алл спавн и ищем ваш лвл ченжер 1, в его секцие ищем такие строки

  • position = -183.81120300293,2.23819088935852,-289.468292236328
  • direction = 0,-0.69812798500061,0

и

  • game_vertex_id = 0

l*evel_vertex_id = 436 копируем эти значения. Затем ищем лвл чеинжер 2 с которым связанн чейнжер 1 и вставляем скопированное по соответсвующим позициям

  • dest_game_vertex_id = 0 <== сдюда копируем значения game_vertex_id
  • dest_level_vertex_id = 436 <== сдюда копируем значения level_vertex_id
  • dest_position = 0,0,0 <== сдюда копируем значения position
  • dest_direction = 0,0,0 <== сдюда копируем значения direction (по желанию)

затем повторяем все эти действия только наоборот (значения чейнжера 1 заменяем значениями чейинжера 2)

Подправил и довел до ума статью - Sine

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