1. Форум находиться в тестовом режиме. О найденных багах просьба писать в тему Чейнжлог #34

Многопользовательская онлайн-игра в реальном времени(Глобальный не локальный)

Тема в разделе "Обмен опытом", создана пользователем sixsixone, 4 апр 2017.

  1. s

    sixsixone Новый участник

    2
    0
    Привет друзья !
    Я закончил создание мультиплеер игры. Хотел бы выпустить ее для мобильного устройства и ПК. Игра работает отлично в локальной сети .Но в глобальной сети при создании выделенного сервера (dedicated server) я столкнулся с проблемой. У клиентов нет возможности создавать сессии, а только подключаться к выделенному серверу, который я включаю вручную.

    Клиент не может при выходе из сессии ее отключить или перезагрузить.Это происходит
    при попытке автоматического подключения порта (например 7777) или вручную через execute control command.

    Второе. Консольные команды (например ServerTravel "map name" , open "map name?Listen") не действуют на сервер.

    И третье. Когда таймер в моей игре доходит до определенной точки, мой код уничтожает сессию.(destroy session) и происходит блокировка порта ( например 7777) и приходится перезагружать выделенный сервер вручную. И только тогда его можно заново использовать.

    Возможно ли без большого изменения моего кода использовать третье лицо ( например Gamesparks,Photon,Amazon...) для решения этих проблем и как использовать их коды минимально изменяя мои.
    Я прошу о помощи в решении этих проблем.

    Я писал на форум UE4 AnswerHub , искал в сети ,но к сожалению не получил ответа на свои вопросы.
    Извините за длинную историю и спасибо всем, кто поможет !
     
  2. W

    WhiteSteel Новый участник

    6
    0
    Hey, @sixsixone, обратись к этому чуваку из видео. Он как раз с этой штуковиной разбирается, мб он уже прошел через эти грабли
     
  3. S

    Shard Новый участник

    1
    0
    Сложно реализовать хост на машине клиентов. Прочитайте про NAT. Если у каждого клиента не будет подмены адресов и будет открыт соответсвующий порт в фаерволе, то они смогут хостить без проблем.
     
  4. s

    sixsixone Новый участник

    2
    0
    Спасибо за все ответи но у меня есть проблема, что моя игра подобна "Clash Royale", что означает, что в каждой сессии может быть только 2 игрока, и это означает, что мне нужно использовать "Unreal dedicated server" для каждых 2 игроков, потому что "Unreal dedicated server" не поддерживает многопоточность (multithreding) Поэтому в этот момент я обнаружил, что единственным решением является третья сторона, которая может управлять множеством dedicated servers, а каждый dedicated server имеет собственный порт ... (7777, 7778, 7779, ..., nnnn). Я не так в восторге от этого решения, так что если кто-то сделал что-то подобное, я буду рад услышать, потому что я думаю, что могу позволить одно перенаправление порта, но не сотни или тысячи.
    Вроде как то что я написал я прочитал что на этом принципе работает "Gears of War" что они имеют множество dedicated servers.

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

    Еще раз спасибо !
     
  5. Vitaly

    Vitaly Местный

    21
    3
    Что ты настраивал на сервере, ты хоть раз имел дело с серверами?