Выбор компьютера в локальной сети в качестве сервера - PullRequest
6 голосов
/ 18 июня 2011

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

При выборе компьютера в локальной сети для использования в качестве сервера, действительно ли существует какой-либо установленный способ выбрать один и сообщить другим?

Я возился с основной идеей - просто заставить компьютеры всех игроков выбирать случайное число и иметь сервер с самым низким (или самым высоким, неважно) сервером (генерируя случайные числа для компьютеров, которые вращаются). тот самый). Каждый компьютер получит «свернутый» номер других и сможет определить, каким будет сервер, после чего он сможет к нему подключиться. Это кажется грубым, но я не уверен, имеет ли это значение, поскольку все компьютеры физически будут находиться в одной сети в нескольких футах друг от друга. Будет ли это делать работу адекватно или есть значительно лучший способ?

1 Ответ

5 голосов
/ 18 июня 2011

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

Может также стоить настроить сервер на периодическую переоценку его квалификации, чтобы он был основным.Например, могут начаться фоновые процессы, которые будут препятствовать его способности работать адекватно, или более мощный узел может присоединиться к игре.Очевидно, что смена сервера, на котором размещена игра, будет нетривиальной, но об этом стоит подумать.(имейте в виду, что это происходит в онлайн-играх, то есть в Halo. Когда количество подключений всех клиентов к серверу падает ниже определенного порога, игра приостанавливается и восстанавливается на другом сервере, который может обеспечить более высокую производительность).

...