Страница 1 из 2
Как поменять master.client?
Добавлено:
05 сен 2017, 05:41
jimmm
Ситуация такая, один игрок создает комнату в photon cloud и становится мастер клиентом, создает ботов и управляет ими, подсоединяется другой игрок.
Как можно передать мастер клиента другому игроку во время игры, и следовательно передать ему управление ботами ?
Такое вообще возможно?
Это на случай если игроки играют кооператив, и мастер игрок случайно вылетает из игры, чтоб другой игрок продолжил миссию, а первый-вылетевший игрок смог опять к миссии подсоедениться.
Re: Как поменять master.client?
Добавлено:
05 сен 2017, 09:25
ikhtd
Фотон клауд на автомате меняет мастер клиента, если с ним случается например вылет из комнаты и не позволяет разрабу из кода менять мастер клиента. Есть только команда на проверку - является ли игрок мастер клиентом.
То есть в фотон клауд не нужно думать о том, чтобы передавать мастер клиента. Типа в целях безопасности они не дают разрабу контроль над сменой мастер клиента.
Re: Как поменять master.client?
Добавлено:
05 сен 2017, 12:22
jimmm
А как быть с ботами?
Если их спаунит и передвигает мастер клиент, как их передавать новому мастер клиенту? А то они просто исчезают если мастер клиент вылетает.
Re: Как поменять master.client?
Добавлено:
05 сен 2017, 20:49
ikhtd
Хороший вопрос. Наверное проверять на фотон дисконект и передавать новому мастер клиенту. Хотя непонятно, если проверка на дисконект, следовательно геймобъект не в сети и его тогда в комнате уже не существует. А если после дисконекта резко сделать повторно команду конекта в эту комнату... Я точно не знаю, только предполагаю. У меня реально в игре боты игрока пропадали, когда он покидал.
Re: Как поменять master.client?
Добавлено:
08 сен 2017, 08:38
jimmm
Возможно только если переинстантить таких же ботов в тех же местах.
А как можно отследить что мастер клиент поменялся?? Что игрок вдруг стал мастер клиентом?
Re: Как поменять master.client?
Добавлено:
08 сен 2017, 12:58
юnity
Помоему, даже сами разработчики PhotonCloodа сами не очень горят желанием отвечать на такие вопросвы. Ну судя по моим личным поискам. Когда то я тоже заинтересовался этим, и пролистал весь код в демках - там ничего похожего тоже не нашёл. И пытался со своим неидеальным английским что то искать на сайтах photonenine. Помню на чём начал, на том всё и закончилось.
Помню, у меня получилось передать сцене бота, но поползло огромное колличество варнингов в консоли, всё оканчивалось ошибкой из за изменённого viewId, фотон не видел такого объекта, но отправлял ему сообщения.
Re: Как поменять master.client?
Добавлено:
08 сен 2017, 13:26
IDoNotExist
Re: Как поменять master.client?
Добавлено:
08 сен 2017, 18:00
юnity
А как это RPC сделать? Может такой пример есть в интернете, я лично не нашёл.
Re: Как поменять master.client?
Добавлено:
08 сен 2017, 18:33
IDoNotExist
юnity писал(а):А как это RPC сделать? Может такой пример есть в интернете, я лично не нашёл.
Какое еще RPC, PhotonNetwork.SetMasterClient - статическая функция, русским по белому же написано, всё что вам надо сделать это вызвать её, передав туда нужного PhotonPlayer.
Re: Как поменять master.client?
Добавлено:
08 сен 2017, 20:26
jimmm
IDoNotExist писал(а):юnity писал(а):А как это RPC сделать? Может такой пример есть в интернете, я лично не нашёл.
Какое еще RPC, PhotonNetwork.SetMasterClient - статическая функция, русским по белому же написано, всё что вам надо сделать это вызвать её, передав туда нужного PhotonPlayer.
Насколько я везде читал, это не поможет, всеравно все заинстанчиные объекты удалятся, когда выйдет тот кто их создавал.
Поэтому одно из "кастыльных" решений, это реинстантить ботов у нового мастера, понять бы когда происходит этот момент.
Re: Как поменять master.client?
Добавлено:
08 сен 2017, 21:09
maksimov
Ох...
По пунктам.
1. Вы можете менять мастер-клиента, когда вам заблагорассудиться. Для этого существует функция PhotonNetwork.SetMasterClient(PlayerID). Отлавливать данное событие можно с помощью OnMasterClientSwitch.
2. Как вам верно заметили, для решения ваших нужд, менять мастер-клиента не нужно. Он меняется автоматически, при выходе текущего.
3. Если вам не нужно, что бы при выходе пользователя, уничтожались инстанцированные им объекты, просто поменяйте настройку: m_autoCleanUpPlayerObjects = false
4. В ВАШЕМ СЛУЧАЕ, необходимо просто интанцировать ботов не от игрока, а от сцены: PhotonNetwork.InstantiateSceneObject. Такой объект, будет существовать, даже если все игроки выйдут из комнаты.
Re: Как поменять master.client?
Добавлено:
09 сен 2017, 07:08
jimmm
maksimov писал(а):Ох...
По пунктам.
4. В ВАШЕМ СЛУЧАЕ, необходимо просто интанцировать ботов не от игрока, а от сцены: PhotonNetwork.InstantiateSceneObject. Такой объект, будет существовать, даже если все игроки выйдут из комнаты.
Хорошо попробую.
А кто будет управлять этими ботами в фотон клауде( то есть без серверным решением)?
Re: Как поменять master.client?
Добавлено:
09 сен 2017, 07:21
Woolf
jimmm писал(а):А как быть с ботами?
Если их спаунит и передвигает мастер клиент, как их передавать новому мастер клиенту? А то они просто исчезают если мастер клиент вылетает.
Просто передавать постоянно состояние ботов, а управлять ими, проверяя флаг isMaster. Если мастер вылетает, то управление ботами тут же подхватит новый мастер.
Re: Как поменять master.client?
Добавлено:
09 сен 2017, 09:47
Ert Donuell
Re: Как поменять master.client?
Добавлено:
09 сен 2017, 13:50
ikhtd
Ох...
По пунктам.
спасибо. не знал такого.
ЗЫ скоро конец форуму так что сохраняйте ответы автономоно.