Opened 2 months ago
Last modified 4 weeks ago
#21 assigned defect
флаеры подпрыгивают
| Reported by: | deex | Owned by: | g-cont |
|---|---|---|---|
| Priority: | critical | Milestone: | альфа Comrades |
| Component: | Comrades | Version: | |
| Keywords: | Cc: |
Description
в целом, они очень медленные и тупые, не используют melee-удар, не лезут в лицо как в ремастере и забывают про игрока. От выстрелов все тормозит
но в идле, когда они просто весят в воздухе, они еще и подпрыгивают вверх периодически.
Change History (2)
comment:1 by , 2 months ago
| Milestone: | Comrades alpha → альфа Comrades |
|---|
comment:2 by , 4 weeks ago
Прыжки флаеров, это довольно интересный баг на самом деле. Он находится не в коде самих флаеров, а в общем коде движения монстров. Файл monsters.shot(401)
if( m_goalentity->IsPlayer( ))
{
if( dz > 40.0f )
{
neworg.z -= 8.0f;
}
if( !( FBitSet( m_flags, FL_SWIM ) && ( m_waterlevel < 2 )))
{
if( dz < 30.0f )
{
neworg[2] += 8.0f;
}
}
}
else
{
if( dz > 8 )
{
neworg.z -= 8.0f;
}
else if( dz > 0.0f )
{
neworg.z -= dz;
}
else if( dz < -8.0f )
{
neworg.z += 8.0f;
}
else
{
neworg.z += dz;
}
}
Что мы тут видим? Идут неравномерные проверки - больше 40 и меньше 30. Вот он и подпрыгивает. В ванильной Quake II сервер тикал со скоростью 10 кадров в секунду (в ксаше 60 кадров в секунду) и эти прыжки сглаживались интерполяцией, их попросту не было видно. Быстрые попытки с моей стороны исправить эту ситуацию приводили к тому, что монстр улетал куда-то в небо или же напротив тёрся возле пола. Надо проанализировать и найти корректное поведение.

Milestone renamed