Hello everyone,
After a long meeting with Lee we have discussed/decided on the following
things about tp04. The agenda as it follows,
- Protocol XML
- Protocol "Filter" Negotiation
- EOT Notification
- Media/Media URL
- Difference Support
- Frame type versioning
- Object Parametrisation
- Async Frames
- History Support
- Last Seen support
- Setables
- Game Frames/Virtual Hosting
The meeting minutes are as follows,
* Protocol XML
The protocol XML will be moved to it's own repository. The documentation
for the protocol will be generated from the protocol XML. The XML will
be the official source.
* Protocol "Filter" Negotiation
Filter negotiation will be performed in the following way.
- Extra Id's will be added to the features frame to add different
filters.
- The client will choose which filters are used.
- Server has "right of refusal".
- Filter negotiation can not be pipelined.
- New "Set Filters" frame will be created.
An example session would be as follows,
Client -- connect -----> Server
<- okay ---------
-- get features >
<-- features ----
-- set filters ->
<-- okay --------
--- filters are activated here ---
If SSL filter is used it should always be the outer most filter.
* EOT Notification
A new frame will be added to allow clients to request that a turn be
ended. The Time Remaining frame will had a new field added which
explains why this Time Remaining frame was sent.
This should allow the following cases,
- EOT when everyone finished.
- EOT at timeout.
- EOT after short timeout when majority finished.
For example, say 6 players are playing. After 4 players submit
"Finished" frames, the other players get a "Time Remaining frame" with,
say, 2 minutes left and an ID which says "All other players finished".
* Media
The Game frame will be extended to have a "base media" URL. All other
media URL that are sent will be relative to this URL.
Each media server will provide a "media.gz" which includes a file
listing as follows
<filename> <size> <last modtime> <checksum>
URLs will not specify the file type. It is up to the client to choose
the file type. (For example PNG, MNG, etc)
* Difference support
The Get ID's frames will have a "from" field added. This is a SInt64
which is the timestamp to get changes from. If it is -1 then it should
be all objects.
It is important to note that the Get ID's frame when called with a valid
time stamp, the server should send ID's for objects which may have been
destroyed or no longer exist.
* Frame type Versioning
The TP03 header will be changed to a "TP<major byte><minor byte>". The
major byte is the version of the protocol (for example 1, 2, 3, 4).
Minor byte is the minor revision of the frame. As new versions of frames
are added the minor byte will be incremented. (They all start at zero.)
A frame will not change in an non-backwards compatible way within a
major protocol.
* Object Parametrisation/Last seen
It was decided that Last seen ended up to not be needed on anything
except objects. The new Object parametrisation (as describe in other
emails) includes support for Last Seen.
One important property is the Order Queue.
Order Queue's will have their own ID which the Order frames will now
refer to (instead of using Object ID's). For this to be backwards
compatible the default order queue will always have the same ID as the
Object ID.
Properties will be grouped.
* History Support
History support will wait till tp05.
* Settable information
Object settable information will be done by sending the full object to
be consistent with other things such as Designs and Orders. The object
parametrisation will describe if fields are user modifiable.
* Virtual Hosting/Game Frames
A new "Get Games" frame will exist. This will return the same frames
which the metaserver currently returns.
Virtual Hosting support will use the current @ system. Servers which
only support one game should ignore everything after the first @.
* Async Frames
If something changes on the server is can send a frame at any time
saying so. This is mainly used when a creating a Design might add a new
component. (For example, creating a new Torpedo design would create a
new Torpedo design.)
* Research / Technology Frames
A new frame will be added which describes things which can be
researched. The standard get ids, etc frames will be added for these
objects. This frame will have at least the following,
- Name
- Description
- Generic Reference System List of things which this technology brings
Each technology which describe which technology it depends on and which
technology is an anti-dependency. How these dependencies are described
is yet to be figured out.
Tim Ansell
_______________________________________________
tp-devel mailing list
[email protected]
http://www.thousandparsec.net/tp/mailman.php/listinfo/tp-devel