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

от автора

Привет, Хабрахабр!

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

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

Что это?

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

Данная система выросла из небольшого проекта по изучению пермишенов в 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) — подскажите, я перенесу.

Появилось ли желание поучаствовать?

Проголосовал 1 человек. Воздержавшихся нет.

Нужна ли статья про саму систему, как она построена, как работает, на каких технологиях и тп?

Проголосовал 1 человек. Воздержавшихся нет.

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

ссылка на оригинал статьи https://habrahabr.ru/post/280914/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *