localrunner
является просто tcp
-сервером, написанным на python2.7
+tornado
. При запуске он ждет соединения от двух tcp-клиентов
со стратегией, после чего отсылаем им команду "начали!" и делает всё, что надо. В конце он отсылаем обоим команду "закончили" и завершается, сбрасывая в visualizer/game.js
лог игры.
И сервер, и оба клиента при этом завершают свою работу.
Для успешной работы сервера нужно поставить необходимые пакеты из world/requirements.txt
. Проще всего сделать это с помощью команды pip install -r world/requirements.txt
После этого можно сразу переходить в папку world и запускать python run.py
. Сервер запустится и будет терпеливо ожидать коннекта от двух стратегий. Кроме того, в run.py
можно параметром передать число, характеризующее random seed
текущей игры. Например, если раз за разом запускать run.py 1209328
, то раз за разом можно оттачивать стратегию на одинаковом наборе пассажиров под номером 1209328
. Seed
игры можно подсмотреть в визуализаторе, как при локальном запуске, так и при запуске игр на сайте.
Работающая стратегия состоит из обвязки
и стратегии
. Стратегия занимается логикой, обвязка же просто запускает стратегию как tcp-клиент.
Обвязку можно взять из списка доступных клиентов - берем нужный нам, подкладываем ему внутрь в папку core
саму стратегию (для начала можно взять baseline отсюда).
Всё, tcp-клиент стратегии готов, можно запускать!
Таким образом нужно запустить любые две стратегии, они автоматом подконнектятся к tcp-серверу мира и начнут играть. Через некоторое время игра закончится и все три программы (два клиента и один сервер) завершатся, и можно будет посмотреть визуализацию игры.
Реализован просто и топорно - сервер в конце игры пишет все нужные данные в visualizer/game.js
. Чтобы посмотреть игру, достаточно открыть в браузере visualizer/index.html
Крайне приветствуются pull-request
-ы