Очевидно, що ігри частенько складаються з декількох великих або не дуже, рівнів. За задумки творця або інших причин, часом буває необхідно створити кілька ігрових рівнів, які повинні будуть довантажуватися лише по потребі. Така можливість є і в UDK і реалізується досить просто.
Часто виходить так, що потрібно завантажити огроменную локацію, яка претендуватиме на пристойний шматок ресурсів комп'ютера. Якщо дозволяє дизайн, в такі моменти дуже зручно використовувати підкачуємі рівні. Тобто вся локація буде розбита на шматки - гравець знаходиться тільки в певній частині карти, а в потрібне момент подгружается необхідна частина, в той час як вже не потрібна - вивантажується. Якщо все зроблено акуратно (а хто ж сумнівається в протилежному?), Для гравця це практично не помітно, а розробникам і комп'ютера простіше працюється.
Насправді можна просто завантажити інший рівень за допомогою kismet, але на це йде більше часу (якщо рівень великий) і у випадках, коли доводиться часто скакати з одного рівня на інший, довге завантаження буде дратувати гравця (і не тільки його).
Про всяк випадок розповім, як можна завантажити рівень з іншого рівня.
Робимо як на скріншоті:
New Action> Misc> Console Command
New Event Using Trigger_1> Touch
New Variable> Player> Player
щоб UDK побачив ваш рівень.
І ще, рівень буде довантажувати, якщо ви запустите гру як Play on PC. Інакше не запрацює. І не забудьте поставити PlayerStart. і т.д. і т.п.
З цим розібралися. Тепер завдання таке - довантажувати один рівень прямо в інший.
Створюємо найпростіший рівень. Я створив кілька платформ. Всі вони трохи стикаються один з одним, але це не обов'язково. Можна просто розкидати по різних кутах - як Вам зручно. Зберігаємо його (наприклад map_full).
Тепер видаляємо всі платформи крім першої і ребілд (тиснемо кнопку Build Geometry for visible levels), зберігаємо рівень (наприклад map_01). Завантажуємо map_full і тим самим повертаємо рівні. Видаляємо всі платформи крім другий - ребілд і зберігаємо (map_02). І так далі.
Завантажуємо map_01. ставимо світло, точку старту для гравця - созраняем. тепер йдемо в Content Browser і переходимо на вкладку levels. Вибираємо Add Existing Level і додаємо туди map_02. map_03 і т.д.
З інших місце вони не додавалися. На жаль, з чим це пов'язано поки не розібрався. Може хто підкаже?
У віконці, що з'явилося вибираємо Kismet (будемо управляти підвантаженням через Kismet). AlwaysLoaded - тут зрозуміло, постійно завантажений, а з третім ще не експериментував. Зберігаємо. Якщо зараз запустити рівень, то ми побачимо тільки map_01. що цілком природно - команди завантажувати інші платформи не було.
Щоб завантажувалися інші платформи через тригер, ми використовуємо Kismet. Але спочатку зробимо тригер, для цього виставляємо розміри у builder brush і тиснемо правою кнопкою миші по значку Add Volume. далі вибираємо зі списку TriggerVolume. Тепер у нас є тригер. Нам потрібно зробити так, щоб при торканні області тригера, довантажувати наступна платформа. Для цього йдемо в Kismet і робимо ось таку схемку:
Це у нас:
New Event Using TriggerVolume_1> Touch
New Action> Level> Stream Level
Виділяємо Stream Level і пишемо там назва довантажувати уровня.Тоже саме робимо з іншими рівнями. Ось загалом то і все, далі вже самі експериментуйте.