HLFX.Ru Forum Страницы (78): « Первая ... « 31 32 33 34 [35] 36 37 38 39 » ... Последняя »
Показать все 1159 сообщений этой темы на одной странице

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=2935)


Отправлено Дядя Миша 02-01-2012 в 12:40:

дело тут не только в фпс.
Во первых чем ниже фпс, тем больше фрейм-тайм, и как следствие - тем большее расстояние проходит игрок за 1 кадр.
Во вторых, как я уже говорил дамага при падении об землю вычисляется из времени, проведенного в воздухе, а вовсе не исходя из высоты, с которой упал игрок. Именно благодаря этому и возможны всякие трюки.
Опять же есть зона безопасности - время за которое игрок упадёт без дамаги. Ну с этим все сталкивались - прыгаешь вниз стоя или в прыжке - получаешь дамагу. Прыгаешь вниз в полуприсяде - дамагу не получаешь.
Хотя казалось бы какая разница? А разница как раз в том, что прыгая из положения сидя, ты уменьшаешь дистанцию падения. Немного - на 16 юнитов, но вполне достаточно, чтобы не преодолеть некий порог, после которого наносится дамага.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено XaeroX 02-01-2012 в 13:15:

Цитата:
Дядя Миша писал:
Во вторых, как я уже говорил дамага при падении об землю вычисляется из времени, проведенного в воздухе, а вовсе не исходя из высоты, с которой упал игрок.

Всю жизнь наивно полагал, что вычисляется она из m_flFallVelocity, а тут прям какой-то срыв покровов

См. CBasePlayer::PostThink, CHalfLifeRules::FlPlayerFallDamage

Или ты хочешь сказать, что в PM-коде баг и велосити нарастает, если игрок застрял?

__________________

xaerox on Vivino


Отправлено Дядя Миша 02-01-2012 в 14:05:

Цитата:
XaeroX писал:
Всю жизнь наивно полагал, что вычисляется она из m_flFallVelocity, а тут прям какой-то срыв покровов

хыхыхыхыхыхыххыхыххы. А fallvelocity по твоему как считается? От времени проведенного в воздухе. Чем больше времени в воздухе провёл - тем она выше. На первый взгляд это правильно, игрок падает на землю с возрастающей скоростью, но! Существуют случаи, когда игрок чотко застревает между двумя брашами, которые сходятся под определенным углом. Там где-то интересный баг в PM_FlyMove, благодаря которому считается что игрок по прежнему летит вниз, хотя на самом деле он висит между двумя брашами, зажав кнопку "вперед". Баг воспроизводим и на ксаше и в халфе.
Цитата:
XaeroX писал:
и велосити нарастает, если игрок застрял?

не застрял, говорю же! Есть случаи, когда можно висеть в воздухе, зажав кнопку "вперед". Причём висеть неограниченно долго.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено qpAHToMAS 02-01-2012 в 14:10:

Дядя Миша, а про Edge Bug так же раскидать сможешь? Когда с любой высоты (даже очень огромной) можно приземлиться уголком игрока на край плоскости (едва коснуться) и не потерять ни HP.


Отправлено Дядя Миша 02-01-2012 в 14:18:

qpAHToMAS скорее всего pmove->onground раньше обнуляет flFallVelocity чем она успевает причинить игроку повреждения. Ты краешком коснулся тебе назначили землю и ускорение обнулилось.
Что-то такое, но я толком не разбирался.
Таких забавных багов в первой халфе предостаточно, но их никто не правит, потому что они дают охрененные преимсущества тем, кто их освоил.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено XaeroX 02-01-2012 в 14:35:

Цитата:
Дядя Миша писал:
А fallvelocity по твоему как считается?

-pev->velocity.z
Цитата:
Дядя Миша писал:
Там где-то интересный баг в PM_FlyMove, благодаря которому считается что игрок по прежнему летит вниз, хотя на самом деле он висит между двумя брашами, зажав кнопку "вперед".

Я с халфовским пмувом не особо знаком, но логично предположить, что есть wishvel, которая увеличивается перед Pmovesingle, и есть реальная скорость, которая присваивается после колоизации и клипвелосити по бампплейнам.

__________________

xaerox on Vivino


Отправлено Дядя Миша 02-01-2012 в 15:58:

Цитата:
XaeroX писал:
-pev->velocity.z

не. в PM_AddCorrectGravity();
Туда постоянно что-то пишется, а если игрок стоит на земле, то pmove->velocity[2] обнуляется каждый кадр.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено XaeroX 02-01-2012 в 16:02:

Цитата:
Дядя Миша писал:
не

Что - не?

__________________

xaerox on Vivino


Отправлено Government-Man 02-01-2012 в 17:59:

Дядя Миша если повреждения считаются по времени проведенному в воздухе, то как можно в опфоре подпрыгнуть на батуте на огромную высоту и не потерять хп?


Отправлено Дядя Миша 02-01-2012 в 18:18:

Цитата:
Government-Man писал:
то как можно в опфоре подпрыгнуть на батуте на огромную высоту и не потерять хп?

там запас положительного велосити большой. Пока AddCorrectGravity его обратно отнимет, времени пройдет в два раза больше.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Government-Man 03-01-2012 в 00:29:

Дядя Миша дык... получается что повреждение рассчитывается по дистанции которую пролетел игрок вниз по оси Z - ну это совсем другое дело...


Отправлено marikcool 03-01-2012 в 16:55:

Цитата:
Government-Man писал:
Дядя Миша дык... получается что повреждение рассчитывается по дистанции которую пролетел игрок вниз по оси Z - ну это совсем другое дело...

он же написал что по времени в воздухе а не по z
как я понял, что дальше мы получаем fallvelocity а потом уже расчитываем дамадж там по mp_falldamage и величины fallvelocity


Отправлено Government-Man 03-01-2012 в 22:06:

marikcool а с какого момента начинает считаться это время? С момента отрыва ног от земли или же с того момента когда вертикальная скорость стала отрицательной?


Отправлено marikcool 03-01-2012 в 22:59:

Цитата:
Government-Man писал:
marikcool а с какого момента начинает считаться это время? С момента отрыва ног от земли или же с того момента когда вертикальная скорость стала отрицательной?

получается с момента как он оторвался от земли.
в претхинке
C++ Source Code:
1
if ( !FBitSet ( pev->flags, FL_ONGROUND ) )
2
{
3
  m_flFallVelocity = -pev->velocity.z;
4
}

в постхинке
C++ Source Code:
1
if (FBitSet(pev->flags, FL_ONGROUND))
2
{
3
  //..
4
  m_flFallVelocity = 0;
5
}


само выставление флага FL_ONGROUND я чето ненашол, походу сам движок его выставляет я хз,
я искал конструкцию типо как тут, у класса игрока и у тех классов у кого он наследуется.
C++ Source Code:
1
void CFlockingFlyer :: FallHack( void )
2
{
3
  if ( pev->flags & FL_ONGROUND )
4
  {
5
    if ( !FClassnameIs ( pev->groundentity, "worldspawn" ) )
6
    {
7
      pev->flags &= ~FL_ONGROUND;
8
      ...



интересно бы разобрать полную цепочку от получения новых координат от клиента, валидации данных, предикт игрока, обновления данных в логике игры.


Отправлено Government-Man 04-01-2012 в 00:36:

Цитата:
marikcool писал:
m_flFallVelocity = -pev->velocity.z;


Ну... вертикальная скорость... так и должно быть по логике. Где тут зависимость повреждения от времени проведенного в воздухе ваще?


Временная зона GMT. Текущее время 22:46. Страницы (78): « Первая ... « 31 32 33 34 [35] 36 37 38 39 » ... Последняя »
Показать все 1159 сообщений этой темы на одной странице

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