У меня есть пошаговая игра, в которой я пытаюсь реализовать функцию присоединения к игре.
Сейчас я делаю следующее:
1) При отключении я открываю комнату и позволить игроку присоединиться снова. (Player2 отключается)
2) Как только игрок входит в комнату, я жду, когда мастер (игрок 1) получит состояние свободного поворота sh в сопрограмме.
while (mCurrentState != CurrentState.NewTurn)
{
yield return new WaitForSeconds(1f);
}
if (IsMasterClient())
SendLatestData(localID);
. ..
3) Мастер отправляет последнее состояние игры в вызове RP C.
Однако здесь кроется проблема. Если бы настал ход другого игрока (в данном случае - игрока 3), он мог бы потенциально изменить игровое состояние до того, как на экране присоединяющегося игрока будет получено последнее значение RP C из-за задержки.
Если последние данные RP C получены после, скажем, RPD "RollDice" C Я пропускаю данные, потому что мастер отправляет последние данные до того, как он получил RP "RollDice" C на своем собственном экране.
Почему-то я чувствую, что мой подход неверен, и хотел бы иметь другую точку зрения на решение этой проблемы.