Що таке кат сцена у грі. Модифікації. Створення сцен-на-движку (cut-scenes, кат-сцен). Перш ніж почати

Головна / Очищення пристрою

Або використовувати знятий відеоматеріал з живою дією.

Найраніші відеоігри, відомі використанням кат-сцен як велика і невід'ємна частина гри, були Portpia Renzoku Satsujin Jikenвід Enix, випущена в 1985, та Maniac Mansionвід LucasArts Entertainment, створена Роном Гілбертом і випущена в 1987, яка була також відома декількома іншими нововведеннями. З тих пір сценки були частиною багатьох відеоігор, особливо в жанрі RPG.

Сценки іноді також згадуються з іншими термінами типу синематикиабо всередині-ігрового кіно. Кат-сцени, зроблені з відеофайлу, згадуються іноді також як відео повної дії(Full-Motion Video, . Наприклад, сценки в Wing Commander IVвикористовували повноцінні набори та «названих» акторів типу Марка Хемілла та Малкольма Макдауелла для зображення персонажів.

Проте, багато геймерів насолоджуються сценками з живою дією через їх часто бідні продуктивні значення і нестандартну дію. Кат-сцени в ігровій серії стратегій у реальному часі Command & Conquerособливо відзначені за часто утрироване діюче виконання.

Сценки з живою дією були популярні в першій середині 1990-х з початком ери

Збільшення якості графіки, вартості, критичної зворотної реакції та потреба в професіоналах для кращої інтеграції сценок та графіки геймплею незабаром призвели до збільшення популярності анімованих кат-сцен наприкінці 1990-х. Однак, для кінематографічного ефекту деякі ігри все ще використовують живі сценки; приклад цього - Black, де показується інтерв'ю між Джеком Keллaром та його слідчим, зняте з реальними акторами.

Анімовані сценки

Є дві первинні технології для анімації кат-сцен. Всередині-ігрові сценкивідображаються Рендерингом на льоту, використовуючи той же Графічний двигун як і відповідна гра. Вони часто використовуються в жанрі stealth, наприклад Metal Gear Solid, Splinter Cell, а також жанри RPGі , Spider-Manі The Legend of Zelda, Серед багатьох інших.

Попередньо відрендеровані сценкианімовані та представлені розробниками гри, які вміють обдурити повний масив технологій комп'ютерних образів (CGI), мальованої мультиплікації або панельного мистецтва в стилі графічний роман . Серія відеоігор Final Fantasy, розроблена Square Co. , відзначена за свої попередньо відрендерованікат-сцени, які були вперше представлені в Final Fantasy VII.

У новіших іграх, які можуть використати у своїх інтересах складні методи програмування та потужніші процесори, внутрішньо-ігрові сценки рендеруються на льоту і можуть бути близько інтегровані з геймплеєм. Також використовуються заскриптовані кат-сцени, що забезпечує зиск від сценок, не відбираючи інтерактивність у геймплею. Деякі ігри, наприклад, дають гравцеві деякий контроль над камерою протягом кат-сцен, наприклад Dungeon Siege ,Metal Gear Solid 2: Sons of Libertyі Kane & Lynch: Dead Men. Інші вимагають натискань на клавіші протягом сценок для успішного продовження, як у Sword of the Berserk: Guts Rage, Resident Evil 4або Shenmue 2.

«Інтерактивне кіно» також повертається, як зазначено в в СШ та Канаді) від Quantic Dream, де вся гра має справу зі сценками в реальному часі, які йдуть в залежності від дій гравця.

Рішення є невід'ємною частиною історії гри, і гравці мають справу зі сценками в якийсь спосіб.

Інтерактивні кат-сцени

Інтерактивні сценки мають справу з комп'ютером, що взяв під свій контроль персонаж гравця, у той час як кнопки показуються на екрані, вимагаючи від гравця їх натискання, щоб продовжити або встигнути в дії, як у «Quick Time Events» з , Слово з Berserk: Guts" age, Resident Evil 4, God of War Iі II, Tomb Raider: Legend, Marvel: Ultimate Allianceі іноді критикувалися через відсутність попереджень, коли вони повинні траплятися, часто змушуючи гравця проходити подію наново.

Інший тип таких сцен - де гравець отримує можливість вибрати діалог персонажа з принаймні декількох, приклади цього є в KOTOR і Mass Effect.

Без сценок

Нещодавно у відеоіграх з'явилася тенденція уникати повністю кат-сцени. Це популяризувалося в грі 1998 року від Assassin's Creed Ubisoft-а також дозволяє гравцеві зберігати контроль над персонажем протягом «кат-сцен». Це призначено для більшого занурення гравця в гру, хоча і вимагає великих зусиль з боку розробника, щоб переконатися, що гравець не зможе перервати заскриптовані дії, що відбуваються замість сценок. Spider-Manдля

Редактор Unreal Engine 4 містить кілька інструментів для створення синематик та звичайних кат-сцен. Дані інструменти дозволяють налаштувати переміщення об'єктів, камер, частинок і персонажів, налаштувати постобробку, а також призначити події, які будуть спрацьовувати в Блупринтах, тим самим виробляючи будь-яку додаткову дію на сцені.

Всі ці інструменти дозволяють створити не лише якісну кат-сцену, а й навіть записати повноцінний ролик, рекламу, мультик чи невеликий короткометражний фільм.

Інструменти

Редактор секвенсер дає користувачам створювати внутрішньоігрові ролики за допомогою мультитрекінго редактора схожого з Matinee. Шляхом створення Level Sequencesта додаванням Tracks, користувач може визначити вид кожного треку, що визначить вміст сцени. .

Створення Level Sequences

Level Sequence— це контейнер для ваших кінематографічних сцен і він має бути створений для того, щоб працювати у редакторі секвенсерів. Ви можете створити Level Sequenceі безпосередньо розмістити її на вашому рівні, шляхом вибору відповідної опції на панелі інструментів у вкладці Cinematics, приклад показаний на зображенні нижче.

Це додасть її на рівень, після чого вона може бути обрана для подальшого налаштування на панелі Details, подібно Matinee Actor. На панелі Details(нижче), ви можете визначити, де Level Sequenceбуде автоматично програється після старту рівня, швидкість відтворення секвенції, де секвенція має бути зациклена, та інше.

Level Sequenceвідрізняється від Matineeтим, що є самодостатнім ассетом і ви можете розміщувати секвенції всередині інших секвенцій. Наприклад, ви можете створити секвенцію яка містить анімованих персонажів, камери, тощо, і в той же час вона є частиною іншої, більш величезної секвенції.

Ще один спосіб створення Level Sequence- це в контент браузері клікнути на кнопку Add Newта вибрати Level Sequenceв розділі Animation. Це створить секвенцію, але не розмістить її лише на рівні.

Додавання треків до секвенції

Коли Level Sequenceстворена та редактор секвенцій відкрити, ви можете почати створювати ваш кінематографічний ролик.

Вище, у нас має свіжостворена та порожня секвенція.

Насамперед вам необхідно додати тип треку, який ви можете знайти у випадаючому меню після кліку по кнопці Add.

З меню, що випадає, ви можете вибрати кілька типів треків, а також додати ектора в секвецію ( Actor To Sequencer). Опція Actor To Sequencerдозволяє додати будь-який Ектор, який ви вибрали на вашому рівні.

Як правило, якщо у вашій секвенції є персонажі, тварини, істоти або щось у цьому дусі, що анімуватиметься і пересуватиметься, то у вас повинен бути Скелетал меш для них, який ви повинні додати в секвенсер. Наприклад, нижче у нас є Скелетал міш ведмедя який ми розмістили на рівні. Коли він виділений, ми можемо натиснути на кнопку Addу секвенсері та вибрати Actor To Sequencerщо додасть його в секвенцію і дасть нам можливість контролювати його за допомогою редактора секвенсер.

Залежно від типу створеного треку, саб-треки можуть бути додані, після чого можливість додавання нових сабтреків може бути відсутнім.

Нижче ми вибрали саб-трек анімації і застосували анімацію нашого скелета міша ведмедя для відтворення.

Possessables проти Spawnables

Секвенсер дуже схожий на Matinee в тому, що він використовує possessables«, це означає, що ектор існує на рівні і секвенсор володіє ним, щоб змінювати зміни, внесені в нього через секвенсер.

Як показано на прикладі ведмедя вище, ви можете розмістити скелетал меш на рівні і додати його в секвенсер, після чого всередині секвенсера ви можете додати трек анімації для скелетал міша та застосовувати різні анімації для нього для відтворення їх на сцені. Тепер ми «володіємо» Скелетал мешем і існує для того, що був робити те, що йому вказується через секвенсер. Також секвенсер включає і іншу форму маніпуляції, яка називає « spawnables«, це означає, що об'єкт яким ми володіємо не існує і секвенсер спавнить об'єкт, коли це треба і визначає його життєвий цикл.

Так коли це вигідно використовувати spawnable» об'єкт? Оскільки секвенсвер є власником і спавни об'єкт, він не прив'язаний до оперделенного рівня. spawnable» може бути використано на будь-якому рівні, ви можете створити сцену та використовувати цей « spawnable» об'єкт повторно в іншій сцені без його створення.

Прочитайте Creating Spawnables для повного розуміння.

Створення ключових кадрів сцени

Якщо ви знайомі із зовнішніми інструментами анімації, то принцип використання ключових кадрів для керування контентом може бути вам знайомий. Якщо не знайомі, то коротко, секвенсвер дозволяє маніпулювати вашим контентом за допомогою додавання ключів (звані Keyframing) у заданими властивостями у потрібних точках вздовж таймлайну. При досягненні цих ключів на таймлайні, властивості яких ви вказали для кожного ключового кадру, оновлюються і відображають ці змінені значення.

Приклад сцени, розташований нижче, показує додавання переміщення за допомогою додавання ключових кадрів трансформації скелетал меш ектора.

Ви можете додати ключовий кадр шляхом вибору треку та натискання Enterабо ж натисканням кнопки додавання ключового кадру для кожного треку.

Деякі настроювання на панелі DetailsЕктори можуть бути укладені в ключовому кадрі безпосередньо шляхом кліка по кнопці додавання ключового кадру для кожного налаштування.

Вище, кнопки ключового кадру показуються для Current Focal Lengthі Apertureналаштувань у Cine Camera Actor.

Секвенсер відтворює вашу сцену на основі діапазону між зеленню (початок) і червоним (кінець) маркерами.

Вище наш контент містить 2 шоти, які закінчуються на 600м кадрі, але наша секвенція розширена до 1000 кадрів, що в результаті дає порожній простір.

Ви можете перетягнути маркери початку і кінця для заповнення ділянки вашим контентом, або ж скористаються опцією, яка вказує ділянку, яка містить ваш контент. Ви можете знайти цю опцію в меню налаштувань секвенції і включити Keep Playback Range In Section Bounds.

Спеціальний в'юпорт

Секвенсер дозволяє вам використовувати спеціальний в'юпорт, щоб процес редагування був простішим.

Даний Cinematic Viewportsдає можливість подивитися, як сцена виглядатиме краще, для його вибору клацніть по кнопці Viewport.

Cinematic Ектори

На панелі Modesв розділі Cinematicви побачите 3 Cinematicектора, які можете використовувати для створення ваших синематиків.

Ви можете перетягнути будь-який з них на сцену після чого додати в секвенсвер, або ж перетягнути в секвенсвер, що зробить їх Spawnable.

Camera Rig Crane

Camera Rig Crane Actorможе бути використаний для симуляції руху, що використовується в країндартному кіновиробництві.

Ви можете додати камеру до ектора Camera Rig Craneпісля чого маніпулювати переміщенням крана з панелі Detailsта значеннями Crane Controls. Ці значення впливають на обертання, нишпорення і довжину руки крана. Ці значення можуть бути укладені в ключові кадри за допомогою секвенверу, що дасть вам налаштувати їх під час вашого синематика.

Camera Rig Rail

Camera Rig Rail Actor— це заснований на сплайні інструмент, до якого може бути прикріплена камера, щоб створити шлях для пересування.

Ви можете вибрати кожну точку сплайна і змінити дотичні, щоб зробити шлях, яким слідуватиме камера.Камера яка прикріплена до крана може обертатися незалежно від крана, налаштувати поворот камери можна на панелі Details. Це значення може бути занесено до ключового кадру для подальшої маніпуляції з секвенсверу.

Cine Camera Actor

Cine Camera Actor— схожий на ектор звичайної камери, проте доступні додаткові налаштування камери.

Cine Camera Actor(чорна камера) та дефолтна камера (синя камера) зображені вище.

Cine Camera Actorмістить налаштування для слідування за Ектором, кіношні налаштування (співвідношення сторін, Super 8mm, 35mm VistaVision, та ін), налаштування лінзи та фокусу. Коли використовуєте звичайну камеру все нормально, але для того, щоб досягти більшого кінематографічного ефекту використовуйте Cine Camera Actor.

Запис секвенції

Одним із інструментів, яким ви можете прискорити свій процес створення ассетів, є Sequence Recorderдля запису геймплею (або Level Sequences) що дозволяє створювати нові асети.

Додайте новий запис, виберіть ектора та натисніть кнопку Record, щоб розпочати запис. Коли зупиніть запис, буде створено новий асет Level Sequence, який згодом можна використовувати в існуючих або для використання в майбутніх секвенціях.

Налаштування рендеру ролика

У секвенсвері ви можете вибрати те, як відрендерити вашу секвенцію, як набір кадрів або як відео файл; вибирається Render Movie Settings.

Це покаже вікно налаштувань рендеру ролика, в якому ви можете визначити як буде рендеруватись ваша сцена.

Клацніть по кнопці Capture Movieдля початку запису вашої сцени.

Думки щодо робочого процесу

Тепер, коли у вас є загальне уявлення про те, як працює редактор секвенсера, ви можете розглянути питання про те, як ви будете використовувати інструмент, так як є кілька шляхів створення контенту. Будь-то створення однієї секвенції на все про все, або створення однієї великої секвенції куди будуть входити безліч інших секвенцій; секвенсвер дає кілька шляхів, якими ви можете скористатися при створенні ваших синематиків.

Як і інші панелі та редактори, Sequencer розбитий на складові. Ця сторінка описує кожне вікно, опцію та елемент керування редактора секвенцій.

Панель інструментів

Нижче розташований опис кожної з кнопок, зліва направо, оскільки вони розташовані на панелі інструментів.

Значок Опис
Зберігає поточну Level Sequence.
Зберігає поточну Level Sequenceпід різними іменами.
Пошук асету в контент браузері.
Відкриття вікна налаштувань рендеру відео, які дають можливість вивести секвенцію як відео або як набір кадрів.
Відкриває меню основних параметрів визначальних функціонал секвенсера.
Вкл/викл опції Key All. З цією опцією та з включеною опцією auto-key, визначає, якщо всі настройки записані в ключі для треку коли зміни були внесені або якщо тільки записані в ключ настройки були змінені.
Вкл/викл різні Auto-Keyопції. За замовчуванням ця опція вимкнена, але може бути встановлена ​​в режим Auto-key Allабо Auto-key Animated.
Увімкнути/вимкнути прив'язку до сітки для вікна ключового кадру в залежності від налаштувань прив'язки.
Дозволяє настроювати час інтервалу прив'язки.
Відкриває Curve Editor який дає вам налаштувати розташування ключів анімації в Keyframeвікні.

Sequence Breadcrumbs

Залежно від вашого робочого процесу, ви можете створити кілька Level Sequencesяк окремі сцени, і розкласти ці сцени у новій Level Sequences,вони будуть відтворюватися послідовно, створюючи одну велику секвенцію. З цієї великої секвенції ви можете переміститися в кожну з доданих секвенцій шляхом подвійного кліку по них. Keyframeвікні. На зображенні нижче представлена Level Sequenceпід назвою shot_06всередині іншої послідовності званої Master.

Ми можемо натиснути на Masterдля повернення в основну секвенцію, що містить нашу shot_06та інші секвенції.

Додавання/фільтр треків

Кнопка Addдозволяє додати трек або Actors з вашого рівня в секвенсер, для подальшого створення кінематографії.

Коли Ектор на вашому рівні вибраний, натисніть на кнопку Add, після чого виберіть його з меню. Якщо ви не вибрали Ектора, ви можете вибрати його з розділу Choose Actor.

Нижче представлені доступні треки, які ви можете додати в секвенсер; Щоб переглянути приклад, натисніть на назву треку.

Трек Опис
Add Folder Ви можете додати папки, що містять ваші треки, для впорядкування вашого робочого простору.
Audio Track Додає головний аудіо-трек, який використовується для відтворення звуків.
Event Track Додає трек події, який може бути використаний для виклику блупринта (на даний момент тільки в Level Blueprint).
Camera Cut Track Дозволяє перемикатися між камерами, пов'язаними з секвенсером для створення перспективи.
Shot Track Дозволяє додавати Level Sequenceяк « shots«, які можуть утримувати Takes, який може змінювати вхід/вихід
Play Rate Track Додає трек, який може бути використаний для маніпуляції швидкості відтворення секвенції.
Sub Track Додає саб-трек, який може містити інші секвенції. Це корисно для створення декількох копій секвенцій, щоб різні користувачі могли працювати без зміни вихідної секвенції.
Fade Track Додає трек що дозволяє контролювати згасання вхідної/вихідної секвенції.
Level Visibility Track Цей трек може бути використаний для запису в ключ та зміни видимості вашого рівня.

Опція Filterдозволяє вам відфільтрувати Tracks Windowтільки для Ектором, які були додані в секвенцію з рівня.

Timeline

Смужка часу показує швидкість відтворення вашої секвенції Зелений (Початок) та Червоний (Кінець) маркерами. Поточний час вашої секвенції показує маркером таймлайну, який ви можете перемістити лівим кліком вздовж усього таймлайну.

Ви можете клацнути правою кнопкою мишки на таймлайні для вказівки нової початок/кінець точки з контекстного меню, яке показано нижче.

Ваша секвенція продовжуватиме програватися від початкового до кінцевого маркера, навіть якщо ваш контент не заповнив весь таймлайн (або виходить за межі маркера кінця). В General Optionsє опція що зберігає контент всередині кордонів секції, що запобігатиме появі порожнього простору в секвенції.

Tracks Window

У вікні TracksВи можете вказати, які типи дій будуть виконуватись під час вашої секвенції.

Вище, є треки Camera Cutsдля зміни кутів камери під час секвенції, Cine Camera Actorпоказує сцену, а два Skeletal Mesh Actorsсимволи нашої сцени.

Секвенсер чутливий до контексту і дає вам додати саб-треки (де доступно) для кожного треку який дасть додаткові опції. Наприклад, на зображенні вище, ми додали трек CameraComponentдо нашого Cine Camera Actor, що дало нам можливість додати додатковий саб-трек для коригування налаштувань камери в нашій сцені, якщо ми захочемо їх внести.

Ви також можете додати ключові кадри з вікна треків, щоб вказати параметри в спеціальних точках таймлайну.

Клацніть по кнопці + або натисніть Enterу той час, коли трек виділено.

Keyframe Window

Вікно ключових кадрів — це місце, де ви можете коригувати вміст кожного вашого треку. нижче).

Вище, клік ПКМ по ключовому кадру треку трансформації дає нам можливість для зміни типу інтерполяції ключа, а також інші параметри, які можуть бути скориговані у випадаючому вікні Properties, яке оновлюється в залежності від типу контенту, за яким ви клікаєте правою кнопкою мишки.

Нижче, клік ПКМ з анімації призначеної на анімаційному треку та вибір налаштувань дає нам можливість змінити щойно застосовану анімацію, а також змінити її налаштування, такі як зміщення початку/кінця, а також швидкість відтворення та інші.

Навігація вікна ключового кадру

Нижче описані кнопки та способи, які використовуються для навігації у вікні ключового кадру.

Команда Опис
Правий клік та переміщення Дозволяє вам перемістити навколо вікна ключового кадру.
Ctrl+ коліщатко мишки вгору/вниз Збільшення/зменшення масштабу у вікні ключового кадру.
Home Скидання масштабування вікна ключового кадру.
- І = Зум в/із на 10%
, і. Переміщення вперед/назад між ключовими кадрами.
Лівий клік та переміщення Створює зону виділення довкола кадрів.
Лівий клік по ключу Вибір ключа
Правий клік по ключу Показ контекстного меню, в якому ви можете вказати налаштування ключа.
Середня кнопка мишки Створення ключа на позиції курсору.
Enter Вибір ключа вибраного треку у поточному часі.
Ctrl+G Встановити час/кадр секвенції.
I Вказати початок обраної ділянки.
O Вказати кінець вибраної ділянки.

Управління відтворенням

Кнопки керуванням відтворення ви можете знайти в лівому нижньому кутку редактора секвенсера, вони аналогічні тим, що використовуються в будь-якому медіа-програвачі; через макет анріалу вони мають теж іконки, що і освной вьюпорт рівня. При використанні Cinematic Viewport, елементи управління відтворенням з'являться всередині вьюпорта.

Стандартні елементи керування відтворенням:

Кнопка Опис
Встановити стартову позицію в поточну позицію, вказану маркером часу.
Стрибнути у стартову позицію відтворення.
Перейти до попереднього ключа вибраного треку.
Стрибнути до попереднього кадру.
Відтворення/пауза Level Sequence із позиції маркера часу.
Стрибнути на кадр вперед.
Перейти до наступного ключа вибраного треку.
Стрибнути до кінця відтворення.
Встановити кінцеву позицію відтворення на основі маркеру часу.
/ Перемикання між зациклюванням Level Sequence під час програвання.

Кнопки керування відтворенням усередині синематик в'юпорта аналогічні за функціоналом.

Посібник з редактора кат-сцен

Вступ

Наступне керівництво опише вам кроки, як налаштувати основні кінематографічні сцени в CryEngine 2.

Створення нової кат-сцени

Перш ніж почати

  1. Створіть новий шар панелі шарів, назвіть новий шар «cinematic».
  2. Щоб створити нову сцену, спочатку відкрийте панель «TrackView», через «View->Open View Panel->Track View».

Після відкриття TrackView натисніть на іконку Add Sequence.

Назвіть кат-сцену "example", а потім натисніть OK.

Після того, як ви створили нову сцену, настав час налаштувати властивості для цієї конкретної сцени, натисніть на іконку Edit Sequence.

У вікні, що з'явилося Sequence Properties, позначте такі прапорці:

Позначте Disable HUD, це відключить стандартний інтерфейс гравця, Disable Playerприховає гравця під час програвання сцени, 16:9 включає широкоформатний ефект сцени, та Non_Skippableозначає, що якщо гравець натисне пробіл, щоб пропустити сцену, вона продовжить програватися, EndTimeбула скоригована і тривалість сцени стала 15 секунд.

Перший елемент, який треба додати до сцени, це Scene Node. Він дозволяє нам перемикати камери.

Проте, не додані до сцени камери неможливо вибрати. Далі, нам потрібно додати камеру, RollupBarОберіть Cameraта помістіть її на ваш рівень.

Сутність Cameraу редакторі Sandbox 2.

Далі, ми виберемо сцену для використання цієї камери, двічі клацніть по шкалі часу на кадрі 0, щоб додати ключ, як тільки ключ буде додано, натисніть правою кнопкою миші по ключу, щоб відкрити Key Properties, клацніть по списку, що випадає, і виберіть тільки що додано «Camera1»;

Виберіть камеру, щоб додати її до кат-сцени, потім натисніть іконку Add Selected Nodeу TrackView.

Камера повинна з'явитися на TrackView, як показано нижче.

У цьому прикладі ми додамо людину з простою анімацією ходьби.

Для персонажів у кат-сценах використовується AnimObject, використовується замість ІІ сутностей з міркувань продуктивності, як і AnimObject, система ІІ не конфліктуватимуть із системою кат-сцен.

Оберіть AnimObjectв RollupBarі затиснувши ліву кнопку миші, перетягніть його у вікно перспективи.

Замініть стандартний прямокутний об'єкт моделлю персонажа, для цього виберіть AnimObject, та в розділі Entity PropertiesRollupBar), натисніть піктограму папки в полі Model.

Знайдіть файл objects/characters/human/us/nanosuit.

Кат-сцена виглядатиме як на скріншоті нижче.

Далі ми виберемо анімацію для персонажа. Двічі клацніть по кадру 0, щоб додати ключ до треку анімації, потім клацніть правою кнопкою миші по ключу, при цьому з'явиться вікно Key Properties, потім клацніть по списку і прокрутіть вниз, і вибери анімацію «relaxed_walk_nw_forward_slow_01», також поставте галочку Loop Animationщоб анімація вічно повторювалася, а також поставте галочку Root not move, так анімацію не зрушить і зникне після програвання.

Ключові кадри у кат-сценах

Наступний крок - створення ключових кадрів для того, щоб персонаж йшов уперед, зараз персонаж йде на одне місці.

Для початку, переконайтеся, що персонаж вибраний і встановіть повзунок кат-сцени в позицію 0, і натисніть кнопку Recordу вікні редактор кат-сцен.

У вікні перспективи, перемістіть персонажа в бажане вихідне положення в кадрі 0, ця дія запише положення і додати ключ позиції для персонажа, потім перемістіть повзунок часу в кат-сцену на останній кадр на 15 секунд, ви помітите, що ключові кадри з'являються на нульовому кадрі , і на поточному кадрі 15, поки кнопка запису не віджата, ви можете переміщати персонажа на бажане кінцеве положення. Якщо ви зараз спонукаєте повзунок часу, то персонаж ходитиме між двома точками, для отримання більш природної анімації ходьби, налаштуйте кінцеве положення.

Анімація камери

Тепер, коли персонаж ходить, нам треба, щоб камера слідувала за ним і панорамувала його ходьбу.

Щоб подивитися, що видно в камері, клацніть правою кнопкою по напису «Perspective», щоб викликати меню конфігурації вікна перегляду, потім виберіть «Camera->Camera1», тепер ви переглядаєте сцену через «Camera1».

Спочатку камера заблокована і ви не зможете її переміщати, так само як стандартне вікно перспективи, щоб розблокувати камеру, зніміть галочку з Lock Camera Movement.

Це зроблено з метою безпеки, щоб користувач випадково не перемістив камеру, думаючи, що це вікно перспективи, кнопки на вікні кат-сцени також повинні бути віджаті.

Тепер ми готові анімувати камеру, для цього встановіть повзунок часу на кадр 0 і переконайтеся, що вибрано камеру та натиснуто кнопку в редакторі кат-сцени, відрегулюйте вікно перегляду відповідно до ваших побажань.

Потім, посуньте повзунок часу в редакторі кат-сцен на 5 секунд і розташуйте камеру як бажаєте, повторіть подібні дії на 10 і 15 секунд.

Знову клацніть кнопку «Record», щоб уникнути випадкове анімування камери, якщо ви тепер посунете повзунок часу назад в редакторі кат-сцен, то ви повинні побачити анімацію камери по новому шляху і персонажа, що йде.

Тепер нам потрібно повернути вікно перспективи, для цього клацніть праву кнопку миші за написом «Camera1» і виберіть Default Camera.

Ми побачимо огляд сцени із зображеннями сплайнів шляху камери та персонажа.

Програвання сцени

Якщо ми просто зайдемо в гру, натиснувши «Ctrl+G», сцена не відтвориться, оскільки ми повинні спочатку створити логіку, використовуючи потоковий граф.

Для початку, нам треба додати сутність, яка міститиме потоковий граф, потоковий граф може утримуватися в персонажі, він у нас AnimObject, однак використання конкретної сутності безпечніше, оскільки з неї дуже важко випадково видалити потоковий граф, так що ми будемо використовувати AreaTrigger.

Оберіть AreaTriggerі перетягніть його у вікно перегляду, потім перейменуйте в Cine_example_FG, далі ми створимо потоковий граф, клацніть по кнопці Create в розділі Flow Graph.

З'явиться вікно під назвою "Enter Group Name for the Flow Graph", назвіть групу "cinematics", це дуже корисно, щоб у ній містилися всі потокові графи, пов'язані з кінематографічними кат-сценами.

Вибравши AreaTrigger, натисніть на кнопку Open, щоб розпочати роботу над потоковим графом для цієї сцени.

Відкриється редактор Flow Graph, переконайтеся, що ви вибрали новостворений потоковий графік для початку роботи над ним.

У цьому прикладі, ми просто запустимо сцену, як тільки гравець зайде в гру, для цього додамо нод Misc->Start.

Клацніть правою кнопкою миші по сірому полю, щоб додати новий ніж та виберіть нод Start, він спрацює, як тільки гравець зайде в гру.

Коли обидва ноди додані, ми з'єднаємо їх, щоб встановити логіку, просто клацніть і утримуйте по порту із синьою стрілкою та перетягніть його до зеленого вхідного порту StartTrigger.

Далі, нам треба вибрати, яку кат-сцену відтворювати, двічі клацніть лівою кнопкою миші по ноду Animations:PlaySequence, в налаштуваннях Inputsправоруч, натисніть багатокрапку, щоб відкрити Select Sequence, виберіть кат-сцену, яку ви створили, і натисніть кнопку «OK».

Потоковий граф буде виглядати як показано нижче.

Тестування

Якщо ви увійдете в гру, натиснувши Ctrl+G, сцена автоматично запуститься.

Налаштування закінчення сцени

У цій сцені, ми створимо ілюзію, що персонаж у сцені - це гравець, таким чином, по закінченні сцени ми хочемо приховати персонажа, в редакторі кат-сцен ми можемо це зробити. Відкрийте редактор кат-сцен та виберіть сутність AnimObject, двічі клацніть у треку Event, щоб додати ключовий кадр на 15 секунді, потім клацніть правою кнопкою миші по ключовому кадру, при цьому з'явиться вікно Key Properties, у випадаючому списки Fire EventОберіть Hide.

Ця дія приховає персонажа, коли сцена дійде до останнього кадру, однак, якщо ви прокрутите сцену редактору кат-сцен, то персонаж зникне у всій сцені, таким чином, нам треба додати подію Unhideна кадр 0, знову двічі клацніть у треку Event, щоб додати ключовий кадр, потім клацніть правою кнопкою миші по ключовому кадру, при цьому з'явиться вікно Key Properties, у випадаючому списки Fire EventОберіть Unhide.

Тепер персонаж з'являється і зникає як слід.

Для повної ілюзії, нам треба зробити, щоб гравець почав/продовжив, з того місця, де «актор» зупинився. В даний час гравець почне там, де він перейде в гру, що створить ілюзію різкого переходу.

Спочатку нам треба дізнатися кінцеву позицію персонажа, прокрутіть шкалу часу в редакторі кат-сцен на 15 секунд, далі, нам потрібно зв'язати цю чоку.

В даному випадку корисно використовувати TagPoint, які не видно під час гри, виберіть TagPointі помістіть поблизу персонажа, перейменуйте TagPointу «cine_character_endpoint».

Щоб отримати правильне вирівнювання до персонажа, використовуйте інструмент Align Selection, Оберіть TagPointа потім натисніть значок Align Selection, потім клацніть по персонажу, цю дію перемістить TagPointправильну позицію.

Далі додамо логіку в потоковому графі, щоб гравець почав із цієї точки, відкрийте Flow Graphі виберіть потоковий граф, потім клацніть правою кнопкою миші по сірій частині вікна, та додайте нод Entity:BeamEntity.

Так як ми хочемо, щоб гравець перемістився до точки, тому додайте нод Game:LocalPlayer

Останнім, нам треба додати нод, який зв'яже позицію TagPointз гравцем, це нод Entiy:EntityPosдодати його.

З'єднайте ноди у потоковому графі, як показано нижче, щоб призначити TagPointна нід Entity:EntityPos, Оберіть TagPointу вікні перегляду, а потім клацніть по заголовку нода Entity:EntityPosта виберіть Assign Selected Entity.

Тепер, коли сцену завершено, гравець почне з позиції TagPoint.

Додавання повноекранного ефекту

Для цієї сцени, ми додамо поява з темного на початку, а потім зникнення в темряву в кінці, і, нарешті, поява з темряви, під час переходу управління до гравця.

Відкрийте Flow Graphі виберіть потоковий граф, з яким ви збираєтеся працювати, потім клацніть правою кнопкою миші і додайте нод CrysisFX->ScreenFader.

Виберіть щойно створений нод CrysisFX->ScreenFaderта вкажіть значення 4 у параметрах FadeInTimeі FadeOutTime.

Потім, продублюйте нод CrysisFX->ScreenFader, клацнувши по ньому правою кнопкою миші та виберіть Copy Paste, повторити цю дію кілька разів, щоб всього стало три ноди ScreenFader.

Потім, ми додамо AreaTriggerщоб викликати логіку зникнення в кат-сцені, за допомогою потокового графа

Додати AreaTriggerу вікні перегляду та перейменуйте його на «cine_FadeOut_DT»; DT- це Dummy Trigger (тригер-пустушка ) який використовується для відправки події з кат-сцени до потокового графа.

У треку Eventдля «cine_FadeOut_DT» додайте ключовий кадр на 11 секунді, потім клацніть правою кнопкою миші по ключовому кадру, при цьому з'явиться вікно Key Properties, у випадаючому списки Fire EventОберіть Leave.

Потім відкрийте Flow Graph, потім клацніть правою кнопкою миші по сірій частині вікна та виберіть Add Selected Entity. Ця дія додасть AreaTriggerпотоковий граф.

Коли всі необхідні ноди додані в потоковий граф, настав час пов'язати всю логіку воєдино, налаштуйте потоковий граф, як показано на зображенні нижче.

Просто клацніть та перемістіть виведення нодів до введення відповідних нодів, щоб зробити зв'язок.

Розглянемо варіанти створення цих самих cut-scenes.

Таємна кімната.

Отже, як і обіцяв я напишу статтю про кат сценах. Якщо що не зрозуміло, запитуйте у коментарях. Почнемо з того, що необхідно завантажити та встановити патч https://yadi.sk/d/_Xp_Ua_33Hzy2s без нього нічого не вийде. Для початку нам потрібно в голові придумати якийсь ролик, а пояснювати буду на прикладі свого. Сцена буде такою: Гаррі з Роном підходять до незрозумілої кімнати, вони заходять туди, Рон запитує: "Що це було?" і несподівано виходять два великі краби. Хлопчики кричать "ееееееееет" і потім починають тікати, а краби йдуть за ними (тут доведеться їм збільшити швидкість). Все ж таки вони забігають у якусь кімнату, де безпечно і Рон каже "фух, пронесло".

Отже, додамо на карту все, що нам треба: двох крабів, Рона та Гаррі, оформимо карту як треба, тобто зробимо кімнати та почнемо.

1.Взагалі спочатку треба вказати ДЛЯ КОЖНОГО ГЕРОЯ, своє ім'я в cut scene. Для цього відкриваємо властивість гаррі та вибираємо вкладку cut scene та пишемо туди "Harry". Далі відкриваємо властивість Рона, знову ж таки відкриваємо Cut Scene і пишемо "Ron". Те саме робимо для крабів, пишемо "Crab1" та "Crab2", хоча насправді назви можна давати будь-які.

2. Заходимо в папку гри, відкриваємо system, потім CutScenes і копіюємо будь-який файл, стираємо все, що всередині нього і задаємо ім'я файлу англійською.

3. Тут починається найскладніше. Отже, запам'ятовуємо, БУДЬ-ЯКА КАТ СЦЕНА починається з рядка "" (Квадратні дужки обов'язкові). Я думаю, ця фраза перекладається як "сцена". Після того як ми написали цю фразу, натискаємо Enter і ми переходимо на інший рядок. Всі наступні рядки та фрази починаються зі слів "line", тобто line_0, line_1, line_2. Взагалі зараз зрозумієте. Отже ми прописуємо:

Line_0=Capture Harry line_1=Capture BaseCam line_2=Capture Ron line_3=Capture Crab1 line_4=Capture Crab2

Що ж означає Capture? Сapture- це захоплення будь-якої мети, тобто ми маємо захопити всіх персонажів, які у нас рухаються ( УВАГА: Capture BaseCam пишеться завжди, це теж треба запам'ятати, тобто базову камеру (BaseCam) треба завжди захоплювати, щоб вона могла працювати в кат сцені).

4. Повертаємось знову в редактор і ми повинні знайти об'єкт CutCameraPos (Navigation Point, UWNavigation Point). Ставимо камеру десь зверху і відкриваємо її властивості, відкриваємо вкладку Cut Scene і пишемо будь-яку назву камери. Я дав назву Cam1. Додамо об'єкт CutMark і розташуємо його між Роном та Гаррі, задамо йому назву "E2". Потім знову відкриваємо наш текстовий документ і пишемо line_5=BaseCam Target FlyTo E2, тобто це означає, що наша базова камера буде спрямована на CutMark з назвою E2 (Target – ціль, на що спрямована). Наступний рядок буде line_6=BaseCam FlyTo Cam1- цей рядок вказує на те, який предмет зніматиме те, що відбувається.

5. Далі нам треба, щоб Гаррі з Роном підійшли до кімнати одночасно. Для цього додаємо два CutMark і ставимо їх біля кімнати, потім вказуємо імена для кожного, наприклад "CutMarkHarry", тобто це місце, куди дійде Гаррі, а "CutMarkRon" це місце, куди дійде Рон. Знову повертаємось у текстовий редактор і пишемо:

Line_7=Harry RunTo CutMarkHarry * line_8=Ron RunTo CutMarkRon

WalkTo- йти до чогось, та й RunTo - бігти. Тобто все це означає, що Гаррі йде до свого CutMark, а Рон до свого. Зірочка означає, що наступна дія виконується одночасно з тією дією, на рядку якої вона написана, тобто Гаррі з Роном будуть тікати одночасно.

6. Тепер ставимо другу камеру правіше за першу, вона буде показувати на вхід у кімнату і знову вказуємо їй ім'я (Cam2). Також поставимо ще два CutMarkу кімнаті, туди підуть хлопчики та вкажемо імена імена (CutMarkHarry1 та CutMarkRon1). Поставимо CutMark, туди буде дивитися наша друга камера(E3-назва камери). Повертаємось у Текстовий редактор і пишемо:

Line_5=BaseCam Target FlyTo E3 line_6=BaseCam Cam2 FlyTo Cam2

Це означає, що наша базова камера є другою, яку ми поставили і що вона дивиться на наш CutMark(E3). Далі пишемо:

Line_11=Harry WalkTo CutMarkHarry1 * line_12=Ron WalkTo CutMarkRon1

Думаю, тут все зрозуміло.

Line_13=Ron TurnTo Harry * line_14=Harry TurnTo Ron

TurnTo- Повернутися до чого або до будь-кого.

7. Далі підуть репліки. Рон повинен сказати "Що це було?" Для того, щоб прослуховувати звуки треба завантажити патч https://yadi.sk/d/hlyZDt4gvVVrG/HP2/UPDATES , а всі репліки Рона можна завантажити тут https://yadi.sk/d/YeXxT8N43LPrAi . PC_Ron_DuelSnake_06 - Що це було? Значить ця фраза прописуватиметься так:

Line_15=Ron talk PC_Ron_DuelSnake_06

Для розмов можна використовувати Talkабо Say, це одне і теж

8. Тепер анімації. Гаррі робить анімацію, що нічого не розуміє, називається talk_dontKnow.

Отже ми прописуємо:

Line_16=Harry animate talk_dontKnow

Harry animate- це означає, що Гаррі показує анімацію. Всі анімації можна завантажити тут https://yadi.sk/d/hlyZDt4gvVVrG/HP2/UPDATES.

9. Також перед тим, як Рон запитав "Що це було?" камера показувала Рона поблизу, для цього використовуються координати:

Line_15=BaseCam FlyTo Ron z=27 x=40 y=10 line_16=BaseCam Target FlyTo Ron z=27 x=10

Те саме прописується для Гаррі.

10. Потім у нас повинні вийти краби, а перед цим потрібен невеликий проміжок часу, ми використовуємо команду Sleep 1 – це означає, що нічого не відбуватиметься одну секунду, можна замість одиниці написати два чи три. 11. Створюємо ще одну камеру Cam3 та CutMark E4:

Line_21=BaseCam Target FlyTo E4 line_22=BaseCam FlyTo Cam3

Потім треба, щоб вийшли краби, повернулися до хлопчиків і випустили свою лють, для них створюємо кат марки, якими вони ходитимуть і даємо їм імена CutMarkCrab1 та CutMarkCrab2:

Line_23=Crab1 WalkTo CutMarkCrab1 * line_24=Crab2 WalkTo CutMarkCrab2 line_25=Crab1 TurnTo Ron * line_26=Crab2 TurnTo Harry line_27=Crab1 animate roar * line_28=Crab2 animate roar.

Взагалі до кінця описувати дуже довго. Усі основні команди я написав.

Увага!!!Це ще не все. Коли ви вказали назву текстового документа, написаного на АНГЛІЙСЬКОМУ, ви на карту повинні поставити об'єкт CutScene, відкрити його властивості, вибрати вкладку CutSceneі в рядку FileName вказуєте ім'я англійською, яке ви дали текстовому документу. Не забудьте натиснути Build allта зберегтися.

Після закінчення дій потрібно прописати:

Line_33=Release Harry line_34=Release Ron line_35=Release BaseCam line_36=Release Crab1 line_37=Release Crab2

Release – значить звільнити, тобто якщо Capture – це захоплення, то Release – це навпаки. Сподіваюся все зрозуміло, всім удачі) Якщо незрозуміло запитуйте.

Я розповідав, що ми прикрутили до нашої гри мову Lua для скриптування різних сцен. Однак, скориставшись ним якийсь час, ми зрозуміли, що часом написання таких скриптів перетворюється на досить складний і складно код.

І ми замислилися про візуальний підхід. У цій статті я розповім про наше знайомство із засобом візуального скриптингу для Unity - "uScript", про його можливості та розповім про наш досвід.

Так, на скрині вище – реальні скрипт та схема.

Вступ.

Отже, давайте спочатку подивимося на те, що було. Нижче наведений справжній скрипт, що створює двох персонажів на екрані, що малює простий діалог, що дає користувачеві вибір з 2-х варіантів і розгалужується в цьому місці.

Вихідник LUA-скрипту

vhs.HUD(0) vhs.SwitchZone("street") local c1 = CharacterGfx() c1.create("c1", "char_big") c1.mirror(0) c1.setpos("n_2") c1.animate( "f_idle") local c2 = CharacterGfx() c2.create("c2", "char_black") c2.mirror(1) c2.setpos("n_3") c2.animate("f_idle") c2.preset("opp_lmb ") char.animate("idle") char.mirror(1) char.setpos("n_1") c1.say("Я потребує ваші clothes, ваші лади і ваші motocycle") c1.wait_bubble() c2.say( "Yep!") c2.wait_bubble() char.animate("f_idle") char.mirror(0) vhs.ShowMultiAnswer("Try to catch me! (run away)" "") switch_answer ( case 1: vhs.BlackScreen("You not fast enough to run away. So Have to fight!") vhs.StartFight(77,7) end, case 2: vhs.StartFight(77,7) end, )


У грі це виглядає так:


В принципі, у скрипті вище немає нічого страшного. Але уявіть, що у вас не одна галузь, а два. Уявіть, що вам потрібно перевіряти якісь ігрові параметри та розгалужувати скрипт виходячи з них. Це дуже швидко може стати ненаглядним.

Саме в такий момент нам захотілося візуалізації.

Подивившись кілька плагінів для юніті, ми зупинилися на uScript. Він дуже потужний, гнучкий, і при цьому просто розширюється. З іншого боку, він створює мінімальний impact по швидкодії, т.к. на етапі збереження схем відразу ж компіліт в C#, тобто. для Unity скрипт зібраний у такому редакторі не дуже відрізняється від скрипта, написаного руками на шарпах.

Давайте відразу наведу скрін того, на що перетворився наведений вище LUA-скрипт. (картинка клікабельна)

Виглядає трохи громіздко, зате відразу наочно. Коли хто і де створюється, що робить, а головне видно розгалуження.

Ось, наприклад, у нашому випадку гравець може вибрати одну відповідь із двох можливих. У грі це виглядає так:

А на схемі – так:

І відразу видно, що відбудеться при виборі відповіді №1 та відповіді №2. А якщо таких розгалужень буде більше – то тим більше схема не втратить наочності.

Принципи UScript.

Давайте швидко пробіжимося з того, з чого складається схема. Власне, основні модулі (у термінології uScript вони називаються «nodes») – це подія (з неї зазвичай починається скрипт або ланцюжок), action та змінні.

У action"він є вхід (звичайно 1) і вихід(и). Наприклад, у найпростішого дії 1 вхід і 1 вихід. А у якого-нитка блоку умови - вже буде два виходи, наприклад.

Знизу блоку підключаються змінні. Трикутник означає, що змінну буде проведено запис (output).

Наприклад, у цьому прикладі ми створюємо персонажа (за допомогою блоку Create char), а потім виставляємо йому ж дзеркальність в true (за допомогою блоку Mirror):

До речі, всі змінні можуть мати назви (у нашому випадку "с1"). І всі змінні одного типу з однаковою назвою синхронізуються в межах одного скрипта (схеми). Тобто. приклад вище цілком ідентичний такому:

Зроблено це щоб позбавити вас необхідності тягнути зв'язку через два екрани.

Крім того, якщо поставити галочку «expose to Unity», обрана змінна стане public і буде видно іншими скриптами (як візуальним, так і вашим рукописним). Масиви також підтримуються.

Небагато практики.

Усі модулі, які ви бачите на схемі – самописні. І було написано за 1 вечір. Давайте подивимося на їхній код.

Розглянемо спочатку щось дуже просте. Наприклад, action, який називається "Start fight". Він починає бій (по суті, викликає метод ігрової логіки) і приймає два параметри - айдішник бою та айдішник суперника.

Код для нього:

Public class uScriptAct_StartFight: uScriptLogic ( public bool Out ( get ( return true; ) ) public void In ( int opponent_id, int fightdata_id ) ( MainGame.me.StartSimpleFight(opponent_id, fightdata_id);
Просто? Дуже.

А тепер давайте ускладнимо. Допустимо, ми хочемо програти якусь анімацію. І хочемо мати два виходи. Один – одразу, а другий, який запуститься лише коли анімація програється до кінця.

Справа ви можете бачити блок із конфігурацією блоку, куди ви вбиваєте значення. У блоку 3 вхідних параметри - CharacterGfx (безпосередньо персонаж, якому ми програємо анімацію), Animation (назва анімації) та Mirror (необхідність дзеркаління). І блок має два виходи: Out (вихід відразу ж) і Finished (тільки коли анімація закінчиться).

При цьому змінна "Mirror" є енумератором з параметрами "так", "ні" і "не змінювати", яка представляється у вигляді dropdown-списку у вікні властивостей.

Код особливо складнішим не став:

Using uScriptEventHandler = uScript_GameObject.uScriptEventHandler; public class uScriptAct_CharacterPlayAnimation: uScriptLogic ( public bool Out ( get ( return true; ) ) public event uScriptEventHandler Finished; public enum BooleanSet ( NoChange = 0, True, False ) PlayAnimation(anim_name), if (mirror != BooleanSet.NoChange) ch.SetMirror(mirror == BooleanSet.True);ch.OnAnimationEndedCallback += () => ( if (null != Finished) EventArgs()); ); ) )
Ще мить. У всіх блоках вище вихід (Out) викликався відразу після виконання коду блоку.

А якщо ми хочемо зробити асинхронний action? Наприклад, завантаження сцени. І щоб виконання нашого візуального скрипта призупинилося до того моменту, доки асинхронно не провантажиться сцена.

Робиться це так само просто. Замість рядка
public bool Out (get (return true;)) яка була прапором «скрипт завжди готовий до виходу», ми пишемо:
public event uScriptEventHandler Out; тим самим кажучи – «Out тепер є хендлером, а не вічно-істинним boolean"ном».

А далі в коді в той момент, коли ви будете готові продовжити виконання скрипта, вам потрібно викликати цей хендлер так само, як було з Finished в попередньому прикладі:
if (Out! = null) Out(this, new System.EventArgs());

Не обов'язково писати код самому.

Все, що я привів вище, було написано нами, щоб зібрати все, що потрібно в одне зручне місце. Але це часто не обов'язково. У uScript є така річ, яка називається "reflection". Насправді це означає, що uScript автоматично сканує вашу сцену і витягує з неї всі об'єкти, а також їх публічні методи та параметри, до яких може дотягнутися. І надає доступ до них.

Наприклад, ось так виглядає блок-reflection на метод GetComponent() камери на сцені:

(Внизу ви можете бачити блок «properties», де задаються всі параметри методу)

Висновки.

Тулза нам однозначно сподобалася і ми будемо юзати її далі. Взагалі деякі люди примудряються за допомогою неї писати цілі ігри, але це вже надто.

Наскільки глибоко ми зможемо її заюзати, поки не знаємо. Наприклад, ще не вирішили, чи переписувати логіку тригерів квестів із нашою lua-орієнтованою на візуальну.

Але для скриптування кат-сцен і діалогів будемо юзати однозначно.

З мінусів можу виділити тільки один (який є наслідком плюсу) - як я писав вище, uScript перетворює візуальні схеми на C# код. А відтак кожна модифікація схеми вимагатиме перекомпіляції проекту.

В іншому - дуже раджу придивитися до цього інструменту, якщо ви хочете скриптувати подібну логіку. Так само, як я знаю, цей інструмент активно використовують для написання AI.

До речі, якщо вам потрібна саме для скриптування поведінки та взаємодії об'єктів на сцені (наприклад, тригери на зіткнення тощо), придивіться до PlayMaker. Він найбільше орієнтований саме на подію.

© 2022 androidas.ru - Все про Android