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