Photon Server основы

Photon Server основы

Сообщение liget 27 фев 2013, 11:01

Всем привет,

Пытаюсь понять как взаимодействует сервер с клиентами.
Вопросов море. Будем считать что это филиал "Почемучки" о фотоне. :)

Как я понял, единственный вариант передать информацию с клиента на сервер - заслать операцию. Операция имеет код (byte) и параметры (object). Операция отправляется от клиента (не объекта на сцене) и возвращается так же клиенту, а не объекту на сцене.

Если я выше все верно описал, то не совсем понимаю каким образом заставить объект обмениваться с сервером информацией и в дальнейшем ее синхронизировать между остальными клиентами.

Например в Юнити у меня есть интерактивный объект дверь.
Пользователь кликает по ней мышкой, что бы она открылась.
Я шлю на сервер код операции, и получаю обратно тоже код операции.

Каким образом клиент узнает что надо сделать с конкретным объектом?
Как передать тоже самое остальным клиентам?
Как вообще на сервере завести такую сущность как объект и залинковать его с объектом на сцене?
liget
UNIт
 
Сообщения: 55
Зарегистрирован: 05 май 2012, 09:23

Re: Photon Server основы

Сообщение liget 27 фев 2013, 11:44

И еще вопрос.

Компонент PhotonView используется только с клаудом или с сервером тоже?
liget
UNIт
 
Сообщения: 55
Зарегистрирован: 05 май 2012, 09:23

Re: Photon Server основы

Сообщение maksimov 27 фев 2013, 14:45

liget писал(а):Как я понял, единственный вариант передать информацию с клиента на сервер - заслать операцию.

Да.

liget писал(а):Операция имеет код (byte) и параметры (object). Операция отправляется от клиента (не объекта на сцене) и возвращается так же клиенту, а не объекту на сцене. Если я выше все верно описал, то не совсем понимаю каким образом заставить объект обмениваться с сервером информацией и в дальнейшем ее синхронизировать между остальными клиентами.


Отправка операций - более низкоуровневый вариант взаимодействия. К нему требуется прибегать, если предполагается расширять серверную логику и протокол общения соответственно. Для простой синхронизации сцен, объектов и свойств объектов, есть надстройка(входит в Photon Unity3D SDK), в которой это реализуется посредством компонента PhotonView.

Пример синхронизации положения объекта на сцене:
Синтаксис:
Используется csharp
void OnPhotonSerializeView(PhotonStream stream, PhotonMessageInfo info)
{
   if (stream.isWriting)
   {
       //Раз мы управляем данным объектом: отправляем его текущие свойства остальным игрокам
       stream.SendNext((int)characterState);
       stream.SendNext(transform.position);
       stream.SendNext(transform.rotation);
   }
   else
   {
       //Удаленный игрок, принимаем свойства объекта
       characterState = (CharacterState)(int)stream.ReceiveNext();
       correctPos = (Vector3)stream.ReceiveNext();
       correctRot = (Quaternion)stream.ReceiveNext();
   }
}




liget писал(а):Как вообще на сервере завести такую сущность как объект и залинковать его с объектом на сцене?


Написать серверную логику, в которой описать данный объект и механизм его идентификации. В приложениях Фотона нет реализаций _ваших объектов_. В первозданном виде, Фотон осуществляет лишь самые общие, универсальные мехники: синхронизациях сцен, объектов,... Все остальное вам придется писать самому.
Аватара пользователя
maksimov
UNITрон
 
Сообщения: 154
Зарегистрирован: 19 фев 2013, 11:48
  • Сайт

Re: Photon Server основы

Сообщение liget 28 фев 2013, 18:16

Я понял. Спасибо.

А вот еще вопрос по Photon Cloud.

Я так понимаю что его принцип работы такой же как у стандартной юнити сети. Кто то создает игру, остальные конектятся. Тот кто создал игру, становится сервером.
И если он выходит из игры, то комната убивается, и все клиенты от нее отрубаются.
Да?
liget
UNIт
 
Сообщения: 55
Зарегистрирован: 05 май 2012, 09:23

Re: Photon Server основы

Сообщение maksimov 03 мар 2013, 15:55

liget писал(а):Я так понимаю что его принцип работы такой же как у стандартной юнити сети.


"Принцип работы" у всех сетей одинаковый. ) А вот реализации - разные.
У Photon Cloud практически почти тот же самый код, что и у Photon Server. Разница лишь в том, что Photon Cloud запущен на их серверах(и вы, соответственно, не можете ему ничего дописывать), а Photon Server вы запускаете на своем сервере(где вы можете писать к нему свои приложения, в которых будет реализована серверная логика вашей игры).


liget писал(а):Кто то создает игру, остальные конектятся. Тот кто создал игру, становится сервером.
И если он выходит из игры, то комната убивается, и все клиенты от нее отрубаются.
Да?


Не обязательно. Возможен следующий вариант: когда мастер-клиент выходит, сервер назначает новым мастер-клиентом следующего игрока(из оставшихся онлайн).
Красота — не прихоть полубога, а хищный глазомер простого столяра.
Аватара пользователя
maksimov
UNITрон
 
Сообщения: 154
Зарегистрирован: 19 фев 2013, 11:48
  • Сайт


Вернуться в Photon

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

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