Как мы вошли в Топ-10 крупнейших мобильных издателей мира?
Узнайте из видео!
Смотреть

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

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

В закладки
Аудио
Если вкратце, как-то так это и работает.

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

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

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

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

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

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

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

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

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

Цели и задачи

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

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

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

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

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

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

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

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

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

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

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

Пример игры в жанре HOPA: Shaolin 2 Источник

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

#игры #игрострой #GD #ML

Материал опубликован пользователем. Нажмите кнопку «Написать», чтобы поделиться мнением или рассказать о своём проекте.

Написать
{ "author_name": "Богдан Бортаков", "author_type": "self", "tags": ["\u0438\u0433\u0440\u044b","\u0438\u0433\u0440\u043e\u0441\u0442\u0440\u043e\u0439","ml","gd"], "comments": 23, "likes": 23, "favorites": 58, "is_advertisement": false, "subsite_label": "gameindustry", "id": 52716, "is_wide": false, "is_ugc": true, "date": "Mon, 03 Jun 2019 17:10:24 +0300" }
{ "id": 52716, "author_id": 39163, "diff_limit": 1000, "urls": {"diff":"\/comments\/52716\/get","add":"\/comments\/52716\/add","edit":"\/comments\/edit","remove":"\/admin\/comments\/remove","pin":"\/admin\/comments\/pin","get4edit":"\/comments\/get4edit","complain":"\/comments\/complain","load_more":"\/comments\/loading\/52716"}, "attach_limit": 2, "max_comment_text_length": 5000, "subsite_id": 87855, "last_count_and_date": null }
23 комментария

Популярные

По порядку

Написать комментарий...
9

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

Ответить
0

Стараемся)

Ответить
5

Свой вариант

Ответить
0

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

Ответить
2

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

Ответить
5

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

Ответить
1

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

Ответить
1

студенты, программисты, этот код не запустится не потому что вы там себе придумали, а потому что это webp картиночка :3

Ответить
0

Нормально. It's a joke!

Ответить
0

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

Ответить
1

Поэтому и не запустится, вернее, даже откажется компилироваться.

Ответить
0

То что такое вообще существует - это хреново

Ответить
0

Мир вообще хреновый, что даже не стоит это упоминать.

Ответить

Комментарий удален

Комментарий удален

Комментарий удален

Комментарий удален

Комментарий удален

Комментарий удален

Комментарий удален

Комментарий удален

Комментарий удален

Комментарий удален

Комментарий удален

Комментарий удален

1

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

Ответить
1

ИМХО слишком напирать на АС не стоит. Лучше все-таки давать игроку возможность где-то "смухлевать". Хотя бы на время. Разработка игр - это как рыбалка. Не прикормишь, не наловишь.

Ответить
0

Само собой
Без зоны спокойствия - никакой шторм не сыграет)

Ответить
1

Этим вопросом должен заниматься геймдизайнер.

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

Оба пройдут игру, вне зависимости от способностей.

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

Хотя стоп, 80 процентов дураки и есть, а ну да, если цель чемодан с деньгами то всё в порядке )

Ответить
0

Интересно, какие параметры игрока использует система изменения сложности?
Откуда берутся эти данные? Только игровые (длительность игровых сессий, прогресс, скорость и т.д) или так же учитываются глобальные данные игрока (пол, возраст, платящий/неплатящий и т.д.)

Ответить
0

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

Ответить
0

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

Ответить
0

Очень сложный текст, надо прям вникающи читать... Но перечитывать не хочется.

Ответить
–2

Идеальная система для отсталых, играющих в Три-В-Ряд и подобные помойки.

Ответить
0

Прямой эфир

[ { "id": 1, "label": "100%×150_Branding_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox_method": "createAdaptive", "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" ], "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" ], "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": "createAdaptive", "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "clmf", "p2": "flvn" } } }, { "id": 14, "label": "Yandex context video banner", "provider": "yandex", "yandex": { "block_id": "VI-250597-0", "render_to": "inpage_VI-250597-0-1134314964", "adfox_url": "//ads.adfox.ru/228129/getCode?pp=h&ps=clmf&p2=fpjw&puid1=&puid2=&puid3=&puid4=&puid8=&puid9=&puid10=&puid21=&puid22=&puid31=&puid32=&puid33=&fmt=1&dl={REFERER}&pr=" } }, { "id": 15, "label": "Плашка на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byudo", "p2": "ftjf" } } }, { "id": 17, "label": "Stratum Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fzvb" } } }, { "id": 18, "label": "Stratum Mobile", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fzvc" } } } ]
Пять простых способов разогнать свой ПК
с помощью соли и чайной ложки
Подписаться на push-уведомления