2009-10-14 2 views
2

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

Причина, по которой я прошу, я подумал, что может быть интересно попробовать использовать Tornado, который, как сообщается, хорошо масштабируется и поддерживает неблокирующие запросы и может обрабатывать «тысячи одновременных пользователей».

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

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

Заранее спасибо.

ответ

0

С целевой платформой, являющейся мобильным устройством (и ограниченной полосой пропускания, которая влечет за собой), HTTP не будет первым инструментом, который я бы вытащил из коробки.

+0

Согласен. Если игра не требует скорости вообще. Например, пользователь не возражает ждать 30 секунд в случае отставания или сотен пользователей. –

1

WRT:

«мой клиент может сделать запрос HTTP, а когда игровой сервер имеет somethign сказать, он ответит на запрос.»

Это не то, как должен работать HTTP. Итак, нет, HTTP не будет хорошим выбором здесь. HTTP-запрос таймаута, если ответ не получен обратно с таймаутом (60 секунд является обычным дефолтом, но это будет зависеть от специфики).

+0

Ваш разговор о традиционном запросе http, правильно? Но что, если я буду использовать длительный опрос? Клиент не браузер, а устройство, но он все равно должен работать или нет? – WillF

+0

Да, ваши клиенты могли опросить HTTP-запрос. Сервер должен возвращать ответ, даже если ему «ничего не сообщать». Это был бы правильный HTTP. – noctonura

+0

Дополнительную информацию об этой конкретной концепции см. В разделе HTTP BOSH: http://xmpp.org/extensions/xep-0124.html –

0

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

Метод COMET - это когда вы оставляете HTTP-соединение открытым в течение длительного периода времени. Это прежде всего для «серверного нажатия» данных. Но обычно вам это не нужно. Обычно гораздо проще выполнять повторные запросы и обрабатывать ответы индивидуально.

3

В: Возможно ли использовать HTTP в качестве основного протокола связи для многопользовательской игры.

A. Использование HTTP в качестве протокола связи может иметь смысл для вашей игры, возможно, нет, но это вам решать. Я разработал приложения для Windows Mobile, Blackberry, Android и iPhone уже более 10 лет. Весь путь назад к CE 1.0. Имея это в виду, вот мое мнение.

Сначала я предлагаю прочитать RFC 3205, как предложил Тедди. В нем подробно объясняются причины моих предложений.

В общем HTTP это хорошо, потому что ...

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

HTTP может быть плохо, потому что ...

  • HTTP вводит огромные накладные расходы с точки зрения пропускной способности по сравнению с простой службой TCP. Например, Omegle.com отправляет 420 байтов данных заголовка для отправки 9-байтовой полезной нагрузки.
  • Если вам действительно нужна комета/длинный опрос, вы будете тратить много времени на выяснение того, как заставить ваш сервер говорить правильно, а не работать над тем, что он говорит.
  • Устойчивый поток трафика HTTP может перегружать мобильные устройства как в процессе обработки, так и в пропускной способности, что дает вам меньше ресурсов, чтобы уделять внимание вашей игре.
  • Возможно, вам не кажется, что вы знаете, как создать свой собственный TCP-сервер, но это действительно легко.

Если вы пишете сервер И клиент, я бы пошел прямо в TCP. Если вы уже знаете python, используйте витую сетевую библиотеку. Вы можете получить простой сервер за час или около того, просто следуя инструкциям.

Ознакомьтесь с примером LineReceiver для супер простого сервера, который вы можете протестировать с любым telnet-клиентом. http://twistedmatrix.com/projects/core/documentation/howto/servers.html

 Смежные вопросы

  • Нет связанных вопросов^_^