Что такое синхронизация в играх

Как включить или отключить вертикальную синхронизацию в играх

Что же такое вертикальная синхронизация в играх? Эта функция отвечает за правильное отображение игр на стандартных LCD мониторах с частотой 60 Гц. Когда она включена, частота кадров ограничена до 60 Гц, а на экране не отображаются никакие прерывания. Ее отключение приведет к увеличению частоты кадров, но в то же время возникнет эффект разрыва экрана (screen tearing).

Для чего нужна синхронизация по вертикали в играх

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

Благодаря ей во время игры не возникают никакие погрешности на экране, картинка стабильная и не имеет разрывов. Недостатком является то, что частота кадров ограничена на пределе 60 Гц, поэтому более требовательные игроки могут ощутить так называемый input lag, то есть легкую задержку при перемещении в игре с помощью мыши (можно приравнять к искусственному сглаживанию движения мыши).

Отключение вертикальной синхронизации также имеет свои плюсы и минусы. В первую очередь предоставляется неограниченная частота кадров FPS и тем самым полностью убираем упомянутый input lag. Это удобно в играх типа Counter-Strike, где важна реакция и точность. Передвижение и прицеливание очень четкие, динамические, каждое движение мыши происходит с высокой точностью. В некоторых случаях сможем получить большую частоту FPS, так как V-Sync в зависимости от видеокарты может немного уменьшить производительность оборудования (разница порядка 3-5 FPS). К сожалению, недостатком является то, что без вертикальной синхронизации получаем эффект разрыва экрана. При поворотах или смене движения в игре мы замечаем, что изображение разрывается на две или три горизонтальные части.

Включить или отключить V-Sync?

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

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

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

Синхронизация по вертикали на видеокартах NVIDIA

В видеокартах GeForce функция находится на Панели управления Nvidia. Нажмите правой кнопкой мыши на рабочем столе Windows 10, а затем выберите «Панель управления Nvidia».

На боковой панели выберите вкладку «Управления параметрами 3D» в разделе «Параметры 3D». Справа отобразятся доступные настройки.

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

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

V-Sync на графике AMD

В случае с видеокартами AMD выглядит совершенно так же, как и в Nvidia. Кликните правой кнопкой мыши на рабочем столе, а затем перейдите в Панель Panel Catalyst Control Center.

Затем раскрываем слева вкладку «Игры» и выбираем «Настройки 3D-приложений». Справа отобразится список доступных вариантов, которые можно принудительно включить с позиции настроек видеокарты AMD Radeon. Когда находимся на вкладке «Системные параметры», то выбираем для всех.

Если нужно установить параметры индивидуально для каждой игры в отдельности, то следует нажать на кнопку «Добавить» и указать EXE файл. Она будет добавлена в список в виде новой закладки и при переходе на нее можно задать параметры только для этой игры.

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

V-Sync на интегрированной видеокарте Intel HD Graphics

Если используем интегрированный чип Intel HD Graphics, также доступна панель управления. Она должна быть доступна при нажатии правой кнопкой мыши на рабочем столе или через комбинацию клавиш Ctrl + Alt + F12.

На панели Intel переходим на вкладку Режим настройки – Панель управления — Трехмерная графика, а затем в пользовательские настройки.

Здесь находим поле с синхронизацией по вертикали Vertical Sync. Можно включить ее принудительно, установив значение на «Включено» или установить на «Настройки приложения». К сожалению, в опциях карты Intel HD нет функции принудительного отключения – только можно включить V-Sync. Так как отключить вертикальную синхронизацию в видеокарте не представляется возможным, то сделать это можно только в настройках самой игры.

Источник

VSync в играх: что это и нужно ли включать эту опцию?

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

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

Что такое VSync, или вертикальная синхронизация?

Если вы знаете о таком понятии как FPS, или частоте кадров, вы легко поймете концепцию вертикальной синхронизации. VSync, или вертикальная синхронизация — это технология, которая синхронизирует частоту кадров вашей игры с частотой обновления вашего монитора.

Давайте посмотрим на пример, чтобы понять, что это такое. Если у вас есть монитор, который обновляется с частотой 60 Гц, и видеокарта, которая может воспроизводить игру со скоростью 100 кадров в секунду, тогда VSync синхронизирует частоту кадров вашей игры до 60 fps, чтобы соответствовать частоте обновления вашего монитора.

Зачем вам нужен VSync?

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

Читайте также:  Что такое репродуктивная изоляция

Разрыв экрана происходит, когда на экране отображается одновременно несколько кадров. Выглядит это вот так:

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

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

Что делает вертикальная синхронизация?

Если у вас есть разрыв экрана, то включение VSync в настройках игры синхронизирует FPS с частотой обновления вашего монитора. Если у вашего монитора стандартная частота обновления 60 Гц, тогда и fps в игре будет заблокирован на уровне 60 кадров в секунду.

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

Есть ли у VSync проблемы?

Использование VSync ограничит частоту кадров игры (fps), если ваш монитор не может поддерживать более высокую частоту обновления. В этом случае вы заметите большую разницу за счет лучшей плавности картинки. Однако VSync не улучшает калибровку, яркость, контраст, цвета или возможности HDR вашего экрана.

Иногда включение VSync производит негативный эффект:

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

VSync, G-Sync или FreeSync: что лучше?

Такие компании, как AMD и NVIDIA, разработали собственные варианты вертикальной синхронизации. С выпуском FreeSync AMD внесла некоторые улучшения в свои графические процессоры, а NVIDIA выпустила G-Sync. Эти две технологии направлены на устранение тех недостатков, которыми обладает VSync.

Проще говоря, FreeSync и G-Sync – это улучшенные версии VSync, которые лучше всего работают с соответствующими графическими процессорами. Если у вас есть графический процессор NVIDIA, выберите G-Sync или попробуйте FreeSync, если у вас есть графический процессор AMD. Проблема с этими решениями заключается в том, что они зависят от совместимости вашего графического процессора и дисплея.

Хотя есть несколько ключевых различий между технологиями двух типов синхронизации от AMD и NVIDIA, по сути, они выполняют одно и то же. Рассмотрите возможность использования FreeSync и G-Sync вместо стандартной функции VSync, поскольку они выполняют своё предназначение намного эффективнее.

Источник

VSYNC — вертикальная синхронизация в играх: как включить и отключить?

Вертикальная синхронизация (вертикальный синхроимпульс, V-sync) — функция 3D параметров видеокарты, которая синхронизирует FPS (кадровую частоту) с частотой вертикальной развертки монитора. Необходима для корректного отображения игр и препятствует возникновению прерываний картинки.

V-sync используется для стандартных LCD мониторов с частотой 60 Гц и ограничивает FPS до соответствующего показателя. Функция серьезно нагружает видеокарту, поэтому может влиять на производительность и быстродействие системы. На слабых «машинах» из-за вертикальной синхронизации игры могут подлагивать и «тормозить».

Как включить или отключить V-sync

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

Для этого используйте панель управления настройками видеокарты. Чтобы попасть в нее кликните правой кнопкой мыши по пустой области на рабочем экране и выберите пункт «Панель управления» (Nvidia, AMD Catalyst или Intel HD, в зависимости от производителя графического адаптера).

Настройки вертикального синхроимпульса в панели управления Nvidia

Откройте «Панель управления NVIDIA» и перейдите в категорию «Управление параметрами 3D». Здесь отобразится перечень доступных настроек. Менять их можно для всех приложений (вкладка «Глобально») или только для определенного продукта (вкладка «Программные настройки»).

В пункте «вертикальный синхроимпульс» установите желаемый параметр. Доступны следующие опции:

Если вы хотите включить или отключить V-sync для конкретного приложения, то перейдите на вкладку «Программные настройки», укажите путь к файлу (через который запускается игра) и выберите настройку V-sync, которая будет использоваться в данном приложении. Тогда вместо глобального параметра будет использован выбранный. Все изменения сохраняются автоматически.

Настройки вертикальной синхронизации в AMD Catalyst

Как и в случае с Nvidia, AMD Catalyst Control Panel позволяет менять глобальные параметры V-sync и настраивать их отдельно для каждого приложения. Для этого в AMD Catalyst Control Center откройте категорию «Игры» и в появившемся списке найдите строчку «Ждать вертикального обновления». Доступные значения:

Чтобы отдельно настроить вертикальную синхронизацию для конкретной игры, кликните на значок «Добавить», после чего укажите путь к исполняемому EXE файлу игры на диске.

Синхронизация по вертикали в Intel HD

После запуска панели управления Intel HD перейдите на вкладку «Режим настройки» — «Панель управления» — «Трехмерная графика». Здесь поставьте галочку в пункте «Пользовательские настройки», чтобы получить доступ к дополнительным параметрам. После этого в значении строки «Синхронизация по вертикали» будут доступны следующие значения:

В отличие от Nvidia и AMD, в панели управления Intel HD нельзя отключить V-sync в принудительном порядке. Поэтому если само приложение не позволяет это сделать, то отключить ее не получится.

Включать или не включать виртуальную синхронизацию: все «За» и «Против»

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

Когда стоит включить V-sync:

Когда стоит выключить V-sync:

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

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

Читайте также:  Что такое психические процессы в психологии

Источник

Синхронизация состояний в многопользовательских играх

Проблема многопользовательских игр

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

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

Обычно программа игры должна симулировать следующее:

изменения в окружении с учётом времени и вводимых игроками данных.

Игра — это программа, хранящая состояние, поэтому она зависит от времени (реального или логического). Например, PACMAN симулирует окружение, в котором постоянно перемещаются призраки.

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

Возьмём, например, классическую игру «Змейка»:

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

Простейший клиент считывает обновления сервера и рендерит каждый полученный кадр для игрока.

Обновление состояния с фиксированным шагом

Концепция

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

Получив вводимые данные от всех пользователей, сервер может перейти к следующему такту с учётом этих данных.

На рисунке выше показано взаимодействие одного клиента с сервером. Надеюсь, проблема для вас настолько же очевидна, как и для меня: клиент может простаивать на интервале от T0 до T1, ожидая для продолжения обновления с сервера. В зависимости от качества сети задержка может меняться в пределах от 50 до 500 мс, а современные игроки замечают задержки более 100 мс. Поэтому торможение интерфейса пользователя на 200 мс будет для некоторых игр огромной проблемой.

Это не единственная сложность подхода с фиксированным интервалом.

Рисунок выше немного более сложен, он демонстрирует взаимодействие с сервером нескольких клиентов. Видно, что у клиента B более медленное сетевое подключение, поэтому хотя A и B отправляют на сервер вводимые данные в T0, обновление от B достигает сервера в T2, а не в T1. Поэтому сервер продолжает расчёт только тогда, когда получит все обновления, то есть в T2.

Что это значит?
Задержка игры теперь равна задержке самого «лагающего» игрока.
Получается, что мы наказываем всех игроков потому, что у одного из них медленное соединение. Поэтому рано или поздно все игроки уйдут из вашей игры…

Не говоря уже о том, что есть вероятность отсоединения клиента B, которая заблокирует действия сервера до истечения таймаута соединения.

Обсуждение

Кроме двух вышеупомянутых проблем, есть ещё несколько:

Для медленных игр небольшая задержка тоже приемлема. Хорошим примером может служить Farm Ville.

Ещё один хороший пример — шахматы, в которых два игрока ходят по очереди и каждый ход длится около 10 секунд.

Прогнозирование клиента

Давайте сначала решим проблему отклика игрока. Игра реагирует через 500 мс после того, как игрок нажал на кнопку, из-за чего игровой процесс рушится.

Как решить эту проблему?

Концепция

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

Предположим, для расчёта состояния игры в Tn нам нужно знать состояние в Tn-1 и введённые пользователем в Tn-1 данные.

Идея проста: давайте сделаем фиксированную скорость обновления, которая в нашем примере равна одной единице времени.

Клиент отправляет вводимые данные на сервер в T0 для эмуляции состояния игры в T1, поэтому клиент затем может рендерить игру, не ожидая обновления состояния от сервера, которое будет получено только в T3.

Такой подход работает только в следующих условиях:

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

Это значит, что прогноз клиента A о T1 будет ошибочным. К счастью, поскольку клиент A по-прежнему получает состояние T1 от сервера, он имеет возможность исправить свою ошибку в T3.

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

Разрешение конфликтов обычно называется согласованием (Reconcilation).

Реализация согласования зависит от конкретных условий использования. Я покажу простейший пример, в котором мы просто откажемся от прогнозирования и заменим его точным состоянием, получаемым от сервера.

Есть способы справиться с этой проблемой, но они не будут рассмотрены в этой статье.

Обсуждение

Техники прогнозирования на стороне клиента имеет огромное преимущество: клиент работате с собственной частотой обновления (независимой от частоты обновления сервера), поэтому когда сервер «тормозит», то это не влияет на частоту кадров на стороне клиента.

Но это неизбежно связано с определённой сложностью:

Заключение

В этой части мы рассмотрели всего два способа реализации сетевого соединения в многопользовательских играх:

Интересные статьи по теме

Какова роль сервера?

Давайте начнём с определения действий сервера. Типичные задачи сервера:

а) Соединительная точка для игроков
В многопользовательской игре игрокам нужна общая конечная точка для связи друг с другом. Это одна из ролей серверной программы. Даже в модели связи P2P присутствует соединительная точка для обмена сетевой информацией для установки соединения P2P.
б) Обработка информации
Во многих случаях сервер выполняет код симуляции игры, обрабатывает все вводимые игроками данные и обновляет состояние игры. Стоит учесть, что так бывает не всегда: некоторые современные игры перекладывают большую часть обработки на сторону клиента. В этой статье я буду считать, что именно сервер несёт ответственность за обработку игры, т.е., например, за создание тактов игры.
в) Единый источник истинного состояния игры
Во многих многопользовательских играх серверная программа также имеет власть над состоянием игры. Основная причина этого — защита от читерства. Кроме того, гораздо легче ориентироваться, когда есть единственная точка для получения правильного состояния игры.

Наивная реализация сервера

Давайте начнём реализацию сервера самым прямолинейным способом, а затем усовершенствуем его.

Читайте также:  Что такое посттравматическое расстройство

Ядром игрового сервера является цикл, выполняющий обновление GameState на основании вводимых пользователями данных. Этот цикл обычно называется TICK (такт) и обозначается следующим образом:

Упрощённый сниппет кода сервера может выглядеть так:

Обсуждение

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

Здесь снова становится важной задержка.

Тот факт, что сервер обрабатывает вводимые данные из буфера каждый TICK означает, что GameState зависит от задержки сети. На схеме ниже показано, почему это становится проблемой.

На схеме показаны два клиента, отправляющие вводимые данные серверу. Мы видим два интересных факта.

Непостоянная задержка в сочетании с жадным игровым циклом приводят к нескольким проблемам. Мы рассмотрим их ниже.

Не работает прогнозирование на стороне клиента

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

Игроки с низкой задержкой получают преимущество

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

Согласование на сервере

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

Один возможный способ реализации этого — позволить клиенту предлагать, когда необходимо применить вводимые данные. Таким образом, сторона клиента сможет точно предсказывать время их применения. Термин «предлагать» использован, потому что сервер может отклонить это предложение, если оно неверно, например, игрок пытается произнести заклинание, хотя у него закончилась мана.

Вводимые данные должны применяться почти сразу после ввода данных игроком, например, Tinput+ X, где X — задержка. Точное значение зависит от игры, для отзывчивости обычно необходима задержка менее 100 мс. Заметьте, что X может быть и нулём. В таком случае данные применяются сразу же после ввода пользователем.

Давайте примем X = 30 мс, что примерно равняется одному кадру при 30 кадрах в секунду. Для передачи на сервер данным требуется 150 мс, тогда существует большая вероятность того, что когда вводимые данные достигнут сервера, кадр для ввода уже будет пропущен.

Посмотрите на схему: пользователь A нажал клавишу в T. Эти данные должны обработаться в T + 30 мс, но вводимые данные из-за задержки получены сервером в T + 150 мс, что уже находится за пределами T + 30 мс. Решением этой проблемы мы займёмся в данном разделе.

Как сервер применяет вводимые данные, которые должны были случиться в прошлом?

Концепция

Вы наверно помните, что прогнозирование на стороне клиента имело ту же проблему с неточными прогнозами из-за недостатка информации о противниках. Неверные прогнозы позже корректировались обновлениями состояния с сервера с помощью согласования. Ту же технику можно использовать здесь. Единственная разница в том, что мы исправляем GameState на сервере на основе данных, вводимых клиентами.

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


Примечание: на первой пунктирной линии Time X на стороне клиента, но Time Y на стороне сервера. Это интересная особенность многопользовательских игр (и многих других распределённых систем): поскольку клиент и сервер работают независимо, время на клиенте и на сервере обычно отличается. Наш алгоритм позволяет справиться с этой разницей.

На схеме выше показано взаимодействие между одним клиентом и сервером.

Подробности согласования (красное поле)

Обсуждение

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

Кроме того, неверные GameState иногда приводят к ужасным скачкам UI. На схеме ниже показано, как это происходит.

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

Возможно, я преувеличиваю это влияние, иногда объект двигается не так далеко и скачок менее заметен, но во многих случаях он всё равно очевиден. Мы можем контролировать скачки, меняя размер GameStateHistory, UnprocessedUserInput и ProcessedUserInput. Чем меньше размер буфера, тем меньше будут скачки, потому что мы будем менее терпимы к сильно запаздывающим вводимым данным. Например, если вводимые данные запаздывают более чем на 100 мс, то они игнорируются, а игрок с пингом > 200 мс не сможет играть в игру.

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

Есть одна популярная техника для борьбы с проблемой неточных Game State — это интерполяция объектов (Entity Interpolation). Идея заключается в сглаживании скачков растягиванием их на короткие промежутки времени.


В этой статье я не буду описывать подробности реализации интерполяции объектов, однако приведу полезные ссылки в конце.

Подводим итог

Мы обсудили способы работы клиентов и сервера в многопользовательских играх.


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

Заключение

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

Источник

Информационный сайт