Неверно засчитали поражение в режиме Выживание

  1. В режиме Выживание счет был 1:1, я сделал последний фраг - сбил вражеского команда, с разницей в какую-то секунду сбили кого-то из нашей команды, и нам засчитали поражение, хотя по логам я сбил корабль врага раньше.

  2. Засчитали поражение, хотя я сбил последний корабль противника раньше.

3.1. Впервые.

  1. Скрины + логи предоставил.

2017.05.16 15.33.43.zip

17:18:46.425  CMBT   | Reward           R4SSEL Ship_Race5_S_SCOUT_Rank15_9          189 experience       for damage Mark
17:18:46.426 CMBT | Damage R4SSEL|0000006217 -> Mark|0000037210 1291.90 (h:1267.63 s:24.27) Weapon_BubbleGun_T5_Epic EMP|PRIMARY_WEAPON  
17:18:46.426  CMBT   | R4SSEL earned medal ‘Nemesis_0’ (20 experience)
17:18:46.426  CMBT   | R4SSEL earned medal ‘Killing_Spree_5’ (70 experience)
17:18:46.426 CMBT | Reward R4SSEL Ship_Race5_S_SCOUT_Rank15_9 1773 experience for kill Mark
17:18:46.427  CMBT   | Killed Mark     Ship_Race2_M_T5_Faction2|0000037210;     killer R4SSEL|0000006217 

17:18:46.430  CMBT   | Reward            AlenX Ship_Race2_H_T5                      556 experience       for damage white213mouse
17:18:46.430 CMBT | Damage AlenX|0000033554 -> white213mouse|0000032912 8835.81 (h:8038.81 s:797.00) Weapon_GreenGravityAnomaly_T5_Epic EMP|PRIMARY_WEAPON|EXPLOSION
17:18:46.430  CMBT   | Heal      white213mouse|0000032912 ->    white213mouse|0000032912  80.52 Module_FrigateDrone_T5_Base
17:18:46.430 CMBT | Reward AlenX Ship_Race2_H_T5 1256 experience for kill white213mouse
17:18:46.431  CMBT   | Killed white213mouse     Ship_Race3_L_T5|0000032912;     killer AlenX|0000033554 
 

4 миллисекунды разницы ![:)](<fileStore.core_Emoticons>/emoticons/001.png “:)”)
Скорее всего, эти миллисекунды “потерялись” в пинге, и дальше предположение такое: триггер завершения боя сервака за счет пинга увидел момент, когда уже оба фрага были сделаны. И возможно, если до этого момента счет был 1=1, то после этого момента он стал не 0=0, а -2<0 - за счет того, что AlenX сделал -3 очка убийством на респе, а R4SSEL сделал только -1.

Вероятно, все произошло примерно по такому алгоритму:

  1. Выполнилось условие (счет одной из команд <=0) (ТРИГГЕР ЗАВЕРШЕНИЯ БОЯ)
  2. Было произведено сравнение, у какой команды больше очков - та победила. (АНАЛИЗАТОР ИТОГА БОЯ)
    -2 < 0, т.е. разница была в пользу команды AlenX, которой и была присуждена победа.

 

Ну вот такое предположение навскидку. Т.е, во всем пинг виноват. Хотя если я угадал с алгоритмом и -2<0, то по идее, там не должно быть отрицательных значений, т.е. должно быть 0=0, т.к. не может быть -2 корабля.

 

P.S. Если я во всем прав, то вероятность повторения подобного события настолько мала, что это можно фиксить в самую последнюю очередь, когда уже все остальное будет готово.

4 мс это действительно очень мало, в пределах погрешности.

Кроме того, есть и такой нюанс: весь бой идет на сервере. Соответственно, свои действия вы в логе видите с задержкой вы-сервер, а действия других вы видите с задержкой другой-сервер-вы. Скорее всего, с точки зрения сервера, та команда таки действительно успела раньше.