State variables are one of the core aspects of THNK. A state variable is the idiomatic way to send data to clients in THNK, and important to master to create a game.
Types of state variables
There are currently 2 types of state variables: public state and player state.
Public state is simply state variables shared with all clients: it is intended for public data. The public state variable is named
State on both server and client.
Player state is synchronized with a single player: it is intended for player-specific private data.
On the clients, your own player state can be accessed directly via the
On the server, a player's state variable can be gotten as a child of
PlayerState named after the player's ID: for example, if a player has ID
a, then you can get their player state variable as
PlayerState.a. You'll usually want to use
PlayerState[THNK::PickedPlayer()] to get the current player's state variable.
This is subject to breaking changes,
PlayerState might become simply the currently picked player's state variable in the future.
Usage of state variables
Using a state variable is simple: a state variable is simply a special type of structure variable. You can simply use any child variable of it as a normal GDevelop variable, and it'll be automatically synchronized on the client's side.
For example, one could make a chat system by appending strings to the array variable
State.Messages, then on the client side, reading this variable and displaying all messages in this array.