Hatena::ブログ(Diary)

ABAの日誌

Back to ABA Games
Twitter (abagames)
カレンダー
 | 

2012-01-12

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

最近はインディーゲームも含めて立派な大作が多いけど、趣味で作る分にはそんなに肩ひじ張らずにお手軽に小さいゲームを作っててもいいと思うんだ。でも世の中の多くの開発環境は、立派な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

いいとこ
  • JavaScript開発者コミュニティの広さによる豊富なライブラリ
  • モバイルデバイスブラウザも含めたクロスプラットフォーム動作
  • WebGLによるOpenGL経験者に優しい3Dハンドリング
わるいとこ
  • ブラウザ依存。クロスプラットフォームといってもモバイルデバイスも含めた広範な対応をするのは死にそう。特に音周り
  • 動作パフォーマンスも環境によって全然違う
  • 安定したフレームレートはどうやると実現できるのですか
  • WebGL対応環境はブラウザとGPU両面からかなり限られる
  • ジョイスティック未対応。将来的には対応? (http://dvcs.w3.org/hg/webevents/raw-file/default/gamepad.html)

Unity

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

NaCL (Native Client)

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

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

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

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

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

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

名無し名無し 2012/01/12 21:40 Silverlightを無視しないでください!?

紅茶紅茶 2012/01/13 07:23 unityのわるいとこ"ブラウザ用プラグインの普及率はおそらくまだ低い
"→3.5βではflashの書き出しができるので問題ないのでは?

VXVX 2012/01/13 10:21 Unity Web Playerはプラグインが無いとダウンロードページのリンクバナーに置き換えられるので
プラグインの普及率は関係無いんじゃ?
どちらかというとFlashと同じでモバイルデバイスが無理なことが

ABAABA 2012/01/15 11:38 Unityの方がVMの出来自体は良い感じがするので、せっかくUnityで作ったのなら、FlashとしてではなくUnity上で遊びたい気もします。Flash書き出し版の再現度はどんくらいのものなんでしょうかね

ABAABA 2012/01/15 11:39 プラグインが入ってないときに何割くらいの人がわざわざダウンロードしてくれるかという比率が気になるところです

紅茶紅茶 2012/01/16 13:33 http://d.hatena.ne.jp/nakamura001/20111222
こちらでunityのサンプルプロジェクトAngry BotsをFlashで書き出したものが公開されています。
Flashエクスポータのサポート状況は公式faqに記載がありました
http://unity3d.com/unity/preview/faq
ただ、unity3.5の正式リリース版ではflash書き出しは別途ライセンスが必要となるそうです。。

 | 
旧AbaPage Diary Logs
Back to ABA Games