Как оставить объекты которые инстантились photon cloud?

Как оставить объекты которые инстантились photon cloud?

Сообщение jimmm 29 ноя 2016, 06:21

Здравствуйте.
Как оставить объекты которые инстантились хозяеном сессии в photon cloud?
То есть игрок создал комноту, и вместе с ним создались все объекты в миссии, как оставить объекты если мастер уходит?
Синтаксис:
Используется csharp
if(PhotonNetwork.isMasterClient){
SpownBot();
}


Как оставить ботов, если мастерклиент выйдет из комнаты?
jimmm
UNIверсал
 
Сообщения: 417
Зарегистрирован: 23 янв 2013, 22:57

Re: Как оставить объекты которые инстантились photon cloud?

Сообщение Aleksey 29 ноя 2016, 07:59

мастер клиент может создавать фотон инстантиэйты сцены. Они не удаляются после его выхода
и если из комнаты выходит оставшийся единственный игрок то ты ничего не сможешь сохранить в комнате,она удалится и все ее свойства комнаты тоже.
так же у такого объекта есть свои особенности например у него owner = null
Продукты на тему онлайна в Ассет Сторе
_https://www.assetstore.unity3d.com/en/# ... sher:21589
Аватара пользователя
Aleksey
UNIт
 
Сообщения: 56
Зарегистрирован: 17 фев 2015, 16:09

Re: Как оставить объекты которые инстантились photon cloud?

Сообщение jimmm 29 ноя 2016, 16:51

Ну как так, вы говорите что не удаляются.

Когда один игрок создает комнату, то все управление ботами которые спавнятся идут от усптройства мастер игрока? И если мастер игрок уходит, как боты будут оставать, кто будет перехватывать управление ими?

В момент выхода это надо переинстанчвать всех ботов уже на другом устройстве мастер клиента.
jimmm
UNIверсал
 
Сообщения: 417
Зарегистрирован: 23 янв 2013, 22:57

Re: Как оставить объекты которые инстантились photon cloud?

Сообщение Aleksey 29 ноя 2016, 17:21

есть 1 и 2 игрок
После того как 1 игрок - мастер клиент выходит мастер клиенство передается следующему т.е. 2 игроку(если быть точнее передается тому у кого наименьший виевайди )
т.е. если до выхода первого игрока в photonView.isMine скрипты поведения ботов заходил 1 игрок мастер клиент и управлял ими, то теперь будет в этот photonView.isMine заходить второй.(допустим мы говорим сейчас про апдейты или фикситапдейты)
Насчет эвейков стартов сетевых префабов объектов сцены надо делать не так как с префабами игроков т.к. в данном примере который я тебе описал второй игрок когда получит заход через photonView.isMine он будет ссылаться на нулл переменные потому что до этого в старт или эвейк заходил только мастер клиент первый игрок и инициализировал переменные только он(если был в старте эвейке photonView.isMine )
Я например убираю photonView.isMine банально в стартах и эвейках скриптов объектов сцены.Тогда такой проблемы не возникает.
Продукты на тему онлайна в Ассет Сторе
_https://www.assetstore.unity3d.com/en/# ... sher:21589
Аватара пользователя
Aleksey
UNIт
 
Сообщения: 56
Зарегистрирован: 17 фев 2015, 16:09

Re: Как оставить объекты которые инстантились photon cloud?

Сообщение jimmm 30 ноя 2016, 00:27

Не совсем понял логики, как это в ключевых строках то кода?
jimmm
UNIверсал
 
Сообщения: 417
Зарегистрирован: 23 янв 2013, 22:57

Re: Как оставить объекты которые инстантились photon cloud?

Сообщение Aleksey 30 ноя 2016, 05:18

ну если ты не понял то что я написал перечитай. Ролики ютуба по фотон клауду смотрел от Александра Сосновского? примеры фотон клауда на асетсторе?
Мне кажется что ты не понимаешь основ и у тебя каша в голове.
Продукты на тему онлайна в Ассет Сторе
_https://www.assetstore.unity3d.com/en/# ... sher:21589
Аватара пользователя
Aleksey
UNIт
 
Сообщения: 56
Зарегистрирован: 17 фев 2015, 16:09

Re: Как оставить объекты которые инстантились photon cloud?

Сообщение юnity 30 ноя 2016, 10:48

А по теме вопрос можно? А если всем клиентам компоненты PhotonView объектов сцены собрать в массив, обращаться к ним можно будет после смены мастерклайнта?
Give exact coordinates of the decision of the problems
Аватара пользователя
юnity
UNITрон
 
Сообщения: 290
Зарегистрирован: 21 июл 2015, 18:30

Re: Как оставить объекты которые инстантились photon cloud?

Сообщение ikhtd 30 ноя 2016, 12:04

я не скажу как это сделать- но чисто по алгоритму это можно бы сделать так...на событии выхода из игры этот игрок должен передать все свои фотон инстансы новому владельцу- скажем любому произвольному игроку . это типа как ваш вопрос про подбор стрел - когда объектом могут владеть разные игроки. так вот этот вопрос решается таким методом - просто пример из старой юнити сети- но они с фотоном 100 проц аналогичны
https://docs.unity3d.com/ScriptReferenc ... iewID.html
нужно сменить viewid у объекта

ловить событие выхода? на веб играх это почти невозможно. единственое есть 100 проц тупые методы например если в игре залочен курсор- то ловить на любом нажатии клавиши esc - то есть любой разлок курсора.
кстати я сколько игр не делал - у меня тоже было много объектов принадлежащих только какому то игроку - так у меня все эти объекты всегда исчезают при выходе этого игрока. это одновременно и увеличивает производительность - если проблемы с большим количеством игроков в сцене
Скрытый текст:
Объективная реальность это - что в жизни не может быть более одного пути, который в свою очередь обусловлен максимальным существующим давлением. (второй _ttp://habrahabr.ru/post/202654/)
ikhtd
Адепт
 
Сообщения: 1124
Зарегистрирован: 24 мар 2014, 12:20

Re: Как оставить объекты которые инстантились photon cloud?

Сообщение юnity 30 ноя 2016, 12:52

То есть объекты исчезнут а останутся их позиции, так что ли? А зачем мне тогда их вьюайди? Если мне надо что бы PhotonView объектов появляющихся с новым мастером, было столько же сколько и старых, и их вьюайди было такимже , и позиция(объект полностью со своими фичами(стрелами, пулями, ранами...)).
Give exact coordinates of the decision of the problems
Аватара пользователя
юnity
UNITрон
 
Сообщения: 290
Зарегистрирован: 21 июл 2015, 18:30

Re: Как оставить объекты которые инстантились photon cloud?

Сообщение ikhtd 30 ноя 2016, 13:12

в приведенном примере на инстанс не надо смотреть - только на смену id. вам инстанс не надо делать - просто точного примера нет. а переменные и метод теже будут. метод по передаче нового id от нового владельца объекта. это же логично то что было у меня с моей смертью передать новому игроку -иначе все потеряется
Скрытый текст:
Объективная реальность это - что в жизни не может быть более одного пути, который в свою очередь обусловлен максимальным существующим давлением. (второй _ttp://habrahabr.ru/post/202654/)
ikhtd
Адепт
 
Сообщения: 1124
Зарегистрирован: 24 мар 2014, 12:20

Re: Как оставить объекты которые инстантились photon cloud?

Сообщение юnity 30 ноя 2016, 13:31

Вытаскивать сцену заменяя айди сцены наового мастерклайна, на старые айди в момент когда тот покидает игру, правильно я понял?
Give exact coordinates of the decision of the problems
Аватара пользователя
юnity
UNITрон
 
Сообщения: 290
Зарегистрирован: 21 июл 2015, 18:30

Re: Как оставить объекты которые инстантились photon cloud?

Сообщение ikhtd 30 ноя 2016, 13:35

менять id только на тех объектах которые принадлежали игроку, который уходит. значит он должен где то хранить список этих объектов и он же должен инициировать их смену id, кроме него это никто не сделает.
Скрытый текст:
Объективная реальность это - что в жизни не может быть более одного пути, который в свою очередь обусловлен максимальным существующим давлением. (второй _ttp://habrahabr.ru/post/202654/)
ikhtd
Адепт
 
Сообщения: 1124
Зарегистрирован: 24 мар 2014, 12:20

Re: Как оставить объекты которые инстантились photon cloud?

Сообщение юnity 30 ноя 2016, 14:03

Спасибо за исчерпывающий ответ, вот нашёл код для Photon Cloud ничем не отличается
Синтаксис:
Используется csharp
void SpawnMyPlayerEverywhere()
{        
    //Manually allocate PhotonViewID
    PhotonViewID id1 = PhotonNetwork.AllocateViewID();
    photonView.RPC("SpawnOnNetwork", PhotonTargets.AllBuffered, transform.position,
        transform.rotation, id1, PhotonNetwork.player);
}
public Transform playerPrefab; //set this in the inspector
[PunRPC]
void SpawnOnNetwork(Vector3 pos, Quaternion rot, PhotonViewID id1, PhotonPlayer np)
{
    Transform newPlayer = Instantiate(playerPrefab, pos, rot) as Transform;
    //Set the PhotonView
    PhotonView[] nViews = go.GetComponentsInChildren<PhotonView>();
    nViews[0].viewID = id1;
}
 
Give exact coordinates of the decision of the problems
Аватара пользователя
юnity
UNITрон
 
Сообщения: 290
Зарегистрирован: 21 июл 2015, 18:30

Re: Как оставить объекты которые инстантились photon cloud?

Сообщение jimmm 30 ноя 2016, 14:43

ikhtd писал(а):менять id только на тех объектах которые принадлежали игроку, который уходит. значит он должен где то хранить список этих объектов и он же должен инициировать их смену id, кроме него это никто не сделает.

а как это можно сделать примерно, не подскажете?
то есть если я уже знаю объект, как отправить команду у нового мастера? AllBufferedViaServer, я так понимаю?
как на другом устройстве инициировать скрипт смены id?
jimmm
UNIверсал
 
Сообщения: 417
Зарегистрирован: 23 янв 2013, 22:57

Re: Как оставить объекты которые инстантились photon cloud?

Сообщение юnity 30 ноя 2016, 14:53

Вот с ткаой ошибкой как бороться? Я пытаюсь отослать RPC в событии OnLeftRoom().Cannot send messages when not connected. Either connect to Photon OR use offline mode! Так то id пересылаются другому клиенту, при нажатии на кнопку в апдейте, но когда их отправить лучше что бы мастерклайнт вышел, успев отослать? Вот такая функция
Синтаксис:
Используется csharp
        [PunRPC]
        void RewriteId(int id, string str)
        {
                foreach (GameObject go in arr) {
                        if(go.name == str)
                                go.GetComponent<PhotonView>().viewID = id;
                }
        }

:p А то получается что у обоих клиентов объекты с одинаковыми айди. На сервере непонятно что произойдёт. :))
Give exact coordinates of the decision of the problems
Аватара пользователя
юnity
UNITрон
 
Сообщения: 290
Зарегистрирован: 21 июл 2015, 18:30

След.

Вернуться в Photon

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2