Плохой сетевой код убивает ваши любимые файтинги

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.
image

Было мучительно наблюдать за выпуском DLC второго сезона Samurai Shodown. Игра продолжает расти и развиваться, не стремясь решить свою самую большую проблему: ужасный онлайн-режим. Есть ли вообще смысл развивать соревновательную игру, как бы ни была она красиво и хорошо сделана, если большинство игроков едва может играть друг против друга?

Сама игра потрясающа. Когда мы собираемся с друзьями, я часто запускаю Samurai Shodown; она великолепна и дружелюбна к новым игрокам, а мощные удары заставляют затаить дыхание всех в комнате. Всем очень нравится в неё играть, вне зависимости от уровня навыков.


Я бы хотел иметь возможность играть в Samurai Shodown против сильных противников онлайн так же, как против своих друзей дома, но сетевой код игры ужасен — хуже, чем у любой другой известной мне игры — поэтому я быстро бросаю попытки. Непредсказуемые пики жёстких задержек превращают отточенный игровой процесс в скучный, медленный и неинтересный. Сложно мотивировать себя совершенствоваться, если я даже не могу быть уверенным, что мои собственные движения будут точно отображаться на экране.

Онлайн-файтинги заслуживают много большего. NetherRealm Studios (Mortal Kombat) и Capcom (Street Fighter) со временем создали превосходный сетевой код, и даже мелкие инди-игры, в том числе такие шуточные, как файтинг мемов Fight of Animals, благодаря улучшенным технологиям добились отличных результатов.

Но лидеры жанра, такие как SNK и Arc System Works, вместе с другими разработчиками, в основном из Японии, на протяжении долгих лет не меняли своего подхода к онлайн-боям, даже выпуская новые восхитительные игры. Хотя Granblue Fantasy Versus находится на острие прогресса 3D-анимации, уровень её сетевого кода остался в далёком прошлом.

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

Почему это такая большая проблема? Позвольте мне объяснить, и в процессе этого объяснения вы можете чуть больше узнать о том, как работают онлайн-файтинги, что будет полезно в целом. Давайте приступим.

Устаревший статус-кво: сетевой код на основе задержек


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

Это означает, что для обеспечения плавного игрового процесса игра откладывает ввод обоих игроков на несколько кадров (в большинстве случаев кадр — это шестидесятая доля секунды).

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

image

В Under Night In-Birth и других играх в верхней части экрана показывается задержка, измеряемая в кадрах.

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

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


Из показанного выше клипа можно понять, как выглядят пики задержек в Guilty Gear Xrd Rev 2.

Заметьте, что число в правом верхнем углу крана сменяется с двух кадров (а это говорит нам, что соединение гораздо быстрее среднего!) до семи, 11 и даже 13 кадров задержки. Это выглядит плохо для наблюдателя, но ещё хуже ощущается для игрока. Мне удалось проделать комбо, только намеренно нажимая каждую кнопку за четверть секунды до нужного момента.

Задержка от пяти кадров и выше обычно означает трудности. При более сложных соединениях, например, для игроков из разных стран, или при использовании Wi-Fi, пики лагов побеждают и сетевой код на основе задержек быстро становится неиграбельным. Он не может быть серьёзным решением проблемы онлайн-боёв. Он попросту… плох. И он даёт игрокам плохие уроки.

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

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

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

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

Последствия привязки к задержкам


Популярность и актуальность игр жанра «файтинг» всегда зависели от сообществ простых фанатов, ещё задолго до того, как появилась сама возможность онлайн-матчей. Не всякая игра достаточно мейнстримна, чтобы обеспечивать постоянный поток игроков, как в Tekken или Street Fighter, а игры, неспособные найти своё сообщество соревнующихся поклонников, обречены увянуть на корню.

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

image

Заполненное игроками открытое лобби Нью-Йорка игры Granblue Fantasy Versus. Ещё до официального выпуска в США количество одновременно играющих пользователей по вечерам доходило до ста, и этого более чем достаточно.

Если игра новая, например, как недавно выпущенная Granblue Fantasy Versus, которой пользователи, купившие её за рубежом, могли насладиться за месяц до выпуска в США, то всё в порядке, даже когда сетевой код основан на задержках. При хорошем соединении нет никаких проблем найти себе соперника, потому что игра популярна в сообществе и её все хотят попробовать. Чем больше игроков, тем лучше соединение между соперниками, ведь они находятся ближе, поэтому когда игра только выпущена, игрокам редко приходится волноваться о плохом сетевом коде. И в самом деле, для игр наподобие Samurai Shodown это может быть единственным моментом, когда игроки способны найти хорошие матчи.

image

Открытое лобби в Guilty Gear Xrd Rev 2, пустующее уже не менее двух лет.

Но что если перенестись на полгода вперёд, когда уже перестали появляться дополнительные персонажи? Всё становится очень мрачным. Что произойдёт, когда позже в этом году выйдет Guilty Gear Strive и фанаты «аниме-файтингов» перейдут на новую, интересную игру? Внезапно в вашем регионе может оказаться не так много активных игроков, а иногда, в зависимости от вашего местоположения и качества связи, их может не найтись вообще.

Если вы вообще захотите играть, вам придётся рассчитывать на менее быстрое соединение с более отдалёнными игроками, и здесь сетевой код с привязкой к задержкам начинает проявлять свои слабости. Игровой процесс почти всегда оказывается столь плохим, что на этом этапе игроки сдаются и переходят на другую игру. В самых экстремальных случаях они вообще могут потерять терпение и совсем отказаться от файтингов. Это превращается в смертельное пике, из которого могут выбраться немногие игры.

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

Rollback — более совершенный способ работы сетевого кода


Это серьёзная проблема для файтингов, поэтому, наверно, кто-то уже ищет способы её решения? И вот это самое печальное: хорошая онлайн-игра для файтингов — это решённая проблема, и решение возникло более десятка лет назад.


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

Название «перемотка» («rollback») связано с тем, как код «перематывает» назад игровое состояние для сохранения постоянства ввода. При правильной реализации перемотки такие сдвиги незаметны, но в случае плохого решения кажется, что персонажи телепортируются по экрану. Однако в общем случае такая схема гораздо более работоспособна.

В 2007 году я использовал первый rollback-клиент GGPO (Good Game, Peace Out) для игры с друзьями по сети в эмулируемую Street Fighter Alpha 2, и результат оказался безупречным — мне казалось, что я сижу на одном диване с моим противником. Это стало настоящим откровением. Я решил, что у такой системы должно быть будущее. Capcom и другие разработчики из мира игр-файтингов обязательно используют подобные идеи, например, в грядущей Street Fighter 4. Ведь правда?

Э-э-э… так правда?

(Спойлер: они так её и не использовали.)

Несмотря на то, что прошло 13 лет, за это время мало что изменилось. Западные файтинги со временем пришли к rollback (в качестве примеров можно назвать Mortal Kombat, Skullgirls и Power Rangers: Battle for the Grid), но крупнейшие японские разработчики в основном продолжили использовать собственные системы на основе задержек. В некоторых играх сетевая игра на основе задержек была реализована лучше, чем в других, но в целом они просто не могли обеспечить плавных, стабильных результатов и более широкого сообщества игроков, обеспечиваемых архитектурой rollback.

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

Rollback — это не безупречный волшебный ключ, и для его реализации требуется серьёзная работа — на самом деле, у команды разработчиков Mortal Kombat на это ушло два года — но его преимущества с лихвой окупают усилия. На самом деле они жизненно важны для длительного выживания файтингов на переполненном нишевом рынке. Можете убедиться сами: в Killer Instinct можно бесплатно сыграть на Xbox One и Windows PC. В старых играх SNK, например, в Mark of the Wolves и Samurai Shodown 5 Special используется rollback в портах на PC и PS4. Даже вышеупомянутая Fight of Animals, которая, как мы помним, стоит всего шесть долларов, может похвастаться более качественной онлайн-игрой, чем многие современные файтинги.

Японские разработчики: последний рубеж сопротивления


Западные разработчики файтингов освоили rollback, но сам жанр родился и вырос в Японии. Такие компании, как Capcom, Arc System Works и SNK, продолжают оставаться в нём продуктивными. Из них только Capcom выпустила крупную игру с сетевым кодом на основе rollback, и его реализация в Street Fighter 5, по словам одного участника Capcom Cup, оставляет желать лучшего.


Частично это может быть вызвано тем, что сетевая игра на основе задержек в Японии может вызывать меньше проблем благодаря малым географическим размерам, высокой плотности населения и высококачественному широкополосному доступу к Интернету. Так зачем что-то менять? При игре в онлайн-файтинги в залах аркадных автоматов в Токио соединение всегда было плавным, даже когда я играл в игры, печально известные плохим качеством сетевого кода, например, в Million Arthur Arcana Blood. Вероятно, вся проблема заключается в этом: зачем утруждать себя тем, что потребует больше работы, если дома достаточно хорошо работает готовое решение?

Но в японские файтинги играют не только люди в Японии. Существует Tekken World Tour, в котором участвуют находящиеся в десятке лучших игроки из Кореи, Пакистана, Франции и США. Уровень конкуренции и киберспорта повышается, и разработчикам давно уже пора было признать, что это сообщество всемирное, и что нужно служить этому сообществу по мере возможностей и используя самые лучшие инструменты.

К счастью, похоже, изменения начинаются. Capcom, например, наконец-то решила начать работу над исправлением халтурного rollback-кода Street Fighter 5. И после многих лет равнодушной реакции на требования улучшения сетевого кода — фанаты месяцами спамили «GGPO!» на всех стримах компании — Arc System Works сообщила, что собирается встроить rollback-код в грядущую крупнейшую игру компании Guilty Gear Strive.

Хотя Arc не является издателем масштаба Bandai Namco или Capcom — Dragon Ball FighterZ только недавно превратила эту компанию в мейнстримную, это один из японских специалистов в жанре. Куда пойдёт он, туда начнёт двигаться и остальная часть нишевого рынка. Если улучшение онлайн-боёв будет означать повышение объёмов продаж, то Strive может стать игрой, заставившей остальную часть японских компаний взглянуть на rollback серьёзно.

Остаётся только SNK. Если не обращать внимания на старые игры компании, то можно подумать, что SNK никогда не слышала о rollback, и её сетевой код на основе задержек всегда был одним из самых худших среди всех файтингов. В прошлом году на Evo разработчик объявил, что он работает над The King of Fighters 15, новой частью своей крупнейшей франшизы. The King of Fighters 14 была превосходной игрой, но ей так и не удалось собрать значимое сообщество в США, и в большой степени это было вызвано ужасными онлайн-поединками.

Вообще-то, такое было и с The King of Fighters 13. SNK уже много поколений повторяет эту историю, но другие разработчики файтингов (даже те, кто раньше противился изменениям), показывают, что так быть не должно.
Источник: https://habr.com/ru/post/495840/


Интересные статьи

Интересные статьи

VUE.JS - это javascript фрэймворк, с версии 18.5 его добавили в ядро битрикса, поэтому можно его использовать из коробки.
Битрикс24 — популярная в малом бизнесе CRM c большими возможностями даже на бесплатном тарифе. Благодаря API Битрикс24 (даже в облачной редакции) можно легко интегрировать с другими системами.
В статье описаны необходимые параметры сервера для оптимальной работы сайта на платформе 1С-Битрикс.
Если Вы используете в своих проектах инфоблоки 2.0 и таблицы InnoDB, то есть шанс в один прекрасный момент столкнуться с ошибкой MySQL «SQL Error (1118): Row size too large. The maximum row si...
Некоторое время назад мне довелось пройти больше десятка собеседований на позицию php-программиста (битрикс). К удивлению, требования в различных организациях отличаются совсем незначительно и...