Страница 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
Никак вы б**дь не научитесь смотреть в документацию.
https://doc-api.photonengine.com/en/pun/current/class_photon_network.html#a85b058bab4a369d0c5730cf43b462962

Re: Как поменять master.client?

СообщениеДобавлено: 08 сен 2017, 18:00
юnity
IDoNotExist писал(а):Никак вы б**дь не научитесь смотреть в документацию.
https://doc-api.photonengine.com/en/pun/current/class_photon_network.html#a85b058bab4a369d0c5730cf43b462962

А как это 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
Ох...

По пунктам.


спасибо. не знал такого.

ЗЫ скоро конец форуму так что сохраняйте ответы автономоно.