Вернуться   CoderX :: Forums > Основные форумы > Программинг
Войти через OpenID

Программинг Форум для тем связанных с программированием

Чат (Новых сообщений с момента вашего последнего визита нет)
Загрузка...
Задавайте ваши вопросы на форуме. Чат предназначен для небольших разговоров.
 
Ответ
 
Опции темы Опции просмотра
Старый 06.03.2013, 12:49   #1
Пользователь
 
Регистрация: 17.12.2010
Сообщений: 37
Сказал Спасибо: 13
Имеет 1 спасибку в 1 сообщении
glukmaker пока неопределено
По умолчанию Обработка пакета MoveToPawn

Играю на L2C4

Хочу сделать програмку с визуальным отображением перемещения персонажей. Вот тут задал несколько вопросов ( http://coderx.ru/showthread.php?p=194348#post194348 ), вроде та часть решилась.

Но теперь возник вопрос о том как обработать пакет MoveToPawn, ибо сервер параллельно с этим пакетом не посылает пакет MoveToLocation

В принципе если таргет неподвижен, то задача решается просто.
Вічисляем координаты в определенный момент времени так же как и в случае MoveToLocation, только координаты конечной точки уже нужно вычислять (искать по массиву объектов, который хранит программа объект таргета, и на прямой от начальный координат перса до координат таргета искать точку отстоящую от таргета на растоянии дистанции.)

Но что делать если таргет перемещается? Тогда координаты конечной точки тоже будут постоянно меняться. А особенно если таргет в свою очередь выполняет MoveToPawn ? Тогда получается вообще нужно будет вычислять все рекурсивным (или псевдорекурсивным способом). Причем получается что в данном случае на точность будет сильно влиять дискретизация по времени. да и в случае кругового таргета (1 персонаж взял в таргет второго и идет к нему, второй третьего, а третий первого) получится бесконечная рекурсия.

Есть варианты как это сделать проще?
glukmaker вне форума   Ответить с цитированием
Старый 06.03.2013, 13:32   #2
Местный
 
Аватар для supernewbie
 
Регистрация: 23.09.2009
Сообщений: 1,232
Сказал Спасибо: 119
Имеет 172 спасибок в 134 сообщенях
supernewbie пока неопределено
По умолчанию

glukmaker, ява сервер решает это так - координаты персонажа меняются таймером который срабатывает каждый шаг персонажа, тем самым происходит пошаговое передвижение персонажа
+ 2 состояния, обычное передвижение в точку, и следование - при следовании сервер каждый шаг персонажа меняет конечную точку на координаты ведущего персонажа
__________________
Начало.
supernewbie вне форума   Ответить с цитированием
Старый 06.03.2013, 14:06   #3
Пользователь
 
Регистрация: 17.12.2010
Сообщений: 37
Сказал Спасибо: 13
Имеет 1 спасибку в 1 сообщении
glukmaker пока неопределено
По умолчанию

Цитата:
Сообщение от supernewbie Посмотреть сообщение
glukmaker, ява сервер решает это так - координаты персонажа меняются таймером который срабатывает каждый шаг персонажа, тем самым происходит пошаговое передвижение персонажа
+ 2 состояния, обычное передвижение в точку, и следование - при следовании сервер каждый шаг персонажа меняет конечную точку на координаты ведущего персонажа
ну серверу проще... Он все знает.
Но тем не менее в случае циклического перемещения по MoveToPawm
Цитата:
(1 персонаж взял в таргет второго и идет к нему, второй третьего, а третий первого)
думаю и сервер наверное вычисляет это все неточно... Ибо в таком случае чтобы вычислить координаты первого перса нужно вычислить сначала координаты его цели, т.е. второго перса, и т.д. по кругу...
Хотя вот подумал что небольшая погрешность (если координаты я вычисляю 20 раз в секунду), то координаты одной из целей можно взять и старые (вычисленные на предыдущем шаге). так и рекурсия не нужна, только прямой обход массива. надеюсь погрешность будет небольшой...

А вот может ли случится такая ситуация, когда:
Есть 3 перса:
Перс 1 - наблюдатель - программа берет с него данные.
Перс 2 - перемещается MoveToPawm к персу 3
Перс 3 находится вне зоны видимости перса 1.

Получится что персу 1 придет пакет MoveToPawm где будет указано что перс 2 бежит к персу 3, но координат перса 3 мы не знаем.

Может такое быть?
glukmaker вне форума   Ответить с цитированием
Старый 06.03.2013, 23:11   #4
Рыцарь
 
Аватар для alexteam
 
Регистрация: 07.03.2009
Сообщений: 9,139
Сказал Спасибо: 70
Имеет 2,820 спасибок в 1,735 сообщенях
alexteam на пути к лучшему
По умолчанию

Цитата:
Может такое быть?
нет.
Цитата:
1 придет пакет MoveToPawm
мутулокешин ему прийдет.
__________________
L2Ext - project closed.
alexteam вне форума   Ответить с цитированием
За это сообщение alexteam нажился спасибкой от:
Старый 07.03.2013, 03:37   #5
Местный
 
Регистрация: 13.12.2007
Сообщений: 126
Сказал Спасибо: 10
Имеет 39 спасибок в 32 сообщенях
Zergatul
По умолчанию

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

Вообщем, если вдруг еще понадобиться мой код:
https://github.com/Zergatul/ulHelper...s/GameWorld.cs метод MoveObjects
https://github.com/Zergatul/ulHelper...2LiveObject.cs

И не забывай про пакет StopMove
Zergatul вне форума   Ответить с цитированием
За это сообщение Zergatul нажился 2 спасибками от:
Старый 07.03.2013, 12:25   #6
Пользователь
 
Регистрация: 17.12.2010
Сообщений: 37
Сказал Спасибо: 13
Имеет 1 спасибку в 1 сообщении
glukmaker пока неопределено
По умолчанию

Цитата:
Сообщение от Zergatul Посмотреть сообщение
Все норм будет, погрешность небольшая. Иногда даже на разных окнах прицепленные персонажи стоят в разных местах.

Вообщем, если вдруг еще понадобиться мой код:
https://github.com/Zergatul/ulHelper...s/GameWorld.cs метод MoveObjects
https://github.com/Zergatul/ulHelper...2LiveObject.cs

И не забывай про пакет StopMove
Да. StopMove я уже задействовал... MoveToPawm вроде как последнее что осталось обрабатывать при вычислении траектории движения персов и мобов.
Правда теперь придется код сильно править... Я первоначально (используя только моветулокейшен текущие координаты персов не сохранял. Только начальные и конечные, а текущие при вычислении использовались только для отрисовки перса. Но ничего.

Последний раз редактировалось glukmaker, 07.03.2013 в 12:36.
glukmaker вне форума   Ответить с цитированием
Ответ

  CoderX :: Forums > Основные форумы > Программинг



Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 02:09.

vBulletin style designed by MSC Team.
Powered by vBulletin® Version 3.6.11
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Locations of visitors to this page
Rambler's Top100

Вы хотите чувствовать себя в безопасности? чоп Белган обеспечит её!