Короткий рассказ о разработке системы адаптивной сложности.Если вкратце, как-то так это и работает.Всем привет! Давно уже не писал о буднях разработки - завалили те самые будни.А в прошлую пятницу, в нескольких группах на 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
Главное, чтобы не получилось как в Скайриме:
Стараемся)
Свой вариант
А вообще адаптивная сложность может быть полезна, внезапно, для сюжет-ориентированных игр, в которых челлендж иногда вредит повествованию. Казулы смогут насладиться историей, а любители сложности будут гитгудить. Опять же, всё зависит от реализации.
Спойлер: этот код на C# не запустится, даже если все юзинги, переменные и прочее сделаны правильно.
Спасибо, конечно - только он тут в роли псевдокода и шутки.
P.S.: не зашло?..)
Эм, точка входа вне класса и нестатична