Как стать автором
Обновить

Песочница для программистов

Ненормальное программирование *Спортивное программирование *
Привет, Хабрахабр!

Я хочу сыграть с тобой в игру.



Но если быть точным, то я хочу презентовать вам результат моей работы за последние пару месяцев. Кодовое название — песочница.

Что это?


Суть данной системы проста: это песочница для программистов. Здесь можно и нужно писать исскуственный интеллект для своих ботов и играть с ботами других участников. Во что играть? Все просто — в дурака. Да-да, в карточную игру.

Данная система выросла из небольшого проекта по изучению пермишенов в Java. Изначально мне было просто интересно как работают разграничения выполняемого кода, как строится плагинная архитектура и т.д. Но в итоге захотелось обернуть все это в законченный продукт — вот как все вышло.

Кому интересно, давайте взглянем поближе на саму систему.

Прежде всего хочу сказать что все нижеизложенное вы можете найти на Intro странице в самой системе. Там же есть более-менее полное руководство, оно позволит преодолеть и без того низкий порог вхождения. Так же хочу заметить что стадия проекта — ОБТ, но это никоим образом не отражается на функциональности. Все запланированное для релиза уже на борту. Впереди лишь допиливание хотелок и полировка.

Как работает система?


Жизненный цикл игрока весьма прост. После регистрации и активации аккаунта* у Вас появляется доступ ко всем функциям системы. И теперь Вы, как игрок, можете писать, компилировать и загружать вашего бота.

После загрузки происходит раунд против самой системы. Это называется — квалификация. Цель лишь одна — проверить на вшивость код бота. Если бот играет не честно или играть не умеет, а может даже пытается мухлевать, он автоматом получает штраф и дальше играть не может. Для продолженния его нужно исправить и залить повторно.

Следом за квалификацией бот уже может участвовать в турнире. Игроки для турнира подбираются по Швейцарской системе. Игры проводятся каждый час. Турнир же длится неделю. Итоги подводятся каждое воскресенье. Очки распределяются по формуле рейтинга Эло. И первая тройка попадает в Историю Турниров. По всем победителям есть сводка — Зал Славы.

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

Как пользоваться?


Интерфейс


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

Зал Славы



История турниров



Статистика игрока



Лог игры (начало)



Форма загрузки бота (запомните ее, это входная точка в турнир)



Бот


Код который требуется написать зависит целиком от вас. Можно реализовать простую стратегию, как у противника в квалификационном раунде, а можно разработать и свою. Для написание нужны: java + maven + редактор.

Сам интерфейс бота содержит всего два метода, которые система дергает поочередно в течении игры в зависимости от роли игрока. Объект который поступает на вход каждому из методов содержит всю необходимую информацию о текущем состоянии игры, на ее основе и нужно делать выводы и совершать ходы.

public interface Ai {

    /**
     * Called by executor every move when your role is Attacker
     * @param table cards on the table
     * @return attacking card
     */
    Card onAttack(Table table);

    /**
     * Called by executor every move when your role is Defender
     * @param table cards on the table
     * @return defending card
     */
    Card onDefence(Table table);
}


Зачем?


Для вас это способ посоревноваться. Ведь не то что каждый программист, а даже каждый человек любит соревноваться и доказывать свое первенство.

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

Где играть?


Ссылочка вот — sandbox.x-lab.space

Хостинг не навороченный, так что заодно и провайдера проверю, выдержит ли он явление именуемое хабраэффектом.

Всем спасибо за внимание. Жду ваши вопросы, отзывы и конструктивную критику, для меня это важно.

P.S.


Если ошибся хабом или ресурсом (сам думал куда лучше, сюда или на geektimes) — подскажите, я перенесу.
Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
Появилось ли желание поучаствовать?
63.47% да, попробую зайти поиграть на досуге 205
26.93% нет, полно уже такого добра 87
9.6% это не для программистов вообще! 31
Проголосовали 323 пользователя. Воздержались 243 пользователя.
Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
Нужна ли статья про саму систему, как она построена, как работает, на каких технологиях и тп?
83.02% да, тут явно нужно разобраться 308
16.98% нет, всем и так все известно 63
Проголосовал 371 пользователь. Воздержались 189 пользователей.
Теги: javaaisandbox
Хабы: Ненормальное программирование Спортивное программирование
Всего голосов 32: ↑24 и ↓8 +16
Комментарии 71
Комментарии Комментарии 71

Похожие публикации

Лучшие публикации за сутки