+38 (093)  990-30-70

Новости

Королевский бал у Вас дома

Розробка Uncharted 4: трохи про ІІ, частина 1

  1. система постів
  2. Напарники, які йдуть за гравцем
  3. Ті, що йдуть попереду напарники
  4. Спільне використання укриттів
  5. Медики-помічники
  6. Трава для стелса
  7. Органи відчуттів
  8. дослідження

Після випуску Uncharted 4 я вже можу розповісти про те, над чим працював в цьому проекті. В основному я розробляв ІІ для напарників гравця в режимі одного і помічників в розрахованому на багато користувачів, а також трохи працював над геймплейні логікою. Я опущу ті аспекти, які не дісталися до готової гри і деякі дрібні деталі.
Отже, приступаємо:

система постів


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

Напарники, які йдуть за гравцем


Система проходження напарників за гравцем взята з The Last of Us .
Основна ідея полягала в тому, що напарники вибирають навколо гравця позиції, в які потрібно слідувати. Ці потенційні позиції розходяться від гравця і повинні відповідати таким перевіркам вільності прямолінійного шляху: від гравця до позиції, від позиції до спроектованої вперед позиції, від спроектований вперед позиції до гравця.

На відміну від The ​​Last of Us, в Uncharted 4 є такий аспект, як скелелазіння. Щоб вбудувати скелелазіння в систему проходження за гравцем, ми додали селектор постів скелелазіння, що вибирає точки, в які напарники повинні переміщатися, коли гравець підіймається по скелях.

Це завдання виявилося складнішим, ніж ми очікували. Недостатньо було просто наказати напарникам використовувати звичайну логіку проходження, коли гравець не підіймається, і міняти пости, коли гравець повзе по стіні. Якщо гравець швидко перемикається між звичайним станом і скелелазінням, напарники починають коливатися між цими двома станами. Тому ми додали гистерезис: напарники тепер можуть змінювати стан, тільки коли гравець змінив стан і досить далеко перемістився в цьому стані. У загальному випадку гистерезис - це хороший прийом, що дозволяє уникнути «поведінкових стрибків».

Ті, що йдуть попереду напарники


Ми хотіли, щоб в деяких моментах гри напарники показували гравцеві шлях. Ця система була взята з The Last of Us і удосконалено: дизайнери використовували сплайни, щоб намітити загальні шляхи, по яких повинні дотримуватися напарники, провідні гравці вперед.

У разі наявності на рівні декількох шляхів дизайнери мали кілька сплайнів і включали / відключали їх за допомогою скрипта.

Позиція гравця проектується на сплайн, а опорна точка супроводу гравця розташовується попереду, на відстані, настроюється дизайнерами. Коли ця опорна точка супроводу мине контрольну точку сплайна, позначену як точка очікування, напарник починає рухатися до іншої точки очікування. Якщо гравець вирішує повернутися назад, то напарник починає повертатися, тільки коли опорна точка супроводу виявляється занадто далеко від найбільш віддаленої точки очікування, пройденої в процесі останнього руху вперед. Таким чином, знову утворюється гистерезис, що дозволяє уникати різкої зміни станів.
Також ми вбудували в систему супроводу динамічну швидкість руху. На підставі відстані між напарником і гравцем уздовж сплайна розташовуються «площині швидкостей». NPC можуть використовувати три типи руху: ходьба, біг і спринт. Залежно від площини швидкостей, в якій знаходиться гравець, напарник вибирає відповідний тип руху, щоб зберігати необхідну дистанцію до гравця. У відповідності зі своїм баченням дизайнери можуть включати і відключати площині швидкостей. Крім того, в залежності від відстані до гравця швидкість анімації руху напарника злегка збільшується або зменшується, щоб уникнути різкої зміни швидкості руху при перемиканні між типами руху.

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

Спільне використання укриттів


В The Last of Us гравець може переміщатися щодо напарника, як і раніше залишаючись в укритті. Це називається загальним укриттям.

В The Last of Us Джоел знаходиться далі від стіни укриття, ніж Еллі або Тесс, і це логічно, тому що вони менше, ніж Джоел. Але для Нейта, Сема, Саллі і Олени це виглядало б неприродно, адже вони мають майже однаковий зростання. Крім того, Uncharted 4 набагато більш швидка гра, і якщо Нейт буде витягати руки, переміщаючись за перешкодою, це зруйнує плавність рухів. Тому ми вирішили, що напарники просто стануть спиратися на стіну укриття, а Нейт буде злегка огинати їх при русі.

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

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

Медики-помічники


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

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

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

Трава для стелса


Нової механікою Uncharted 4 також є потайне переміщення в траві. Для його реалізації нам потрібно було якимось чином розмітити оточення, щоб геймплейная логіка гравця дізнавалася, чи знаходиться гравець в траві. Спочатку ми хотіли, щоб розміткою поверхонь колізій трави займалися в Maya художники по фонам, але з'ясували, що комунікації між художниками і дизайнерами занадто уповільнюють ітерації. Тому ми придумали інший спосіб розмітки областей з травою для стелс. Спеціально для дизайнерів в редактор додали новий тег трави для стелса, щоб вони могли з високою точністю позначати навігаційні полігони, які гравець повинен вважати травою для стелс. Завдяки цій додаткової інформації ми змогли також оцінювати пости скритності в залежності від того, чи знаходяться вони в траві, чи ні. Це виявилося корисно для напарників, що рухаються, коли гравець знаходиться в режимі стелс.

Органи відчуттів


Оскільки на відміну від The ​​Last of Us, в Uncharted 4 немає режиму пріслушіванія, нам потрібно було якимось чином повідомляти гравцеві про наближення загрози, щоб того не напружувало невідоме розташування ворогів. Використовуючи дані про сприйняття ворогів, ми додали кольорові індикатори загрози, повідомляють гравцеві, що ворог скоро його помітить, як відволікаючий фактор (білий індикатор), сприйме як відволікаючий фактор (жовтий індикатор) і повністю усвідомлює його присутність (помаранчевий індикатор). Крім того, ми зробили так, щоб індикатор загрози посилював фоновий шум, щоб наростити напруженість, і видавав гучний сигнал, коли ворог повністю розумів про присутність гравця, як в The Last of Us.

дослідження


Це остання велика частина геймплея, в розробці якої я брав участь, перш ніж гра пішла на «золото». Зазвичай я не відвідую формальні наради в Naughty Dog, але за кілька місяців до «золота» у нас проходило не менше одного наради в тиждень під управлінням Брюса Стрейлі або Нілу Дракманна . Наради були присвячені ІІ гри. Майже після кожного з цих нарад в системі дослідження знаходилося щось для зміни або переробки. Перш ніж випустити готову гру, ми пройшли через безліч етапів ітерацій.
Є два аспекти, що відволікають ворогів і спонукають їх до дослідження: присутність гравця і трупи. Коли ворог виявляє відволікаючий фактор, він намагається привернути найближчого союзника, щоб разом дослідити його причину. Ближчий ворог стає дослідником, а другий - спостерігачем. Виявив відволікаючий фактор ворог може стати дослідником або спостерігачем, і ми підготували для цих випадків два різних набору діалогів ( «Там щось є. Піду перевірю.» І «Там щось є. Іди перевір.»).
Щоб зробити початок і завершення дослідження більш природними, ми відрегулювали тайминги руху ворогів і зниження показників індикаторів тривоги, щоб пара дослідників не виконувала механістично однакові дії в однаковий час.

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

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