Сравнение опросов и сокетов серверов для онлайн-флеш-игр

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

Я читал во многих местах, что серверы сокетов могут быть более эффективными, чем использование опроса для онлайн-игр, но является ли это главным соображением для игр, которые являются более многопользовательскими с большим количеством взаимодействий с несколькими игроками, чем игра, которую я описал? Если много пользователей играют в сети одновременно, но каждый из них играет в относительно изолированную игру и не взаимодействует в реальном времени с каждым игроком, опрос будет приемлемым, или будет целесообразно использовать сокеты, независимо от того, что, если у вас есть онлайн игра, в которую, по вашему мнению, многие люди играют одновременно? Спасибо!


person justin    schedule 30.05.2010    source источник


Ответы (1)


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

С сохранением состояния

Многопользовательские игры, такие как Quake / Half-life и т. Д., Запускаются на серверах, которые поддерживают постоянные соединения с подключенными клиентами. Это намного эффективнее, поскольку позволяет сохранять соответствующее состояние игры в оперативной памяти, а не на диск / базу данных после каждого сообщения.

Без гражданства

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

Если связь редкая и простая, сервер без сохранения состояния может быть лучшим выбором. Реализовать очень просто.

person bitc    schedule 02.06.2010