Exemplo n.º 1
0
		public Tester(NS.Serializer serializer)
		{
			m_specimens.Add(new NetSerializerSpecimen(serializer));

			if (Program.RunProtoBufTests)
				m_specimens.Add(new ProtobufSpecimen());
		}
 protected override void Serialize(NetSerializer s)
 {
     s.Write(this.data.syncId);
     s.Write(this.data.prefabType);
     s.WriteExact(this.data.position);
     s.Write(this.data.rotation);
 }
        public static void Write(this NetSerializer s, PrefabType prefabType)
        {
            var typeMode = PrefabManager.instance.prefabTypeMode;

            switch (typeMode)
            {
            case PrefabTypeMode.Byte:
            {
                s.Write((byte)prefabType);
                break;
            }

            case PrefabTypeMode.Short:
            {
                s.Write((short)prefabType);
                break;
            }

            case PrefabTypeMode.Int:
            {
                s.Write((int)prefabType);
                break;
            }

            default:
            {
                throw new System.NotImplementedException();
            }
            }
        }
Exemplo n.º 4
0
 private static NetMessageDestroyValue CreateDestroyMessage(SyncedValueContainer container)
 {
     return(new NetMessageDestroyValue()
     {
         TypeId = NetSerializer.GetTypeId(container.DataType)
     });
 }
Exemplo n.º 5
0
 protected override void Serialize(NetSerializer s)
 {
     base.Serialize(s);
     s.Write(this.isLeft);
     s.Write(this.syncId);
     s.Write(this.playerId);
 }
Exemplo n.º 6
0
        public Server(Config config, MasterClient masterClient)
        {
            Logger.Log($"SERVER creating...");
            _masterClient = masterClient;
            _config       = config;
            _gameMode     = (GameMode)_config.GameMode;

            _world               = new World(_config, _gameMode);
            _world.OnGameEnd    += World_OnGameEnd;
            _world.OnPlayerDead += World_OnPlayerDead;

            _server = new NetManager(this, 100 + _config.MaxPlayers, _config.ConnectionKey)
            {
                UpdateTime = _config.UpdateDelay / 3,
            };

            Logger.Log($"SERVER register packets");
            _netSerializer = new NetSerializer();
            Packet.Register(_netSerializer);
            _netSerializer.SubscribeReusable <ClientConnection, NetPeer>(OnClientConnection);
            _netSerializer.SubscribeReusable <ClientInput, NetPeer>(OnClientInput);
            _netSerializer.SubscribeReusable <ClientSpawn, NetPeer>(OnClientSpawn);
            _netSerializer.SubscribeReusable <ClientLeave, NetPeer>(OnClentLeave);

            Logger.Log($"SERVER created");
        }
 public static object Deserialize_Class(BitStreamReader reader)
 {
     if (reader.ReadBit() == false)
     {
         return(null);
     }
     return(NetSerializer.Deserialize(reader));
 }
 public static int GetSerializedBitSize_Class(object obj)
 {
     if (obj == null)
     {
         return(1);
     }
     return(1 + NetSerializer.GetSerializedBitSize(obj));
 }
Exemplo n.º 9
0
 public static void Register(NetSerializer netSerializer)
 {
     netSerializer.RegisterCustomType <ObstacleInfo>();
     netSerializer.RegisterCustomType <PlayerInfo>();
     netSerializer.RegisterCustomType <PlayerCameraInfo>();
     netSerializer.RegisterCustomType <UnitInfo>();
     netSerializer.RegisterCustomType <RuneInfo>();
 }
Exemplo n.º 10
0
        /// <summary>
        /// Creates a ClientHandler that will use the given socket
        /// </summary>
        public ClientHandler(Socket sock)
        {
            var stream = new NetworkStream(sock);

            m_serlzr = new NetSerializer <Datagram>(new NetworkStream(sock), new object());
            m_alive  = true;
            m_status = new State(Direction.Stop, -1);
            m_orders = new List <Order>();
        }
Exemplo n.º 11
0
    void Init()
    {
        serializer = new NetSerializer();
        serializer.RegisterCustomType(SerializedLobbyPlayer.Serialize, SerializedLobbyPlayer.Deserialize);

        serializer.SubscribeReusable <PClientHandshake, NetPeer>(OnReceiveHandshake);

        isInit = true;
    }
Exemplo n.º 12
0
            public ServerListener()
            {
                _netSerializer = new NetSerializer();
                _netSerializer.RegisterCustomType(SomeVector2.Serialize, SomeVector2.Deserialize);
                _netSerializer.RegisterCustomType <SampleNetSerializable>();

                //user data support
                _netSerializer.SubscribeReusable <SamplePacket, NetPeer>(OnSamplePacketReceived);
            }
Exemplo n.º 13
0
        public void Run()
        {
            Console.WriteLine("=== Serializer benchmark ===");


            //Test serializer performance
            Stopwatch       stopwatch       = new Stopwatch();
            BinaryFormatter binaryFormatter = new BinaryFormatter();
            MemoryStream    memoryStream    = new MemoryStream();
            NetDataWriter   netDataWriter   = new NetDataWriter();

            SamplePacket samplePacket = new SamplePacket
            {
                SomeFloat    = 0.3f,
                SomeString   = "TEST",
                SomeIntArray = new [] { 1, 2, 3 },
                SomeVector2  = new SomeVector2(1, 2),
                SomeVectors  = new SomeVector2[20]
            };

            for (int i = 0; i < samplePacket.SomeVectors.Length; i++)
            {
                samplePacket.SomeVectors[i] = new SomeVector2(i, i);
            }

            var netSerializer = new NetSerializer();

            netSerializer.RegisterNestedType <SampleNetSerializable>();
            netSerializer.RegisterNestedType(SomeVector2.Serialize, SomeVector2.Deserialize);

            //Prewarm cpu
            for (int i = 0; i < 10000000; i++)
            {
                double c = Math.Sin(i);
            }

            //Test binary formatter
            stopwatch.Start();
            for (int i = 0; i < LoopLength; i++)
            {
                binaryFormatter.Serialize(memoryStream, samplePacket);
            }
            stopwatch.Stop();
            Console.WriteLine("BinaryFormatter time: " + stopwatch.ElapsedMilliseconds + " ms");
            Console.WriteLine("BinaryFormatter size: " + memoryStream.Position / LoopLength);

            DataWriterTest(netDataWriter, stopwatch, samplePacket);
            NetSerializerTest(netSerializer, netDataWriter, stopwatch, samplePacket);

            DataWriterTest(netDataWriter, stopwatch, samplePacket);
            NetSerializerTest(netSerializer, netDataWriter, stopwatch, samplePacket);

            DataWriterTest(netDataWriter, stopwatch, samplePacket);
            NetSerializerTest(netSerializer, netDataWriter, stopwatch, samplePacket);

            Console.ReadKey();
        }
 public static void Serialize_Class(object obj, BitStreamWriter writer)
 {
     if (obj == null)
     {
         writer.WriteBit(false);
         return;
     }
     writer.WriteBit(true);
     NetSerializer.Serialize(obj, writer);
 }
Exemplo n.º 15
0
    void Init()
    {
        serializer = new NetSerializer();
        serializer.RegisterCustomType(SerializedLobbyPlayer.Serialize, SerializedLobbyPlayer.Deserialize);

        serializer.SubscribeReusable <PLobby, NetPeer>(OnReceiveLobby);
        serializer.SubscribeReusable <PLobbyPlayer>(OnClientLobbyAction);

        isInit = true;
    }
Exemplo n.º 16
0
 protected override void Serialize(NetSerializer s)
 {
     base.Serialize(s);
     s.Write(this.syncId);
     s.Write(this.leftHand);
     s.Write(this.position);
     s.Write(this.rotation);
     s.Write(this.velocity);
     s.Write(this.angularVelocity);
 }
Exemplo n.º 17
0
 private void NetSerializerTest(NetSerializer serializer, NetDataWriter netDataWriter, Stopwatch stopwatch, SamplePacket samplePacket)
 {
     netDataWriter.Reset();
     stopwatch.Restart();
     for (int i = 0; i < LoopLength; i++)
     {
         serializer.Serialize(netDataWriter, samplePacket);
     }
     stopwatch.Stop();
     Console.WriteLine($"NetSerializer time: {stopwatch.ElapsedMilliseconds} ms, size: { netDataWriter.Length / LoopLength} bytes");
 }
Exemplo n.º 18
0
    public static void PopulateItemDatabase()
    {
        uint dbId = 1;

        Inventory.DbAddNewDefinition(new MeleeWeapon(dbId++, "Sword", 20, 20, 15, 1.5f, true));
        Inventory.DbAddNewDefinition(new MeleeWeapon(dbId++, "Hammer", 30, 30, 12, 1.5f, true));
        Inventory.DbAddNewDefinition(new Armor(dbId++, "Helmet", 30, 30, 5, "HeadMount", false));
        Inventory.DbAddNewDefinition(new Armor(dbId, "Chestplate", 30, 30, 12, "ChestMount", false));

        NetSerializer.Add <MeleeWeapon>(ItemSerializer, ItemDeserializer);
        NetSerializer.Add <IInvItem>(ItemSerializer, ItemDeserializer);
    }
    // Use this for initialization
    void Start()
    {
        NetSerializer serializer = new NetSerializer();

        SimplePacket packet = new SimplePacket()
        {
            Login    = "******",
            Password = "******"
        };

        serializer.Serialize(packet);
    }
Exemplo n.º 20
0
 private void OnNetMessageReceived(NetMessageDestroyValue destroyMessage, INetworkInterfaceConnection arg2)
 {
     if (NetSerializer.IsValidType(destroyMessage.TypeId))
     {
         Type type      = NetSerializer.GetTypeFromId(destroyMessage.TypeId);
         var  container = SyncedValues.GetContainer(type);
         if (container != null)
         {
             SyncedValues.DestroyContainer(container);
         }
     }
 }
Exemplo n.º 21
0
        /// <summary>
        /// Connects to the dispatcher and then enters the main loop.
        /// While alive, checks incoming messages from dispatcher, and processes them asynchronously
        /// </summary>
        public void Run()
        {
            while (true)
            {
                try
                {
                    m_client = new TcpClient();
                    m_client.Connect(m_dispatcherAddr);
                    Running  = true;
                    m_serlzr = new NetSerializer <Datagram>(m_client.GetStream(), new object());

                    Console.WriteLine("Web client started");

                    Datagram[] tempData = new Datagram[m_unsent.Count];
                    m_unsent.CopyTo(tempData);
                    foreach (Datagram data in tempData)
                    {
                        SendData(data);
                    }

                    m_unsent.Clear();

                    Task.Run(() =>
                    {
                        Thread.Sleep(1000);
                        while (Running)
                        {
                            Datagram data = m_serlzr.ExtractFromStream();
                            ProcessData(data);
                        }
                    });

                    while (true)
                    {
                        m_serlzr.WriteToStream(Datagram.CreateDummy());
                        Thread.Sleep(1000);
                    }
                }
                catch
                {
                    if (Running)
                    {
                        Running = false;
                        try { m_client.Close(); }
                        catch { }
                        ConnectionLost();
                        Console.WriteLine("Connection lost");
                    }
                    Thread.Sleep(1000);
                }
            }
        }
Exemplo n.º 22
0
        protected override void Serialize(NetSerializer s)
        {
            s.WriteExact(this.position);

            s.Write(this.headPosition);
            s.Write(this.headRotation);

            s.Write(this.leftHandPosition);
            s.Write(this.leftHandRotation);

            s.Write(this.rightHandPosition);
            s.Write(this.rightHandRotation);
        }
Exemplo n.º 23
0
 internal void DeserializeStream(NetStream stream)
 {
     while (NetSerializer.CanReadMessage(stream))
     {
         var message = NetSerializer.ReadNetMessage(stream);
         if (message == null)
         {
             NetLog.Warning("Failed to parse unreliable message from: " + Connection.Endpoint);
             break;
         }
         Connection.Socket.ReceiveMessage(message, Connection);
     }
     stream.Release();
 }
Exemplo n.º 24
0
    void Start()
    {
        socket      = GetComponent <NetSocket>();
        viewManager = GetComponent <NetViewManager>();
        zoneClient  = GetComponent <NetZoneClient>();

        zoneClient.OnZoneSetupSuccess          += ZoneSetupSuccessful;
        socket.Events.OnConnectedToServer      += ConnectedToServer;
        socket.Events.OnDisconnectedFromServer += DisconnectedFromServer;
        viewManager.OnNetViewCreated           += OnNetViewCreated;

        socket.StartSocket();
        socket.RegisterRpcListener(this);

        NetSerializer.Add <Item>(Item.Serialize, Item.Deserialize);
        NetSerializer.Add <Equip>(Item.Serialize, Item.Deserialize);

        socket.Connect(serverIps[serverIpIndex] + ":" + serverPort);
    }
Exemplo n.º 25
0
        public void Init()
        {
            _samplePacket = new SamplePacket
            {
                SomeFloat    = 3.42f,
                SomeIntArray = new[] { 6, 5, 4 },
                SomeString   = "Test String",
                SomeVector2  = new SomeVector2(4, 5),
                SomeVectors  = new[] { new SomeVector2(1, 2), new SomeVector2(3, 4) },
                SomeEnum     = TestEnum.B,
                TestObj      = new SampleNetSerializable {
                    Value = 5
                }
            };

            _serializer = new NetSerializer();
            _serializer.RegisterCustomType <SampleNetSerializable>();
            _serializer.RegisterCustomType(SomeVector2.Serialize, SomeVector2.Deserialize);
        }
Exemplo n.º 26
0
 internal void SerializeMessage(NetMessage message)
 {
     if (!NetSerializer.TryWriteMessage(unreliableStream, message))
     {
         if (retry)
         {
             NetLog.Warning("SerializeUnreliableMessage failed.");
             retry = false;
             return;
         }
         // Stream likely full, flush stream and retry serialization:
         retry = true;
         FlushStream();
         SerializeMessage(message);
     }
     if (retry)
     {
         retry = false;
     }
 }
        protected override void Serialize(NetSerializer s)
        {
            s.Write(this.initial);

            var data  = this.data;
            var count = data.Count;

            s.Write((byte)count);

            for (int i = 0; i < count; i++)
            {
                var d = data[i];
                s.Write(d.syncId);
                s.Write(d.prefabType);
                s.WriteExact(d.position);
                s.Write(d.rotation);
                s.Write(d.velocity);
                s.Write(d.angularVelocity);
            }
        }
    public static bool GetMessageFromData(byte[] messageData, out object message)
    {
#if DEBUG
        if (s_dataLogChannel.Active)
        {
            Log.Info(s_dataLogChannel, $"[{nameof(NetMessageInterpreter)}] Receive Message byte[{messageData.Length}]");
            DebugLogUtility.LogByteArray(s_dataLogChannel, messageData);
        }
#endif
        try
        {
            message = NetSerializer.Deserialize(messageData);
            return(true);
        }
        catch (Exception e)
        {
            message = null;
            Log.Error($"[{nameof(NetMessageInterpreter)}] Failed to deserialize Message. {e.Message} - {e.StackTrace}");
            return(false);
        }
    }
Exemplo n.º 29
0
        void Awake()
        {
            if (instance != null)
            {
                Destroy(gameObject);
            }

            instance = this;

            DontDestroyOnLoad(gameObject);

            Debug.Log("Starting Console Pro Server on port : " + port);

            _dataWriter = new NetDataWriter();
            _netServer  = new NetManager(this, 100, "ConsolePro");
            _netServer.Start(port);
            _netServer.DiscoveryEnabled = true;
            _netServer.UpdateTime       = 15;
            _netServer.MergeEnabled     = true;
            _netServer.NatPunchEnabled  = useNATPunch;
            _serializer = new NetSerializer();
        }
Exemplo n.º 30
0
    void Start()
    {
        socket         = GetComponent <NetSocket>();
        zoneManager    = GetComponent <NetZoneManager>();
        zoneServer     = GetComponent <NetZoneServer>();
        netViewManager = GetComponent <NetViewManager>();

        zoneServer.OnAssignment += AssignedToZone;

        socket.ProtocolAuthority = true;
        socket.AcceptConnections = true;
        socket.MaxConnections    = 512;

        socket.Events.OnPeerApproval       += PeerApproval;
        socket.Events.OnSocketStart        += SocketStart;
        socket.Events.OnFailedToConnect    += FailedToConnect;
        socket.Events.OnClientDisconnected += OnClientDisconnect;

        socket.StartSocket(ServerAddress + ":" + ServerPortRoot);
        socket.RegisterRpcListener(this);

        NetSerializer.Add <Item>(Item.Serialize, Item.Deserialize);
        NetSerializer.Add <Equip>(Item.Serialize, Item.Deserialize);
    }
Exemplo n.º 31
0
 /// <summary>
 /// Initializes a new instance of the <see cref="NETSerializer"/> class.
 /// </summary>
 /// <param name="serializer">The serializer.</param>
 public NETSerializer(NS.Serializer serializer) {
     _serializer = serializer;
 }
Exemplo n.º 32
0
 public NetTest(NS.Serializer serializer)
 {
     m_serializer = serializer;
 }
Exemplo n.º 33
0
        private void TestPerformance()
        {
            const int LoopLength = 100000;
            //Test serializer performance
            Stopwatch       stopwatch       = new Stopwatch();
            BinaryFormatter binaryFormatter = new BinaryFormatter();
            MemoryStream    memoryStream    = new MemoryStream();
            NetDataWriter   netDataWriter   = new NetDataWriter();

            SamplePacket samplePacket = new SamplePacket
            {
                SomeFloat    = 0.3f,
                SomeString   = "TEST",
                SomeIntArray = new [] { 1, 2, 3 },
                SomeVector2  = new SomeVector2(1, 2),
                SomeVectors  = new [] { new SomeVector2(3, 4), new SomeVector2(5, 6) }
            };

            NetSerializer netSerializer = new NetSerializer();

            netSerializer.RegisterCustomType <SampleNetSerializable>();
            netSerializer.RegisterCustomType(SomeVector2.Serialize, SomeVector2.Deserialize);

            //Prewarm cpu
            for (int i = 0; i < 10000000; i++)
            {
                double c = Math.Sin(i);
            }

            //Test binary formatter
            stopwatch.Start();
            for (int i = 0; i < LoopLength; i++)
            {
                binaryFormatter.Serialize(memoryStream, samplePacket);
            }
            stopwatch.Stop();
            Console.WriteLine("BinaryFormatter time: " + stopwatch.ElapsedMilliseconds + " ms");

            //Test NetSerializer
            stopwatch.Restart();
            for (int i = 0; i < LoopLength; i++)
            {
                netSerializer.Serialize(netDataWriter, samplePacket);
            }
            stopwatch.Stop();
            Console.WriteLine("NetSerializer first run time: " + stopwatch.ElapsedMilliseconds + " ms");

            //Test NetSerializer
            netDataWriter.Reset();
            stopwatch.Restart();
            for (int i = 0; i < LoopLength; i++)
            {
                netSerializer.Serialize(netDataWriter, samplePacket);
            }
            stopwatch.Stop();
            Console.WriteLine("NetSerializer second run time: " + stopwatch.ElapsedMilliseconds + " ms");

            //Test RAW
            netDataWriter.Reset();
            stopwatch.Restart();
            for (int i = 0; i < LoopLength; i++)
            {
                netDataWriter.Put(samplePacket.SomeFloat);
                netDataWriter.Put(samplePacket.SomeString);
                netDataWriter.PutArray(samplePacket.SomeIntArray);
                netDataWriter.Put(samplePacket.SomeVector2.X);
                netDataWriter.Put(samplePacket.SomeVector2.Y);
                netDataWriter.Put(samplePacket.SomeVectors.Length);
                for (int j = 0; j < samplePacket.SomeVectors.Length; j++)
                {
                    netDataWriter.Put(samplePacket.SomeVectors[j].X);
                    netDataWriter.Put(samplePacket.SomeVectors[j].Y);
                }
                netDataWriter.Put(samplePacket.EmptyString);
                netDataWriter.Put(samplePacket.TestObj.Value);
            }
            stopwatch.Stop();
            Console.WriteLine("DataWriter (raw put method calls) time: " + stopwatch.ElapsedMilliseconds + " ms");
        }
Exemplo n.º 34
0
		public MemStreamTest(NS.Serializer serializer)
		{
			m_serializer = serializer;
		}
Exemplo n.º 35
0
 public Tester(NS.Serializer serializer)
 {
     m_serializer = serializer;
 }