Нашел баг дессинхронизации при триггерном изменении высоты рельефа.
При использовании TerrainDeformCrater высота корректно меняется у всех игроков, однако значения GetLocationZ будут разные пока игрок не посмотрит на измененное место.
Тестирую в два окна на одном пк, возможно проблема связана с этим.
Тестирую в два окна на одном пк, возможно проблема связана с этим.
раскрыть
globals
real Test_Z = 0
endglobals
function Trig_Test_Actions takes nothing returns nothing
//Запоминаем высоту рельефа
Test_Z = LocZ(-13536, 11360)
//Создаем деформацию рельефа
TerrainDeformCrater(-13536, 11360 , 1000, -170, 1, true)
//Зажержка, что бы успели произойти изменения
TriggerSleepAction(0.4)
//Проверяем высоту с предыдущим значением
//Получаем разную высоту и десинк, если камера у игрока не отрендерила изменения!
//Если оба играка отрендерели изменения то десинка не происходит!
// - Перемещение камеры в нужную точку не помогает если окно не развернуто. (тестировалось на одном пк)
Msg("Timeout: Desync!!")
if LocZ(-13536, 11360) != Test_Z { CreateUnit( Player(2),'ewsp', -13536, 11360, 0) }
if LocZ(-13536, 11360) != Test_Z { CreateUnit( Player(1),'ewsp', -13536, 11360, 0) }
Test_Z = LocZ(-13536, 11360)
endfunction
//===========================================================================
function InitTrig_Test takes nothing returns nothing
set gg_trg_Test = CreateTrigger( )
call TriggerRegisterPlayerChatEvent( gg_trg_Test, Player(0), "", true )
call TriggerRegisterPlayerChatEvent( gg_trg_Test, Player(1), "", true )
call TriggerAddAction( gg_trg_Test, function Trig_Test_Actions )
endfunction
Принятый ответ
Решено: Я использовал пререндер карты после деформаций, триггерно гоняя камеру по карте. Но это не срабатывало при запуске с одного пк, поскольку окно второго игрока было не в фокусе.
Что бы можно было тестить с одного пк, нужно прописать -windowed к ярлыку запуска игры.
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
Ред. makkad
Ред. Jack-of-shadow