Блог пользователя stgatilov

Автор stgatilov, история, 6 лет назад, По-русски

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

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

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

Видео одной игры финального тестирования.

Игровое поле

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

  1. Исходные коды игры. Для сборки нужны CMake и Qt, но дорогу осилит идущий =)

  2. Оригинальные материалы. Этот архив выдавался участникам на соревновании. В нём есть в том числе полное условие задачи и виндовые бинарники. Если визуализатор сходу не запускается, советуем собрать из исходников.

.

.

Немного фото с места проведения:

Игра и котики

Обсуждение после конца тура

  • Проголосовать: нравится
  • +68
  • Проголосовать: не нравится

»
6 лет назад, # |
  Проголосовать: нравится +22 Проголосовать: не нравится

Было бы здорово, если б участники поделились впечатлениями от игрового тура ;)

Нам, как жюри, очень интересно узнать, что думают участники о подготовленной для них игре. Понравилась ли сама игра? Те, кто участвовал не впервые, могут сравнить с первой номинацией прошлых годов. Не длинным ли получилось условие? Какие-то общие замечания, предложения?

Так же в этот раз мы попробовали сделать достаточно интересное нововведение. Поскольку одна из проблем при разработке стратегий для игры это локальное тестирование, то мы решили дать возможность скачивать скомпилированные коды других участников и запускать их локально. Пользовался ли кто-то из участников такой возможностью? Сделало ли это их жизнь легче?

  • »
    »
    6 лет назад, # ^ |
    Rev. 2   Проголосовать: нравится +29 Проголосовать: не нравится

    Мы активно пользовались возможностью запустить локально решения вместе с другими, без отправки в систему. Можно сравнить с прошлым годом: когда мы делали решение, то тестировали только с рандомным и не понимали, почему оно на сервере плохо работает.

    Также понравилось правило, которое учитывает результаты на протяжении всего контеста, теперь игра становится живой уже после первого часа, интереснее наблюдать. А вместе с локальным тестированием на сервере теперь крутятся лучшие решения, а слабые крутятся и оптимизируются локально.

    В общем, было весело! Не понравилась только то, что столкновение лоб в лоб могло остановить двух игроков до конца игры, если никто не хочет уступать. Ну и это единственный случай, когда положение игрока не меняется при команде move, мне кажется это странным.

    • »
      »
      »
      6 лет назад, # ^ |
        Проголосовать: нравится +20 Проголосовать: не нравится

      Спасибо за отзыв :)

      Учёт результатов во время тура специально вводился, чтоб команды не хранили лучшее решения до конца тура. Иначе бы фича с выкачиванием чужих решений была бессмысленна.

      По столкновениям согласен, интереснее было бы в варианте, когда наехавший пылесос давит ранее там находившийся :)

      • »
        »
        »
        »
        6 лет назад, # ^ |
          Проголосовать: нравится +5 Проголосовать: не нравится

        На deadline24 делают так, что за игры в конце тура дается больше очков, чем за игры в начале — думаю, уместно было бы так сделать и здесь. Конкретно на deadline это сделано так: последняя игра стоит в x раз дороже первой, и игра через t после начала в контесте длины T стоит в больше, чем первая.

        • »
          »
          »
          »
          »
          6 лет назад, # ^ |
            Проголосовать: нравится +25 Проголосовать: не нравится

          Мы думали об этом, но такой вариант слишком обесценивает решения в первые часы соревнования. Не стоит забывать о том, что у нас аж 50% очков давалось за результаты финального тестирования (то есть за последнее отправленное решение), а остальные 50% равномерно размазаны по 4 часам тура. Какой смысл давать последним решениям ещё больший вес?