Подключение нового игрока

Сеть в Unity3D

Подключение нового игрока

Сообщение t.key 02 сен 2011, 20:27

Пишу маленький шутер.
Подключается новый игрок в игру в котором другие игроки уже играют. Ему нужно знать HP, оружие, имя, количества убийства и количество смертей каждого играющего игрока.
Сейчас пробую обычное общение нового игрока с остальными через RPC, но если есть способ по легче, прошу подсказать.
Если соберутся восемь ваххабитов, получится один ваххаByte.
Казахстанским геймдеверам: _ttp://gamez.kz
Аватара пользователя
t.key
UNIт
 
Сообщения: 72
Зарегистрирован: 03 авг 2011, 17:38
Откуда: Казахстан

Re: Подключение нового игрока

Сообщение Valera01 03 сен 2011, 06:45

Я так понимаю,что для тебя надо тупо написать скрипт...
Valera01
UNец
 
Сообщения: 12
Зарегистрирован: 01 сен 2011, 13:09

Re: Подключение нового игрока

Сообщение t.key 03 сен 2011, 08:47

Я так понимаю,что для тебя надо тупо написать скрипт...

Ну внимательно!!! [-x
Сейчас пробую обычное общение нового игрока с остальными через RPC, но если есть способ по легче, прошу подсказать.
Если соберутся восемь ваххабитов, получится один ваххаByte.
Казахстанским геймдеверам: _ttp://gamez.kz
Аватара пользователя
t.key
UNIт
 
Сообщения: 72
Зарегистрирован: 03 авг 2011, 17:38
Откуда: Казахстан

Re: Подключение нового игрока

Сообщение t.key 03 сен 2011, 09:03

Вот что я делаю: когда игрок подключается к игре, он вызывает метод через RPC("StatusRequest", RPCMode.Others). Те получают этот запрос и отвечают RPC("SetStatus", info.sender, arg1, arg2, ...).
Когда в игре один сервер к которому подключается второй игрок - все хорошо, но если подключится третий игрок то вместо него SetStatus второго игрока получает сервер а не третий.
Если соберутся восемь ваххабитов, получится один ваххаByte.
Казахстанским геймдеверам: _ttp://gamez.kz
Аватара пользователя
t.key
UNIт
 
Сообщения: 72
Зарегистрирован: 03 авг 2011, 17:38
Откуда: Казахстан

Re: Подключение нового игрока

Сообщение BlackMamba 03 сен 2011, 12:10

А где у вас все данные об игроках содержатся? Могу привести свой пример: все хранится на сервере, и инфо об игроках, и методы их обработки. Есть класс Player, содержащий всю инфу об конкретном игроке, и одномерный массив этого класса длинной Network.connections.Length, ну а далее по запросам rpc от клиентов сервак передает нужную инфу. Надеюсь помог.
mail: _gdeMoiGusi@gmail.com
skype: Ellseworth
Аватара пользователя
BlackMamba
UNITрон
 
Сообщения: 305
Зарегистрирован: 06 янв 2011, 16:16
Откуда: Москва

Re: Подключение нового игрока

Сообщение t.key 03 сен 2011, 16:07

А где у вас все данные об игроках содержатся?

Все данные об игроке хранятся у самого игрока и своя физика вычисляется у себя. При попадании пули он передает networkView.RPC("SetHealth", RPCMode.All, health - 10).
Проблема в том что функция RPC("...", info.sender, ...) не посылает его игроку, а посылает его серверу.
Если info.sender заменить на RPCMode.Others все работает хорошо, но отправляет его всем а не подключившемуся игроку.
Если соберутся восемь ваххабитов, получится один ваххаByte.
Казахстанским геймдеверам: _ttp://gamez.kz
Аватара пользователя
t.key
UNIт
 
Сообщения: 72
Зарегистрирован: 03 авг 2011, 17:38
Откуда: Казахстан

Re: Подключение нового игрока

Сообщение friuns 21 сен 2011, 20:45

вот тут посмотри как сделано
viewtopic.php?f=13&t=5482&st=0&sk=t&sd=a
Counter Strike Android Port _ttp://4pda.ru/forum/index.php?showtopic=299057
Аватара пользователя
friuns
UNец
 
Сообщения: 42
Зарегистрирован: 17 авг 2010, 15:30
Откуда: Finland, Helsinki Supercell oy
  • Сайт
  • ICQ

Re: Подключение нового игрока

Сообщение t.key 22 сен 2011, 13:45

friuns
Может объяснить? Или диаграмку подкинуть? Там так их много, а еще разобраться где-что. Ну или хотябы в каком скрипте искать.
Если соберутся восемь ваххабитов, получится один ваххаByte.
Казахстанским геймдеверам: _ttp://gamez.kz
Аватара пользователя
t.key
UNIт
 
Сообщения: 72
Зарегистрирован: 03 авг 2011, 17:38
Откуда: Казахстан

Re: Подключение нового игрока

Сообщение t.key 22 сен 2011, 16:43

Есть вопросы...
Вот здесь
Синтаксис:
Используется csharp
    public void OnPlayerConnected(NetworkPlayer player)
    {
        if (!Network.isServer) return;
        CallRPC(RpcSetupPlayer, player, PlayerName, Offline ? Random.Range(0, 32) : Network.player.GetHashCode(), (int)_Game.team);
        CallRPC(RPCSetPlayerDeaths, player, PlayerDeaths);
        CallRPC(RPCSetPlayerScore, player, PlayerScore);
        CallRPC(RPCSetMoney, player, PlayerMoney);
    }
 

Как я понял OnPlayerConnected итак вызывается у сервера, а ты там еще и проверяеш. Сервер посылает начальные величины?

Еще здесь
Синтаксис:
Используется csharp
        if (startUp == StartUp.AutoHost)
        {            
            if (Network.InitializeServer(6, port, false) != NetworkConnectionError.NoError)
                Network.Connect("127.0.0.1", port);
            return;
        }
 

Создаеш, потом подключаешся к себе?

Что делает Bs.cs? Там переписаны вызовы RPC.
Если соберутся восемь ваххабитов, получится один ваххаByte.
Казахстанским геймдеверам: _ttp://gamez.kz
Аватара пользователя
t.key
UNIт
 
Сообщения: 72
Зарегистрирован: 03 авг 2011, 17:38
Откуда: Казахстан


Вернуться в Сеть

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

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