cljsでブラゲはつくれる

by 技情研ネット 山田
at 烏丸 Clojure (2014/11/15)

今日の内容

cljsでブラウザゲーム(ブラゲ)つくったので、それに関連する雑多な話

つくったゲーム

ぶっちゃけcljsって
使い物になるの?

  • いわゆる「matureなレベル」かというと「そうではない」
  • バージョンも「0.0-XXXX」みたいになってる。0.1ですらない
  • とは言え、コンパイルされたJS自体は問題なく動作する。この意味では「実用上は問題ない」とは言える
  • ただし、色々と存在する不具合を避ける必要はある。これがめんどい

具体的にはどの辺に
問題があるの?

  • あちこち。全体的に枯れてない
  • とりあえず思い付いた部分を別ページにまとめた

これは大変だ!

  • たくさんの「つまづき」があるので、cljsを利用する際には、それらを回避していかなくてはならない。めんどい
  • とは言え、前述の問題点以外は大体それなりに動くし、Clojureを書くのに慣れている人にとっては、生のJSを書くよりもずっと良い

他の選択肢はないの?

  • Clojureにこだわらなければ、単にaltJSから好きな実装を選べばok
    • ちなみにLisperであればBiwaSchemeも良い選択肢
  • ブラゲにこだわらなければ、Clojure用のゲーム作成ライブラリはそれなりにある(これらの詳細や品質については、各自で確認してね)
  • しかし、「Clojure」かつ「ブラゲ」の両方を満たすものは、現状ではcljsしかない、という結論になった

ブラゲを作るには

例外はあるが、ゲームは大体以下ができる

  1. 絵が出る
  2. 音が出る
  3. 操作できる

ブラゲの場合はマウスで操作する関係上、(1)の「絵」と(3)の「操作」がセットになっている事が多い

  • HTMLのcanvasタグ、もしくはWebGLを使う。詳細はぐぐる
  • これらをいじるには、対応するJSライブラリを使うのが楽
  • また、そういうライブラリには操作系の機能もついている事が多い

  • HTMLのaudioタグ、もしくはWebAudioを使う。詳細はぐぐる
  • これも直にいじるよりも、対応するJSライブラリを使うのが楽
  • なお、モバイルブラウザでの対応に色々と問題がある為、モバイルでは音を出さないように制御した方がよいかも

JSライブラリ選択

試してみたライブラリの雑感を別ページにまとめた

長いので、興味がなければ飛ばしてok

project.cljの書き方

これまた別ページにまとめた

ブラゲつくる

  1. コンソールを複数開いておく
  2. lein ring server-headless
    でhttpサーバを起動
  3. lein cljsbuild clean && lein cljsbuild auto dev
    で自動ビルドプロセスを起動
  4. コードを書いてはブラウザで動作確認。REPLはいい奴がまだない
  5. マクロ追加したり等するタイミングでビルドプロセスがおかしくなる事があるので、たまに上記プロセス群を再起動する

以上

とりあえず大体こんな感じ

他に「この部分どうやってるの」とか疑問あれば、山田に直接聞く!

おしまい

クソゲーができても泣かない