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

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

Архив материалов первого тура всесибирской олимпиады 2010 года доступен для скачивания:

http://olimpic.nsu.ru/widesiberia/archive/wso11/2010/rus/arcade_full_archive.zip

Логи игр окончательного тестирования лежат отдельно.

В первом туре участникам предлагалось написать бота для простой аркадной стрелялки на манер crimsonland survival.

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

14 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Было бы здорово, если бы подобные соревнования проводились в рамках codeforces
  • 14 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    Здорово, но не подвесит ли это codeforces? Все-таки codeforces обычно пишет больше людей чем всесибирскую олимпиаду, а игрушка тянет побольше. 
    • 14 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      Казалось бы, на codeforces и сервера помощнее. Смотрим: 3 минуты* 400 участников = 20 часов тестирования. Тогда, если отключить или как-то ограничить предварительную отправку - можно сообщить финальные результаты уже через сутки после конца контеста. А если серверов несколько - можно и предварительно тестировать.
      • 14 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится
        без предварительного тестирования с другими танчиками неинтересно...
        • 14 лет назад, # ^ |
            Проголосовать: нравится 0 Проголосовать: не нравится

          Ключевой идеей задачи было именно singleplayer игра. Благодаря этому участники могут быстро протестировать у себя на машине решение в условиях, эквивалентных окончательному тестированию.

          Проблема multiplayer-игр состоит в том, что сложно запихнуть в 5-часовой тур несколько запусков совместных игр. Участники должны писать решения, не имея возможность адекватно протестировать своё решение в реальных условиях. Это вообще жесть. У них итак времени почти нет.

          Решение использовать сеть было принято единолично одним человеком. Я с этим решением не согласен - только кучу проблем огребли (особенно с Java).


          • 14 лет назад, # ^ |
              Проголосовать: нравится 0 Проголосовать: не нравится
            Честно говоря очень интересно, как писать подобные штуки, поэтому хотелось бы узнать ваш вариант устройства
            • 14 лет назад, # ^ |
                Проголосовать: нравится +3 Проголосовать: не нравится

              Вопрос очень неконкретный, так что ответ будет очень длинный=)

              Сначала появляются идеи. Жюри одну из них в конце концов одобряет. Хорошо, когда участники могут решать задачу разными способами, причём так, чтобы эти способы адекватно оценивались. Важно, чтобы к задаче можно было быстро подступиться. Сложность написания на стороне жюри и время тестирования хочется тоже минимизировать. Часто интересные идеи отметаются из-за того, что очевидно за 5 часов почти никто не напишет решение лучше тупого/рандомного.

              Потом кто-то пишет внутреннюю часть. Например, эту аркаду я писал банально на C++. Естественно, нужно написать какие-то примеры/визуализаторы в процессе, чтобы отладить внутренности.

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

              Дальше начинается вопрос, как это приделать к тестирующей системе. Если задача типа marathon, то можно просто сделать чекер и выдавать баллы как в школьной системе. В противном случае те, кто поддерживает систему тестирования, вынуждены делать что-то нетривиальное. Например, для аркады Саша написал тестирующий клиент, запускающий игру на двух компьютерах. Поскольку как и в прошлом году ожидалась длинная очередь решений, то был откопан следующий режим: если у участника в очереди стоит решение, а он посылает ещё одно, то новое решение заменяет старое. Таким образом, даже в худшем случае никто не мог заспамить очередь тестирования.

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

              Ну и конечно же всех приговорённых к подготовке первого тура до самого конца олимпиады не покидает ощущение, что сейчас всё рухнет=) Все ходят и удивляются: неужто всё нормально?! 

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

      • 14 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится

        На всесибирской олимпиаде есть две проблемы с первым туром:

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

        2. Окончательное тестирование для задачи первого дня должно обязательно закончиться к утру следующего дня. Обычно рассчитывают где-нибудь часов на 5-8 в худшем случае (если что-то пойдёт не так, то поиск багов и перетестирование можно сделать за ночь). В реальности обычно к вечеру получается всё протестировать и пойти спать.

        Обе проблемы исчезают в режиме online. Например, на topcoder marathon соревнование идёт две недели, так что тестирование по ходу тура можно устраивать редко. Более того, окончательное тестирование можно проводить в течение месяца=)

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

        • 14 лет назад, # ^ |
            Проголосовать: нравится 0 Проголосовать: не нравится
          И тем не менее мне кажется, что оно того стоит
        • 14 лет назад, # ^ |
          Rev. 2   Проголосовать: нравится +3 Проголосовать: не нравится
          У нас на четвертьфинале уже который год проходит Code Game Challenge. Очень походе на Java Challenges с финала (или как они там сейчас). Условия (описания API) раздаем за день. Пишут 4 часа, в процессе написания запускают баттлы с другими участниками. Можно писать на C++, Pascal, Java. Потом, когда все заканчивается, мы все за полчаса распределенно тестим. Через пару часов после окончания контеста показываем шоу на большом экране в условиях близким к кинозалу. Всем нравится :)
        • 14 лет назад, # ^ |
            Проголосовать: нравится 0 Проголосовать: не нравится
          Тогда получается, codeforces просто должны сделать обычный топкодеровский марафон.
          Вообще, если затевать что-то подобное, то не одними только искуственными интеллектами. Если честно, меня не сильно порадовала задачка с Всесибирской (хотя она неплохо подходила под 5-тичасовой формат).
          Хотелось бы реально чего-то в стиле марафона, чтоб надо было писать много интересного кода:) Но с другой стороны, реализация нового контеста явно требует достаточно больших затрат разного рода, так что увидим ли мы такое - неизвестно
          • 14 лет назад, # ^ |
              Проголосовать: нравится 0 Проголосовать: не нравится
            В том то и дело, что хотелось не марафонских задач (которые в большом количестве есть все знают где), а тех, в которых решения чаще соревнуются друг с другом в пределах одного мира (что на TC Marathon не бывает, насколько я знаю). Т.к. подобных соревнований крайне мало, хотелось бы, чтобы новый, развивающийся сайт, возможно, реализовал это в себе.
            • 14 лет назад, # ^ |
                Проголосовать: нравится 0 Проголосовать: не нравится
              Просто не очень ясно, какие оптимальные временные рамки.
              С одной стороны, можно делать долгий контест, но тогда придется много переделывать решение и подолгу ждать результатов, т.к. остальные участники тоже сабмитят. Такая система лично мне не сильно понравилась на Google AI Challenge, ведь очень часто выигрывают практически идентичные решение с разными константами
              С другой стороны, можно делать чего-нибудь на короткий срок(5 часов - сутки) тогда будут рулить именно идеи, а не "допиливание" решения, так как будет в принципе мало сабмитов. Но зато в задаче так сходу не разберешься...
              Ну и не стоит забывать о серверных мощностях и необходимости писать новое ПО и придумывать качественные задачи:) Так что это всё, конечно, здорово, но, имхо, малореалистично
      • 14 лет назад, # ^ |
        Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится
        Не думаю, что Codeforces ближайшее время будет поддерживать и проводить подобные соревнования. И на то множество причин, и дело не в серверах, в конце концов.

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

        В общем, как говорится, надейтесь, но не ждите (с)

        P.S. Мое мнение не обязательно совпадает с мнением команды Codeforces (c)