> For the complete documentation index, see [llms.txt](https://infinitypbr.gitbook.io/magic-pig-games/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://infinitypbr.gitbook.io/magic-pig-games/game-modules-4/module-documentation/blackboard/blackboard.cs.md).

# Blackboard.cs

v4.0

{% hint style="success" %}
Add the "Blackboard" prefab from the Repositories folder to your project. The `Blackboard.cs` component is already attached here.
{% endhint %}

The Blackboard component is the central hub for all of the **Blackboard** actions. Add this to the top of any script which utilizes it:

```csharp
using static InfinityPBR.Modules.MainBlackboard;
```

{% code overflow="wrap" %}

```csharp
// Refer to Blackboard Note, Blackboard Event, and Blackboard Values for additional code references.

// Obtaining a specific value from a Blackboard Note
GameStat gameStat = Blackboard.ValueGameStat(topic, subject);

// Doing something with a specific value from a Blackboard Note
public float FloatValue => Blackboard.ValueFloat(topic, subject);
DoSomeMathWithAFloat(FloatValue);
```

{% endcode %}

{% hint style="success" %}
The best way to interact with the **Blackboard** is to have your class [inherit from `BlackboardFollower`](/magic-pig-games/game-modules-4/module-documentation/blackboard/blackboard-follower.md), which will automatically subscribe and unsubscribe it to event and note notifications. All you have to do is override the methods so you can choose how to handle the notifications as they come in.
{% endhint %}

{% hint style="info" %}
**Timeboard**

The **Gametime** module has a `Timeboard` object which has it's own **Blackboard**. It is used to send information out, and also keep track of time without requiring objects to access the `Gametime` data directly. Check it out to see how it talks with its blackboard object.
{% endhint %}
