Gunner Tracker

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 deex, 2 months ago

Milestone: Comrades alphaальфа Comrades

Milestone renamed

comment:2 by g-cont, 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 кадров в секунду) и эти прыжки сглаживались интерполяцией, их попросту не было видно. Быстрые попытки с моей стороны исправить эту ситуацию приводили к тому, что монстр улетал куда-то в небо или же напротив тёрся возле пола. Надо проанализировать и найти корректное поведение.

Last edited 4 weeks ago by deex (previous) (diff)
Note: See TracTickets for help on using tickets.