Первая номинация Всесибирской олимпиады (2016 г)

Правка ru6, от stgatilov, 2016-11-15 06:42:05

В этом году в первой номинации Всесибирской олимпиады участникам предлагалось написать программу управления роботами-пылесосами.

Существенным отличием от прошлых лет стало то, что игра по сути своей массовая, а не одиночная (пример 2010 года) или дуэльная (пример 2013 года). В каждой игре участвуют одновременно все соревнующиеся 50 команд. Каждый игрок управляет 10 роботами, которые бегают по круглому полю. Если робот набегает на другого робота меньшего размера (или на пассивную неподвижную "еду"), то он его съедает, увеличивая свою площадь на площадь съеденного объекта. Кто съел всё (а это гарантированно происходит из-за сужения игрового мира) — тот победил. Для произвольного игрока очки за игру определяются по суммарной площади его роботов в наилучший для него момент времени. С ростом робота его скорость снижается, поэтому в игру добавлен "турбо-режим", позволяющий периодически удваивать скорость на короткое время.

Чтобы исключить технические проблемы при одновременном запуске 50 решений, решено было ограничить соревнование одним языком программирования — языком Lua. Это не первый раз, когда нам приходится потребовать от участников использовать этот незнакомый для них язык. Игра запускается в одном процессе ОС, а каждый игрок работает в своём закрытом Lua-состоянии. В результате можно запускать игру с 50 игроками в реальном времени даже на одном обычном компьютере.

Во время тура игра запускалась по циклу примерно каждые три минуты. Каждый раз в игре участвовало по одному самому новому решению от каждой команды. Примерно с середины тура в классах подняли показ результатов последней игры (в цикле) на проекторе или на большом телевизоре. В комнате жюри у телевизора постоянно паслись болельщики, выглядело это примерно так:

Телевизор в комнате жюри

Конечно, интереснее всего было смотреть игры в середине тура, когда стратегии участников сильно менялись. В течение какого-то времени эти игры можно будет скачать с сервера, например при помощи скрипта download.bat. Вот видеозаписи некоторых игр (youtube-плейлист со всеми играми; видео в хорошем качестве можно скачать отсюда):

  1. Через час после начала тура: прогон 100

  2. Через два часа после начала: прогон 150

  3. Через три часа после начала: прогон 175

  4. Через три с половиной часа после начала: прогон 200

  5. Через четыре с половиной часа после начала: прогон 230

  6. После конца тура: прогон 256

Сейчас по задаче можно скачать:

  1. Полный архив: исходный код игры, решения участников, виндовые бинарники.

  2. Материалы: только виндовые бинарники.

Теги всесибирская, lua, игра

История

 
 
 
 
Правки
 
 
  Rev. Язык Кто Когда Δ Комментарий
en1 Английский stgatilov 2016-11-15 07:38:02 3276 Initial revision for English translation
ru6 Русский stgatilov 2016-11-15 06:42:05 127 (опубликовано)
ru5 Русский stgatilov 2016-11-14 20:26:56 20 Мелкая правка: '/youtu.be/oemq7x_w6vY)\n\n2. Че' -> '/youtu.be/ugxPVCC4hxQ)\n\n2. Че'
ru4 Русский stgatilov 2016-11-14 19:03:43 432
ru3 Русский stgatilov 2016-11-14 18:12:14 623
ru2 Русский stgatilov 2016-11-14 09:44:57 1967 Мелкая правка: ' игры)\n\nПо задаче м' - (сохранено в черновиках)
ru1 Русский stgatilov 2016-11-05 17:46:01 464 Первая редакция (опубликовано)