# Getting Started

A blackboard is a data structure that provides a simple way to share information between different parts of a program. The blackboard is a common design pattern in artificial intelligence programming.

This blackboard uses source generators to generate typed code for your custom blackboard, based on very simple definitions in your code.

Each data value is stored as a `Signal`. This is a very small (typed) class that holds a specific value. The signal also contains events that are called when the value changes.

{% hint style="warning" %}
This package requires the use of Assembly Definitions. Make sure you understand them and know how to prevent circular dependencies before buying.
{% endhint %}

## Getting Started

It is advised to read through this readme in order to understand the inner workings of this system. In the examples folder there are multiple example/demo's set up. Please make sure to select the "Blackboard" GameObject in each scene and view the associated scripts. Comments and explanations are within the code.

## Read More

{% content-ref url="concepts/blackboard" %}
[blackboard](https://blackboard.crashkonijn.com/concepts/blackboard)
{% endcontent-ref %}

{% content-ref url="concepts/signals" %}
[signals](https://blackboard.crashkonijn.com/concepts/signals)
{% endcontent-ref %}

{% content-ref url="concepts/saving\_loading" %}
[saving\_loading](https://blackboard.crashkonijn.com/concepts/saving_loading)
{% endcontent-ref %}

{% content-ref url="concepts/validations" %}
[validations](https://blackboard.crashkonijn.com/concepts/validations)
{% endcontent-ref %}

{% content-ref url="concepts/source\_generators" %}
[source\_generators](https://blackboard.crashkonijn.com/concepts/source_generators)
{% endcontent-ref %}

{% content-ref url="examples" %}
[examples](https://blackboard.crashkonijn.com/examples)
{% endcontent-ref %}

{% content-ref url="faq" %}
[faq](https://blackboard.crashkonijn.com/faq)
{% endcontent-ref %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://blackboard.crashkonijn.com/readme.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
