Hi New transport release has been published (based on 5.4.4f1 version) http://beta.unity3d.com/download/42a153a956a9/public_download.html The changes are: 0. few small bug fixes 1. ConnectonConfig.IsAckLong parameter doesn't exist anymore, instead there is new parameter ConnectionConfig.AcksType which can be set to kAcks32, kAcks64, kAcks96, or kAcks128 so now buffer for reliable messages can contain 32, 64, 96, or 128 bits. (I would recommend to start from 32 and only if you expect difficulties with sending increase this parameter) 2. Experimental wss support (web sockets via ssl) For confguration you should set following parameters in ConnectionConfig for web socket server: SSLCertFilepath SSLPrivateKeyFilepath SSLCAFilepath -> could be null n this case certificate won't validate I tested the last one with self-signed certificate and looks like everything works. Hence, im not sure that I cover all use cases. So if you fill that we need to implement something else, ping me please. ========================================= Hi guys two news 1. New transport will be officially realised in 5.6 2. the new version based on 5.4.3.f1 has been deployed http://beta.unity3d.com/download/09aaef432c71/public_download.html It contains new statistical functions and batch sending: int GetIncomingMessageQueueSize ( hostId ) -- how many messages waiting for consuming (for host) int GetOutgoingMessageQueueSize ( hodtId ) -- how many messages waiting for sending (for host) int GetCurrentRTT ( int hostId, int connectionId, out byte error ) - current round trip time measured in the last ping period, NOT AWERAGED (per connection) int GetIncommingPacketLoss -- ( int hostId, int connectionId, out byte error ) - how many incoming packet was lost in network (network packet drop count) int GetIncommingPacketCount ( int hostId, int connectionId, out byte error ) -- how many packets have been sending to us (including lost packet): (for ex: from the start was sent 200 packets, where 10 packet was lost in transmitting) int GetOutgoingPacketNetworkLostPercent ( int hostId, int connectionId, out byte error ) -- how many outgoing packet was lost in transmitting (I have sent 100 packet to somebody, 5% of them was lost while transmitting) int GetOutgoingPacketOverflowLostPercent ( int hostId, int connectionId, out byte error ) -- how many outgoing packet was lost due incoming queue overfull (I have sent 100 packets, 7% of them was dropped by peer, because it has not get resources to handle them) int GetMaxAllowedBandwidth ( int hostId, int connectionId, out byte error ) -- what is the current allowed bandwidth. (Initially I set up 1 MB per sec, but due big % overfull packet loss, library changed this value to 500kB/sec; 500kb/sec == MaxAllowedBandwidth) int GetAckBufferCount( int hostId, int connectionId, out byte error ) -- how many slots in Acknowledged bugger have been occupied (my buffer size has 32 slots, current size is 31, most probably if i will send 2 reliable messages, second one will not send, or, my AckBufferCountpersistently about 31, and I periodically get false while I send something -> I need change isAckLong to true ) int GetIncomingPacketCountForAllHosts( ) -- how many incoming packet was dropped due lack space in incoming queue (I receive 100 packet per sec, while read only one per sec, in 10 sec I will receive 1000 packets where 990 will be dropped) int GetIncommingPacketCountForAllHosts () -- how many incoming packets I received (so far: from game start I received 100000 packets) (see this function name is not correlated with GetIncomingPacketDropNumber() name and possible should be changed) bool QueueMessageForSending( int hostId, int connectionId, int channelId, byte buffer, int size, out byte error ) -- allow user to define when messages will be really sent out. By setting SendDelay to 0 and use this function, you can queue couple of messages for sending and then send all of them in the moment when you really want. For example once per frame. This function insert messages in outgoing queue but don't really send bool SendQueuedMessages( int hostId, int connectionId, out byte error ) -- this function really send messages, queued by SendBatched() function =============== Hi guys the new version based on 5.4.2f2 has been deployed http://beta.unity3d.com/download/ef3438090685/public_download.html It contains following fixes: 1. Clean interface for websocket, now you can call AddWebsocketHost( ..., port, ...) if port != 0 host can use for passive and active connecting (port will be listening port) if port == 0, host can used for active connection only 2. Fixed bug with pool configuration 3. Fixed websocket bug when webgl can connect only to one host =============== Hi guys We have got news for you (But I’m not sure that news is exiting). We have prepared an experimental build based on Unity 5.4.1p3 with a new multiplayer transport/library, which we’ll make available in the future release. http://beta.unity3d.com/download/3966fa18f3c5/public_download.html It contains the following changes with previous release: Improved protocol Now, all reliable messages in packets will be combined in one, so with isAskLong = true, and frame rate 60 packet per sec you can sends messages without any headache up to connection with rtt = 1s. Message headers are significantly reduced, in many cases it is up to a 100% reduction Send improving, with this release we can handle much more connection without performance degradation. When you call send you can expect that message will “almost” immediately will fired out. “Almost” means that there are 3 parameters that affect this process: GlobalConfig.ThreadAwakeTimeout (default value: 1ms), will regulate how often library will provide send operations ConnectionConfig.SendDelay (default value: 10 ms) defines how long library will wait for the next message before will send previous. It is useful to combine some messages in one packet. Bandwidth (see next section) if you exceed your bandwidth, message will wait before corresponding bandwidth will be available. Bandwidth based flow control. In previous release used bandwidth could be calculated as packetSize*MinUpdateTimeout. In current library user can set up initial bandwidth by using ConnectionConfig.InitialBandwidth property (default value: 100mb/sec). Note: if your peer won’t have resources to handle this bandwidth it will reduced automatically by flow control mechanism. Threading. For server platform (MacOS, Win and Linux) user can set how many worker threads will handle network related data (combine messages to packetd, extract messages from packets and so on) using GlobalConfig.ThreadPoolSize property. This improvement allow you to handle much more connections per server than before. Experimental support for client web sockets: In previous version server platforms could host web socket server, now these platforms can not only be a web socket serer but they can active open web socket connection to another web socket server. After adding web socket host with function webSocketHostId = NetworkTransport.AddWebsocketHost() you can use NetworkTransport.Connect() function with webSocketHostId. This way Mac/Win/Linux can play with WebGL players. You can run this build with your multiplayer projects without needing to make any changes to use these new improvements.