Complete.Org: Mailing Lists: Archives: freeciv-dev: March 2006:
[Freeciv-Dev] Re: Packet format question
Home

[Freeciv-Dev] Re: Packet format question

[Top] [All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index] [Thread Index]
To: Forrest Sondahl <forrest@xxxxxxxxxxxxxxxx>
Cc: freeciv-dev@xxxxxxxxxxx
Subject: [Freeciv-Dev] Re: Packet format question
From: Jason Dorje Short <jdorje@xxxxxxxxxxxx>
Date: Mon, 06 Mar 2006 18:34:40 -0500

Forrest Sondahl wrote:
I'm a graduate student, involved in a project to develop a
general-purpose strategic game-playing AI.  We have some Java code
that reads the "packets" from a Freeciv server (version 2.0.1, for
reasons I won't go into...), and it works for a lot of the packets,
but it keeps choking on certain packets -- so maybe I'm not
understanding the delta compression, or something else..

Here's an example packet, which our program fails to read, given as 8
bytes, printed in decimal.

0 8 39 4 8 0 1 0

0 8 - This is always the length of the packet, right?
39 - This is the packet id -- a PLAYER_INFO packet.
4 8 0 1  - I thought these bytes represented the delta-header
Which would be a string of 31 bits:
00000100 00001000 00000000 00000001

Which suggests that there are three fields being sent in this packet. But there is only one more byte, which is a 0.

At first I thought perhaps the packet was malformed, but I see these
(and similar packets) rather frequently, there must be something about
the format that I'm not understanding.  It happens most often on
PLAYER_INFO packets, but also some others...

Any help that anyone can give me would be most appreciated.

Also, if anyone could point me to some documentation or discussion
about how arrays are sent as "diffs" in the packets, that would be
most helpful...

None of the current developers really knows much about the delta packet code, so we can't easily answer your questions.

I can refer you to the documentation and the source however:

  doc/README.delta
  common/packets.def
  common/generate_packets.py
  common/packets.c

-jason



[Prev in Thread] Current Thread [Next in Thread]