два сервера на photon

два сервера на photon

Сообщение kelod 13 фев 2013, 13:19

хочу сделать два сервера и передавать данные от одного к другому, пишу всё на C# один сервер написал, а как к нему присоединить второй не понятно(((
kelod
UNIт
 
Сообщения: 139
Зарегистрирован: 26 ноя 2012, 16:45

Re: два сервера на photon

Сообщение cibersant 13 фев 2013, 16:52

Они у тебя будут запущены на одной машине или на 2 ?
Или как всегда изобретаем велосипед.
Если на одной машине,то обращаемся по localhost:номер порта ,если на разных то ip:номер порта.
_https://vk.com/app4031890 - 3d боец
cibersant
Старожил
 
Сообщения: 938
Зарегистрирован: 14 дек 2011, 01:27

Re: два сервера на photon

Сообщение kelod 13 фев 2013, 17:39

какая разница на одной или двух?? как обратиться это самое простое, мне больше интересно как подключение организовать, как сделать один сервер клиентом, другой сервером, и что бы всё было через сокеты и на шарпе
kelod
UNIт
 
Сообщения: 139
Зарегистрирован: 26 ноя 2012, 16:45

Re: два сервера на photon

Сообщение cibersant 13 фев 2013, 18:25

kelod писал(а):какая разница на одной или двух?? как обратиться это самое простое, мне больше интересно как подключение организовать, как сделать один сервер клиентом, другой сервером, и что бы всё было через сокеты и на шарпе

Ну так открыл сокеты и слушай.А вообще качаешь книгу .net сетевое программирование для профессионалов и изучаешь.И будешь профи.
Я просто с фотоном не работал.
_https://vk.com/app4031890 - 3d боец
cibersant
Старожил
 
Сообщения: 938
Зарегистрирован: 14 дек 2011, 01:27

Re: два сервера на photon

Сообщение kelod 13 фев 2013, 19:16

по фотону мало чего написано по-русски((
kelod
UNIт
 
Сообщения: 139
Зарегистрирован: 26 ноя 2012, 16:45

Re: два сервера на photon

Сообщение kelod 13 фев 2013, 19:36

вот собственно сервер для unity
Синтаксис:
Используется csharp
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using ExitGames.Logging;
using ExitGames.Logging.Log4Net;
using log4net.Config;
using Photon.SocketServer;
using System.IO;

namespace PhotonGame
{
        public class PhotonServer : ApplicationBase
        {

                protected override PeerBase CreatePeer(InitRequest initRequest)
                {
                        //throw new NotImplementedException();
                        return new UnityClient(initRequest.Protocol, initRequest.PhotonPeer);
                }
                protected override void Setup()
                {

                        var file = new FileInfo(Path.Combine(BinaryPath, "log4net.config"));
                        if (file.Exists)
                        {
                                LogManager.SetLoggerFactory(Log4NetLoggerFactory.Instance);
                                XmlConfigurator.ConfigureAndWatch(file);
                        }
                }
                protected override void TearDown()
                {
                }
        }
}


Синтаксис:
Используется csharp
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Photon.SocketServer;
using ExitGames.Logging;
using PhotonHostRuntimeInterfaces;
//using MySql.Data.MySqlClient;
using System.Collections;


namespace PhotonGame
{
        public class UnityClient : PeerBase
        {
                private readonly ILogger Log = LogManager.GetCurrentClassLogger();
                public UnityClient(IRpcProtocol protocol, IPhotonPeer peer)
                        : base(protocol, peer)
                {
                        Log.Debug("Connection:" + peer.GetRemoteIP());
                }
                protected override void OnDisconnect(DisconnectReason reasonCode, string reasonDetail)
                {
                        Log.Debug("Disconnected");
                }

                protected override void OnOperationRequest(OperationRequest operationRequest, SendParameters sendParameters)
                {
                        Log.Debug("Unknown operation");
                }
        }
}


и клиент в unity
Синтаксис:
Используется csharp
using ExitGames.Client.Photon;
using System.Collections.Generic;
using UnityEngine;
using System.Net;
using System;
using System.ComponentModel;
using System.Collections;
using System.Linq;
using CustomTree;

public class PhotonServer : IPhotonPeerListener
{
    public string Status { get; set; }
    PhotonPeer _peer;
    Login _login;
        //static string _avtor="";

    public PhotonServer()
    {
        Status = "Disconnected";
    }

    public void DebugReturn(DebugLevel level, string message)
    {
       
    }

    public void OnEvent(EventData eventData)
    {
}

    public void OnOperationResponse(OperationResponse operationResponse)
    {
}
 public void OnStatusChanged(StatusCode statusCode)
    {
        switch (statusCode)
        {
            case StatusCode.Connect:
                Status = "Connected";
                break;
            case StatusCode.Disconnect:
            case StatusCode.DisconnectByServer:
            case StatusCode.DisconnectByServerLogic:
            case StatusCode.DisconnectByServerUserLimit:
            case StatusCode.TimeoutDisconnect:
                Status = "Disconect";
                break;
            default:
                Status = "Unknown";
                break;
        }
    }

    public void Init(PhotonPeer peer, string serverAddress, string applicationName, Login login)
    {
        _peer = peer;
        _peer.Connect(serverAddress, applicationName);
        _login = login;
    }

    public void Disconnect()
    {
        _peer.Disconnect();
    }
    public void Update()
    {
        _peer.Service();
    }

    public void SendOperation(string l,string p)        //проверяем логин и пароль на присудствие в базе
    {
                _peer.OpCustom(1, new Dictionary<byte, object> { { 1, l }, { 2, p } }, true);
    }
       
}
 

а как организовать клиент в сервере не могу сообразить
kelod
UNIт
 
Сообщения: 139
Зарегистрирован: 26 ноя 2012, 16:45

Re: два сервера на photon

Сообщение cibersant 13 фев 2013, 20:40

Для начала давайте определим что такое сервер и клиент. Итак, сервер - это специальная программа, обычно запущенная на отдельном компьютере (хосте, от слова host(eng.) - хозяин), и выполняющая некий круг задач. Клиент, в свою очередь - программа, которая запрашивает сервер выполнить то или иное действие (задачу) и вернуть полученные данные клиенту. На хосте для работы сервера обычно выделяется порт (port). К этому порту и должен будет обращаться клиент. Клиент для связи с портом хоста, который соединен в свою очередь с нужным сервером (программой), создает сокет.

В целом алгоритм работы системы клиент-сервер выглядит следующим образом:
Сервер подключается к порту на хосте и ждет соединения с клиентом;
Клиент создает сокет и пытается соединить его с портом на хосте;
Если создание сокета прошло успешно, то сервер переходит в режим ожидания команд от клиента;
Клиент формирует команду и передает ее серверу, переходит в режим ожидания ответа;
Сервер принимает команду, выполнеят ее и пересылает ответ клиенту.
и т.д.
_https://vk.com/app4031890 - 3d боец
cibersant
Старожил
 
Сообщения: 938
Зарегистрирован: 14 дек 2011, 01:27

Re: два сервера на photon

Сообщение cibersant 13 фев 2013, 20:41

клиент это клиент,а сервер это сервер.
_https://vk.com/app4031890 - 3d боец
cibersant
Старожил
 
Сообщения: 938
Зарегистрирован: 14 дек 2011, 01:27

Re: два сервера на photon

Сообщение kelod 13 фев 2013, 21:24

cibersant писал(а):клиент это клиент,а сервер это сервер.

вы совсем меня за придурка держите?)))
вообщем объясняю
делаю многопользовательскую игру:
клиент заходит на сайт, там видит окно unity , в котором авторизируеться и попадает в меню битв, далее он может просматривать битвы, узнавать где сколько игроков и т.д. так же может выбрать отределённую комнату и начать играть за определённую команду.
работой всего этого меню управляет сервер в сети (это я написал всё)
теперь собственно проблемма
после того как клиент выбирает комнату, он жмёт вход и если все проверки завершаются true, то клиент попадает в битву (определённую карту, с выбранными в меню параметрами), вооот
собственно этой картой я хочу управлять отдельным сервером, но нужно как то обмениваться данными этому серверу-игре с сервером-меню который управляет меню
почему я так хочу сделать? во-первых в итоге я получу 1 меню и много игр, возможно распределит нагрузку, плюс получаю универсальный способ создавать игры, не зависящие от меню, могу их располагать на разных машинах, например бесплатные игры будут находиться на тугодумающих машинах, платные на нормальных серверах(это как пример), кроме того есть ещё несколько причин, но я думаю здесь их описывать не стоит)
PS: база данных у всего этого добра пока предполагается одна и в ней будет храниться только информация о игроках и картах как таковых, вся же информация о битвах храниться на сервере меню в списках и массивах
kelod
UNIт
 
Сообщения: 139
Зарегистрирован: 26 ноя 2012, 16:45

Re: два сервера на photon

Сообщение kelod 15 фев 2013, 23:13

и не кто даже совета не даст в какую сторону копать(((
kelod
UNIт
 
Сообщения: 139
Зарегистрирован: 26 ноя 2012, 16:45

Re: два сервера на photon

Сообщение Woolf 16 фев 2013, 17:31

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

Re: два сервера на photon

Сообщение kelod 16 фев 2013, 17:39

Woolf писал(а):Ваш "сервер-меню" называется логин-сервером )) Честно говоря - практическую необходимость его отделения от основного я не вижу. Кто вам мешает сделать все на одном сервере?

если я на разных сделаю, то при большой накрузке я смогу меню на одном сервере держать, а игры на других и мне не нужно будет заморачиватся со всякими облаками, распределённой нагрузкой и прочей фигнёй, опять же цена лицензии самого фотона, в бесплатной лицензии я могу только 100 юзеров подключить, а так при 3 серверах уже почти 200 могут играть и почти сотня в меню находиться
kelod
UNIт
 
Сообщения: 139
Зарегистрирован: 26 ноя 2012, 16:45

Re: два сервера на photon

Сообщение maksimov 19 фев 2013, 12:09

kelod писал(а):если я на разных сделаю, то при большой накрузке я смогу меню на одном сервере держать, а игры на других и мне не нужно будет заморачиватся со всякими облаками, распределённой нагрузкой и прочей фигнёй,


Люди та, грешным делом, полагали, что "всякие облака" и встроенные системы распределения нагрузки - это как раз то, что избавляет от необходимости "заморачиваться". А оказывается вон оно как... =)


kelod писал(а):опять же цена лицензии самого фотона, в бесплатной лицензии я могу только 100 юзеров подключить, а так при 3 серверах уже почти 200 могут играть и почти сотня в меню находиться


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

Re: два сервера на photon

Сообщение Woolf 19 фев 2013, 17:46

в бесплатной лицензии я могу только 100 юзеров подключить, а так при 3 серверах уже почти 200 могут играть и почти сотня в меню находиться


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

Re: два сервера на photon

Сообщение maksimov 19 фев 2013, 18:50

Woolf писал(а):Учитывая стоимость инди фотона в $100 без ограничений и стоимость винлицензии в $70 - как-то накладно получается ))


Windows License Server обойдется примерно в 20$/месяц. Плюс к этому, стоимость самого сервака - от 50$/месяц.
В этом свете, одноразовый платеж в 100$, выглядит не более чем "заявка о намерениях". =)
Красота — не прихоть полубога, а хищный глазомер простого столяра.
Аватара пользователя
maksimov
UNITрон
 
Сообщения: 154
Зарегистрирован: 19 фев 2013, 11:48
  • Сайт

След.

Вернуться в Photon

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

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