У нас была эта проблема с некоторыми онлайн CCG, над которыми я работал. Лучшее решение, которое я видел:
1) Игроки ДОЛЖНЫ подключаться к серверу, а не друг к другу напрямую, и вы НИКОГДА не должны передавать IP-адреса оппонентов в данных, которые вы передаете игрокам. Это предотвращает атаки типа «отказ в обслуживании», когда игрок вынуждает своего противника отключиться для победы.
2) Разорванная связь = вы проигрываете, оппонент выигрывает. Мы должны предположить, что если вы уронили, это был урон, чтобы избежать определенных потерь.
3) Разъединяет попытку переподключения в течение некоторого времени, так что небольшой сбой в сети не заставит вас проиграть не по своей вине. В идеале время должно быть достаточно продолжительным, чтобы позволить кому-то восстановить соединение, если он случайно ударил по кабелю, но достаточно коротким, чтобы противник не расстроился и не заснул во время ожидания. Я думаю, что мы нашли, что приблизительно 45 - 60 секунд чувствовали себя хорошо.
4) Разрешить игрокам сообщать о своих противниках. Это необходимая ловушка, чтобы никто не нашел раздражающий способ обойти вашу политику. Например, может быть настолько словесно оскорбительным, что оппонент падает, просто чтобы выбраться оттуда, или постоянно отключаться и повторно подключаться, чтобы растянуть продолжительность игры, или бросать камни, чтобы избежать проигрыша, или что-то еще. Вы не можете остановить ВСЕ плохое поведение, но вы можете включить внутриигровой механизм, чтобы сообщить об этом, а затем позволить отделу поддержки клиентов обработать все остальное.