На новогодних праздниках я с товарищами turtle_bazon и c1tr00z приняли участие в Lisp Game Jam, посвященному разработке игр на диалекте лиспа.
Играть
Sources
Screenshots:
Нашей целью было
написать законченную игру за отведенный
срок. Решили, что игра должна работать
в браузере, чтобы легко делиться ею. Тут
нам приглянулся яваскриптовый движок
для игр Phaser. Оставался выбор между
clojurescript и parenscript. С common lisp я опыт
не имел, но т.к. не удалось сходу
запустить демо на clojurescript, выбор пал на
parenscript. К тому же clojure - функциональный язык, а т.к. мы выбрали Phaser, то мультипарадигменный common lisp подходил больше.
Ход джема
Т.к. на реализацию
была дана неделя, за идею взяли упрощенную
версию Зельды на тему зомби (тупой ИИ
будет оправдан). В первый день устроили
hangout, где обсудили цели и задачи. c1tr00z
взялся за графику, а я с turtle_bazon стали
делать базовый геймлпей, попутно осваивая
Phaser. Активная разработка шла в основном
ночью (хоть и праздники, но дел до вечера
хватало). После того, как наш персонаж
научился ходить и стрелять по мертвым
зомби, я занялся оживлением зомби (учил
их ходить, бить и плеваться), а turtle_bazon -
эффектами и геймлпеем (рождение и гибель
зомби, эффект "страха" у зомби,
выпадание еды, крутой пистолет). Это
позволило нам избежать конфлитов при
merge. Игра постепенно становилась живой,
был добавлен главарь зомби, появилась
цель игры - убить босса. Но игра была уж
слишком легкой - босса легко можно было
убить и с обычной пушкой, стоило игроку
попасть в него один раз, и под "страхом"
его легко было добить, зомби не успевали
добежать до игрока, а зомби-плеваки -
плюнуть. С боссом решением стало новая
способность - телепортация, а для
эффективности обычных зомби создали
лабиринты. В итоге игра стала гораздо
сложнее и стало интересно играть!
Выводы
Работа с Phaser'ом
понравилась. Всё, что нам нужно было, в
ней было (анимация, 2D-физика, звуки).
Проблем не было. Рекомендую!
С common lisp'ом у меня
опыта не было, пришлось настравить
emacs, ставить slime. Со slime'ом пришлось
повозиться, т.к. следованием туториалу
дело не обошлось. Пришлось смотреть
конфиги emacs'а turtle_bazon'a.
Для написания кода хватило моих знаний
scheme и clojure и
подглядывание за turtle_bazon'ом.
Parenscript показался
очень простым. Javascript, который он
генерировал, был легко читаем. При ошибке
компиляции можно посмотреть, где именно
ошибка, выполнив команду (compile-parens) в
slime'е. Но с parenscript'ом было ощущение, что
пишешь не на лиспе, а на javascript'е. Возможно,
тут еще играли роль сжатые сроки, поэтому
мы не особо экспериментировали. Так
что, возможно, на parenscript'е и можно писать
в стиле лиспа, но у нас получился
javascript. Итог – если просто хочется
скобочек, пробуйте parenscript, если нужно
что-то большее - надо экспериментировать.
Что мы получили
от участия?
Весело провели
время. Получили опыт работы в команде
в сжатые сроки. А главное – получили
удовольствие от результата – законченной
игры!
Что получилось:Играть
Sources
Screenshots:
Комментариев нет:
Отправить комментарий