Я посмотрю, смогу ли я ответить на это как можно лучше:
Как часто модель сервера прослушивания используется в игровой индустрии?
Когда дело доходит до большинства онлайн-игр, вы обнаружите, что в подавляющем большинстве игр используется архитектура клиент-сервер, хотя и не всегда так, как вы думаете. Возьмите любую игру с источником, например. Большинство из них будет использовать стандартный клиент-сервер с архитектурой главного сервера (для перечисления доступных игр), при этом один человек будет размещать выделенный сервер, и любой, у кого есть клиент, может присоединиться к нему.
Однако у вас есть несколько игр и сервисов, например, Left 4 Dead, League of Legends и некоторые игры XBox Live, которые используют немного другой подход. Все они используют архитектуру клиент-сервер с управляющим сервером. Основная идея здесь в том, что кто-то создает выделенный сервер, который не «запускает» какую-либо игру. Управляющий сервер создаст своего рода «лобби», и, когда игра будет запущена, управляющий сервер добавит их в очередь, а когда придет очередь этого лобби, он выберет соответствующий выделенный сервер (с точки зрения местоположения / скорость, доступность, многочисленные факторы) и назначить игроков на этот сервер. Только тогда сервер действительно «запустит» игру. Это та же идея, но немного упрощенная, так как клиенту не нужно «выбирать» сервер, только присоединиться к игре и позволить управляющему серверу выполнить свою работу.
Конечно, самая большая модель клиент-сервер - это модель MMO, где один или несколько серверов работают в постоянном мире, который обрабатывает почти все данные и логику. Вот некоторые из наиболее известных игр, использующих эту модель: World of Warcraft, Everquest и так далее.
Так, где здесь находится сервер прослушивания? Честно говоря, не очень хорошо, однако, вы все равно найдете много игр, использующих его. Например, большинство игр с исходным кодом позволяют создавать серверы прослушивания, а многие игры XBox Live это делают (это было давно, но я считаю, что Counter Strike сделал это, как и Quake 4 и многие другие). Однако в целом они, похоже, осуждаются из-за преимуществ модели клиент-сервер, что подводит нас к следующему пункту.
В чем его преимущества (недостатки)?
В первую очередь: производительность . В модели клиент-сервер клиент будет обрабатывать локальные изменения (такие как ввод, графика, звуки и т. Д.) В каждом цикле игры. В конце цикла будут упакованы соответствующие данные (например, переместился ли игрок? Если да, то куда? Где он / она смотрит сейчас? Скорость? Они стреляли? Если да, то информация о пуле). И т.д.) и отправьте это на сервер для обработки. Сервер возьмет эти данные и определит, является ли каждая вещь действительной, например, движется ли пользователь способом, который указывает на взлом (подробнее об этом позже), действительно ли это движение (что-нибудь мешает?), Пуля от игрока 1 хит игрока 2? И больше. Затем сервер упаковывает это и отправляет его клиентам, которые затем обновляют все необходимое, например, поправляют здоровье, если игрок был застрелен, бьют его, если определено, что он взломал и т. Д.
Сервер прослушивания, однако, должен обрабатывать все это одновременно. Поскольку я предполагаю, что вы знакомы с программированием, вы, вероятно, понимаете, какую мощь игра может отнять у компьютера, особенно плохо разработанного. Добавив сетевую обработку, обработку безопасности и многое другое , а также игру клиента, вы можете увидеть, где производительность серьезно пострадает, по крайней мере, в той степени, в которой идет стандартная обработка. Кроме того, большинство серверов работают в быстрых сетях и являются серверами, рассчитанными на сетевой трафик. Если сеть сервера прослушивания работает медленно, пострадает вся игра.
Второй Безопасность Как уже говорилось ранее, одна из основных задач, которую будет выполнять сервер, - определить, использует ли игрок игру.Вы могли видеть их как Punkbuster, VAC и т. Д. Есть очень сложный набор правил, которые запускают эти программы, например, определяя разницу между хакером и просто очень хорошим игроком.Для вашей игры было бы очень плохо, если бы вы не смогли поймать хакеров, но еще хуже, если вы выполнили действие против ложно обвиняемого.
Сервер прослушивания, как правило, не сможет обрабатывать игру клиентаобработка сервера и обнаружение взлома, и в большинстве случаев такие детекторы, как Punkbuster, очень трудны, если не невозможны, чтобы работать на сервере прослушивания, потому что это трудно для правильной работы без необходимой вычислительной мощности, так какобычно логика игры имеет приоритет над безопасностью, и если детектору не разрешено обрабатывать один кадр, он может потерять данные, необходимые для осуждения.
Наконец, игровой процесс .Самое главное в серверах - это то, что они постоянны, а это означает, что даже если все уйдут, сервер продолжит работу.Это полезно, если у вас есть популярный сервер, который не очень активен в ночное время, люди могут присоединиться к нему, когда они будут готовы к игре, и им не нужно ждать, пока он снова будет подключен к сети.
В прослушивающем сервере основным недостатком является то, что, как только клиент, на котором размещен прослушивающий сервер, уходит, игра должна быть либо передана другому игроку (что в некоторых случаях может привести к затягиванию игры, либо в некоторых случаях может закончиться), либо должна полностью завершиться.,На больших серверах это нежелательно, поскольку хост должен либо оставаться в сети (тратить время на слот на сервере и мощность своего компьютера, что также может замедлить игру), либо завершить игру для всех.
Однако, несмотря на эти проблемы, у серверов прослушивания есть несколько преимуществ.
Простота настройки : Большинство серверов прослушивания - это не что иное, как нажатие кнопки «Новая игра» и предоставление людям возможности присоединиться.Это легко для людей, которые просто хотят играть со своими друзьями и не хотят пытаться найти пустой выделенный сервер или играть с другими людьми.
Подходит для тестирования : Если вы владеете выделенным сервером и хотите изменить его конфигурацию, лучше всего сначала проверить конфигурацию.Пользователь должен будет либо создать резервную копию выделенного сервера и вслепую заняться изменениями, единственная возможность - откатиться, если что-то пойдет не так, создать новый выделенный сервер для их проверки или просто создать простой сервер прослушивания, чтобыпроверить их.А в пункте 1 их обычно проще запустить и настроить.Это особенно верно, так как большинство выделенных серверов не имеют прямого доступа администраторов (большинство выделенных серверов арендуются из удаленного местоположения).Отправка изменений конфигурации, а также команд для перезапуска и т. Д. В удаленное местоположение занимает гораздо больше времени, чем машина, на которой в данный момент находится администратор.
Меньше ресурсов : в большинстве выделенныхНа серверах пользователь с одним и тем же IP-адресом не может подключиться к выделенному серверу (то есть клиент должен либо разместить сервер, либо играть, они не могут делать оба).Если клиент желает играть на своем собственном сервере, ему обычно требуется второй компьютер для размещения сервера или покупка или аренда выделенного сервера, чтобы он мог фактически играть на нем.Серверу прослушивания требуется только один компьютер, который может быть единственным, что клиент может использовать.
В любом случае оба имеют свои преимущества и недостатки, и вам нужно взвесить их с тем, что вы хотите спроектировать ивоплощать в жизнь.Исходя из своего опыта, я полагаю, что если бы вы внедрили сервер прослушивания, он бы привык, хотя бы для нескольких пользователей, желающих поиграть с друзьями или проверить настройки.
Наконец:
Какие еще есть варианты?
Это промышленная банка червей. В действительности, любой тип сетевой архитектуры может быть применен к видеоиграм. Однако из того, что я видел, как и большинство интернет-коммуникаций, большинство сводится к той или иной форме модели клиент-сервер.
Пожалуйста, дайте мне знать, если я не ответил на ваш вопрос, или если вам нужно что-то расширить, и я посмотрю, что я могу сделать.