V.6 Runtime View
In contrast to the static building block view, this section visualizes dynamic aspects. How do the pieces work together?
6.1 Move Determination Walkthrough
After establishing the XBoard protocol, the client (white) starts a game by indicating a move. The following sequence diagram shows an example interaction at the subsystem level from the input, "e2e4" (white pawn e2-e4), to DokChess' response, which is the output "move b8c6" (black knight b8-c6, the "Nimzowitsch defense" (https://en.wikipedia.org/wiki/Nimzowitsch_Defence)):
Figure 5.30: Example interaction for move determination
First, the Text UI subsystem validates the input with the aid of the Rules subsystem (refer V 8.4, Plausibility Checks and Validation). The move in the example is recognized as legal and performed on the (stateful) Engine (the performMove message) afterward. Then, the Text UI subsystem asks the Engine to determine its move. Since move computation can...