# Further information about the TournamentAssistant Client

- As stated many times previously, TournamentAssistant uses ProtoBuf. ProtoBuf is a data serialiser which allows TA to transport smaller packets. This is essential since all of the live scores are sent to all of the clients who subscribe to it etc.

- The connection to the TA Core Server is a websocket connection. If you wish, you can opt not to use the provided client, however it is strongly advised against due to serialisation.

- Beware that the coordinator(or the client in other words) connects to a different port on the server than the player playing, hence it is not possible to directly listen to packets from players. (Unless a feature uses this, more on this later, especially during the handlin of realtime-scores)

- TournamentAssistant does not *yet* support hosting your own Core Server in order to reduce complications for players and developers alike.

## StateManager

TournamentAssistant is a state-based application. This means that when you join a tournament you are not "fetching" the tournament info, rather you are pulling it from the state. It is often much more efficient to use taClient.stateManager rather then waiting for a response from the server. 

When you initiate the websocket connection, the initial state of the core server is passed on. This is sanitised data and the tournament which should be hidden will not be passed on here. Once this data is deserialised, it is stored and updated in the stateManager.

You might also notice that the stateManager is the only way to fetch tournament info etc. This is again done to ease development and redice server load.

<div class="warning-box">
    <span class="material-icons">question_mark</span>
    <div>
        <strong>Will the stateManager be out-of-date?</strong> The stateManager automatically updates its state when a packet is received or sent, so no, you do not have to worry about out-of-date information being stored.
    </div>
</div>