[ { "id": 1, "label": "100%×150_Branding_desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "ezfl" } } }, { "id": 2, "label": "1200х400", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "ezfn" } } }, { "id": 3, "label": "240х200 _ТГБ_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fizc" } } }, { "id": 4, "label": "240х200_mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "flbq" } } }, { "id": 5, "label": "300x500_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "ezfk" } } }, { "id": 6, "label": "1180х250_Interpool_баннер над комментариями_Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "clmf", "p2": "ffyh" } } }, { "id": 7, "label": "Article Footer 100%_desktop_mobile", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fjxb" } } }, { "id": 8, "label": "Fullscreen Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fjoh" } } }, { "id": 9, "label": "Fullscreen Mobile", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fjog" } } }, { "id": 10, "label": "Native Partner Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyb" } } }, { "id": 11, "label": "Native Partner Mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyc" } } }, { "id": 12, "label": "Кнопка в шапке", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fdhx" } } }, { "id": 13, "label": "DM InPage Video PartnerCode", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox_method": "create", "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "clmf", "p2": "flvn" } } }, { "id": 14, "label": "Yandex context video banner", "provider": "yandex", "yandex": { "block_id": "VI-229719-0", "render_to": "inpage_VI-229719-0-952491735", "adfox_url": "//ads.adfox.ru/228129/getCode?p1=bxeub&p2=fpjw&puid1=&puid2=&puid3=&puid4=&puid8=&puid9=&puid21=&puid22=&puid31=&fmt=1&pr=" } } ]
{ "author_name": "Андрей Верещагин", "author_type": "self", "tags": ["\u0440\u0430\u0437\u0431\u043e\u0440","\u043e\u043f\u044b\u0442"], "comments": 2, "likes": 19, "favorites": 7, "is_advertisement": false, "section_name": "gamedev" }
Андрей Верещагин
1 056
Gamedev

Использование напряжения для вовлечения игрока

​Как работает система, которая создаёт индивидуальный игровой опыт.

Поделиться

В избранное

В избранном

Разработчик из компании Seed Interactive Крэйг Томас (Craig Thomas) рассказал о том, как измерить напряжение пользователя во время игровой сессии и подстроить геймплей под него. Редакция DTF перевела материал.

Когда мы создаём игры, мы хотим сделать их интересными для широкой аудитории. Мы стараемся делать такие проекты, которые понятны пользователям с небольшим игровым опытом, но могли бы бросить вызов и более искушённым игрокам. Есть множество способов добиться такого эффекта, но сегодня мы поговорим о системе напряжения.

Вдохновленная искусственным интеллектом-«режиссёром» из Left 4 Dead, эта технология измеряет напряжение, которое испытывает каждый игрок, и старается держать его на идеальном уровне.

Я расскажу об этой системе на примере игры Ace Academy: Skies of Fury. Это авиасимулятор, действие которого происходит во времена Первой мировой войны. Сейчас мы работаем над режимом выживания. Задача пользователя в нём — продержаться как можно дольше, уничтожая врагов. Именно для него мы и создали систему.

Для начала нам нужно понять, что такое напряжение в нашей игре. Что определяет его? Как его посчитать? Мы изучили игру и поняли, что самые напряженные моменты в ней — это «собачьи схватки», ближние воздушные бои, когда один игрок летает за другим, пока тот пытается сбросить преследователя «с хвоста».

Мы проанализировали игру и выделили несколько моментов, которые влияют на напряжение в ходе боя:

  • Когда в игрока стреляют, его напряжение растёт обратно пропорционально оставшимся очкам здоровья;
  • когда пользователь стреляет во врага его напряжение растёт прямо пропорционально сложности противника. Оно усиливается, когда враг убит;
  • в то время, как пользователь не преследует цель, его напряжение падает до нуля. ​

До того, как мы провели подсчёты, самолеты, управляемые искусственным интеллектом, появлялись случайно. Мы лишь ограничили максимальное количество врагов, которое может находится на локации. Теперь, когда у нас есть модель подсчёта напряжения, нам надо было подстроить игровую механику, опираясь на нее. Мы создали систему, которая решала, когда запускать новых врагов, сколько их должно быть и насколько трудными они станут.

Для начала мы решили создать «идеальную» версию кривой напряжения пользователя в ходе игровой сессии. При этом мы хотели сделать так, чтобы напряжение нарастало с ростом сложности игры. Кроме того, мы хотели добавить периоды спокойствия, чтобы игрок мог перевести дыхание. Чередуя напряжённые моменты с менее интенсивными эпизодами мы смогли добиться этого эффекта так, что всё выглядело естественно.

Сейчас у нас есть значение, которое показывает, насколько пользователь напряжён во время игры и «идеальный» показатель. На их основе ИИ выпускал новых или более сильных противников, создавая большое количество разных геймплейных ситуаций. Однако порой искусственный интеллект доходил до крайностей, выпуская на игрока слишком много или слишком мало врагов.

Вскоре мы обнаружили, что показатель напряжения одного игрока нерепрезентативен. Нам нужна более широкая картина. Это стало ещё большей проблемой во время мультиплеерных сессий.

Выход нашёлся: мы решили измерять уровень напряжения не только для отдельных игроков, но и для целых команд. Для подсчёта мы брали следующие переменные:

  • Разница между самолётам, управляемыми ИИ в каждой команде (команда, в которой меньше участников будет испытывать большее напряжение);
  • разница между сложностью ИИ в командах;
  • общий объём очков здоровья в командах (команда, в которой больше самолётов, но общий пул здоровья меньше, испытывает более сильное напряжение);
  • среднее значение напряжение каждого игрока.

Используя эти значения мы смогли создать более последовательный рост напряжения, который всё ещё соответствовал нашей «идеальной» кривой.

Темно-синяя линия — напряжение британской команды; красная — немецкой; зелёная — общее напряжение, а циановая — «идеальный» показатель.

Однако мы понимали, что можем ещё многое сделать, чтобы актуализировать сбор данных о каждом игроке отдельно. Мы создали небольшую систему, которая на основе напряжения пользователя меняла его приоритет для ИИ. Таким образом, в случае, снижения приоритета, за игроком охотилось меньше противников, давая ему время передохнуть.

#разбор #опыт

Популярные материалы
Показать еще
{ "is_needs_advanced_access": false }

Комментарии Комм.

Популярные

По порядку

Прямой эфир

Узнавайте первым важные новости

Подписаться