Skip to content

UniversalHiveProtocol

Jon Thysell edited this page Mar 9, 2018 · 27 revisions

Draft Proposal

Introduction

Definitions

Engine Structure

Components

Board Strings

Commands

info

info

The info command asks the engine to return its identifier string.

Example:

info
id Mzinga.Engine 1.0.0.0
ok

newgame

newgame [GameType]

The newgame command asks the engine to start a new game should return a board string.

Example without GameType:

newgame
Base;NotStarted;White[1]
ok

Example with GameType:

newgame Base+MLP
Base+MLP;NotStarted;White[1]
ok

play

play Move

The play command asks to engine to play the specified move string and should return the updated board string if successful.

Example:

newgame
Base;NotStarted;White[1]
ok
play WS1[0,0,0]
Base;InProgress;Black[1];WS1[0,0,0]
ok

pass

pass

The pass command asks the engine to play a pass move and should return the updated board string if successful. It is the equivalent of play PASS.

validmoves

validmoves

The validmoves command asks the engine for every valid move for the current board, returned as a semi-colon separated list of move strings.

Example:

newgame
Base;NotStarted;White[1]
ok
validmoves
WS1[0,0,0];WB1[0,0,0];WG1[0,0,0];WA1[0,0,0]
ok

bestmove

bestmove time MaxTime
bestmove depth MaxDepth

The bestmove command asks the engine's AI for the best move on the current board with the specified depth or time limit, and returns the move string for that move. The engine may optionally return moves incrementally as it thinks, as long as each move string is presented on its own line.

When using bestmove time, MaxTime is the engine's time limit to think, and it should be in the format hh:mm:ss.

Example with a 5 second time limit:

newgame
Base;NotStarted;White[1]
ok
bestmove time 00:00:05
WS1[0,0,0]
ok

When using bestmove depth, MaxDepth is the number of plies (turns) to look ahead, and should be a non-negative integer value.

Example with a two ply limit:

newgame
Base;NotStarted;White[1]
ok
bestmove depth 2
WS1[0,0,0]
ok

undo

history

Clone this wiki locally