Pull to refresh

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

Reading time 3 min
Views 30K
Привет, Хабрахабр!

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



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

Что это?


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

Данная система выросла из небольшого проекта по изучению пермишенов в 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) — подскажите, я перенесу.
Only registered users can participate in poll. Log in, please.
Появилось ли желание поучаствовать?
63.47% да, попробую зайти поиграть на досуге 205
26.93% нет, полно уже такого добра 87
9.6% это не для программистов вообще! 31
323 users voted. 243 users abstained.
Only registered users can participate in poll. Log in, please.
Нужна ли статья про саму систему, как она построена, как работает, на каких технологиях и тп?
83.02% да, тут явно нужно разобраться 308
16.98% нет, всем и так все известно 63
371 users voted. 189 users abstained.
Tags:
Hubs:
+16
Comments 71
Comments Comments 71

Articles