Сокеты с моделью клиент / сервер ...
Обычно вы и ваш друг создаете различные реализации клиента.
Локальный клиент показываетвизуальное представление игры и сохраняет состояние фигур (положение, убито / не убито) и правила о том, что фигурки могут / не могут делать (какие ходы можно делать с какими фигурками и находится ли состояние доски вcheck).
Удаленный сервер хранит информацию об игроках (чья очередь, набранные очки, независимо от того, выиграна игра или нет) и список выполненных ходов.
Когда вы делаете ход, ваш клиент проверяет ход в соответствии с правилами игры, а затем отправляет на сервер сообщение, что я сделал этот ход, ваш ход.
Другой клиент видит, что ход выполнен, извлекает последний ход с сервера, вычисляет, произошло ли это движение, проверяет ли это движение на соответствие правилам игры и воспроизводит действие локально.После того, как это все сделано, теперь он позволяет пользователю делать следующий ход (или нет, если игра окончена).
Самая важная часть взаимодействия клиент / сервер в играх - отправлять как можно меньше данных и хранитькак можно меньше состояния на сервере.Таким образом, вы можете играть в нее локально или по всему миру практически без задержки.Пока ваш клиент работает по тому же набору правил, что и клиент вашего оппонента, все должно работать.
Если вы хотите гарантировать, что никто не сможет обмануть, взломав их версию клиента, вы можете занять позициюи все правила вычислений выполняются на сервере и просто делают клиентов не более чем простыми механизмами воспроизведения.
Причина, по которой сокеты являются наилучшей средой связи:
- ограничения на кроссобмен данными между процессами почти так же сложен, как и обмен данными между узлами
- широко поддерживается во всех системах во всех системах
- при использовании удаленного доступа при использовании
Это одна из причин, по которой многие крупные системы, такие как базы данных, используют сокеты в качестве сетевой, а также локальной коммуникационной среды.