Pull to refresh

Comments 70

Добрый день, у меня проблема с запуском. В чем дело?

image
Точно, я забыл, что версия последняя нужна
Вижу, что я забыл включить проверку версии. Добавил её. Теперь, если скрипт запускают на версии Node.js, отличной от 8.1.3, он выдаёт ошибку (можно обойти проверку параметром --force).
«Эх, поучаствовать бы, но жаваскрипт не знаю»… тред стартует здесь! Кто как я — в комментарии.
Заинтересовавшиеся — отвечайте вопрошающим :)



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

Имеющиеся навыки: С# (Unity3D: 2 мини-игры, 1 AR через недокументированные возможности), PHP (работающий сайт на своём фреймворке на одной функции, без ООП, NoSQL, пре-рендер HTML). Js знаю на уровне «ctrl-ins», «shift-ins».
Состояние игры обновляется раз в 100 мс. Если функция play будет генерировать команды быстрее, то персонаж будет двигаться 10 раз в секунду. После каждой команды генератор будет блокироваться на инструкции yield до конца рануда длиной в 100 мс.

Совсем не понятно сколько это реально вычислительной мощности дает "типа c3.large на Amazon AWS " — это сильная машина, или слабая? Как вообще такое оценить?

Это вполне конкретная аппаратура, смотрите спецификацию по ссылке. Собственно, Вы можете арендовать у Amazon такой сервер на час, чтобы потестировать своё решение.
Это вполне конкретная аппаратура
Да я понимаю — но я совсем не знаком с тем насколько виртуализация жрет производительность.
Вариант с арендой походе единственное решение
Новый пользователь AWS может получить некоторое количество вычислительных ресурсов бесплатно. Для тестирования решения этой задачи хватит.
https://aws.amazon.com/ru/free/
Пишут:
CPU — Intel Xeon E5-2680 v2, на vds доступно 2 ядра по 2,8 Ггц
RAM — 3,75 Гб
HDD — SSD 2x16 Гб, но винт тут вроде не пригодится в решении задачи
На самом деле вашему процессу доступно одно ядро (но их два, так что контролирующий процесс будет, скорее всего, на другом), 2 ГБ кучи (настройки Node.js по умолчанию) и никакого доступа к диску. Это всё следует из опубликованных условий тестирования.
Спасибо за уточнения насчёт оперативки, и про одноядерность обработки скрипта тоже может быть полезным для остальных читателей комментарий.

Важный вопрос, есть ли оценки сколько миллисекунд из умолчальных 100 мс на фрейм будет доступно скрипту для «подумать»? Было б очень неприятно, если контролирующий процесс, он же сам движок игры с обёртками, тут бы как-то заметно мешал.
Все скрипты на Node.js — одноядерные. Задействовать более одного ядра можно было бы только с использованием системных модулей, которые условия конкурса включать запрещают.

Я таких измерений не делал. Кто-то говорил, что на первом ходу доступно 70 мс, а на последующих — больше.
Ещё такой вопрос, допускает ли генератор уровней ситуацию, когда игрок ставится в изначально опасное положение, с которого он если не уйдёт немедленно, то погибнет? Посмотрел полсотни уровней, подобного не встретил.
См. исходный текст функции is_playable в файле game/generate.js. Если случайно сгненерированная карта не удовлетворяет этому предикату, она отбраковывается, и генерируется новая.

А не планируете запустить онлайн сервер с таблицой лидеров? (А чтоб избежать нагрузки скажем запускать новое отправленное решение не раньше чем через 20 минут)


Сразу двух зайцев (и девы поймут производительность своего кода, и можно будет увидеть насколько далеко к лидерам)

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

Решается публикацией в комментариях результатов для какого-то одного фиксированного рандом сида.

Сразу предлагаю идеальный набор рандом сидов: 42, 31415926, 2719281929

Для сида 31415926 у меня пока как-то так
Недурно. Даже подозреваю, что знаю, как работает :)))
У меня в некоторых местах используется рандом, поэтому результаты нестабильны, но при небольшом везении получается так (406 очков; кажется, теоретически можно и чуть больше).
Гифка 2.4 Мб


В общем, есть ощущение, что решения победителей будут соревноваться не на уровне «кто больше алмазов соберёт», а «у кого хитрее комбо получается делать».
Профессиональный убийца бабочек =)
UFO just landed and posted this here
UFO just landed and posted this here
У нас тут с коллегами на перекуре возникла идея поместить на одно поле двух ботов, и чтобы каждому из них другой виделся как бабочка. При соприкосновении оба взрываются. Можно попытаться убить другого камнем.

Но это надо было бы менять условия конкурса. Просто забавная мысль.
Присылайте своё решение, даже если собираетесь его ещё улучшать. Проведём предварительное тестирование.
Присылайте своё решение, даже если собираетесь его ещё улучшать. Проведём предварительное тестирование. Не live leaderbord, но компромисс.
UFO just landed and posted this here
Когда будет что тестировать. Пока только два решения прислали. Можно было бы сделать два раунда — 10 и 20 числа. В общем, зависит от активности участников.
UFO just landed and posted this here
UFO just landed and posted this here
А вот, до кучи, с сидом 2719281929
UFO just landed and posted this here
Как по мне куда более ефективней будет охотиться за бабочками с самого начала. Потом можна нагенерить кучу hot steak'ow.
UFO just landed and posted this here
В этот раз мы сняли запрет на публикацию своих решений до конца конкурса. Поэтому участники теперь могут самоорганизовываться для тестирования.
Может, сделать промежуточный lightning-round? Т.е. однократно опубликовать результаты присланные на момент, например, 15 июля, а потом уже последние
Да, сделаем. Присылайте решения, даже если ещё будете их улучшать.

"Решения принимаются до 31 июля 2017, 23:59:59 UTC."
Тут "до" это ")" или "]"?

const deadline = new Date('2017-08-01 UTC');
let now = new Date();
if (now>=deadline)
    // reject submission


Тут ещё можно спросить, по началу или концу аплоада смотрим. По концу.
Воркеры это хорошо, конечно, но из-за них отлаживать код даже с опцией --unsafe как-то очень мучительно.

Я сделал версию, которая запускает решение «совсем небезопасным» образом (например, ограничения по времени не проверяются — если решение зависнет, то зависнет всё вместе). Зато дебажить стало гораздо проще.

Возможно, участникам конкурса пригодится: https://github.com/deNULL/challenge_jsdash.
Запускать с опцией --no-workers (или -w).
UFO just landed and posted this here
Спасибо! В несколько изменённом виде добавил такую возможность (флаг --in-process).
Для тех кто впервые ставит node на win (как я) для решения вот таких вот проблем:
Error: Cannot find module 'ANY_NAME'

в cmd
npm install ANY_NAME
Собственно, совет для всех ОС: установить требуемые скрипту модули согласно файлу `package.json` позволяет команда `npm install` без имён пакетов.

Ну и как, работает под Windows? Мне интересно. Ввод-вывод, вообще, рассчитан на xterm.
Работает. Хотя немного прыгает
Прекрасно работает и под Win7 x64. Там у ноды вполне себе нормальная консоль, видимо поддерживающая xterm. Не прыгает, всё плавно отрисовывается.
UFO just landed and posted this here
UFO just landed and posted this here
При запуске ваших решений мы будем использовать настройки по умолчанию
UFO just landed and posted this here
Механика скатывания скопирована с исторического оригинала Boulder Dash. Смотрите код класса LooseThing. Объекты предпочитают падать, нежели скатываться, и скатываться влево, нежели вправо.
UFO just landed and posted this here
Если вас интересуют подробности игровой механики, читайте исходный код модуля game.js.
По поводу реф. ссылок. А если я не пользуюсь почтой чтобы делиться таким (только мессенджерами по сути), ничего в зачет не пойдет? (просто интересно, потому что сомневаюсь что много людей используют почту для таких целей)
Вы можете сообщить человеку и почтой, и другим способом. Нам нужно документальное подтверждение отправки ссылки как основание для выдачи реферальной премии.
При тестировании каждого решения будет использоваться один и тот же набор затравочных значений (seeds) для генератора псевдослучайных чисел, чтобы программы всех участников получали одни и те же уровни. При запуске ваших решений мы будем использовать настройки по умолчанию

feldgendler, приветствую, и такой вопрос. При тестировании сколько раз прогоняется один и тот же сид? Ведь игрок появляется в разных местах рандомно, а значит идеально достижимый счёт в каждом из запусков будет разным. Если 1 раз или «мало» раз, то при тестировании каждому из игроков могут попасться одному стартовые позиции лучше, а другому позиции хуже, и результат замера будет недостаточно стабилен и пригоден для сравнения возможностей алгоритмов.

Может быть, стоит ещё добавить дополнительную опцию сида для постановки игрока? Чтобы условия были равные просто-таки абсолютно.

При конкурсных замерах для каждой из тестируемых карт можно брать несколько таких «player-start-seed». Или же брать один конкретный и публиковать его в таблице результатов — например, это может помочь тем участникам, у которых происходит крэш, ведь его сложно ловить с рандомом.
UFO just landed and posted this here
Место появления игрока — часть уровня. Для одного и того же значения seed оно всякий раз будет одинаковым.
Блин, тогда сорри, видимо меня поглючило.

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

И ещё, Алексей, подскажите будет ли второй промежуточный прогон решений и когда? Выше в комментариях было предложение про 25.07, и «посмотрим по мере поступления» — есть ли какая-то определённость сейчас?
На каждом уровне каждое решение будет запускаться по одному разу. Использовать random мы не рекомендуем (и не видим в этом особого смысла).

Да, скоро будут вторые промежуточные результаты.
Интересно, каковы выходят предварительные результаты конкурса, кто оказывается героями комбинаторики и интеллекта в этом соревновании.
Sign up to leave a comment.