スバラシティ制作メモ その1
- 2015/06/18
- 08:06
これから何回かにわけて、
スバラシティの制作について書いてみようと思います。
大きく分けて、
・プログラム
・グラフィック
・ゲームデザイン
・開発体制
を予定してます。
後半になるにしたがって抽象的な話が多くなりそうですが・・
頑張って書いてみます。
今回はプログラムの話
SpriteKitをうまく使おう!みたいな内容になってます。
スバラシティはSprite Kitを使って制作
Sprite Kitはアップル純正の2Dゲーム用のフレームワーク。
2D画像の制御に関しては不満はないのですけど、
弱い所もあるので、
自分なりに工夫して使っています。
サウンドはOpenAL
Sprite Kitのサウンドは本当に鳴らすのみで音量調節もできないんです。
ちょっと残念です。
なのでOpenALを使って、自分用のサウンドルーチンを作っています。
僕がサウンドまわりでよく使う、
Sprite Kitで欲しいなと思う機能をちょっと書きますと。
■ピッチ変化
レベルアップのときやコンボのときなど、
ピロン、ピロン…と少しづつ音程を高くさせたりできます。
ゲームには便利です。
■同じ音を連続して鳴らしたときの制御
同じ音を連続して鳴らすとき、
前の音が停止して次の音が鳴った方が、
歯切れがいいんですよね。
打撃音の「ガーン」という音なら「ガガガ…ガーン」みたいになります。
単音のみで鳴るか、重ねて鳴らすかの設定は欲しいです。
■BGMのフェードイン、フェードアウト
スバラシティではBGM鳴らしっぱなしだけど、
やっぱフェードイン、フェードアウトの機能は普通に使いますね。
Sprite Kitでも上記くらいのサウンド機能があれば、
わざわざopenALを使わなくて済むので、
楽ができるんですけどねー。
メニューはUIView
ボタンやメニューの制御などは、interfaceBuilderで作っています。
プレイ画面のSKsceneの定義は1つのみです。

ランキング画面も同様にプレイ画面を流用して、
UIViewのアニメーションに重ねて
SKViewの画面を表示したり、書き換えたりしています。

フレームレートを変更させてバッテリー節約
これは作っている途中で気がついたんですが、
スバラシティってすごく時間がかかるゲームになってて、
プレイ画面もずっと表示したままなので、
結構バッテリーを食ってしまいます。
そこで全体のフレームレートを落としてみたら、
ブロックの挙動や演出が気持良くないんですよ。
ああ、どうしよう!
そこで考えたのが、
フレームレートを動的に変更することでした。
操作が行われていない時、描画の更新を15フレーム/秒まで落としています。
ブロックが落ちたりレベルアップしたりエフェクトの表示中は、
描画の更新を60フレーム/秒にしてます。
なので、見てる間だけはバッテリーの消費は1/4程度になっている感じです。

雲や鳥などは常時出現しているので、
フレームレートに合わせて、速度調整しています。
そこら辺をよく見るとフレームレートの境目がわかりますよ。
テクスチャアトラスで機種対応、ローカライズ対応
Sprite Kitではテクスチャの管理が楽で、
テクスチャアトラスというフォルダを作って、
そこにファイルを入れるだけで、テクスチャをまとめてくれます。
今回は、iPhoneとiPadの2種類の解像度に対応したグラフィックを用意してます。
あと、日本語と英語の2種類の言語に対応してて、そこも若干グラフィックが異なります。
なので2x2=4種類のテクスチャアトラスを作って、
それぞれを読み込んで、機種対応、ローカライズ対応をしてます。(プレイ画面の話ね)
これはなかなか便利に使えました。

SKActionは使っていない
SKActionというスプライトを動かす機能があるんですが、
実はスバラシティでは一切使っていません。
SKActionは手軽に使えるんですが、
一度命令与えると後から手を加えられないんですよね。
垂れ流し用のエフェクトなどには便利なんですが・・。
上記の動的にフレームレートが変わることや、
また下のようなちょっと手の込んだエフェクトを作ったこともあって、
スバラシティでは、全部フレーム単位で座標を指定して、
ブロックやらエフェクトやらを動かしています。

ちょっとSprite Kitの不満点が多くなりましたが、
ゲーム制作に便利なフレームワークなのは確かです。
では、次回はグラフィックの話。
スバラシティの制作について書いてみようと思います。
大きく分けて、
・プログラム
・グラフィック
・ゲームデザイン
・開発体制
を予定してます。
後半になるにしたがって抽象的な話が多くなりそうですが・・
頑張って書いてみます。
今回はプログラムの話
SpriteKitをうまく使おう!みたいな内容になってます。
スバラシティはSprite Kitを使って制作
Sprite Kitはアップル純正の2Dゲーム用のフレームワーク。
2D画像の制御に関しては不満はないのですけど、
弱い所もあるので、
自分なりに工夫して使っています。
サウンドはOpenAL
Sprite Kitのサウンドは本当に鳴らすのみで音量調節もできないんです。
ちょっと残念です。
なのでOpenALを使って、自分用のサウンドルーチンを作っています。
僕がサウンドまわりでよく使う、
Sprite Kitで欲しいなと思う機能をちょっと書きますと。
■ピッチ変化
レベルアップのときやコンボのときなど、
ピロン、ピロン…と少しづつ音程を高くさせたりできます。
ゲームには便利です。
■同じ音を連続して鳴らしたときの制御
同じ音を連続して鳴らすとき、
前の音が停止して次の音が鳴った方が、
歯切れがいいんですよね。
打撃音の「ガーン」という音なら「ガガガ…ガーン」みたいになります。
単音のみで鳴るか、重ねて鳴らすかの設定は欲しいです。
■BGMのフェードイン、フェードアウト
スバラシティではBGM鳴らしっぱなしだけど、
やっぱフェードイン、フェードアウトの機能は普通に使いますね。
Sprite Kitでも上記くらいのサウンド機能があれば、
わざわざopenALを使わなくて済むので、
楽ができるんですけどねー。
メニューはUIView
ボタンやメニューの制御などは、interfaceBuilderで作っています。
プレイ画面のSKsceneの定義は1つのみです。
ランキング画面も同様にプレイ画面を流用して、
UIViewのアニメーションに重ねて
SKViewの画面を表示したり、書き換えたりしています。
フレームレートを変更させてバッテリー節約
これは作っている途中で気がついたんですが、
スバラシティってすごく時間がかかるゲームになってて、
プレイ画面もずっと表示したままなので、
結構バッテリーを食ってしまいます。
そこで全体のフレームレートを落としてみたら、
ブロックの挙動や演出が気持良くないんですよ。
ああ、どうしよう!
そこで考えたのが、
フレームレートを動的に変更することでした。
操作が行われていない時、描画の更新を15フレーム/秒まで落としています。
ブロックが落ちたりレベルアップしたりエフェクトの表示中は、
描画の更新を60フレーム/秒にしてます。
なので、見てる間だけはバッテリーの消費は1/4程度になっている感じです。
雲や鳥などは常時出現しているので、
フレームレートに合わせて、速度調整しています。
そこら辺をよく見るとフレームレートの境目がわかりますよ。
テクスチャアトラスで機種対応、ローカライズ対応
Sprite Kitではテクスチャの管理が楽で、
テクスチャアトラスというフォルダを作って、
そこにファイルを入れるだけで、テクスチャをまとめてくれます。
今回は、iPhoneとiPadの2種類の解像度に対応したグラフィックを用意してます。
あと、日本語と英語の2種類の言語に対応してて、そこも若干グラフィックが異なります。
なので2x2=4種類のテクスチャアトラスを作って、
それぞれを読み込んで、機種対応、ローカライズ対応をしてます。(プレイ画面の話ね)
これはなかなか便利に使えました。
SKActionは使っていない
SKActionというスプライトを動かす機能があるんですが、
実はスバラシティでは一切使っていません。
SKActionは手軽に使えるんですが、
一度命令与えると後から手を加えられないんですよね。
垂れ流し用のエフェクトなどには便利なんですが・・。
上記の動的にフレームレートが変わることや、
また下のようなちょっと手の込んだエフェクトを作ったこともあって、
スバラシティでは、全部フレーム単位で座標を指定して、
ブロックやらエフェクトやらを動かしています。
ちょっとSprite Kitの不満点が多くなりましたが、
ゲーム制作に便利なフレームワークなのは確かです。
では、次回はグラフィックの話。