金曜日, 8月 23, 2013

開発合宿でタイピング音ゲー作った

随分時間がたっちゃいましたが、8/2-4の三日間で任天堂な人たちとの開発合宿にいってきました。仕事とかじゃなく、完全プライベートです。今回誘ってくれたWとMは僕が個人事業をやってた頃に一緒にゲーム開発を手伝ってくれた仲間(弟子!?)なので、どれぐらい腕を上げたのかを見るのも楽しみの一つでした。(上からだなーw)


今回のテーマは「自分がやりたい(けど世の中になくて困ってんだよねっていう)ゲーム」を作ることだったので、ちょっと前から欲しいなぁと思っていた「フリック入力のタイピングゲーム」を作ることにしました。

とはいえ、普通に作ってもつまらないのでなんかないかなーと一週間ほど悩んだ結果、「音ゲーにしちゃおう!」と思いついたのでした。音ゲーも昔から好きだったけど自分で作ったことがなかったのです。(これがのちの悲劇を産む結果に。。)

出来上がりはこちら。(iPhoneでのプレイを推奨)


本当はUnityを使ってみたかったんだけど、クライアントのコードを書くのは三年ぶりだし、学習コストに見合うかが分からなかったので、気になっていたenchant.jsを使ってみました。tmlib.jsと悩んだんだけど、web上の情報量が多い方にしたのでした。

結果、最後の最後まで音ズレに悩まされることに>_<
音ゲーはその性質上、音声再生のタイミングとプログラムを同期させないといけないんだけど、曲の再生ポイントを取得するAPI(currentTime)がなんと、秒単位でしか取得できなくてがっくり。仕方ないのでFPSに合わせたフレーム数を測定して盲目的に入力タイミングを判断することに。このため環境によっては処理落ちして音楽とズレまくってしまいます。

さらに追い打ちをかけたのは、iOSだと音楽再生開始のイベント(play)がうまく飛んでこないこと。ここでプログラムと同期取れないと、頭がズレちゃうんです。結局再生中のイベント(playing)を取ることにしてなんとなくそれっぽくはなったんだけど、まだたまにズレたりする。んもー。

丸二日間の開発時間のうち、半分はこれらの問題に当たることになっちまいました。とほほ。

とまぁそもそもenchant.jsの音声再生メソッドはiOSで動かなかったし、HTML5で音を扱っちゃアカンのね、ということが身に染みて分かりました。今度音ゲー作る時はネイティヴにします。はい。
というか、ブラウザでゲーム作ったらあかん。(言っちゃった:-P)

一方、任天堂メンバーはさすがの真面目さで合宿中にあまり酒も飲まなかった(僕は普通に日本酒飲んでました)し、きちんとしたクオリティのものを作ってきてました。Unityのすごさも実感したし、マイコンで携帯型ゲーム機まで作っちゃった人もいて凄かった。WとMもそれぞれの個性はそのままに、熟練したテクで面白いゲームを作ってて関心しました。


当初は「俺、任天堂の倒し方知ってますよ」て言いたかったんだけど、勝ち負けじゃないよね、てことで終了。またチャンスがあれば参加したいっす!

0 件のコメント: