Модераторы: Rickert
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сетевая игра реального времени, Игровой цикл 
:(
    Опции темы
APXEOLOG
Дата 19.6.2010, 17:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 136
Регистрация: 12.4.2007
Где: Мурманск

Репутация: нет
Всего: 1



Доброго времени суток. Я понимаю в принципе все этапы создания сетевой игры кроме реализации самого протокола и синхронизации клиента и сервера. Я выскажу свое представление об этом, а вас попрошу прокомментировать исправить и дополнить мои рассуждения.

Клиент:
Существуют две очереди - одна для сообщений от сервера, другая для сообщений для сервера. В отдельном потоке с определенным интервалом получаются сообщения от сервера и добавляются в очередь. Также отправляются сообщения из очереди для сервера. 
В основном игровом потоке на каждом "игровом тике" происходит обработка сообщений от сервера, отрисовка графики. Все действия игрока пакуются в сообщения и добавляются в очередь на отправку серверу.

Сервер:
Отдельный поток ловит входящие сообщения. На каждом "тике" сервера обрабатываются сообщения в очереди и рассылаются сообщения клиентам.

Таково мое видение связи между клиентом и сервером. Не вызовет ли это рассинхронизации? Что делать если по какой-то причине наступит рассинхронизация?
--------------------
Ученые долго не знали как назвать частоту.Потом так и назвали Hz.
PM MAIL ICQ   Вверх
Rpahut
Дата 20.6.2010, 14:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


0xdeadbeef
*


Профиль
Группа: Участник
Сообщений: 243
Регистрация: 9.4.2006

Репутация: 5
Всего: 7



Рассинхронизация будет обязательно. Интернет в принципе не может гарантировать конечного времени доставки данных.

Клиент просто начинает визуализацию действия игрока и одновременно сообщает об этом серверу. Например персонаж начинает двигаться в какую-то сторону. Через какое-то время сервер присылает своё видение проблемы и состояние клиента подгоняется под параметры, присланные с сервера. Например корректируется позиция персонажа.
Суть в том, что сервер решает всё, а клиент только пытается предугадать решение сервера и сразу начинает его выполнять чтобы уменьшить время задержки. Если клиент и сервер "думают" одинаково и информация в обе стороны доходит нормально, угаданные действия клиента совпадают с рекомендациями сервера. Если где-то теряются пакеты, получаются рывки, лаги и прочая фигня.
--------------------
C/C++ GameDevRSS Раздела программирования игрOpenGL - уроки от NeHeКак продать идею?
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Программирование игр, графики и искуственного интеллекта"
Rickert

НА ЗЛОБУ ДНЯ: Дорогие посетители, прошу обратить внимание что новые темы касающиеся новых вопросов создаются кнопкой "Новая тема" а не "Ответить"! Любые оффтопиковые вопросы, заданные в текущих тематических темах будут удалены а их авторы, при рецедиве, забанены.

  • Литературу, связанную с программированием графики, обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы связанные с программированием графики и мультимедии на языках С++ и Delphi
  • Вопросы по реализации алгоритмов рассматриваются здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rickert.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Программирование игр, графики и искусственного интеллекта | Следующая тема »


 




[ Время генерации скрипта: 0.0458 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.