miniaicups
miniaicups copied to clipboard
расчет времени и выдача 'time_left' в FileClient, рефакторинг
Продолжение (и, надеюсь, окончание) истории, начатой в https://github.com/MailRuChamps/miniaicups/issues/265
Смысл в том, чтобы добавить параметр time_left
в сообщения, чтобы стратегия знала, сколько времени по мнению сервера ей осталось на выполнение. Предыдущий PR делал это только для серверного кода, оставив Local Runner за бортом. Данный PR исправляет это, обобщив логику подсчёта времени для TcpClient и FileClient, чтобы всё работало единообразно и на сервере и в LR.
С этими изменениями стратегия запущенная под отладчиком начнет получать таймауты (если задуматься в отладчике)
В оригинале с этим флагом:
parser.add_argument('-t', '--timeout', type=str, nargs='?', help='off/on timeout', default='on')
видимо его же надо приспособить в тайм-аут, или другой флаг но название конечно классное "--timeout" а по факту это тики считает и если я сделаю "--time_limit" то это тоже про тики будто бы будет :)
потом проверка флага и самого тайм-аута
def game_loop_wrapper(dt):
is_game_over = loop.run_until_complete(Runner.game.game_loop())
if is_game_over or (args.timeout == 'on' and Runner.game.tick >= MAX_TICK_COUNT):
доделать могу на случай запуска под отладчиком - придется задавать этот флаг в пути к localrunner.py и будет проверяться и у меня в FileClient тоже
P.S. вообщем решил добавить флаг
parser.add_argument('--ai-timeout', type=str, nargs='?', help='off/on AI execution time limit', default='off')
т.е. начальное значение = "БЕЗ ПРОВЕРКИ ТАЙМ_АУТА ДЛЯ AI" чтобы для всех под отладчиком работало без тайм-аута, чтобы для большинства не пришлось лезть в параметры и чето менять,
и только кто захочет валидировать тайминги-бота - пусть задает localrunner.py флаг '--ai-timeout=on' и у него будет тайминг вычитаться
Время MAX_EXECUTION_TIME придумано, чтобы подсчитать вычислительные ресурсы необходимые для проведения AiCups. По идее оно не должно кому-либо мешать. Если у большинства стратегии начинают упираться в эти ограничения, то мы найдём способ их увеличить.
Коммит был сделан чтобы считать время в FileClient т.к для отладки своих ботов, а он считался только в TcpClient, т.е без сервера это нельзя было потестить. Хотя сейчас уже с конфликтами, вобщем смотрите сами - хотите - внесите аналог в master.