Обработка ответа сервера и структурирование приложения

Обработка ответа сервера и структурирование приложения

Сообщение Splurgeola 31 янв 2019, 13:17

Использую photon server.
Сценарий следующий: при подключении N игроков к серверу, первый игрок рассылает RPC чтобы все остальные игроки обратились к серверу. после ответа сервера активируем панель покупки с товарами которые прислал сервер.
Синтаксис:
Используется csharp
void OnPhotonPlayerConnected(PhotonPlayer newPlayer)
    {
        if (PhotonNetwork.playerList.Length == 2)
        {   if(photonView.viewID == 3)
            photonView.RPC("ActivateBuyPanel",PhotonTargets.All);
        }
    }
    [PunRPC]
    void ActivateBuyPanel()
    {
        var parameter = new Dictionary<byte, object>();
        PhotonNetwork.networkingPeer.SendOperation(100, parameter, SendOptions.SendReliable);
    }


Столкнулся с проблемой в NetworkingPeer в OnOperationResponse с обработкой ответа.

Синтаксис:
Используется csharp
case (byte) 100:
                if (operationResponse.ReturnCode == 0)
                {
                   var buyPanel = PhotonView.Find(4);
                   buyPanel.transform.gameObject.SetActive(true);
                }


Если панель выключена то photonview.find(4) возвращает null.
И в общем по структуре я не уверен что всё делаю правильно. Коряво как-то вызывается всё. Не должно же быть так чтоб один человек вызывал у всех панельку. Подскажите в общем? :-?
Splurgeola
UNец
 
Сообщения: 47
Зарегистрирован: 24 янв 2016, 08:53
Откуда: Кемерово
Skype: sab0tag31
  • Сайт

Re: Обработка ответа сервера и структурирование приложения

Сообщение IDoNotExist 31 янв 2019, 13:29

Splurgeola писал(а):Использую photon server.
Сценарий следующий: при подключении N игроков к серверу, первый игрок рассылает RPC чтобы все остальные игроки обратились к серверу.

Splurgeola писал(а):Коряво как-то вызывается всё. Не должно же быть так чтоб один человек вызывал у всех панельку.

Ход мыслей правильный, почему бы не переложить эту обязанность на сервер? И сделать так, чтобы сервер отсылал всем RPC либо команду, которая будет открывать панельку?
Аватара пользователя
IDoNotExist
Адепт
 
Сообщения: 1432
Зарегистрирован: 23 мар 2011, 09:18
Skype: iamnoexist

Re: Обработка ответа сервера и структурирование приложения

Сообщение Splurgeola 31 янв 2019, 13:38

Для начала не нашел где сервер обрабатывает подключение игроков, чтобы проверить все ли игроки на месте, по этой причине клиент сам считает :(
Если найду, то как потом действовать? RPC отправляется ведь так: photonView.RPC("ActivateBuyPanel",PhotonTargets.All)
т.е string название метода, куда оно придёт и где начнёт обрабатываться? Или может подписать на событие всех клиентов ... или ... в общем каша в голове, необходим хотябы минимальный пинок в сторону структуры взаимодействия [curved_hands]
Splurgeola
UNец
 
Сообщения: 47
Зарегистрирован: 24 янв 2016, 08:53
Откуда: Кемерово
Skype: sab0tag31
  • Сайт

Re: Обработка ответа сервера и структурирование приложения

Сообщение Jarico 31 янв 2019, 14:44

Splurgeola писал(а):Использую photon server.
Сценарий следующий: при подключении N игроков к серверу, первый игрок рассылает RPC чтобы все остальные игроки обратились к серверу.


Для чего? Игрок всегда врёт, запомни это!

Первый игрок может сколько угодно раз послать RPC запрос чтобы другие обратились к серверу и это приводит к плохим последствиям...
Github: _https://github.com/redheadgektor
Discord: Конь! Чаю!#9382 (сижу редко)
YouTube: _https://www.youtube.com/channel/UCPQ04Xpbbw2uGc1gsZtO3HQ
Telegram: _https://t.me/redheadgektor
Аватара пользователя
Jarico
Адепт
 
Сообщения: 1084
Зарегистрирован: 06 янв 2019, 17:37
Откуда: 0xDEAD
Skype: none
  • Сайт

Re: Обработка ответа сервера и структурирование приложения

Сообщение IDoNotExist 31 янв 2019, 14:47

Splurgeola писал(а):Для начала не нашел где сервер обрабатывает подключение игроков, чтобы проверить все ли игроки на месте, по этой причине клиент сам считает :(

Очень плохая причина для переноса логики на клиент, очевидно, что если фича не извечтна, надо её искать и изучать, иначе какой смысл в фотон сервере, лучше тогда использовать фотон клауд и тупо делать уже всё на клиенте.

Splurgeola писал(а):Если найду, то как потом действовать? RPC отправляется ведь так: photonView.RPC("ActivateBuyPanel",PhotonTargets.All)

Ну так в том же NetworkingPeer в OnOperationResponse смотришь как обрабатываются сообщения от сервера которые несут информацию про RPC, потом на сервере просто формируешь сообщение с данной информацией.
Аватара пользователя
IDoNotExist
Адепт
 
Сообщения: 1432
Зарегистрирован: 23 мар 2011, 09:18
Skype: iamnoexist

Re: Обработка ответа сервера и структурирование приложения

Сообщение Tolking 31 янв 2019, 15:44

Логика очень странная кто-то нажал, а открылось у меня? А я закрыл у всех закрылось?

нормальная логика: я нажал, послался запрос серверу, сервер вернул мне список, у меня открылось...
Ковчег построил любитель, профессионалы построили Титаник.
Аватара пользователя
Tolking
Адепт
 
Сообщения: 2714
Зарегистрирован: 08 июн 2009, 18:22
Откуда: Тула


Вернуться в Photon

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

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