13 месяцев чтения мыслей

Короткий рассказ о разработке системы адаптивной сложности.

Если вкратце, как-то так это и работает.
Если вкратце, как-то так это и работает.

Всем привет! Давно уже не писал о буднях разработки - завалили те самые будни.

А в прошлую пятницу, в нескольких группах на Facebook, услышал о "сливе" информации по патенту EA за 2017й год в нескольких группах на Facebook.

Боже, каких только выводов не делали "эксперты"!

Впору доставать шапочку из фольги, укрываться в прохладном бункере с этими мягкими францускими булками и сжигать все игровые консоли - заодно с ПК и смартфонами.

Что забавно, догадки и предположения о существовании подобных систем в популярных проектах ходят как минимум десятилетие.
Те же матерые игроки mobile F2P игр зачастую ощущают, будто "Игра играет с ними".

Так уж вышло, что я - тот самый человек, для которого уготован отдельный котел в аду: начиная с апреля прошлого года, я работаю над созданием аналогичной системы для группы F2P проектов.

Спорить об этичности и Большом Брате можно долго - и безрезультатно. А в этой публикации я попробую пояснить:

  • с какой целью создается подобная система;
  • из чего она состоит;
  • в чем сложность;
  • итоги последнего года.

P.S.: к сожалению - я ограничен договором о неразглашении, потому подробности нашей реализации или логики не смогу даже упомянуть.
К счастью - некая структура уже доступна общественности, а комментировать public domain мне не запрещено.

Цели и задачи

Если вам достаточно одной только этой картинки - вы заблуждаетесь.
Если вам достаточно одной только этой картинки - вы заблуждаетесь.

Адаптивная сложность (далее - АС) отчасти схожа с пистолетом.
Мы не можем сказать, что пистолет сам по себе причиняет боль - но можем сказать, что в плохих руках пистолет способен нанести ущерб, порой - непоправимый.

Так и системы АС являются инструментом, который может как спасти умирающую от финансовой "жажды" компанию, так и искалечить вполне здоровую игровую систему.

Очевидно, цели АС определяет разработчик, решившийся внедрить подобную систему в свою игру.
Скажу больше: АС в принципе создается только и исключительно исходя из целей, поставленных перед ней.

Я понимаю всю очевидность последних абзацев, и теперь - мы можем идти дальше.

Какие цели могут стоять перед системой АС?

  • создание уникального игрового процесса для каждого игрока
  • улучшение монетизации проекта в целом
  • работа с KPI под конкретные задачи
  • и много, много других

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

Надеюсь, все согласны с тем, что сложность влияет на очень многое в игре?..

Отлично, а что влияет на сложность?

Для каждого жанра (а часто - и для каждой отдельно взятой игры) существуют свои каноничные критерии сложности.

Пример игры в жанре HOPA: Shaolin 2 <a href="http://www.flickr.com/photos/fantasy-art-and-portraits/6862128680/in/photostream/" rel="nofollow noreferrer noopener" target="_blank">Источник</a>
Пример игры в жанре HOPA: Shaolin 2 Источник

Приводя упрощенный пример, для HOPA-игр это соотношение зеленых-желтых-красных (от простых к сложным) предметов для поиска на каждом уровне и параметры времени (есть ли ограничение, сколько времени отведено);
для Match-3 - количество разных игровых элементов, которые могут появиться на поле, и само игровое поле;
и так далее.

Естественно, при таком разнообразии создать универсальную систему АС - цель маловыполнимая.
А вот узкопрофильная система для одного жанра, который имеет устоявшийся набор механик, хорошо известных игрокам?

О да, это вполне по силам небольшой команде.
Как выяснилось позже - системы АС для F2P относительно легко адаптируются под новые жанры, ведь общие механизмы воздействия на игрока зачастую пересекаются - править придется только аспекты конкретного жанра.

Компоненты системы

Кадр из видео "EA Scripting Patent Exposed" - после обработки цензурой.
Кадр из видео "EA Scripting Patent Exposed" - после обработки цензурой.

Допустим, я ни-че-го не знаю о том, как выглядит структура системы у АС от EA Games. И даже цензуру расставлял с закрытыми глазами.

Что же лежит в основе АС?
Правильный ответ - распределение ответственности.

Логично, в общем: система сложная, обязанностей много.
И данные собирать (деперсонализированные, само собой), и обрабатывать, и хранить/обновлять, и даже - страшное - применять их для анализа и изменения игрового процесса.

Ну что, вы готовы познать ужасную структуру системы АС?
Вот она:

  • клиент
  • сервер
  • база данных
  • админ-панель

Согласен, это крайне запутанная система, способная вывести из проекта даже самых многоопытных разработчиков.

Настолько, что я даже не буду упоминать распределение ответственности между компонентами - оставляю эту тайну на усмотрение читателей.

В чем сложность?

13 месяцев чтения мыслей

Самой крупной проблемой стал алгоритм принятия решений, в частности - в контексте F2P модели.

Как распознать, что игроку стоит дать сложность А?
Как понять, что прошлые решения были ошибочными, и обновить правила игры в соответствии с результатом анализа?
Почему нельзя объединить игроков по вектору параметра X, замещая его матрицей X*Y*Z?

Ответы на эти и другие вопросы скрыты за NDA, но ведь главное - знать об их существовании, верно?)

Именно для решения этих вопросов, первые три месяца мы посвятили созданию документации и логики для данного проекта, и ни разу не пожалели о потраченном времени.

Кроме анализа, спорным моментом стала.. скорость реакции системы.
По структуре из прошлого раздела, скорость (а порой и просто наличие) связи между компонентами - решающий фактор.

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

Глубина системы тоже повлияла на длительность работы.
Рассудите сами, у нашей системы должно быть готово:

  • уникальное решение
  • для уникального игрока
  • в конкретной ситуации
  • исходя из конкретного правила
  • при плановой нагрузке в N тысяч игроков единовременно

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

Итоги 13 месяцев разработки

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

По состоянию на 1 мая, система полностью протестирована как на ботах, так и на реальных игроках - и выполняет все поставленные перед ней задачи.

Особенно радует повышение Retention проекта на N% - приятно осознавать, что система не только повысила доход компании, но и позволила каждому игроку ощутить максимум удовольствия от своего, уникального игрового опыта.

Что дальше? Отладка и адаптация. Данных, полученных на текущий момент, хватит для внедрения системы в остальные проекты.
Это будет непросто - впереди адаптация для шести новых жанров.
Благо, работать с готовой системой много проще.

Так закупать фольгу или нет?

"Поздно, мой органический друг. Шучу."
"Поздно, мой органический друг. Шучу."

Приходя домой после работы, я часто запускаю игры. Сингловые и мультиплеерные/кооперативные. Сюжетные или тайм-киллеры.

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

Но, по мере работы над нашей АС, я понял:

Адаптивную сложность нельзя однозначно назвать злом.

Потому что негативной её могут сделать только сами разработчики.

Но и терять бдительность не стоит - наш пример ярко показывает, что сейчас создать и внедрить систему АС в состоянии не только крупная корпорация, но и относительно небольшая команда.

А значит - шанс встретить её в новых играх растет ежедневно.

Вместо заключения

Раз уж выпал такой шанс, хотел бы спросить у сообщества:

Как вы относитесь к играм с адаптивной сложностью?
Это следующий шаг в развитии игровой индустрии
Это риск, но он оправдан
Это риск, и он не оправдан
Это угроза для индустрии
Это неизбежный факт, и от этого не уйти
Это печальненько
Свой вариант (в комментариях)
6464 показа
1.7K1.7K открытий
23 комментария

Главное, чтобы не получилось как в Скайриме:

Ответить

Стараемся)

Ответить

Свой вариант

Ответить

А вообще адаптивная сложность может быть полезна, внезапно, для сюжет-ориентированных игр, в которых челлендж иногда вредит повествованию. Казулы смогут насладиться историей, а любители сложности будут гитгудить. Опять же, всё зависит от реализации.

Ответить

Спойлер: этот код на C# не запустится, даже если все юзинги, переменные и прочее сделаны правильно.

Ответить

Спасибо, конечно - только он тут в роли псевдокода и шутки.
P.S.: не зашло?..)

Ответить

Эм, точка входа вне класса и нестатична

Ответить