Class AbstractBoard
An adapter between ML Agents and a Match-3 game.
Inherited Members
Namespace: Unity.MLAgents.Integrations.Match3
Assembly: solution.dll
Syntax
public abstract class AbstractBoard : MonoBehaviour
Fields
| Name | Description |
|---|---|
| OnNoValidMovesAction | An optional callback for when the all moves are invalid. Ideally, the game state should be changed before this happens, but this is a way to get notified if not. |
Methods
| Name | Description |
|---|---|
| AllMoves() | Iterate through all moves on the board. |
| GetCellType(int, int) | Returns the "color" of the piece at the given row and column. This should be between 0 and BoardSize.NumCellTypes-1 (inclusive). The actual order of the values doesn't matter. |
| GetCurrentBoardSize() | Return the current size of the board. The values must less than or equal to the values returned from GetMaxBoardSize(). By default, this will return GetMaxBoardSize(); if your board doesn't change size, you don't need to override it. |
| GetMaxBoardSize() | Return the maximum size of the board. This is used to determine the size of observations and actions, so the returned values must not change. |
| GetSpecialType(int, int) | Returns the special type of the piece at the given row and column. This should be between 0 and BoardSize.NumSpecialTypes (inclusive). The actual order of the values doesn't matter. |
| IsMoveValid(Move) | Check whether the particular Move is valid for the game. The actual results will depend on the rules of the game, but we provide SimpleIsMoveValid(Move) that handles basic match3 rules with no special or immovable pieces. |
| MakeMove(Move) | Instruct the game to make the given Move. Returns true if the move was made. Note that during training, a move that was marked as invalid may occasionally still be requested. If this happens, it is safe to do nothing and request another move. |
| NumMoves() | Return the total number of moves possible for the board. |
| SimpleIsMoveValid(Move) | Returns true if swapping the cells specified by the move would result in 3 or more cells of the same type in a row. This assumes that all pieces are allowed to be moved; to add extra logic, incorporate it into your IsMoveValid(Move) method. |
| ValidMoves() | Iterate through all valid moves on the board. |