Введение
Игровой клиент — это сетевой клиент, который соединяет отдельного пользователя с основным игровым сервером, используемый преимущественно в многопользовательских видеоиграх. Он собирает данные, такие как счёт, статус игрока, положение и перемещение, от одного игрока и отправляет их на игровой сервер. Это позволяет серверу собирать данные каждого игрока и отображать всех игроков в игре, будь то арена небольшого масштаба или массивная игра с тысячами игроков на одной карте. Несмотря на то, что игровой сервер отображает информацию о каждом игроке для всех участников игры, у каждого игрока сохраняется своя уникальная перспектива, основанная на информации, собранной игровым клиентом. Таким образом, восприятие игры у каждого игрока отличается, даже если игровой мир для всех одинаков. Игровой клиент также обеспечивает обмен информацией между пользователями. Например, во многих MMORPG игроки могут обмениваться предметами, отдавая ненужные и получая желаемые. В этом случае игровые клиенты взаимодействуют друг с другом, обеспечивая обмен информацией. Поскольку многие игры требуют централизованного пространства для взаимодействия игроков и возможности обмена информацией между ними, многие игровые клиенты представляют собой гибрид клиент-серверной и одноранговой архитектур.
История
Всемирная паутина родилась на NeXTCube с процессором 256 МГц, 2 ГБ диска и монохромным монитором под управлением операционной системы NeXTSTEP. Сэр Тим Бернерс-Ли опубликовал первую веб-страницу 6 августа 1991 года, работая в ЦЕРН в Женеве, Швейцария. Онлайн-игры появились в начале семидесятых годов. В то время как dial-up BBS (системы электронных досок объявлений) предоставляли игрокам возможность играть в игры через интернет. В 1990-х годах новые технологии позволили игровым сайтам массово появляться в интернете. Клиент-серверная архитектура обеспечила возможность функционирования онлайн-игр в больших масштабах.
Принимает входные данные
Клиент игры получает ввод от отдельного пользователя. Например, в FPS-игре игрок совершает множество различных действий, таких как перемещение, стрельба и общение. Для каждого из них игроку необходимо управлять устройствами ввода. После получения этих данных клиент игры отправляет их на сервер.
Анализирует данные
Клиент игры декодирует и отображает информацию, формирующую игровой мир, включая объекты, хранящиеся на компьютере, и результаты действий игроков, а затем выводит эту информацию на пользовательский интерфейс и устройства вывода.
Дает обратную связь
Сервер обрабатывает информацию и отправляет её клиенту. Клиент отображает обработанную информацию игроку, учитывая его точку зрения, поэтому у каждого игрока будет своя уникальная перспектива на экране благодаря индивидуальным клиентским приложениям.
Система регулировки
Клиент также будет отслеживать любые изменения, вносимые игроками во время игровой сессии, включая раскладки и настройки. Поскольку игра происходит в реальном времени, и игроки постоянно отправляют команды, клиент непрерывно обрабатывает информацию и соответствующим образом адаптирует систему.
Пример применения
Вот пример того, как работает клиент игры, используя игру League of Legends. В этом примере игрок по имени 7Turtle7 использует персонажа Kha'Zix, чтобы атаковать нейтрального персонажа, известного как "Красный Брамблбек". Многое происходит с точки зрения клиента. 1. Клиент извлекает данные, хранящиеся в компьютерных архивах. Это включает в себя статистику игрока, объекты карты, мобов, графические элементы, поведение персонажей и другие статические данные для создания окружения игрока. 2. 7Turtle7 пытается атаковать Красного Брамблбека. Клиент отправляет данные о 7Turtle7 и Красном Брамблбеке, включая статистику, такую как позиция, здоровье, мана, урон, защита и множество других параметров, на сервер и позволяет серверу рассчитать новое состояние игрового мира после того, как 7Turtle7 атакует Красного Брамблбека. 3. Сервер обрабатывает данные и отправляет их обратно всем клиентам других игроков, сообщая о том, что только что сделал 7Turtle7 и как клиент должен предоставить обратную связь. После того, как клиент 7Turtle7 получает эту информацию, он формирует вывод и отправляет его обратно 7Turtle7. В этом примере мы видим, что на Красном Брамблбеке появляется красное число, указывающее на нанесенный урон, а на панели умений появляется цифра 3, обозначающая время перезарядки использованного умения. Поведение персонажа, в данном случае Красного Брамблбека, также меняется в результате атаки. Теперь он становится враждебным существом, которое будет атаковать 7Turtle7 в соответствии с игровой логикой, поскольку 7Turtle7 первым атаковал Красного Брамблбека. Также меняются графические элементы, такие как анимация атаки, полоска здоровья и полоска маны. 4. Другие игровые клиенты также осведомлены об атаке, совершенной 7Turtle7, но в зависимости от их перспективы их клиенты определяют, отображать ли им эту информацию или нет. Клиент игрока из противоположной команды, например, знает об атаке, но не будет отображать изменения этому игроку, поскольку игра предусматривает, что игрок должен самостоятельно обнаружить действие 7Turtle7, прежде чем оно будет отображено на его экране. 5. Даже если клиент отправляет и получает данные с точки зрения конкретного игрока, есть данные, которые доступны всем участникам игры или не передаются вовсе. Например, в верхнем правом углу перспективы 7Turtle7 находится индикатор времени, и это время одинаково для всех игроков в игре. Также есть индикаторы FPS и Ping, которые являются эксклюзивными для 7Turtle7 и не передаются через клиент.
Принятие технологий
Для многих разработчиков игр внедрение технологий — ключ к их инженерному делу. Стандартизированные платформы, такие как HTML 5 и JavaScript, позволяют интегрировать мультимедиа и осуществлять более сложные разработки. Игровой клиент обеспечивает такую возможность.
Пользовательский опыт
Балансировка игры — важная задача для разработчиков. Большое количество пользователей, подключенных к серверу через свои клиенты, может приводить к высокой нагрузке на ресурсы, но при этом пользователям необходимо оставаться в игре. Игровые клиенты будут предоставлять такую информацию на центральный сервер.
Сотрудничество с работниками
По мере развития игры будут добавляться новые функции. Если в начале разработки достаточно небольшой, сплоченной команды, которой не требуется тесное взаимодействие, то в процессе развития игры обычно задействовано несколько отделов, работающих сообща над решением задач, и это требует слаженной работы всех отделов.
Обновления
Иногда команда разработчиков игр создает новый контент или исправляет предыдущие ошибки, что означает, что им необходимо синхронизировать игровые клиенты всех игроков с сервером. Один из способов исправления ошибок или добавления нового контента в игру – это использование патчей. Платформа цифрового распространения уведомляет пользователя о доступном обновлении, а игровой клиент автоматически устанавливает эти патчи, чтобы у всех игроков было одинаковое представление об игровом контенте после внесения изменений. Примеры платформ цифрового распространения включают Steam, Origin и Battle.net, которые предоставляют схожие услуги для игровых клиентов.