Показать сообщение отдельно
Старый 17.05.2009, 14:43   #30
Пользователь
 
Регистрация: 25.11.2008
Сообщений: 36
Сказал Спасибо: 13
Имеет 17 спасибок в 15 сообщенях
ПолуГость2 пока неопределено
По умолчанию

Серв ответит тебе проекцией на модель земли отвесно вниз, по крайней мере скорее всего. У сервера есть модель поверхности, называемая здесь геодатой, по этой информации он строит пути. Кстати, можно прощелкать таким образом поверхность на официальном сервере и получить геодату, только это скорее всего привлечет внимание, и займет изрядно времени. Смысл в том, что клиент также строит пути - например, он обходит динамичные препятствия, тех же торгашей, хотя вероятнее всего он это делает тупейшим образом, типа сдвига от препятствия на какую-то величину. Так или иначе надо определиться - либо координаты дает только сервер (по своей геодате), либо клиент также имеет такую возможность, значит имеет сходные данные. Если бы сервер рулил и, как говорит xcor, знал координаты лишь приблизительно, игрок бы двигался скачками, т.к. на пути некоторые точки лежали бы выше моделей земли в клиенте, а там уж зависит от количество возвращаемых сервером точек на пути - говоря правильней, от степени детализации пути. Мне кажется, вернее вторая версия - например, игрок иногда при падении останавливается в некоторых координатах, а потом сервер "поправляет" его положение и клиент отображает игрока в другом месте. Особенно это заметно на втором клиенте, там отставание модели игрока от реального его положения может быть весьма значительным, и клиент тем не менее не пропускает его сквозь стены и горы, хотя реально игрок совсем в другом месте, это видно первым клиентом, и сервер говорит второму клиенту - твои координаты такие-то, и клиент стремится отрисовать анимацию бега в эту точку, но на пути гора, и клиент не пускает модель, и она ломится в гору. Исходя из этого получается, что клиент имеет свою версию геодаты, возможно такую же, как у и сервера, но скорее всего иную, "визуальную", основанную на мешах гор и прочих препятствий, соотносящуюся с какой-то степень точности с геодатой сервера (в идеале - 100% совпадение, но скорее всего серверная геодата грубее), и считает столкновения модели игрока и поверхностей.
Это теория. Теперь практика. Думаю, геодата клиента имеет столь грандиозные размеры, что забрать ее из клиента и использовать в боте нереально. К тому же она может иметь непривычный вид, т.е. не быть самостоятельной, и представлять собой, положим, просто набор полигонов в такой-то локации (именно эти текстурированные полигоны и есть то, что мы видим), а клиент ломит игрока вниз эмулирая гравитацию и находит точку коллизии с этими полигонами. И таким же образом находит целевую точку перемещений, передавая ее серверу. А уж сервер подправляет ее по z по своей "геодате". Что же касается A*, это очень ресурсоемкий алгоритм, к тому же ему нужны те же данные геодаты. Уверен, на сервере используется специальная версия A* с предварительным просчетом части путей, потому что иначе для сервера линейки с нормальным онлайном нужен был бы суперкомп. Поэтому я и оторопел, увидев идеи реализации в пакетхаке A*. Кстати, пакетхак паскакалевский код интерпретирует, или как? Если да, то это вообще труба...

Кстати, в разрезе темы геодаты - очень интересно, как в этом плане работает волкер. Ведь и по горам ходит, и из катов не вылетает, собака. И где в нем инфа о геодате, спрашивается?

Последний раз редактировалось ПолуГость2, 17.05.2009 в 14:53.
ПолуГость2 вне форума   Ответить с цитированием