SOLVED. I JUST HAD TO REGISTER CLASSES BEFORE STARTING THE SERVER AND CLIENT.
How are you?
I’m trying to do some networking stuff for my new project (yes, another one). What i’m trying to do is to create a client and a server (of course) and link them together. In my game i have the map made of chunks (made of tiles) that are sent (in a 3x3 area around the player) by the server at player connection, and then they (only the chunks that are needed) are sent only when the player moves.
The ploblem i have is that the client simply doesn’t want to get the chunks. It throws this:
Exception in thread "Client" com.esotericsoftware.kryonet.KryoNetException: Error during deserialization.
at com.esotericsoftware.kryonet.TcpConnection.readObject(TcpConnection.java:141)
at com.esotericsoftware.kryonet.Client.update(Client.java:239)
at com.esotericsoftware.kryonet.Client.run(Client.java:317)
at java.lang.Thread.run(Thread.java:722)
Caused by: com.esotericsoftware.kryo.KryoException: Encountered unregistered class ID: 14
at com.esotericsoftware.kryo.util.DefaultClassResolver.readClass(DefaultClassResolver.java:113)
at com.esotericsoftware.kryo.Kryo.readClass(Kryo.java:613)
at com.esotericsoftware.kryo.Kryo.readClassAndObject(Kryo.java:724)
at com.esotericsoftware.kryonet.KryoSerialization.read(KryoSerialization.java:57)
at com.esotericsoftware.kryonet.TcpConnection.readObject(TcpConnection.java:139)
... 3 more
I don’t really send the Chunk object, but a Package of what is important of them: position and a byte[] representing the tiles.
Here is my “PackageManager” class:
public abstract class PacketManager {
public static final int TCP_PORT = 54555;
public static final int UDP_PORT = 54777;
public static void register(EndPoint endPoint) {
Kryo kryo = endPoint.getKryo();
kryo.register(ChunkPacket.class);
kryo.register(byte[].class);
}
public static class ChunkPacket {
public long chunkX, chunkY;
public byte[] tiles;
}
}