Воссоединение в качестве нового актера в многопользовательской игре Photon Unity Network - PullRequest
0 голосов
/ 16 апреля 2020

У меня есть пошаговая игра, в которой я пытаюсь реализовать функцию присоединения к игре.

Сейчас я делаю следующее:

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 на своем собственном экране.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...