BSX Introduction

BSX is based on two fundamental ideas:

  • Polygons are used to describe scenes and objects
  • A 2-step protocol is used to 1) transfer and 2) show the graphics

Polygons as descriptions

Polygons are encoded as strings of hexadecimal numbers. That means, 2 octets are used to encode one byte. Although that effectively doubles the transfer amount, it allows to interpret and manipulate the strings easily.

Two steps in communication

In the beginning the server tells the client what objects and scenes to show, to manipulate or even to hide by sending special byte sequences. The interpreter removes that sequences and thus hides that part from the user (unless it's in a debugging state during development).

If the client does not know the polygons of the object it asks the server by sending a special byte sequence on it's own. That sequence resembles a normal command from the user to the server and get's interpreted as such. The server replies with the polygons encoded as said above and prepends a special byte sequence.

Whenever a new session is established the client does not know any polygons before-hand. (Although there is a possibility to store data between sessions but several issues prevent that as discussed in BSX Remarks.) As a consequence a large part of client-server communication at the start of a session is due transmission of polygons. The longer the session is carried on and the more the objects and their polygons are reencountered the smaller that part becomes.