さめたコーヒー

kbaba1001's blog.

Clojure + Quil でゲームを作る

Clojure と Quil でブロック崩しゲームを作ったので知見を共有します。

詳しい解説とソースコード

忙しい人向けにソースコードと解説動画を先に貼ります。

github.com

youtu.be

解説動画では実際にブロック崩しゲームを作る様子を手順を追って説明しています。 なのでそれをブログで書くのは割愛します。

動機

下記の方法で WSL で GUI アプリを動かせるようになったので試しに Quil でゲームを作ってみることにしました。

www.kbaba1001.com

Clojure のゲーム開発事情

Clojure / ClojureScript におけるゲーム開発事業は次の記事にまとまっています。

Game Development with Clojure/ClojureScript

4年前の記事ですが、残念ながらあまり状況は変わっていないようです。

play-clj や play-cljc を使うかどうか悩みましたがいくつかの理由によりやめました。

github.com

github.com

  • ドキュメントがあまりないのでつらそう
  • 本格的にゲームを作るわけではないのでサクッと使えるやつが良い

試しに 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])