9leap Programming Camp

でこちらが昨日の話。
JavaScriptHTML5を用いてモバイル向けゲームを作る、という勉強会。知り合いの[twitter:@sidestepism]君が宣伝してたので応募だけしてて補欠4番目だったので半ばあきらめ気味だったんですが、当日の朝「まさか繰り上がってないよな」と思って確認したら繰り上がってたので参加安定でした。というか主な発表者がその[twitter:@sidestepism]君と[twitter:@alpicola]君とか両方知ってる人やんという。

講演

まずはゲームプログラミングとは何か、なぜJavaScriptでやるか、という話。個人的に目から鱗だったのは手順の話。

  1. テーマを決める
  2. 最小スペックを決める
  3. 作る
  4. 遊ぶ
  5. 改善点を考えて2へ戻る

という手順で作る、という風に話していたのですが、この2番がゲーム開発というものの印象をひっくり返すかなり重要な考え方のように思いました。というのも、周りでゲーム作ってる人というのが主にサークル単位で大作を作っている人で、「ゲーム開発とは体力だ」とか「ゲーム開発とはプロジェクトマネジメントだ」という話をよくしている人たちばかりだからです。そのあたりの話は非常に賛同できるんですが、すべてのゲーム作りが重厚長大である必要はない、という発想がここでは非常に重要なものに思えました。限定されたスペックでも面白いものができればそれは重厚長大なものへの発展の可能性があるわけですし。
さらに言ってしまえば、プログラミングの勉強会である、ミニゲームの作成がテーマであるという性質上、「動的ゲーム」に限った話が多くされていたのはやっぱり気になったところ。エッセンスだけ取り出せば「静的ゲーム」でも十分面白いものは作れる、というのが自分の考えなので、エッセンスを抽出して最小スペックで、ということでいえば別に動いている必要はないと思うのです。その最小動作単位の量子化された静的ゲームの範囲でどれだけゲームバランスを調整するか、というテーマも非常に興味があります。

作ったものの話

そういうわけで、自分がとったアプローチは「あえてキャラクターをガリガリ動かすものを作らない」というアプローチ。そしてゲームバランスの調整に作業時間の1/4くらいをあてました。…もっとも、このへんに至ったのは「開発時間4時間で用意されたライブラリの仕様を使えるレベルに理解するのは不可能」と判断して自前でルーチン組むようにしたからってのもあるんですが。
作ったものは制限時間つきでひたすら計算していくゲーム…なんですが、四択の選択肢に「正しい答えが出るとは限りません」。誤差が+100/-100になったら終了。そして誤差が正に振れてるか負に振れてるかはインターフェース上わからないようになっています(だってわかったらその逆のほうにずれてるやつ押せば生き延びれるし)。もっとも、これだけだとただのランダムウォークゲー(連打してれば生き延びれてしまう)なので、一定の確率で強烈に誤差のあるダミーが出現するようにしてみるなどのバランス調整も考えられました。それか乱数の分布を調整するとか。

余談

素材を作るのに久しぶりに(7年ぶりくらいかな?)ドット打ちをしようと思ったんですが、当時はWindowsユーザーだったわけでMS Paintというドット打ちにすばらしく適したソフトがあったわけですがMacでそれやるとなるといいソフトがなくて結局ドット打ちはあきらめました。もっかいドット打ちの練習すっかなぁ。