Блог веб-разработчика v 1.0.0
Symfony2, AngularJS, React, Gulp, PhpStorm и много других страшных слов

FightCode - убийство роботов на JavaScript

3 года назад
2294 просмотра
JavaScript Браузерные игры Полезности

FightCode - убийство роботов на JavaScriptFightCode - это онлайн-игра для программистов, реализованная в виде сражения танков запрограммированных на JavaScript. Вам нужно заложить такой ИИ в собственный танк, чтобы он разнес танк противника. Все управление реализовано исключительно через редактор кода прямо в браузере.

Сайт полностью англо-язычный, но если вы не знаете английский, то разобраться будет не сложно, не волнуйтесь. Регистрация исключительно через GitHub, поэтому чтобы поиграть вам будет необходим GitHub аккаунт.

Роботы, а именно танки, воюют на двухмерном прямоугольном поле. Танком можно крутить на все 360 градусов и ездить вперед-назад с одинаковой скоростью. Отдельно можно управлять турелью (она поворачивается вместе с танком, так что приходится это учитывать) чтобы, например, ехать и стрелять в бок. Особенность игры в том, что вы не можете глобально отследить противника. Можно только среагировать на событие появления противника на линии огня и попробовать за ним погнаться, однако вражеский танк попытается сделать то же самое, поэтому сражения иногда напоминают хаотичную езду и стрельбу наугад.

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

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

Игровой цикл заключается в обработке событий, в основном onIdle (ожидания). Но на самом деле в движок игры заложено множество событий, например можно отследить когда вражеский танк попадает на линию огня, или когда вы врезаетесь в стену. У игры имеется богатая документация в прямом смысле этого слова (играют то программисты).

Каждый игрок может содержать неограниченное количество роботов разного цвета и с разным ИИ. По умолчанию скрипт управления выглядит так:

var Robot = function(robot) { };
Robot.prototype.onIdle = function(ev) {
 var robot = ev.robot; // получаем текущий экземпляр робота
 robot.ahead(100); // проходим сто единиц вперёд
 robot.rotateCannon(360); // осматриваемся
 robot.back(100); // проходим сто единиц назад
 robot.rotateCannon(360); // снова осматриваемся
};

// Стреляем во всё, что шевелится
Robot.prototype.onScannedRobot = function(ev) {
 var robot = ev.robot; robot.fire();
};

Перед игрой с реальным противником можно потренироваться на ботах (почему-то сразу на двух), задав им один из трех алгоритмов поведения. Причем редактор кода сделан очень удобно: есть поддержка многих привычных горячих клавиш и LivePreview алгоритма вашего танка, так что на каждый чих перезагружать страницу не придется.

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

Поначалу кажется, что сделать хороший ИИ для танка очень просто, но проиграв пару игр более серьезным соперникам начинаешь понимать, что можно весь день играть в FightCode и он не надоедает.

Updated. Не так давно обнаружилась новая, потрясная JS игра, на этот раз играть совсем не скучно и не однообразно.

Что еще почитать