![]() |
|
Модераторы: Rickert |
![]()
|
|
| APXEOLOG |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 136 Регистрация: 12.4.2007 Где: Мурманск Репутация: нет Всего: 1 |
Доброго времени суток. Я понимаю в принципе все этапы создания сетевой игры кроме реализации самого протокола и синхронизации клиента и сервера. Я выскажу свое представление об этом, а вас попрошу прокомментировать исправить и дополнить мои рассуждения.
Клиент: Существуют две очереди - одна для сообщений от сервера, другая для сообщений для сервера. В отдельном потоке с определенным интервалом получаются сообщения от сервера и добавляются в очередь. Также отправляются сообщения из очереди для сервера. В основном игровом потоке на каждом "игровом тике" происходит обработка сообщений от сервера, отрисовка графики. Все действия игрока пакуются в сообщения и добавляются в очередь на отправку серверу. Сервер: Отдельный поток ловит входящие сообщения. На каждом "тике" сервера обрабатываются сообщения в очереди и рассылаются сообщения клиентам. Таково мое видение связи между клиентом и сервером. Не вызовет ли это рассинхронизации? Что делать если по какой-то причине наступит рассинхронизация? --------------------
Ученые долго не знали как назвать частоту.Потом так и назвали Hz. |
|||
|
||||
| Rpahut |
|
|||
![]() 0xdeadbeef ![]() Профиль Группа: Участник Сообщений: 243 Регистрация: 9.4.2006 Репутация: 5 Всего: 7 |
Рассинхронизация будет обязательно. Интернет в принципе не может гарантировать конечного времени доставки данных.
Клиент просто начинает визуализацию действия игрока и одновременно сообщает об этом серверу. Например персонаж начинает двигаться в какую-то сторону. Через какое-то время сервер присылает своё видение проблемы и состояние клиента подгоняется под параметры, присланные с сервера. Например корректируется позиция персонажа. Суть в том, что сервер решает всё, а клиент только пытается предугадать решение сервера и сразу начинает его выполнять чтобы уменьшить время задержки. Если клиент и сервер "думают" одинаково и информация в обе стороны доходит нормально, угаданные действия клиента совпадают с рекомендациями сервера. Если где-то теряются пакеты, получаются рывки, лаги и прочая фигня. --------------------
C/C++ GameDevRSS Раздела программирования игрOpenGL - уроки от NeHeКак продать идею? |
|||
|
||||
![]()
|
| Правила форума "Программирование игр, графики и искуственного интеллекта" | |
|
|
НА ЗЛОБУ ДНЯ: Дорогие посетители, прошу обратить внимание что новые темы касающиеся новых вопросов создаются кнопкой "Новая тема" а не "Ответить"! Любые оффтопиковые вопросы, заданные в текущих тематических темах будут удалены а их авторы, при рецедиве, забанены.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rickert. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Программирование игр, графики и искусственного интеллекта | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |