Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > разработка игр, графический дизайн и моделирование > Gamedev - cоздание игр: Unity, OpenGL, DirectX
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.12.2012, 00:14   #1
Linel
Форумчанин
 
Аватар для Linel
 
Регистрация: 21.02.2009
Сообщений: 372
По умолчанию Движение объекта по полю в мультиплеерной игре

Как реализовано движение объекта по полю в мультиплеерных играх? Например, в играх жанра RPG?

Есть клиент, есть сервер. Пользователь кликает на поле в определенном месте и на клиенте запускается анимация перемещения объекта из точки A в точку B. А каким образом сервер контролирует положение объекта?
No name. Just Linel.
Linel вне форума Ответить с цитированием
Старый 23.12.2012, 00:47   #2
_PROGRAMM_
Участник клуба
 
Аватар для _PROGRAMM_
 
Регистрация: 30.07.2009
Сообщений: 1,603
По умолчанию

Цитата:
Есть клиент, есть сервер. Пользователь кликает на поле в определенном месте и на клиенте запускается анимация перемещения объекта из точки A в точку B. А каким образом сервер контролирует положение объекта?
Я не разбираюсь в игровых жанрах, но по-моему вы описали стратегию. Сервер никак не контролирует положение. У них с клиентом одинаковый алгоритм перемещения, по которому сервер может определить примерное положение клиента(примерное, потому что есть такая штука как задержка). Но опять же, есть и другие реализации в зависимости от скорости действий игры.

В мире нет вечных двигателей, зато есть вечные тормоза...

Блог
_PROGRAMM_ вне форума Ответить с цитированием
Старый 23.12.2012, 11:43   #3
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Цитата:
Сообщение от Linel Посмотреть сообщение
Есть клиент, есть сервер. Пользователь кликает на поле в определенном месте и на клиенте запускается анимация перемещения объекта из точки A в точку B. А каким образом сервер контролирует положение объекта?
Не так.
Пользователь кликает на поле в определенном месте и клиент отсылает сообщение об этом серверу.
Сервер осуществляет необходимые проверки и отсылает клиенту команду на перемещение. Если, скуажем, сервер решит, что точка В недоступна, он даст команду на перемещение из А в ближайшую к В доступную точку С.
Клиент получает команду и запускает анимация перемещения объекта из точки A в точку С.

Разумеется, это в первом приближении.
Из-за наличия существенных задержек на передачу сигнала этот алгоритм приходится несколько усложнять. Как это сделать - решает каждый разработчик самостоятельно.
Один из возможных вариантов.
Есть сервер и клиент.
Сервер хранит всю информацию об окружающем мире.
Часть этой информации он передает клиенту.
Пользователь щелкнул мышью по экрану: если по прогнозу клиента эта точка недоступна - ноль реакции, если же доступна: клиент отослал сообщение об этом на сервер, а сам пока стал перемещать персонажа из А в В.
Сервер ответил, что персонажа нужно перемещать не в В, а в С.
Клиент получил от сервера инструкцию и скорректировал траекторию.

Последний раз редактировалось s-andriano; 23.12.2012 в 11:49.
s-andriano вне форума Ответить с цитированием
Старый 23.12.2012, 17:06   #4
Виталий Желтяков
Старожил
 
Аватар для Виталий Желтяков
 
Регистрация: 19.04.2010
Сообщений: 2,702
По умолчанию

Проверяется конечная и начальная точка, что посередине сервер не контролирует.
Виталий Желтяков вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Движение объекта (С++) фыф123 Помощь студентам 1 06.07.2011 20:50
Движение объекта dlnk C# (си шарп) 1 11.03.2011 21:17
Движение объекта ill2005 Помощь студентам 2 27.09.2010 21:32
Движение в игре Serg-Grin Gamedev - cоздание игр: Unity, OpenGL, DirectX 16 17.07.2010 14:10
Delphi: движение маркера по игровому полю Blondy Gamedev - cоздание игр: Unity, OpenGL, DirectX 16 08.02.2010 12:25