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

From Valve Developer Community
Jump to: navigation, search
English Русский

Ян Берньер (yahn@valvesoftware.com), 2001
Инженер разработки ПО (Инженер по разработке программного обеспечения)

Valve

Введение

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

Широкополосный доступ в Интернет обычно преподносится как панацея от всех болячек онлайн-игр, но на самом деле быстрый Интернет не освобождает программиста от учитывания ограничений среды передачи данных, таких, как задержки (latency). Пройдёт некоторое количество времени, прежде чем широкополосный доступ станет повсеместным в Соединённых Штатах, и намного большее количество времени, прежде чем широкополосный доступ станет доступным для ваших клиентов в других странах. К тому же, существует множество дешёвых широкополосных провайдеров со значительными задержками и потерями пакетов (packet loss) в своих подключениях, несмотря на их, казалось бы, достойную пропускную способность (bandwidth).

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