Represent a chessboard as a data structure

You need some idea of what the game state is, so you can easily look up whether a particular proposed move is valid, etc.

Performance for what? Encoding board states for min-max search uses very different data structures that encoding board states for interactivity.

In general, the board state for interactivity will not show up as a performance problem in a profiler – you could use a single linked list (which is not very performant) and it would still not show up on a profile, assuming you’re not doing anything else insane. However, for interactivity, there’s probably little difference between TMap<> and TArray<TArray<>> except the map is slightly easier to work with in code IMO.

If you’re trying to encode the board state for a chess AI algorithm of some sort (min-max search, etc) then you want something like bitboards or maybe read something like http://elib.mi.sanu.ac.rs/files/journals/yjor/44/yujorn44p265-284.pdf

But, to get more specific answers, you need to be more precise in what, specifically, you’re trying to do. “Make a chess game” isn’t specific, because there are so many parts of that, that each may want a different solution.