> For the complete documentation index, see [llms.txt](https://freedom-developer.gitbook.io/the-chess/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://freedom-developer.gitbook.io/the-chess/honorable-mentioned/the-architecture-notice.md).

# The Architecture Notice

There are few major note to take when it comes to architecture of this package.&#x20;

1. For every GUI classes must have one chess game logic dictating the underlying computation for "backend job", the GUI classes are mainly responsible for Unity stuff such as manipulating UI and Game Object while chess game logic is responsible for CPU computational work and chess related stuff. This design is made to decouple from various aspect while maximize code reusability.
2. Every new extension to any inheritence of GUI classes, if is calling any functions to the game logic(ChessGameBase class and all of its inheritence), has to use Game instead of game variable as Game variable has auto boxing conversion to its intended inheritence level for every function calls.
3. For all GUI classes, InitializeChessGameInstance(ChessGameInitializeInfo) function has been prepared for initializing chess game logic, for gameInitInfo variable to have their instance remain as state for when restarting a game etc. Just for a more organized and cleaner code. It is recomended to use or override the function for every game logic initialization.
4. Every new extension to any inheritence of GUI classes is forbidden to instantiate game logic that is not the exact class of the Game variable has to offer as it will easily cause bug. However, override Game variable to a higher inheritence than of it's parent GUI class is possible, but never for a lower inheritence level. For example, see image below.

<figure><img src="/files/BG5McPc7f3KqhzysMNGa" alt=""><figcaption></figcaption></figure>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## 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, and the optional `goal` query parameter:

```
GET https://freedom-developer.gitbook.io/the-chess/honorable-mentioned/the-architecture-notice.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
