小さなブラウザゲームを少ない労力で書きたい

最近はインディーゲームも含めて立派な大作が多いけど、趣味で作る分にはそんなに肩ひじ張らずにお手軽に小さいゲームを作っててもいいと思うんだ。でも世の中の多くの開発環境は、立派な3Dがハンドリングできちゃったりして、結構ちゃんとしちゃったゲームを作るのに適したものにシフトしつつある感じがする。大昔のマイコンでのBASICレベルのお手軽ゲームプログラミング環境みたいなものは自分で探さないとなかなか見つからない。

趣味でちょこっとしたゲームを作ってみんなに遊んでもらうには、ブラウザ上で動くゲームが手軽で良い。3分だけ遊んでサヨウナラ、みたいなミニゲームを、わざわざダウンロードして、展開して、怪しげなexeをたたく、みたいな手間をユーザにお願いするのはなんかしのびない。

そもそも今使えるブラウザゲー環境ってなにがあるの

ここ最近はいろんなブラウザゲー環境を試してみて、それぞれどんな良いとこ悪いとこがあるかどうかを調べてた。Flashで作ったものはwonderfl (http://wonderfl.net/user/ABA/codes)やKongregate (http://www.kongregate.com/accounts/abagames)へ、JavaScriptで作ったものはjsdo.it (http://jsdo.it/abagames)へ投げた。Unityは大昔にちょっと触っただけ (http://d.hatena.ne.jp/ABA/searchdiary?word=unity)。

この辺を触った際のごく個人的な印象に基づいて、それぞれの環境の良し悪しを考えると以下のようになる。触ったことない環境は想像。そこは違うぞ、という点があれば教えていただけると助かります。

Flash

いいとこ
  • ActionScriptは非常に書きやすい。そのActionScriptを書くだけでゲーム開発が完結できる
  • 比較的安定したフレームレート、オーディオハンドリング
  • 圧倒的なプラグイン普及率
わるいとこ
  • モバイルデバイスのブラウザ上では動かない。AIRでなんとかして
  • Stage3Dを使った3Dの扱いがローレベルで若干面倒
  • ジョイスティック未対応

JavaScript+HTML5

いいとこ
わるいとこ

Unity

いいとこ
  • ジョイスティックが使える
  • ゲーム専用だけあってフレームレート/オーディオ/3D管理はこなれている
  • 物理/パーティクルなど豊富なゲーム向け機能が簡単に活用可能
  • 様々なプラットフォーム上で動作
わるいとこ
  • ソースコードを書くだけでは開発が完結しない。いやその分非常に優れたアセットマネジメントエディタがあるんだけど、私がちょっとしたもの作る場合だと邪魔なんだよね
  • ブラウザ用プラグインの普及率はおそらくまだ低い

NaCL (Native Client)

いいとこ
  • 高いパフォーマンス
  • SDLユーザーは開発がやりやすい?
わるいこと
  • Chromeでしか動かん
  • 新しすぎてドキュメントがあまりない

そのほかにも将来的にはWebKitJavaScript以外の言語が動くようになるとか (http://www.infoq.com/jp/news/2011/12/google-webkit-dart-multi-vm)、ストリーミングゲームがChromeで動くとか (http://jp.techcrunch.com/archives/20111124chrome-getting-native-gamepad-webcam-and-webrtc-support-in-early-2012/)、いろんな話があるけど現状あんまり考えなくてもいいよね。

で、どれがいいの?

総合的にみるとやっぱりFlashかなあ。ActionScriptは小さいゲーム書くにもいい言語だし、記述量とエラー検出性能のバランスもいい感じなので、非常につまらない結論だがFlashが総合バランス的には良い。

ただ私はそれでもfunctionとかvarとか書くのが面倒というレベルでものぐさなので、最近はHTML5CoffeeScript (http://coffeescript.org/)を試している。CoffeeScriptJavaScriptをより少ない記述量で書けるようにするトランスレータPythonライクな記法で非常に少ないタイプ数で書けるのが素晴らしい。ただほとんどのエラーがランタイムエラーになってしまう上に、エラーの修正には変換後のJavaScriptを見なければいけないという点でデバッグは苦行。QUnitなどのユニットテストを組み合わせることで多少はましになるが、それでもつらい。慣れの問題かもしれんが。

Unityは立派な統合開発環境が逆に小さなゲームを作るには重荷なので、テキストエディタひとつでゲームが作れるミニマム開発環境が欲しいところ。

NaCLは、どうなんだろう。最近Chromeがゲーミングプラットフォームとしてちょっと本気出してきている感があるので、もう自分はChromeと心中するんだ!みたいな気概があれば候補になるのかも。ただどちらかというととってもリッチコンテンツなゲームがターゲットだろうから、ミニゲー向けにはならないかもね。

将来的にはどうなるといいんだろうねえ

Unityのゲーム向けに安定したVMFlashの手軽な開発言語、CoffeeScriptの少ない記述量、みたいなものを兼ね備えた言語+VM向けゲームを、Codea (http://twolivesleft.com/Codea/)みたいなお手軽ゲームエンジン+開発環境で開発する、ってのが理想かなあ。Unityが初心者向けに非常に機能の限られた、でもデバッグは容易な簡易版開発環境とか作ってくれるとうれしいんだけど、そういった方向はあんまりUnityのターゲットユーザベースとは合ってないと思うから、難しいかもね。