Задать вопрос
@Oxoron
Шарпер

Каких граблей стоит избегать при проектировании пошаговой клиент-серверной компьютерной игры?

Добрый день. Занимаюсь разработкой компьютерной игры вроде шахмат, ради знакомства с wcf, EF и многопоточностью в c#.
Цель: серверная служба, десктопные клиенты. Клиент регается (просто пара логин-пароль, без всяких примочек с безопасностью), получает возможность создавать игры, присоединяться к текущим (как игрок и как зритель), играть с ботами (бот уже есть), получать список игр. В БД хранятся логины пароли, истории игр, рейтинги игроков.

Основной вопрос: стоит ли как-нибудь поддерживать соединение с клиентом во время игры? Понятно, что можно заставить клиента требовать обновления ситуации каждые 5 секунд, но это породит множество бессмысленных запросов-ответов. Куда элегантней кажется решение сохранить данные о клиентском соединении, и отсылать туда инфу при OnGameChange().

Главный вопрос: какие еще тонкие моменты могут вылезти в процессе разработки?
  • Вопрос задан
  • 2804 просмотра
Подписаться 2 Оценить Комментировать
Ответ пользователя Виталий Пухов К ответам на вопрос (4)
Neuroware
@Neuroware
Программист в свободное от работы время
При реализации возникнет много заморочек, особенно если писать на низком уровне абстракции. Решение вида OnGameChange красивое, но актуально для realtime игр, вроде экш и т.п. для пошаговой же послать запрос раз в 500мс не критично при правильной реализации, даже если на 1 сервере будет 1000 игр с 10 игроками на каждом, что врятли светит самопальной игре.
По моему опыту подобное легко и красиво реализуется с использованием Remoting.
Весь код клиента и сервера при этом легко уместится в 30 строк в худшем случае. Писал подобный клиент -сервер недавно.
Ответ написан