-
Notifications
You must be signed in to change notification settings - Fork 29
/
example_config.json5
362 lines (318 loc) · 11.7 KB
/
example_config.json5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
{
/** API key for the bot. You can get one from the bot profile page when you
* are logged in as the bot operator.
* REQUIRED*/
apikey: "FILL ME IN",
/** Engine specifier of the bot, this is a plain text description of the
* bot's engine and network that will be recorded along with all games
* played. */
//engine: "";
/** Maximum time to allow the game to be paused for in seconds.
* @default 300
* @range 300 - 172800
*/
// max_pause_time: 300,
/** Players who are not allowed to play the bot ever. */
// blacklist: [],
/** Players who are allowed to challenge the bot with any settings even
* when the bot is at the maximum number of simultaneous games */
// whitelist: [],
/** Config for how to run your bot */
bot: {
/** The command to run the bot. You can also provide this on the command line if you would rather. */
command: ["/path/to/binary", "arg1", "arg2"],
/** Management method for managing bot instances. `pool` starts up
* a fixed `instances` number of bots and and reuses them for all
* games. `persistent` starts up a single bot instance per game
* and allows state re-use to allow things like pondering.
*
* @default "persistent"
*/
// manager: "persistent",
/** Number of instances of the bot to run in parallel when using the pool manager.
* Exactly this many instances will be run at any given time,
* regardless of how many ongoing games there are.
*
* @default 1
*/
// instances: 1,
/** Enabled clocks being sent to the bot. Clocks will only be sent when
* the applicable clock commands are detected from the bot anyways, so this
* is generally fine to leave turned on.
*
* @default true
*/
// enable_clock: true,
/* Send chats that are output by the bot to the game chat
*
* Game chats are scanned for by looking at the STDERR output of the bot
* client and looking for lines that start with `MALKOVICH: ` or
* `DISCUSSION: ` or `MAIN: `. Note, MAIN and DISCUSSION are synonyms.
*
* @default true
*/
// send_chats: true,
/** Send the principal variation (PV) values. Note that your bot must output this
* data in a way that can be parsed.
*
* @default true
*/
// send_pv_data: true,
/** After a bot makes a move, some bots will continue writing to stderr
* relevant information (such as chats or PV data). This option controls
* how long we wait for the bot to finish writing to stderr before we
* release the bot back into the pool of available bots.
*
* @unit milliseconds
* @default 100
*/
// release_delay: 100,
/** When a bot is to shutdown we send a `quit` command to the bot.
* This grace period is the number of milliseconds to wait for the bot to
* quit gracefully before sending a `SIGTERM` to the bot. Furthermore,
* if the bot doesn't terminate after the `SIGTERM` for another grace
* period, we will send a `SIGKILL` to the bot.
*
* @unit milliseconds
* @default 5000
*/
// quit_grace_period: 5000,
/** When the manager is set to "persistent", If no moves are made within
* this timeout, the bot process is terminated. If a new move is made
* a new process will be started to resume playing the game.
*
* @unit milliseconds
* @default 600000
*/
// persistent_idle_timeout: 600000, // 10 minutes
},
/** Bot to use for playing opening moves. This can be useful for ensuring
* your bot plays at least a few reasonable joseki moves if it is a weak
* bot.
*
* The config for this bot is just like the main bot, with one additional
* option:
*
* `number_of_opening_moves_to_play`
* Which is number of opening moves to play before switching to the main bot.
*/
/*
opening_bot: {
// command: string[];
// manager: "persistent",
// instances: 1,
// enable_clock: true,
// send_chats: true,
// send_pv_data: true,
// release_delay: 100,
// number_of_opening_moves_to_play: 8,
// persistent_idle_timeout: 600000, // 10 minutes
},
*/
/** Secondary bot to use for ensuring your real bot passes or resigns
* appropriately. This bot will be consulted every move after . If the move it
* returns is a pass it will override the move your bot has made (unless
* your bot is resigning). If the move it returns is a resign, it will
* count the number of successive resigns and if it is more than the number
* of allowed resigns you've set in this config (default of 3), it will
* override your bot's move with a resign.
*
* The configuration for this bot is just like the main bot, with two additional
* options:
*
* `allowed_resigns`
* Which is the number of successive resigns allowed before the bot will resign.
*
* `moves_to_allow_before_checking_ratio`
* Which is the ratio of the board size to the number of moves
* to allow before we will start checking the ending bot for
* passes and resigns. This is to prevent the bot from resigning
* too early in a game.
*
* The move to start consulting the ending bot is calculated by taking
*
* ceil(board_height * board_width * ratio)
*
* @allowed 0.1 - 1.0
* @default 0.8
*/
/*
ending_bot: {
// command: string[];
// manager: "persistent",
// instances: 1,
// enable_clock: true,
// send_chats: true,
// send_pv_data: true,
// release_delay: 100,
// allowed_resigns: 3,
// moves_to_allow_before_checking_ratio: 0.8,
// persistent_idle_timeout: 600000, // 10 minutes
},
*/
/** Message to send to the player at the start of the game */
/*
greeting: {
en: "Hello, I am a bot. Good luck, have fun!",
fr: "Bonjour, je suis un bot. Bonne chance, amusez-vous bien!",
de: "Hallo, ich bin ein Bot. Viel Glück, viel Spaß!",
es: "Hola, soy un bot. ¡Buena suerte, que te diviertas!",
it: "Ciao, sono un bot. Buona fortuna, divertiti!",
ja: "こんにちは、私はボットです。 お疲れ様でした、楽しんでください!",
ko: "안녕하세요, 저는 봇입니다. 행운을 빕니다, 즐거운 시간 되세요!",
nl: "Hallo, ik ben een bot. Veel geluk, veel plezier!",
pl: "Cześć, jestem botem. Powodzenia, baw się dobrze!",
pt: "Olá, eu sou um bot. Boa sorte, divirta-se!",
ru: "Привет, я бот. Удачи, приятной игры!",
"zh-tw": "大家好,我是機器人。 祝你好運,玩得開心!",
"zh-cn": "大家好,我是机器人。 祝你好运,玩得开心!",
},
*/
/** Message to send to the player when the game is over */
/*
farewell: {
en: "Thank you for the game!",
fr: "Merci pour la partie!",
de: "Danke für das Spiel!",
es: "¡Gracias por el juego!",
it: "Grazie per la partita!",
ja: "ゲームありがとうございました!",
ko: "게임 감사합니다!",
nl: "Bedankt voor het spel!",
pl: "Dziękuję za grę!",
pt: "Obrigado pelo jogo!",
ru: "Спасибо за игру!",
"zh-tw": "謝謝你的遊戲!",
"zh-cn": "谢谢你的游戏!",
},
*/
/** Send a message saying what the bot thought the score was at the end of the game */
// farewellscore: true,
/** File to write logs to. Logs will be sent to stdout as well. */
// logfile: undefined,
/** Time control systems that we can work with
* @default ["fischer", "byoyomi", "simple"]
* @allowedValues ["fischer", "byoyomi", "simple"]
* @minItems 1
*/
// allowed_time_control_systems: ["fischer", "byoyomi", "simple"],
/**
* Allowed blitz times for the bot. Blitz is disabled by default, but you
* can enable it by providing accetpable time settings.
*
* @default null
*/
// allowed_blitz_settings: null,
/** Allowed live game times for bot. */
/*
allowed_live_settings: {
simple: {
per_move_time_range: [10, 300],
},
byoyomi: {
main_time_range: [0, 3600],
period_time_range: [10, 300],
periods_range: [1, 10],
},
fischer: {
max_time_range: [30, 600],
time_increment_range: [10, 300],
},
concurrent_games: 3,
},
*/
/** Allowed correspondence game times for bot. */
/*
allowed_correspondence_settings: {
simple: {
per_move_time_range: [43200, 604800],
},
byoyomi: {
main_time_range: [0, 604800],
period_time_range: [43200, 604800],
periods_range: [1, 10],
},
fischer: {
max_time_range: [86400, 604800],
time_increment_range: [43200, 604800],
},
concurrent_games: 500,
},
*/
/** Allowed board sizes for the bot. If there are no restrictions, you can
* provide "all", or if you can play on any square board, you can provide "square".
*
* You can also provide explicit width and height ranges for non square boards
* with `{width_range: [min, max], height_range: [min, max]}`.
*
* @default [9, 13, 19]
*/
// allowed_board_sizes: [9, 13, 19],
/** Allowed unranked games
* @default true
*/
// allow_unranked: true,
/** Allowed ranked games
* @default true
*/
// allow_ranked: true,
/** Allowed range for ranked games
* @default ["30k", "9p"]
*/
//allowed_rank_range: ["30k", "9p"],
/** Allow handicap in ranked games
* @default true
*/
// allow_ranked_handicap: true,
/** Allow handicap in unranked games
* @default true
*/
// allow_unranked_handicap: true,
/** Allowed komi range. Negative numbers indicate reverse Komi.
* @default [-99, 99]
*/
// allowed_komi_range: [-99, 99],
/** Allowed komi range
* @default true
*/
// allowed_komi_range: true,
/** Hide the bot from the public bot list
* @default false
*/
// hidden: false,
/** Decline all new challenges. This implies hidden.
* @default false
*/
// decline_new_challenges: false,
/** Used for debugging, will issue a showboard command when we've loaded
* the board state into the bot
* @default false
*/
// showboard: false,
/** If set, bot moves will be delayed when made before `min_move_time` ms.
* This is primarily a user experience thing as can make players feel rushed
* if the bots are responding too quickly.
*
* @default 1500
*/
// min_move_time: 1500,
/** Maximum amount of ongoing games to allow concurrently by the same player
* @default 1
*/
// max_games_per_player: 1,
/** Enable verbose logging.
* @values 0-2
* @default 0
*/
// verbosity: 0,
/** Enable logging game chat content.
* @default false
*/
// log_game_chat: true,
/** Sets how often the status lines are printed to the screen. Set to 0 to
* disable.
* units: milliseconds
* @default 60000
*/
// status_update_frequency : 60000,
}