В настоящее время я работаю над игрой, в которой я рассматриваю возможность реализации сетевой архитектуры, как описано в этой статье: http://www.gamasutra.com/view/feature/131503/1500_archers_on_a_288_network_.php
Чтобы реализация, описанная в статье, работала, все одноранговые узлыдолжны быть взаимосвязаны без каких-либо исключений.Вот так:
Это прекрасно работает, когда все хорошо.Но мне интересно, как договориться об отключениях в такой сети.(К сожалению, что-то статья не идет в).Это сравнительно легко, если один клиент выходит из строя.Просто дайте каждому клиенту тайм-аут, и если клиент не отвечает в течение определенного времени, он удаляется из этого клиента.
Однако как система должна разрешить случай, когда один клиент не отвечает другому, но все равно отвечает всем остальным.В такой системе может произойти следующее, что приведет к недопустимому состоянию: Конечно, это можно решить, дав одному из клиентов некую роль «мастера».Это единственный, кто может решить, следует ли отключать других клиентов.Но мне интересно, может ли это быть достигнуто в чистой p2p-сети.
Примечание Я понимаю, что этот случай не может происходить "естественно".Но я хочу помешать игрокам испортить сетевую игру для других, сыграв такую хитрость, например, с помощью брандмауэра.
Заранее спасибо за любые ответы!