В этом разделе мы поговорим о дефектах, которые обычно возникают в многопользовательских играх и связаны с сетевым взаимодействием клиентской и серверной части игрового продукта. К ним также относятся проблемы с пропускной способностью каналов связи. Ниже приведены самые распространенные из них.
• Ошибка подключения
• Обрыв соединения или изменение его скорости
• Рассинхронизация состояния игроков
• Невозможность принять приглашение
• Невидимые игроки
• Ошибка в результатах игры
Ошибка подключения (Failed Connection)
Ниже приведены частые приведены частые причины для ошибки такого типа.
• Нестабильное интернет-подключение у пользователя
При нестабильном сигнале могут возникать потери пакетов, проблемы с подключением, а также повышенные задержки и интервалы ожидания. Это, в свою очередь, может приводить к невозможности загрузить ресурсы, необходимые для игры с сервера.
Пример ошибки загрузки контента при нестабильном интернет-соединении. Часть машины так и не подгрузилась. Dakar © 2022, Bigmoon Entertainment
К этому же типу ошибок можно отнести отсутствие уведомлений пользователя о нестабильном интернет-соединении или его разрыве, которое считается хорошим тоном во многих играх.
Индикатор разрыва соединения с сетью. Valorant © 2020, Riot Games
• Блокировка игрока на игровом сервере
Аккаунт игрока или даже аккаунты игроков из конкретной страны могут быть заблокированы на игровом сервере. Это необязательно вызвано дефектом клиента игры или сервера, а может быть причиной ошибки соединения с сервером.
• Запуску мешают другие приложения (например, файрвол или антивирус)
Иногда настройки файрвола или антивируса не позволяют соединиться с игровым сервером из-за блокировок портов или невозможности скачать файл ресурсов. При тестировании необходимо убедиться, что файрвол и антивирус отключены или настроены как положено.
• Игра не может корректно определить местоположение игрока (например, из-за использования VPN)
Игровые компании используют различные механизмы для защиты аккаунтов своих клиентов. Некоторые игроки по разным причинам могут использовать VPN, чтобы скрыть свое реальное местоположение. Когда игровой сервер фиксирует вход в аккаунт из Канады, а через пять минут из Италии или Казахстана, то для него это может выглядеть весьма подозрительным. Поэтому он может расценить эту ситуацию как несанкционированный доступ к аккаунту и заблокировать его на время.
• Лаунчер игры был запущен некорректно (например, в режиме совместимости с более ранними версиями OС)
Часто игроки, желающие поиграть в устаревшие игры, используют запуск игры в режиме совместимости с более ранними версиями ОС (Windows). Но некоторые операционные системы могут не поддерживаться игрой, и вход на игровой сервер будет невозможен. Иногда игрок может получить уведомление о том, что игра не поддерживается определенной ОС. Однако такое уведомление можно получить не всегда.
Предупреждение о необходимости отключить режим совместимости
• Для игры не установлены нужные обновления
Это довольная понятная ситуация, в которой у игрока попросту устарел клиент игры и требуется просто обновить его.
• Игровой сервер, к которому происходит попытка подключиться, в данный момент перегружен
В очень популярные игры могут одновременно играть миллионы игроков. Это очень большая нагрузка на игровые сервера, и их мощностей может не хватать. Иногда ошибки доступа к игровому серверу связаны с тем, что серверная часть игры не оптимизирована под большое количество одновременных соединений. Существует понятие PCCU (Peak Concurrent Users) – максимальное количество пользователей, одновременно находящихся в приложении. Когда оно достигнуто, игрок может получить ошибку подключения.
• Обрыв соединения (Dropped Connection) или изменение его скорости
Игрок смог подключиться к игровому серверу, и тут же соединение оборвалось. Причины появления этого дефекта те же, что и в предыдущем случае. К ним можно добавить не очень качественный сетевой код, который не может обеспечить стабильность соединения.
Окно ошибки загрузки системных ресурсов. Genshin Impact © 2019, miHoYo Limited
• Рассинхронизация состояния игроков (Desync)
Чтобы понимать проблемы, связанные с рассинхронизацией состояния игроков на игровом сервере, и первопричины их возникновения, нужно немного подробнее осветить вопрос клиент-серверного взаимодействия в быстрых мультиплеерных играх. Почему именно быстрых? Потому что в медленных, типа шахмат и покера, таких проблем нет. Они могут появляться в тех ситуациях, где большое количество игроков одновременно выполняют много действий, от которых зависит их прогресс в игре.
Обработка действий и состояний игроков в мультиплеерных играх происходит на стороне сервера, чтобы избежать получения преимущества одних игроков над другими (читерства). Другими словами, местоположение игрока на карте должно определяться на стороне сервера, а не клиентом, который может сообщать не то положение, которое есть в реальности.
Вся игровая логика реализуется на сервере, а клиент только демонстрирует текущее состояние и отправляет сигналы серверу в виде нажатия клавиш и движения мышью. Казалось бы, все идеально, но представь, что игрок находится за тысячи километров от сервера. Сигнал от клиента к серверу не доставляется со скоростью света. Давай представим, что сигналу требуется 50 мс на преодоление этого пути и еще столько же, чтобы вернуться. Итого – 100 мс, или 0,1 сек. Со стороны клиента это выглядит так: игрок нажал стрелку движения вперед и после 0,1 секунды продвинулся вперед. Этот временной промежуток называется лаг. Напомню, что сейчас мы разбирали идеальную ситуацию. А если у нас нестабильное интернет-соединение или низкая скорость Интернета? Что, если связь то и дело прерывается? Лаг становится все больше и делает игру абсолютно неиграбельной.
Дефекты рассинхронизации, как и многие другие дефекты клиент-серверного взаимодействия, обычно возникают из-за следующего:
· нестабильное интернет-соединение, приводящее к потере пакетов;
· плохо реализованный сетевой код;
· значительная удаленность клиента от сервера;
· перегруженность сервера.
• Ошибка подсчета очков (Scoring Error)
При тестировании любых игр, в особенности многопользовательских, важно уделять внимание проверке системы подсчета очков. Многие игроки играют ради победы и самоутверждения и сильно расстроятся, если набранные в игре очки подсчитываются или отображаются неверно. Для рядовых игроков такой баг тоже довольно неприятен, поскольку не позволяет отслеживать собственный результат и затрудняет выбор выигрышной стратегии.
• Ошибки безопасности и читерство
В некоторых играх недобросовестные игроки используют различные команды (читы) для того, чтобы получить незаслуженное преимущество перед другими игроками. Такие дефекты должны исправляться разработчиками незамедлительно. Сама по себе команда не является багом, ведь она была преднамеренно заложена разработчиками. Но вот возможность применять такие средства рядовыми игроками – несомненно, дефект безопасности.
4.5. Тестирование документов и требований
Любая игра создается на основе документации, в которой могут быть допущены ошибки. Продукт, созданный на основе ошибочных требований, тоже будет содержать ошибки. Чтобы их избежать, игровая документация и требования к продукту должны быть протестированы. Ниже мы поговорим о способах получения документации по проекту.
В документации излагаются требования к конечному игровому продукту. Требования – это первое, на что смотрит команда, которая будет заниматься разработкой компьютерной игры; это фундамент для проектирования и разработки продукта. Важно протестировать документы проекта и требования и исправить дефекты до того, как они будут реализованы в коде: тогда разработчики смогут существенно уменьшить затраты на исправление багов. Дефект, найденный и исправленный в документации, намного дешевле его исправления в готовом продукте.
Требования к продукту разрабатываются на трех уровнях.
1. Бизнес-требования
2. Пользовательские требования
3. Продуктовые требования
На глобальном уровне создаются требования, относящиеся к группе так называемого видения проекта (Project Vision). Они описывают цели и задачи, ради достижения которых разрабатывается продукт. В этой же документации описываются ограничения, связанные с продуктом, для конкретизации ожиданий пользователей от его использования.
Также нужно знать источники, из которых мы можем получить данные о требованиях этого типа. К ним могут относиться:
• внутренняя документация компании;
• документация по предметной области (профильные литература и статьи, исследования);
• нормативная документация (законы и иные правовые акты, государственные стандарты);
• продукты конкурентов.
Среди заинтересованных лиц проекта, которые могут предоставить нам данные для формулирования требований, нужно отметить следующих.
• Инициаторы проекта
• Продюсерская группа (менеджеры проекта)
• Бизнес-аналитики
В общем случае тестировщики, как и разработчики, обычно не участвуют в сборе и анализе бизнес-требований. Но поскольку пользовательские и продуктовые требования – результат декомпозиции бизнес-требований, тестировщикам всегда полезно понимать, какие цели преследует проект. Мы исследуем предметную область заказчика, при этом существенно сокращая время на коммуникацию с ним: многие вопросы отпадают при изучении бизнес-требований.
Ко второй группе относятся требования, выраженные в формате пользовательских историй (User Stories). Они описывают то, как система реагирует на действия пользователя, обладающего различными правами, и формируются по принципу «Я, как кто, делаю что, зачем?» Пользовательские требования могут быть получены из: