netlib.narod.ru | < Назад | Оглавление | Далее > |
Когда речь идет о разработке игр, есть только два протокола, которые следует рассмотреть: TCP/IP и UDP. Это два основных используемых сегодня протокола, и, если вы не читаете эту книгу через много лет после ее издания, только они представляют разумный выбор для разработчика игр.
Протокол TCP/IP обеспечивает обмен сообщениями между компьютерами с гарантированной доставкой данных. Он также делает такие приятные вещи, как упорядочивание пакетов. Главное преимущество TCP/IP в том, что он делает за вас большую часть работы, гарантируя доставку сообщений. Что означает гарантия доставки информации? Это значит, что если система сообщает вам о том, что отправила сообщение другому компьютеру, вы можете быть уверены, что данные действительно отправлены. Я знаю, что данная особенность кажется очевидной, но в мире сетевого программирования это не так.
Основной недостаток протокола TCP/IP — медленная передача данных. Это вызвано гарантируемой доставкой данных. Чтобы гарантировать доставку, система должна отправить информацию, получить ответ и проконтроллировать правильность передачи. Это отнимает драгоценное время и на сегодняшнем оборудовании задержки часто оказываются недопустимыми для игр.
Протокол UDP — это более простая версия TCP/IP. С одной стороны он не гарантирует доставку информации. Может быть данные добрались до цели, а может и нет — кто знает? Кроме отсутствия гарантии доставки, UDP передает данные в произвольном порядке. Возьмем, к примеру, следующую фразу:
«Шустрая рыжая лиса перепрыгнула через ленивую собаку»
Если вы передаете эту фразу по протоколу UDP, данные могут следовать в таком порядке:
«собаку рыжая Шустрая лиса ленивую перепрыгнула через»
Как видно из приведенного выше примера, данная особенность может вызвать проблемы при разработке игры. Существуют технические способы ее решения, но вы должны реализовать их самостоятельно, или использовать какой-нибудь API, который сделает это за вас.
Главное преимущество UDP — его исключительная быстрота и гибкость. Если не надо беспокоиться о таких вещах, как порядок данных и гарантированная доставка, он даст значительный выигрыш в скорости. Кроме того, вы можете написать систему, гарантирующую доставку данных и работающую поверх протокола и включать ее когда нужно. Это позволит в случае необходимости передавать данные с гарантированной доставкой и поддерживать более быструю передачу, когда данные не являются критически важными.
Может быть вы думаете о том, какой протокол и когда следует использовать. Позвольте мне помочь вам, рассмотремв несколько сценариев.
Пошаговые стратегические игры
Для пошаговых стратегических игр вы, скорее всего, должны остановить свой выбор на TCP/IP. Поскольку данные о ходах передаются регулярно, вам не нужна высокая скорость и проблемы с UDP.
Стратегические игры реального времени
Для стратегий реального времени вам нужен UDP. Вам постоянно придется передавать различную информацию: от сообщений игроков до данных о передвижении подразделений. Даже и не думайте использовать для этой цели TCP/IP.
Многопользовательские сетевые ролевые игры (MMORPG)
Эй, это же книга о стратегических играх! (Шутка.) Здесь ответ не столь однозначен. Многопользовательские ролевые игры передают огромные объемы данных, так что они кажутся созданными для использования протокола UDP. Проблема в том, что гарантированная доставка с протоколом UDP не столь эффективна, как с TCP/IP, а в многопользовательских ролевых играх вам очень часто будет требоваться именно гарантированная доставка данных. Я не хочу оставить вас в растерянности, так что советую попробовать сначала UDP, а затем, если не сможете заставить его работать, переключиться на TCP/IP.
netlib.narod.ru | < Назад | Оглавление | Далее > |