|
---|
![]() |
#1 | |
gfdjr5
[NULL]
![]() ![]() ![]() ![]() ![]()
Регистрация: 25.11.2012
Сообщения: 563
|
![]() Хочется иметь на форуме тему, подобную этой. Для вопросов по движку, и в целом для его обсуждения.
Конкретно я хотел бы знать следующее. В Xash есть код от DarkPlaces? Скелетная анимация работает (вроде на вики в источниках кода видел DarkPlaces, а в нём скелетка реализована)? Просто игрок тупо при перезарядке у другого игрока не делает ничего (да и у самого него, думаю, в thirdperson будет то же самое), а при движении скользит как по льду. Хотя анимации держания оружия по типу оружия (пистолет/рокетланчер) вроде есть. А много ли в Xash кода от QuakeWorld? Весь предикт-код там, а Xash, как я заметил как-то частично имеет этот код. Предикт на локального игрока вроде проходит, после, как я заметил отсюда: http://fabiensanglard.net/quakeSour...ePrediction.php а конкретно это: Код:
CL_SetUpPlayerPrediction(false) CL_PredictMove | /* Local player is moved */ | CL_SetSolidPlayers | | CL_PredictUsercmd | | PlayerMove | Interpolate linearely CL_SetUpPlayerPrediction(true) CL_EmitEntities CL_LinkPlayers | /* Other players is moved */ | for every players | | CL_SetSolidPlayers | | CL_PredictUsercmd | | PlayerMove CL_LinkPacketEntities CL_LinkProjectiles CL_UpdateTEnts показывает, что в Xash предикт на остальных игроков не устанавливает. CL_EmitEntities, как и SetupPlayerPrediction на Xash'e просто нет. Да и PredictUserCmd нет, но он вроде внедрен в CL_PredictMovement. Что ещё странно, так это то, что я, когда играл с двух машин одновременно, на одной из которой был дедик, но оба были подключены к одному соединению. Пинг, думаю, как на локалке при этом был. Странность заключается в том, что когда я смотрел на одном компьютере, как двигаюсь на другом, то заметил, что я вижу его нормально (другим же игроком в это время управлял, рандомил вперед, назад, влево и вправо). В общем, после быстрого нажимания поочередно влево и вправо несколько раз игрок оказывается в итоге чуть дальше, чем зафиксировал сервер (я после остановки ввода вижу, что у другого игрока я уже стою, а у себя я немного смещён от этой позиции исходя из последней кнопки ввода (левее или правее); ещё раз замечу, что у другого игрока я уже стою). После этого через 0.5-1.0 секунд я переношусь назад к серверной позиции, где меня видит другой игрок. При этом ещё могу подёргаться между своей и серверной позицией. Отсюда вопрос: разве при предиктинге интерполяция не должна смягчать позицию? При правильных данных клиента, и при его отличной от сервера позиции (продвинулся дальше, по сравнению с сервером, но данные правильные), не должен ли сервер согласиться с клиентом и принять его новую позицию? Ну и насколько я знаю, передачу ресурсов по сети Xash тоже не поддерживает, да? |
|
![]() |
![]() |
![]() |
#2 | |
Дядя Миша
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]()
Регистрация: 28.03.2010
Адрес: Кубань
Сообщения: 15,383
![]() ![]() ![]() ![]() |
![]() |
|
![]() |
![]() |
![]() |
#3 | |
gfdjr5
[NULL]
![]() ![]() ![]() ![]() ![]()
Регистрация: 25.11.2012
Сообщения: 563
|
![]() Это было в тесте HL, жаль демки/скрина не сделал. А ещё Xash выдает меньше FPS там, где GS выдает fps_max. На qstyle вместо 99 получил около 30 +- 5 FPS. А как выходил наружу так до 15-20. Хотя карта не такая и большая и сложная. |
|
![]() |
![]() |
![]() |
#4 | |
ILZM
3 в 1
![]() ![]() ![]() ![]() ![]()
Регистрация: 28.03.2011
Адрес: Mega City One
Сообщения: 508
|
![]() Код:
а при движении скользит как по льду |
|
![]() |
![]() |
![]() |
#5 | |
gfdjr5
[NULL]
![]() ![]() ![]() ![]() ![]()
Регистрация: 25.11.2012
Сообщения: 563
|
![]() |
|
![]() |
![]() |
![]() |
#6 | |
ILZM
3 в 1
![]() ![]() ![]() ![]() ![]()
Регистрация: 28.03.2011
Адрес: Mega City One
Сообщения: 508
|
![]() ![]() |
|
![]() |
![]() |
![]() |
#7 | |
gfdjr5
[NULL]
![]() ![]() ![]() ![]() ![]()
Регистрация: 25.11.2012
Сообщения: 563
|
![]() |
|
![]() |
![]() |
![]() |
#8 | |
Дядя Миша
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]()
Регистрация: 28.03.2010
Адрес: Кубань
Сообщения: 15,383
![]() ![]() ![]() ![]() |
![]() |
|
![]() |
![]() |
![]() |
#9 | |
gfdjr5
[NULL]
![]() ![]() ![]() ![]() ![]()
Регистрация: 25.11.2012
Сообщения: 563
|
![]() |
|
![]() |
![]() |
![]() |
#10 | |
ILZM
3 в 1
![]() ![]() ![]() ![]() ![]()
Регистрация: 28.03.2011
Адрес: Mega City One
Сообщения: 508
|
![]() |
|
![]() |
![]() |
![]() |
#11 | |
gfdjr5
[NULL]
![]() ![]() ![]() ![]() ![]()
Регистрация: 25.11.2012
Сообщения: 563
|
![]() ![]() Если и возьмусь, то ничего не обещаю. В коде такая мешанина, что разбираться достаточно тяжело. Да и реализация предикта со всеми аспектами на словах, естественно, кажется простой. |
|
![]() |
![]() |
![]() |
#12 | |
Cybermax
Супер Модератор
![]() ![]() ![]() ![]() ![]() ![]() ![]()
Регистрация: 11.03.2008
Сообщения: 2,739
|
![]() |
|
![]() |
![]() |
![]() |
#13 | |
gfdjr5
[NULL]
![]() ![]() ![]() ![]() ![]()
Регистрация: 25.11.2012
Сообщения: 563
|
![]() |
|
![]() |
![]() |
![]() |
#14 | |
Flash
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]()
Регистрация: 21.09.2004
Адрес: Кривой Рог, Украина
Возраст: 39
Сообщения: 16,697
![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]() Есть простой способ получить предиктинг в "адекватном состоянии", надо всего лишь "заслать в оркестр" дм.
![]() |
|
![]() |
![]() |
![]() |
#15 | |
Gaia
Чёрный вертолёт
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]()
Регистрация: 04.08.2008
Возраст: 34
Сообщения: 4,584
Замечания: 5
|
![]() Боюсь, одним оркестром тут точно не обойдется. Сам предиктинг это тихий ужос, с которым лучше не связываться. Предположим у игрока ну очень хреновый провайдер, и из 10 отправленных пакетов пришли только 5 правильных пакетов. Самый оптимальный способ - искусственное завышение пинга, и разбор определенной пачки пакетов с анализом "правильных" данных. На основе полученных данных строить недостающие пакеты "на лету", а только потом уже выдавать их остальным клиентам.
Ну это только размышления, я очень смутно себе представляю, как оно есть на самом деле и как делается. Лишь привел догадки. Поправьте если ошибся. |
|
![]() |
![]() |
![]() |
#16 | |
gfdjr5
[NULL]
![]() ![]() ![]() ![]() ![]()
Регистрация: 25.11.2012
Сообщения: 563
|
![]() Ну это только размышления, я очень смутно себе представляю, как оно есть на самом деле и как делается. Лишь привел догадки. Поправьте если ошибся. |
|
Последний раз редактировалось gfdjr5, 07.06.2014 в 16:38. |
||
![]() |
![]() |
![]() |
#17 | |
Дядя Миша
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]()
Регистрация: 28.03.2010
Адрес: Кубань
Сообщения: 15,383
![]() ![]() ![]() ![]() |
![]() ![]() |
|
![]() |
![]() |
![]() |
#18 | |
ILZM
3 в 1
![]() ![]() ![]() ![]() ![]()
Регистрация: 28.03.2011
Адрес: Mega City One
Сообщения: 508
|
![]() 2 Дядя Миша: , ну хоть что-нибудь будет с предиктингом? Что там насчёт NT?
|
|
![]() |
![]() |
![]() |
#19 | |
gfdjr5
[NULL]
![]() ![]() ![]() ![]() ![]()
Регистрация: 25.11.2012
Сообщения: 563
|
![]() |
|
![]() |
![]() |
![]() |
#20 | |
Дядя Миша
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]()
Регистрация: 28.03.2010
Адрес: Кубань
Сообщения: 15,383
![]() ![]() ![]() ![]() |
![]() |
|
![]() |
![]() |