LitePeer несколько комнат

LitePeer несколько комнат

Сообщение Woolf 12 янв 2012, 13:16

Делаю комнатную игру, на основе Lite, вот только беда - у меня ГГ может быть в нескольких комнатах одновременно - комната локации, комната клана, комната турнира, к примеру. Может кто решал уже этот вопрос, ибо в Lite игрок может быть только в одной комнате..
Разработчик theFisherOnline - там, где клюёт
Разработчик Atom Fishing II - Первая 3D MMO про рыбалку
Разработчик Atom Fishing - Рыбалка на поплавок, донку, нахлыст, блесну в постъядерный период.
Аватара пользователя
Woolf
Адепт
 
Сообщения: 7179
Зарегистрирован: 02 мар 2009, 16:59

Re: LitePeer несколько комнат

Сообщение sp00n 12 янв 2012, 13:29

Напишите свой Lite, конкретно заточенный под Ваши нужды. Или объясните поподробней что значит "одновременно" :)
Ты молод, креативен, талантлив?
Амбициозен, уверен в себе, полон свежих идей?
А делать хоть что-нибудь умеешь?!
sp00n
UNITрон
 
Сообщения: 254
Зарегистрирован: 27 фев 2010, 20:43

Re: LitePeer несколько комнат

Сообщение Woolf 12 янв 2012, 13:35

Ну я уже понял, что так и придётся делать. А "одновременно" - то и значит, что игрок должен в один момент времени числиться в нескольких комнатах )

Но вообще странно, что в базовом примере под фотон отсутствует настолько важный функционал. Я вот не могу сходу даже представить игру, где игрок может быть только в одной комнате. Даже шашки не подходят..
Разработчик theFisherOnline - там, где клюёт
Разработчик Atom Fishing II - Первая 3D MMO про рыбалку
Разработчик Atom Fishing - Рыбалка на поплавок, донку, нахлыст, блесну в постъядерный период.
Аватара пользователя
Woolf
Адепт
 
Сообщения: 7179
Зарегистрирован: 02 мар 2009, 16:59

Re: LitePeer несколько комнат

Сообщение sp00n 12 янв 2012, 13:53

Woolf писал(а):Но вообще странно, что в базовом примере под фотон отсутствует настолько важный функционал. Я вот не могу сходу даже представить игру, где игрок может быть только в одной комнате. Даже шашки не подходят..
World of Tanks, CS, Quake, онлайн-шашки в конце-концов :) Насколько я понимаю, у нас разные представления об "только в одной комнате"...
Ты молод, креативен, талантлив?
Амбициозен, уверен в себе, полон свежих идей?
А делать хоть что-нибудь умеешь?!
sp00n
UNITрон
 
Сообщения: 254
Зарегистрирован: 27 фев 2010, 20:43

Re: LitePeer несколько комнат

Сообщение Woolf 12 янв 2012, 14:06

sp00n писал(а):
Woolf писал(а):Но вообще странно, что в базовом примере под фотон отсутствует настолько важный функционал. Я вот не могу сходу даже представить игру, где игрок может быть только в одной комнате. Даже шашки не подходят..
World of Tanks, CS, Quake, онлайн-шашки в конце-концов :) Насколько я понимаю, у нас разные представления об "только в одной комнате"...


Именно ) WoT - как минимум две комнаты у них. Одна общесерверная, вторая боевая. Т.е. сообщения могут раздаваться как по всему серверу, так и по конкретной комнтате. Т.е. ГГ, когда он в бою, одновременно находится в комнате сервера и игровой комнате. Плюс если вы в ангаре - вы одновременно находитесь: в общесерверной ангарной комнате, комнате клана, комнате общего чата, комнате чата взводов , комнаты привата.
Разработчик theFisherOnline - там, где клюёт
Разработчик Atom Fishing II - Первая 3D MMO про рыбалку
Разработчик Atom Fishing - Рыбалка на поплавок, донку, нахлыст, блесну в постъядерный период.
Аватара пользователя
Woolf
Адепт
 
Сообщения: 7179
Зарегистрирован: 02 мар 2009, 16:59

Re: LitePeer несколько комнат

Сообщение sp00n 12 янв 2012, 14:49

Woolf писал(а):WoT - как минимум две комнаты у них. Одна общесерверная, вторая боевая.
Два разных сервера этим занимаются в данном случае.
Woolf писал(а):Плюс если вы в ангаре - вы одновременно находитесь: в общесерверной ангарной комнате, комнате клана, комнате общего чата, комнате чата взводов , комнаты привата.
опять же разные сервера - "общий" и чат-сервер (для небольших проектов это может быть на одном реализовано), который и разруливает сообщения разных чатов. Это все нормально реализовывается и через стандартный фотоновский LiteLobby, естественно расширив его. Или Вы хотели взять имеющийся пример Lite-сервера и без писанины доп.кода использовать его для своего проекта? :)
Ты молод, креативен, талантлив?
Амбициозен, уверен в себе, полон свежих идей?
А делать хоть что-нибудь умеешь?!
sp00n
UNITрон
 
Сообщения: 254
Зарегистрирован: 27 фев 2010, 20:43

Re: LitePeer несколько комнат

Сообщение Груберк 12 янв 2012, 15:37

Или Вы хотели взять имеющийся пример Lite-сервера и без писанины доп.кода использовать его для своего проекта

Ну как обычно. Только потом новая грабля и снова бегом на форум. Самому подумать ведь так тяжело...
Вообще не вижу проблем в решении "проблемы", узнаете как работает litelobby - узнаете как решить свою задачу.
Груберк
UNIт
 
Сообщения: 133
Зарегистрирован: 05 июл 2011, 13:26

Re: LitePeer несколько комнат

Сообщение Woolf 12 янв 2012, 15:50

Груберк писал(а):
Или Вы хотели взять имеющийся пример Lite-сервера и без писанины доп.кода использовать его для своего проекта

Ну как обычно. Только потом новая грабля и снова бегом на форум. Самому подумать ведь так тяжело...
Вообще не вижу проблем в решении "проблемы", узнаете как работает litelobby - узнаете как решить свою задачу.


Ой-ой-ой.. Это я то "бегом на форум"? Да я не "бегом на форум", просто раскрыл тему, которая замалчивалась. Лично мне прекрасно всё понятно, как решить эту проблему и LiteLobby здесь вообще никаким боком. Вы лучше чем кидать "умные" фразы сами разберитесь, что делает "LiteLobby" и чем оно отличается от "Lite" и каким вообще боком оно привязано к множественности комнат.

Просто я думал, может кто-то решил проблему другим путём, кроме как игнорированием дефолтных методов работы с Room у LitePeer и написанием своих. Дело то не в базовых классах Room, им то, как раз таки пофигу, в скольки комнатах игрок, а именно в LitePeer, это там забито только одно значение RoomReference.

ПыСы в догонку еще один вопрос по LitePeer - как правильно послать сообщение клиенту без его запроса?

Я делаю как-то так..

Синтаксис:
Используется csharp
        public void sendToClient(int cmd, byte[] data) {

            InPacket.OutPacket outp = new InPacket.OutPacket(cmd, data);
            lock (this) {
                this.SendOperationResponse(outp.response, sendParameters);
            }
        }


Но мне кажется это несколько неверно..
Разработчик theFisherOnline - там, где клюёт
Разработчик Atom Fishing II - Первая 3D MMO про рыбалку
Разработчик Atom Fishing - Рыбалка на поплавок, донку, нахлыст, блесну в постъядерный период.
Аватара пользователя
Woolf
Адепт
 
Сообщения: 7179
Зарегистрирован: 02 мар 2009, 16:59

Re: LitePeer несколько комнат

Сообщение Груберк 12 янв 2012, 16:02

Ой-ой-ой.. Это я то "бегом на форум"? Да я не "бегом на форум", просто раскрыл тему, которая замалчивалась. Лично мне прекрасно всё понятно, как решить эту проблему и LiteLobby здесь вообще никаким боком. Вы лучше чем кидать "умные" фразы сами разберитесь, что делает "LiteLobby" и чем оно отличается от "Lite" и каким вообще боком оно привязано к множественности комнат.

Уже давно фотон не трогал, так что тут спорить не стану.

Просто я думал, может кто-то решил проблему другим путём, кроме как игнорированием дефолтных методов работы с Room у LitePeer и написанием своих. Дело то не в базовых классах Room, им то, как раз таки пофигу, в скольки комнатах игрок, а именно в LitePeer, это там забито только одно значение RoomReference.

Сделайте массив RoomReference :)
Вообще lite, litelobby, mmo это не части API фотона. Это просто пример реализации базовых вещей с использованием фотона. Так что можно писать хоть LiteLobbyMMO, главное понимать "почему это именно так?". Особенно если функционал представленных примеров вас не устроил.

ПыСы в догонку еще один вопрос по LitePeer - как правильно послать сообщение клиенту без его запроса?
Я делаю как-то так..

неправильно. Нужно использовать событие (Event), а вы используете ответ на операцию (т.е. посылаете результат операции-запроса клиента, который он не делал).

вообще еще выше написали, что по сути те "комнаты", которые вы хотите сделать, действительно обычно являются разными серверами (допустим основной сервер, сервер битвы, сервер чата, сервер аукциона), но это все элементарно реализуется и в рамках одного приложения, что естественно делает его не конкурентоспособным по производительности с массивом серверов.
Груберк
UNIт
 
Сообщения: 133
Зарегистрирован: 05 июл 2011, 13:26

Re: LitePeer несколько комнат

Сообщение Woolf 12 янв 2012, 16:08

неправильно. Нужно использовать событие (Event), а вы используете ответ на операцию (т.е. посылаете результат операции-запроса клиента, который он не делал).


Да я сам понимаю, что неправильно.. И ивенты.. они же для комнат, как я понимаю, а не для конкретного коннекта. Или я ошибаюсь? У меня задача такая - послать пакет конкретному peer, не ожидая от него запроса, имея сам peer в руках.

вообще еще выше написали, что по сути те "комнаты", которые вы хотите сделать, действительно обычно являются разными серверами (допустим основной сервер, сервер битвы, сервер чата, сервер аукциона), но это все элементарно реализуется и в рамках одного приложения, что естественно делает его не конкурентоспособным по производительности с массивом серверов.


Отдельный сервер - это и отдельный коннект, как я понимаю, нужно делать? Скажем на другой порт? У меня такая структура - вся игра бьётся на "базы" на каждой "базе" есть набор локаций. Мне необходимо иметь возможность рассылать сообщения:

1) По всему серверу
2) По всей базе
3) По локации

Причём неважно, какие это сообщения - чата или игровые. Думаю, что у чата настолько низкая нагрузка, что можно реализовать его на основном серваке.

+ игроки еще могут объединяться в кланы и создавать свои турниры - рассылка по клану и по турниру также необходима. Насколько я понимаю - это пример классической "комнатной" реализации.
Разработчик theFisherOnline - там, где клюёт
Разработчик Atom Fishing II - Первая 3D MMO про рыбалку
Разработчик Atom Fishing - Рыбалка на поплавок, донку, нахлыст, блесну в постъядерный период.
Аватара пользователя
Woolf
Адепт
 
Сообщения: 7179
Зарегистрирован: 02 мар 2009, 16:59

Re: LitePeer несколько комнат

Сообщение Груберк 12 янв 2012, 16:38

Да я сам понимаю, что неправильно.. И ивенты.. они же для комнат, как я понимаю, а не для конкретного коннекта. Или я ошибаюсь? У меня задача такая - послать пакет конкретному peer, не ожидая от него запроса, имея сам peer в руках.

Вооот. Вот сразу видно кто инструкцию читает, когда телевизор уже дымится слегка :)
PhotonPeer.SendEvent

Отдельный сервер - это и отдельный коннект, как я понимаю, нужно делать? Скажем на другой порт? У меня такая структура - вся игра бьётся на "базы" на каждой "базе" есть набор локаций. Мне необходимо иметь возможность рассылать сообщения:

1) По всему серверу
2) По всей базе
3) По локации

ну создайте чат комнаты на основе механизмов комнат. ключевое слово я выделил. не обязательно мешать чат-логику с остальной.
вы очень сильно уже начинаете извращать принципы работы Lite, вам нужно свою логику уже писать.
Груберк
UNIт
 
Сообщения: 133
Зарегистрирован: 05 июл 2011, 13:26


Вернуться в Photon

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

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