Clojure と Quil でブロック崩しゲームを作ったので知見を共有します。
clojure + quil でブロック崩しゲームできた pic.twitter.com/jiK3RuDK1s
— ババ (@kbaba1001) 2020年4月30日
詳しい解説とソースコード
忙しい人向けにソースコードと解説動画を先に貼ります。
解説動画では実際にブロック崩しゲームを作る様子を手順を追って説明しています。 なのでそれをブログで書くのは割愛します。
動機
下記の方法で WSL で GUI アプリを動かせるようになったので試しに Quil でゲームを作ってみることにしました。
Clojure のゲーム開発事情
Clojure / ClojureScript におけるゲーム開発事業は次の記事にまとまっています。
Game Development with Clojure/ClojureScript
4年前の記事ですが、残念ながらあまり状況は変わっていないようです。
play-clj や play-cljc を使うかどうか悩みましたがいくつかの理由によりやめました。
- ドキュメントがあまりないのでつらそう
- 本格的にゲームを作るわけではないのでサクッと使えるやつが良い
試しに Quil を動かしてみたら案外さくっと動いたし、調べてみたらキーボード入力も取得できるようなのでこれでいいやとなりました。
感想
Quil を使うこと自体始めてでしたが思った以上に素直に使いやすくドキュメントも読みやすく、楽しく開発ができました。
Quil は次のような q/defsketch
メソッドで設定した値や関数を呼び出してイベントループを回してくれるので、
アニメーションのチラツキ防止処理などについて考えなくてよかったのが楽でした。
キーボード入力やマウス入力もサポートしていて、頑張れば本格的なゲームも作れるような気がしました。
(q/defsketch my-sketch :title "breakout" :size [500 500] :setup setup :update update-state :draw draw-state :key-pressed key-pressed :features [:keep-on-top] :middleware [m/fun-mode])