Researching Blackboards

"a[sic] blackboard system is composed of three main components: the blackboard, a set of knowledge sources (KSs), and a control mechanism" (Carver and Lesser, 1994) although over the years the blackboard system has evolved and "many times no arbiter is used" (Isla and Bumberg, 1980) where the arbiter is the control system, that (Carver and Lesser, 1994) describes.

The blackboard model has proven to be popular for AI problems outside of games artificial intelligence (AI) and within, however, within games AI "blackboards are commonly used with behavior[sic] trees" (Broder, 2014) although they can be used without a behaviour tree.  Blackboards are a place where data can be stored and read by agents within a game world.  Agents can have their own independent blackboard, a global blackboard can be used or both.

As mentioned above, blackboards can be used to store data after a calculation.  This can help with performance as it will not need to be calculated again (unless there is a change).  This data can then be accessed by any system (or agent) that has access to the blackboard without having to calculate it, itself.  This doubles up as "a nice way to centralize[sic] data and remove the need for extra knowledge about where that data comes from" (Broder, 2014) for example stealth based AI might update a global blackboard with the player's position once spotted, then any AI that need to know this information can access it and know where the player is (simulating the AI signalling for backup over a walkie-talkie).

Using a blackboard and keeping data that needs to be shared in a centralised place helps to keep code clean and ensures encapsulation which is "used to hide the values or state of a structured data object inside a class, preventing unauthorized[sic] parties' direct access to them" (En.wikipedia.org, n.d.)

Reference List
[1] Broder, D. (2014). Blackboard Documentation - Unreal Engine Forums. [online] Unreal Engine Forums. Available at: https://forums.unrealengine.com/development-discussion/blueprint-visual-scripting/2138-blackboard-documentation?2004-Blackboard-Documentation= [Accessed 11 Mar. 2019].
[2] Carver, N. and Lesser, V. (1994). Evolution of blackboard control architectures. Expert Systems with Applications, 7(1), pp.1-30.
[3] Francis, A. (2015) “Overcoming Pitfalls in Behavior Tree Design” in Game AI Pro 2, edited by Steve Rabin. Boca Raton, FL: CRC Press 2015, pp. 123-124.
[4] Isla, D. and Blumberg, B. (1980) “Blackboard Architectures” in Programming Game AI Wisdom, edited by Steve Rabin. pp. 333-344.
[5] En.wikipedia.org. (n.d.). Encapsulation (computer programming). [online] Available at: https://en.wikipedia.org/wiki/Encapsulation_(computer_programming) [Accessed 10 Mar. 2019].
[6] Py-trees.readthedocs.io. (n.d.). Blackboards — py_trees 1.2.0 documentation. [online] Available at: https://py-trees.readthedocs.io/en/devel/blackboards.html [Accessed 10 Mar. 2019].
[7] Rudenko, D. and Borisov, A. (2007). AN OVERVIEW OF BLACKBOARD ARCHITECTURE APPLICATION FOR REAL TASKS. [online] Pdfs.semanticscholar.org. Available at: https://pdfs.semanticscholar.org/5555/a96b0d809a512a1d47bcd9eaacabcec842cb.pdf?_ga=2.201733529.969780106.1558050206-567376056.1558050206 [Accessed 11 Mar. 2019].