HLFX.Ru Forum Страницы (12): « Первая ... « 7 8 9 10 [11] 12 »
Показать все 178 сообщений этой темы на одной странице

HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- Half-Life SDK (https://hlfx.ru/forum/forumdisplay.php?forumid=8)
-- Гейтсеквенции монстров (https://hlfx.ru/forum/showthread.php?threadid=4629)


Отправлено ILZM 30-09-2015 в 17:56:

Ku2zoff
Ах да. Я эту проблему для игрока решил запихав скорость игрока в vuser, и в delta передавал с сервера на клиент. Не знаю, ест ли много траффика, но зато эту скорость можно для боба и вообще для разных целей использовать. Мб тебе для каждого монстра открыть поле какое-нибудь в delta? Хотя тебе же нужна синхронизация для хитбоксов.
Мб тогда будешь передавать frame, sequence и gaitframe, gaitsequence? Таким образом тебе не нужно будет считать анимацию на клиенте и хитбоксы будут сихронизированы. Хотя инфу о переходах не передашь через сеть.
Тогда возникает новый вопрос. Вот у тебя с двух сторон одинаковый код просчета анимаций, но они точно идут в такт? Т. е. не надо там никаких предсказываний? Вдруг на клиенте анимация идет с мелким запозданием.


Отправлено Ku2zoff 30-09-2015 в 18:03:

Цитата:
ILZM писал:
Мб тебе для каждого монстра открыть поле какое-нибудь в delta? Хотя тебе же нужна синхронизация для хитбоксов.

Не-не-не. Нехороший подход. Правильный подход, это когда на клиенте делается зеркало для серверной функции. Ну и наоборот. Ну вот глянь сорцы халфовской клиентки и сорцы ксашдвижка. StduioModelRenderer сделан и на клиенте и в движке. И без всяких левых полей в дельте синхронизируется. И спользуются только те поля, которые нужны для работы ещё нескольких механизмов и вообще всей сети.
Цитата:
ILZM писал:
Мб тогда будешь передавать frame, sequence и gaitframe, gaitsequence?

Ты видел, как это работает у нелокального игрока? Работает настолько плохо, насколько высок пинг.
Цитата:
ILZM писал:
Тогда возникает новый вопрос. Вот у тебя с двух сторон одинаковый код просчета анимаций, но они точно идут в такт? Т. е. не надо там никаких предсказываний? Вдруг на клиенте анимация идет с мелким запозданием.

Она и так идёт с запозданием. Скопипасти код с китайской каэсочки. Серверный gaitframe будет отставать от клиентского. Но это ж никого не волнует. Каэсочка, вон, 15 лет уже спросом у задротов пользуется. И никто не жаловался, что серверные хитбоксы ног отстают от клиентской визуализации этих самых ног на полсекунды.


Отправлено PLut 30-09-2015 в 21:31:

ILZM Зачем скорость игрока на клиент передавать, если она там уже есть?

__________________
Base Defense on Steam, ModDB


Отправлено ILZM 01-10-2015 в 04:19:

PLut
Где? Честно искал, но не нашел. А может быть и нашел, но не сработало Эт я про XashXT


Отправлено PLut 01-10-2015 в 07:54:

ILZM В view.cpp. В бдефе так боб работает, сохраняй speed куда угодно (если надо) и пользуйся.

C++ Source Code:
vec3_t velocity = pparams->simvel;
float speed = velocity.Length2D();

__________________
Base Defense on Steam, ModDB


Отправлено Ku2zoff 01-10-2015 в 08:04:

Цитата:
PLut писал:
pparams->simvel;

Это не скорость игрока. Это скорость камеры. Поверти резко мышью в движении - скорость увеличится. Скорость игрока это player->curstate.velocity. Которая, кстати, не отлавливается в коде студиомодельрендерера. Поэтому там заведено такое говно как prevgaitorigin и est_velocity.


Отправлено PLut 01-10-2015 в 08:08:

Ku2zoff Ну если зажать вперед и стрейф, то тоже увеличится, да и скорость игрока увеличивается по сути при поворотах мыши, а то зачем башкой вертеть при распрыгах? Вон взять кридз плагины на коэс и поглядеть изменение скорости игрока при стрейфах и направлении вперед/назад, а так же при повороте мышью.

__________________
Base Defense on Steam, ModDB


Отправлено Ku2zoff 01-10-2015 в 08:28:

PLut эта скорость только для локального игрока. А мы говорили о студиомодельрендерере и о той скорости, которая передаётся через дельту в секции player_encode. Ну то есть она там как раз не передаётся


Отправлено PLut 01-10-2015 в 08:35:

Ku2zoff А вот это факт, да. Чтобы получить скорость других игроков нужно её передавать. Просто там про боб словечко было, а для боба локальной скорости достаточно. Я долго парился чтобы правильно игрокам партиклевые эффекты в бдефе рисовать, некоторые эффекты вызываются эвентом и я думал как можно получить велосити серверной энтити на клиенте, думал, что оно передаётся в эвенте само, оказалось, что нет, попробовал запихнуть вместо углов, получилась каша из углов и велосити. Пришлось юзать 2 флоата в эвенте, для партиклей у меня они не нужны всё-равно.

__________________
Base Defense on Steam, ModDB


Отправлено Ku2zoff 01-10-2015 в 09:20:

PLut а можно было просто добавить поля

C++ Source Code:
DEFINE_DELTA( velocity[0], DT_SIGNED | DT_FLOAT, 16, 8.0 ),
DEFINE_DELTA( velocity[1], DT_SIGNED | DT_FLOAT, 16, 8.0 ),
DEFINE_DELTA( velocity[2], DT_SIGNED | DT_FLOAT, 16, 8.0 ),

в delta.lst в секцию entity_state_player_t gamedll Player_Encode. (Не забыв при этом строчку в client.cpp) И не мучиться с эвентами. Правда, это стоит делать, если velocity игроков нужна на клиенте постоянно, а не на пару секунд для партиклевого эффекта. Например, если gaitmovement надо считать. Но т.к. origin уже передаётся, то gaitmovement высчитывается из разницы ориджинов в текущем и предыдущем кадре.


Отправлено PLut 01-10-2015 в 09:52:

Ku2zoff Мне на пару секунд это и нужно

__________________
Base Defense on Steam, ModDB


Отправлено ~ X ~ 02-10-2015 в 08:03:

Ku2zoff вполне грамотный подход.

PLut а почему Length2D()? У тебя в моде лестниц и падений не бывает?

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]


Отправлено Ku2zoff 02-10-2015 в 08:37:

~ X ~ а зачем считать bob на лестницах? Когда я сделал собственный bob с раскачиванием пушки по двум осям, я отключил раскачивание по одной из осей, когда игрок плавает, прыгает или летит. Так красивее смотрится. Если уделять внимание таким мелочам, как раскачивание камеры и вьюмодели оружия, можно добавить неплохую динамику игре. Единственное, что я не сделал, не завёл квары для отключения. Бывает, что не всем нравится качание. Но мне нравится, я в первом анриле и УТ1 всегда на максимум ставлю.

Добавлено 02-10-2015 в 14:37:

Цитата:
~ X ~ писал:
вполне грамотный подход.

Ну это как сказать. Зачем передавать velocity игрока каждый кадр, если этот вектор нужен не всегда?


Отправлено PLut 02-10-2015 в 15:00:

~ X ~ Держи ответ от самих вальве.

C++ Source Code:
// bob is proportional to simulated velocity in the xy plane
// (don't count Z, or jumping messes it up)
VectorCopy( pparams->simvel, vel );
vel[2] = 0;

__________________
Base Defense on Steam, ModDB


Отправлено ~ X ~ 02-10-2015 в 16:05:

PLut я не вальве спрашивал, а тебя. У вальве боб. А скорость на клиенте считается просто Length(). К тому же твой камент про simvel, а двумя постами выше уже сказали, что это вообще другая вещь.

Ku2zoff я не про боб а про линейную скорость игрока вообще.

Ku2zoff DELTA_UNSETBYINDEX

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]


Временная зона GMT. Текущее время 22:00. Страницы (12): « Первая ... « 7 8 9 10 [11] 12 »
Показать все 178 сообщений этой темы на одной странице

На основе vBulletin версии 2.3.0
Авторское право © Jelsoft Enterprises Limited 2000 - 2002.
Дизайн и программирование: Crystice Softworks © 2005 - 2024