Заметки по Unity Network

Сеть в Unity3D

Заметки по Unity Network

Сообщение Ging 16 ноя 2010, 17:22

Использование
Код: Выделить всё
Network.InitializeSecurity();
увеличивает размер трафика в два раза.
Из мануала:
However, they add up to 15 bytes per packet and take time to compute so you may wish to limit usage to deployed games only.

Тест проводился между клиент-серверным сообщением, состоящим из Vector3 и Quaternion
Аватара пользователя
Ging
UNец
 
Сообщения: 22
Зарегистрирован: 30 июн 2010, 14:06
Откуда: Москва
  • ICQ

Re: Заметки по Unity Network

Сообщение Ging 17 ноя 2010, 13:12

Код: Выделить всё
Network.InitializeServer()
лезет на http://assets.unity3d.com/ сама, не спрашиваясь.. скорее всего для поиска своих мастер-серверов. а может и еще за чем-нибудь

[Update]
Как выяснилось - с помощью этого происходит NAT-проброс, с использованием серверов Юнитеха. Исправить это дело можно двумя способами:
  1. НЕ использовать программный NAT-проброс, т.е. использовать такую конструкцию:
    Синтаксис:
    Используется csharp
    Network.InitializeServer(maxPlayerCount, serverPort, false);

    и прописать порт Вашего сервера в настройках NAT
  2. Использовать свой мастер-сервер для пробоя => RTFM
Последний раз редактировалось Ging 21 янв 2011, 11:16, всего редактировалось 2 раз(а).
Аватара пользователя
Ging
UNец
 
Сообщения: 22
Зарегистрирован: 30 июн 2010, 14:06
Откуда: Москва
  • ICQ

Re: Заметки по Unity Network

Сообщение Ging 17 ноя 2010, 14:21

Если подключение к серверу Network.Connect() было выполнено в другой сцене:

Сцена 1:
Синтаксис:
Используется javascript
function LaunchClient () {
  Network.Connect(Global.serverIP, Global.serverPort);
}

function OnConnectedToServer() {
  Application.LoadLevel("Game");
}
 


то вызов Network.Instantiate() из только что загруженной сцены "Game" не получит буферизированных вызовов других клиентов.
С чем связано - не знаю. Удалось вылечить только путем вызова Network.Connect() из уже загруженной сцены "Game".

Сцена 1:
Синтаксис:
Используется javascript
function LaunchClient () {
  Application.LoadLevel("Game");
}
 

Сцена Game:
Синтаксис:
Используется javascript
function Start(){
        if (Network.isServer) {
                /* ------------ */
        }
        else {
          Network.Connect(Global.serverIP, Global.serverPort);
        }
}


function OnConnectedToServer() {
  Network.Instantiate(playerPrefab, transform.position, transform.rotation, 0);
}
 


В этом случае все созданные ранее объекты в сцене Game в других клиентах будут нормально созданы и в этом.
Аватара пользователя
Ging
UNец
 
Сообщения: 22
Зарегистрирован: 30 июн 2010, 14:06
Откуда: Москва
  • ICQ

Re: Заметки по Unity Network

Сообщение Ging 24 ноя 2010, 15:51

RPC-функция не должна быть статической, т.е.
Синтаксис:
Используется javascript
@RPC
static function myRPC() {
...
}
 

работать не будет - NetworkView не сможет ее найти.
Аватара пользователя
Ging
UNец
 
Сообщения: 22
Зарегистрирован: 30 июн 2010, 14:06
Откуда: Москва
  • ICQ

Re: Заметки по Unity Network

Сообщение Ging 24 ноя 2010, 18:00

Подсчет MD5-хеша строки (Источник тут)
Синтаксис:
Используется javascript
static function Md5Sum(strToEncrypt)
{
    var encoding = System.Text.UTF8Encoding();
    var bytes = encoding.GetBytes(strToEncrypt);
 
    // encrypt bytes
    var md5 = System.Security.Cryptography.MD5CryptoServiceProvider();
    var hashBytes:byte[] = md5.ComputeHash(bytes);
 
    // Convert the encrypted bytes back to a string (base 16)
    var hashString = "";
 
    for (var i = 0; i < hashBytes.Length; i++)
    {
        hashString += System.Convert.ToString(hashBytes[i], 16).PadLeft(2, "0"[0]);
    }
 
    return hashString.PadLeft(32, "0"[0]);
}
 
Последний раз редактировалось Ging 21 янв 2011, 11:17, всего редактировалось 1 раз.
Аватара пользователя
Ging
UNец
 
Сообщения: 22
Зарегистрирован: 30 июн 2010, 14:06
Откуда: Москва
  • ICQ

Re: Заметки по Unity Network

Сообщение TexeL 25 ноя 2010, 00:56

Спасибо за заметки :ymhug: (popcorn1)
ИзображениеИзображение
Аватара пользователя
TexeL
UNITрон
 
Сообщения: 244
Зарегистрирован: 15 ноя 2009, 20:57
  • Сайт


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

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

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