Skip to content

Commit 5b93b04

Browse files
Merge pull request #3 from AncientEntity/customserialization
Serialization Redone, Message speed improvements and more.
2 parents ea3caed + cf4b36b commit 5b93b04

20 files changed

+777
-138
lines changed
29 KB
Binary file not shown.
1000 KB
Binary file not shown.
0 Bytes
Binary file not shown.
410 KB
Binary file not shown.

Assembly-CSharp.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,7 @@
7777
<Compile Include="Assets\EntityNetworkingSystems\Scripts\Steam\SteamInteraction.cs" />
7878
<Compile Include="Assets\EntityNetworkingSystems\Scripts\UnityPacketHandler.cs" />
7979
<Compile Include="Assets\EntityNetworkingSystems\Scripts\Utilities\Animation\AnimationNetworker.cs" />
80+
<Compile Include="Assets\EntityNetworkingSystems\Scripts\Utilities\ENSSerialization.cs" />
8081
<Compile Include="Assets\EntityNetworkingSystems\Scripts\Utilities\ENSUtils.cs" />
8182
<None Include="Assets\EntityNetworkingSystems\Plugins\Facepunch.Steamworks\Facepunch.Steamworks.Posix.xml" />
8283
<None Include="Assets\EntityNetworkingSystems\Plugins\Facepunch.Steamworks\Facepunch.Steamworks.Win64.xml" />

Assets/EntityNetworkingSystems/Examples/Scenes/TestScene.unity

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1461,6 +1461,11 @@ PrefabInstance:
14611461
propertyPath: netClient.connectedToServer
14621462
value: 0
14631463
objectReference: {fileID: 0}
1464+
- target: {fileID: 7745350244653862989, guid: 02188897ea456634dbc92f4ced9a9f72,
1465+
type: 3}
1466+
propertyPath: netClient.trackOverhead
1467+
value: 1
1468+
objectReference: {fileID: 0}
14641469
- target: {fileID: 7745350244653862990, guid: 02188897ea456634dbc92f4ced9a9f72,
14651470
type: 3}
14661471
propertyPath: m_Name

Assets/EntityNetworkingSystems/Examples/Scripts/ExampleMoving.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,5 +20,9 @@ void Update()
2020
{
2121
return;
2222
}
23+
//if(net.IsOwner() && Input.GetKey(KeyCode.J))
24+
//{
25+
// net.UpdateField("ENS_Position",)
26+
//}
2327
}
2428
}

Assets/EntityNetworkingSystems/Scripts/NetBackbone/NetClient.cs

Lines changed: 38 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,12 @@ public class NetClient
2727

2828
public bool useSteamworks = false;
2929
public int steamAppID = -1; //If -1 it wont initialize and you'll need to do it somewhere else :)
30+
#if UNITY_EDITOR
31+
[Space]
32+
public bool trackOverhead = false;
33+
public Packet.pType overheadFilter = Packet.pType.unassigned;
34+
public string packetByteLength = "";
35+
#endif
3036

3137
public void Initialize()
3238
{
@@ -109,9 +115,9 @@ public void ConnectToSingleplayer()
109115

110116
NetServer.serverInstance.connections.Add(player);
111117

112-
PlayerLoginData pLD = new PlayerLoginData();
113-
pLD.playerNetworkID = 0;
114-
Packet loginPacket = new Packet(Packet.pType.loginInfo, Packet.sendType.nonbuffered, pLD);
118+
//PlayerLoginData pLD = new PlayerLoginData();
119+
//pLD.playerNetworkID = 0;
120+
Packet loginPacket = new Packet(Packet.pType.loginInfo, Packet.sendType.nonbuffered, System.BitConverter.GetBytes((short)0));
115121
loginPacket.packetOwnerID = -1;
116122
loginPacket.sendToAll = false;
117123
NetServer.serverInstance.SendPacket(player, loginPacket);
@@ -234,9 +240,17 @@ public void SendPacket(Packet packet)//, bool queuedPacket = false)
234240
lock (netStream){
235241
lock (client)
236242
{
237-
byte[] array = Encoding.ASCII.GetBytes(Packet.JsonifyPacket(packet));//Packet.SerializeObject(packet);
238-
239-
243+
byte[] array = ENSSerialization.SerializePacket(packet);//Packet.SerializeObject(packet);
244+
#if UNITY_EDITOR
245+
if (trackOverhead)
246+
{
247+
if (overheadFilter == Packet.pType.unassigned || overheadFilter == packet.packetType)
248+
{
249+
packetByteLength = packetByteLength + array.Length + ",";
250+
//Debug.Log("JustData: " + packet.packetData.Length + ", All: " + array.Length);
251+
}
252+
}
253+
#endif
240254
//First send packet size
241255
byte[] arraySize = new byte[4];
242256
arraySize = System.BitConverter.GetBytes(array.Length);
@@ -273,9 +287,24 @@ public Packet RecvPacket()
273287
//Get packet
274288
byte[] byteMessage = new byte[pSize];
275289
byteMessage = RecieveSizeSpecificData(pSize, netStream);
276-
//netStream.Read(byteMessage, 0, byteMessage.Length);
277-
//Debug.Log(Encoding.ASCII.GetString(byteMessage));
278-
return Packet.DeJsonifyPacket(Encoding.ASCII.GetString(byteMessage));//(Packet)Packet.DeserializeObject(byteMessage);
290+
291+
292+
#if UNITY_EDITOR
293+
Packet finalPacket = ENSSerialization.DeserializePacket(byteMessage);
294+
295+
if (trackOverhead)
296+
{
297+
if(overheadFilter == Packet.pType.unassigned || overheadFilter == finalPacket.packetType)
298+
{
299+
packetByteLength = packetByteLength + pSize + ",";
300+
//Debug.Log("JustData: " + finalPacket.packetData.Length + ", All: " + byteMessage.Length);
301+
}
302+
303+
}
304+
return finalPacket;
305+
#else
306+
return ENSSerialization.DeserializePacket(byteMessage);//Packet.DeJsonifyPacket(Encoding.ASCII.GetString(byteMessage));//(Packet)Packet.DeserializeObject(byteMessage);
307+
#endif
279308
}
280309

281310

Assets/EntityNetworkingSystems/Scripts/NetBackbone/NetServer.cs

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -234,7 +234,7 @@ public void ClientHandler(NetworkPlayer client)
234234
if (p.packetType == Packet.pType.steamAuth)
235235
{
236236
//Debug.Log(p.jsonData);
237-
clientSteamAuthTicket = (SteamAuthPacket)p.GetPacketData();
237+
clientSteamAuthTicket = p.GetPacketData<SteamAuthPacket>();
238238
client.steamID = clientSteamAuthTicket.steamID;
239239

240240
Thread.Sleep(1500); //Wait for steam to authenticate it. Will take around this time. Probably should add x attempts over a few seconds.
@@ -265,9 +265,9 @@ public void ClientHandler(NetworkPlayer client)
265265

266266
//Thread.Sleep(100);
267267
//Send login info
268-
PlayerLoginData pLD = new PlayerLoginData();
269-
pLD.playerNetworkID = client.clientID;
270-
Packet loginPacket = new Packet(Packet.pType.loginInfo, Packet.sendType.nonbuffered, pLD);
268+
//PlayerLoginData pLD = new PlayerLoginData();
269+
//pLD.playerNetworkID = client.clientID;
270+
Packet loginPacket = new Packet(Packet.pType.loginInfo, Packet.sendType.nonbuffered, System.BitConverter.GetBytes((short)client.clientID));
271271
loginPacket.packetOwnerID = -1;
272272
loginPacket.sendToAll = false;
273273
SendPacket(client, loginPacket);
@@ -297,7 +297,7 @@ public void ClientHandler(NetworkPlayer client)
297297
foreach (Packet p in packetsToSend)
298298
{
299299
tempPackets.Add(p);
300-
if (tempPackets.Count >= 60)
300+
if (tempPackets.Count >= 100)
301301
{
302302
Packet multiPack = new Packet(Packet.pType.multiPacket, Packet.sendType.nonbuffered, new PacketListPacket(tempPackets));
303303
multiPack.sendToAll = false;
@@ -348,9 +348,9 @@ public void ClientHandler(NetworkPlayer client)
348348

349349
if(pack.packetType == Packet.pType.rpc)
350350
{
351-
RPCPacketData rPD = (RPCPacketData)pack.GetPacketData();
351+
RPCPacketData rPD = ENSSerialization.DeserializeRPCPacketData(pack.packetData);
352352
rPD.packetOwnerID = client.clientID;
353-
pack.SetPacketData(rPD);
353+
pack.packetData = ENSSerialization.SerializeRPCPacketData(rPD);
354354
}
355355

356356
if (pack.packetSendType == Packet.sendType.buffered || pack.packetSendType == Packet.sendType.culledbuffered)
@@ -369,14 +369,14 @@ public void ClientHandler(NetworkPlayer client)
369369
if (buff.packetType == Packet.pType.netVarEdit)
370370
{
371371

372-
if (((NetworkFieldPacket)buff.GetPacketData()).fieldName == ((NetworkFieldPacket)pack.GetPacketData()).fieldName)
372+
if (buff.GetPacketData<NetworkFieldPacket>().fieldName == pack.GetPacketData<NetworkField>().fieldName)
373373
{
374374
bufferedPackets.Remove(buff);
375375
}
376376
}
377377
else if (buff.packetType == Packet.pType.rpc)
378378
{
379-
if (((RPCPacketData)buff.GetPacketData()).rpcIndex == ((RPCPacketData)pack.GetPacketData()).rpcIndex)
379+
if (buff.GetPacketData<RPCPacketData>().rpcIndex == pack.GetPacketData<RPCPacketData>().rpcIndex)
380380
{
381381
bufferedPackets.Remove(buff);
382382
}
@@ -471,7 +471,7 @@ public void SendPacket(NetworkPlayer player, Packet packet)//, bool queuedPacket
471471
{
472472
lock (player.tcpClient)
473473
{
474-
byte[] array = Encoding.ASCII.GetBytes(Packet.JsonifyPacket(packet));//Packet.SerializeObject(packet);
474+
byte[] array = ENSSerialization.SerializePacket(packet);//Encoding.ASCII.GetBytes(Packet.JsonifyPacket(packet));//Packet.SerializeObject(packet);
475475

476476
//First send packet size
477477
byte[] arraySize = new byte[4];
@@ -501,7 +501,7 @@ public Packet RecvPacket(NetworkPlayer player)
501501
player.tcpClient.ReceiveBufferSize = pSize;
502502
byteMessage = RecieveSizeSpecificData(pSize, player.netStream);
503503
//player.netStream.Read(byteMessage, 0, byteMessage.Length);
504-
return Packet.DeJsonifyPacket(Encoding.ASCII.GetString(byteMessage));//(Packet)Packet.DeserializeObject(byteMessage);
504+
return ENSSerialization.DeserializePacket(byteMessage); //Packet.DeJsonifyPacket(Encoding.ASCII.GetString(byteMessage));//(Packet)Packet.DeserializeObject(byteMessage);
505505
}
506506

507507
byte[] RecieveSizeSpecificData(int byteCountToGet, NetworkStream netStream)
@@ -574,6 +574,10 @@ public NetworkPlayer GetPlayerByID(int id)
574574
return null;
575575
}
576576

577+
public Thread GetServerThread()
578+
{
579+
return connectionHandler;
580+
}
577581

578582
}
579583

@@ -603,4 +607,5 @@ public NetworkPlayer(TcpClient client)
603607

604608
}
605609

610+
606611
}

Assets/EntityNetworkingSystems/Scripts/NetBackbone/NetTools.cs

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -60,9 +60,7 @@ public static GameObject NetInstantiate(int prefabDomain, int prefabID, Vector3
6060
gOID.netObjID = netObjID;
6161
gOID.fieldDefaults = fieldDefaults;
6262

63-
Packet p = new Packet(gOID);
64-
p.packetType = Packet.pType.gOInstantiate;
65-
p.packetSendType = sT;
63+
Packet p = new Packet(Packet.pType.gOInstantiate,Packet.sendType.buffered,ENSSerialization.SerializeGOID(gOID));
6664

6765

6866
//if(sT == Packet.sendType.buffered && isServer)
@@ -136,7 +134,7 @@ public static void NetDestroy(int netID, Packet.sendType sT = Packet.sendType.bu
136134
{
137135
//Destroy(netObj.gameObject);
138136

139-
Packet p = new Packet(Packet.pType.gODestroy, sT, netObj.networkID);
137+
Packet p = new Packet(Packet.pType.gODestroy, sT, new byte[0]);
140138
p.relatesToNetObjID = netID;
141139
p.packetOwnerID = clientID;
142140
NetClient.instanceClient.SendPacket(p);

0 commit comments

Comments
 (0)