Итак, расскажу о том, что я сделал еще давно, но про что все никак не доходили руки написать пост.
Несколько лет назад, когда я разрабатывал шахматного бота под названием SoFCheck, мне понадобилось как-то проверять, действительно ли я улучшаю силу его игры, а также сравнивать его с другими ботами. Для этого я написал на Free Pascal утилиту под названием battlefield, которая запускает матчи между двумя ботами, считает всякие статистики и говорит, кто круче и насколько. Работал battlefield в целом довольно неплохо.
Не так давно мне захотелось сделать battlefield интереснее, чтобы можно было не только смотреть результаты матча, а наблюдать за партиями в реальном времени. Так появился day20. Он, как и его предшественник, тоже позволяет запускать матчи и смотреть статистики. Но теперь можно еще наблюдать за партиями в реальном времени.
Построен day20 довольно просто. Основной код написан на Go, в качестве базы — SQLite, а фронт сделан с помощью Go'шного стандартного шаблонизатора, HTMX и горстки обычного JS. Такой сетап, конечно, не дает масштабироваться до небес и не дает много девяток, но зато просто деплоится и задачу в целом выполняет: для запуска нужно всего два бинарника и все :)
Почему два? Дело в том, что day20 состоит из двух частей: основного сервера и сервера комнат. Первый общается с базой и с пользователем и рисует красивый UI. А второй принимает команды от основного сервера и запускает сами матчи. Такое разделение позволяет поднять основной сервер на не очень мощной машинке в облаке и крутить его постоянно. А самих ботов, которые требуют сильно больше CPU, можно запустить хоть на ноутбуке (либо на временной виртуалке). Серверов комнат, кстати, может быть сколько угодно (пока хватит ресурсов основного сервера принимать сделанные ходы и посылать новые матчи), что позволяет запускать много партий параллельно.
А теперь самое интересное: в ближайшие два дня вы можете зайти на https://day20.gepar.do и посмотреть все это в действии :) Там сейчас крутится матч между ботом от Антона @Wind_Eagle под названием Quirky (во много раз сильнее моего SoFCheck'а, кстати), и примерно равного ему по силе бота под названием Avalanche. При разработке Quirky, кстати, day20 неоднократно использовался для оценки его силы.
Post #154
1.23K
- 👍 26
- 🤯 6