5.1さらうどん

@giginetの技術ブログ。ゲーム開発、iOS開発、その他いろいろ

OUYA+cocos2d-xで始めるゲーム開発入門

OUYA買いました

f:id:gigi-net:20130705194043j:plain

OUYA

発売前からPre Orderしていたのがようやっと届きました!

OUYAって何?

意外と知らない人が多いようで、OUYA買ったよー!と言っても反応してくれる人がそこまで多くなかったので、簡単に説明しておきます。

OUYAは6月末に発売されたAndroid搭載の家庭用ゲーム機で、以下のような特徴があります。

  • Android4.1.2搭載
  • 安価(コントローラー込みで$99)
  • ルービックキューブサイズ
  • ハック可能(開発ツールが公開されていてゲーム開発が容易)
  • Free to Play(全てのゲームが無料提供。コンテンツ課金が中心)
  • HDMI, Bluetooth, USBなど拡張性が高い

プレイヤーは無料でゲームが遊べ、開発者にとっては、開発環境を選ばない、HD出力可能、規格化されたコントローラーが利用可能、無料と、非常に開発のしやすいプラットフォームになっています。

ファーストインプレッション

期待度大のオープンソースゲーム機「 OUYA ( ウーヤー )」を試してみた 【@maskin】 | TechWave

詳しくは上記の記事を読むといいと思います。

ちなみに、モノによるそうですが、僕が購入したものは、プラグが日本の物に対応していないロットだったようで、別途変換コネクタの購入が必要になります。

f:id:gigi-net:20130705233425j:plain

ACアダプターを見たところ、電圧は100Vに対応しているので、プラグの変換だけでOK。

[asin:B00BWG23E2:detail]

また、地味にmini-USBケーブルが付属していないため、開発したい方は別途用意しましょう。HDMIケーブルは最初から付属していて良心的!

さっそくゲームを作ろう!!!

正直、現状ロクなゲームがないので、遊ぶために買うのは非常にオススメしません。なぜかAndroidが搭載されているのにも関わらず、Google Playには直接接続できないため、現状遊べるソフトは100本程度に限られているし、ゲームの質もインディーズレベルの物が多いです。

OUYAを購入した方の多くはゲーム開発者だと思うので、以下、OUYA上でのゲーム開発についてお伝えします。

この記事について

この記事では、以下のような情報についてお伝えします。

  • OUYAアプリケーション開発環境構築について
  • OUYA Development Kit(ODK)について
  • OUYA上でのcocos2d-xの実行について
  • ODKをC++上から利用する方法について
  • サンプルコード

また、この記事ではMacOSX上での開発を前提としていますが、環境に依存せずに開発できると思います。

Android開発環境の構築

OUYAはAndroid SDKで開発したアプリケーションをそのまま走らせることができるため、基本的な開発はAndroidアプリケーションの開発手法に則って行われます。

Androidの開発環境については、ググればいくらでも出てくるので以下の記事をご参照ください。

初心者必見!MacでAndroidアプリの開発環境を整えよう【SDKインストール】 | GanoWeb

OUYA実行環境の構築

docs/setup.md at master · ouya/docs

こちらにOUYA開発環境の構築方法が載ってます。

一応動画が付いているのですが、解像度低すぎで何やってるかサッパリなので、要点だけ書きます。(Macでの構築方法。Windowsの方は上記記事参照のこと)

Android SDKを導入してPATHを通す

上記記事参照

Android SDK 4.1.2の導入

OUYA上のOSはバージョン4.1.2なので、android sdkコマンドを実行し、GUIからインストールしてください

USB Vendor IDの登録。
echo "0x2836" >> ~/.android/adb_usb.ini
adb kill-server
adb devices

この手順を踏むことで、OUYAがAndroid端末として認識され、実機実行が可能になります。

サンプルアプリを動かしてみよう

OUYA Development Kit(ODK)の導入

OUYAの開発キットを導入します。

OUYA Developers

こちらのサイトからダウンロードしましょう。ざっくり見た感じ、以下のような機能が使えるようです。

この中にサンプルプロジェクトが3つ含まれているので動かしてみましょう

  1. Eclipseを起動し、File > New > Other > Android Project from Existing Code.を選択
  2. OUYA-ODK/Sample/から実行したいフォルダを選択して追加
  3. プロジェクトツリーで右クリックし、Run AS > Android Application
  4. Deviceでouya-ouya_consoleを選択

今までの手順が上手くいっていれば、実行可能なデバイスにOUYAが表示されているはずです。

f:id:gigi-net:20130706221727j:plain

例えば、game-sampleを実行すると、ATARI時代に戻ったかのような、目に痛い全方位シューティングが起動します。

f:id:gigi-net:20130706221518j:plain

cocos2d-xプロジェクトを動かしてみよう

さて、ここまで来たらゲーム開発をすぐにでも始められるので、Android開発の経験がある方はガリガリ作ってください。

僕はAndroid環境での開発は慣れていないので、cocos2d-xを利用して開発することにします。

cocos2d-xのAndroid開発環境構築が非常に面倒なので以下に説明します。

大筋は下記の記事に従えばOK

Cocos2D-X Tutorial for iOS and Android: Getting Started

Native Development Kitの導入

Android SDKの他に、NDKと呼ばれる、Android上でネイティブコードを走らせる仕組みを導入する必要があります。

Android NDK | Android Developers

導入して適当なところに置きましょう。今回は/Application/Androidの下に置きました。

その後、NDK_ROOT, ANDROID_SDK_ROOTを環境変数に追加してください

launchctl setenv NDK_ROOT /Application/Android/android-ndk-r8e
launchctl setenv ANDROID_SDK_ROOT /Application/Android/sdk
cocos2d-xのダウンロード

Cocos2d-x | Download

ダウンロードしましょう。今回は2.1.4で検証。

また、解凍したディレクトリのパスをCOCOS2DX_HOMEとして環境変数にしましょう

launchctl setenv COCOS2DX_HOME /path/to/cocos2d-x-2.1.4
プロジェクトの作成

解凍したディレクトリにあるcreate_android_project.shを走らせましょう。対話環境が立ち上がるので、以下の項目を順に入力してください

  1. パッケージ名(ここではorg.kawaz.ouya)
  2. ターゲット番号(表示されている一覧から、2.1.4を示すIDを入力してください)
  3. プロジェクト名(ここではHelloOUYA)
ビルド

COCOS2DX_HOMEに今作成したプロジェクトのフォルダができているので、proj.android以下にあるbuild_native.shを実行してください

Eclipseに追加

先ほどのサンプルと同様にEclipseに追加しましょう

Eclipse上でC++のコードをビルド

毎回build_native.shを走らせるのはダルいので、Eclipseの設定を変更して自動でビルドできるようにしましょう。上記の記事に詳しく書いているので各自ご確認ください。

実機実行

ここまでのステップを経ると、cocos2d-xのサンプルプロジェクトがOUYA上で実行できます。おめでとう!

コントローラーをcocos2d-xから利用しよう

せっかくOUYA上で自分のゲームが動いても、コントローラーが使えなくてはあまり嬉しくありません。というわけで、C++のコードからODKを参照して、OUYAのコントローラー状態を取得してみましょう。

JNI(Java Native Interface)

ここではJNIと呼ばれる仕組みを使います。これを使うことで、CとJavaの間で相互に資産を利用することができます。

今回は、JNIを用いて、ODKのAPIラッパーをC++で実装し、cocos2d-x上から呼び出してみます。

JNIはなかなか取っつきづらいのですが、下記を参照すれば書けると思います。

JNIコーディングメモ(Hishidama's Java native interface coding Memo)

以下にOuyaControllerをC++上で実装したものを置いておきます。

OUYA Development Kit (OuyaController) Wrapper for C++

使い方

例えばcocos2d-xで利用する場合、updateメソッド内で呼び出すと良いでしょう。

#include "OuyaController.h"

using namespace Kawaz::OUYA;

void MyScene::update(float dt) {
  // Get OuyaController Object of Player 1 (PlayerID = 0)
  OuyaController *controller = OuyaController::getControllerByPlayer(0);
  if (controller != NULL) { // if controller was found.
    float x = controller->getAxisValue(OuyaController::AXIS_LS_X); // X Axis value of Left Stick
    float y = controller->getAxisValue(OuyaController::AXIS_LS_Y); // Y Axis value of Right Stick
    bool o = controller->getButton(OuyaController::BUTTON_O); // get O button state.
    if (o) {
      CCLOG("Button O is pressed!");
    }
  }
}

サンプルコード

コントローラーでかわずたんを動かすサンプルを作成してみました。

giginet/cocos2dxOuya

以下のリポジトリをCOCOS2DX_HOMEに置き、Eclipseに追加すればうちの環境では動いていますが、他の環境では上記を参考に弄らないと動かない可能性があります。(未確認)

f:id:gigi-net:20130706222700j:plain

フルHDの画面上をかわずたんが縦横無尽に動き回る!

まとめ

自分の作ったゲームがテレビでフルHDで動くとやっぱりテンション上がりますね!

コントローラーで遊べるのも良いし、対戦ゲームなんかも作りやすそう。

しかし、触った感じ、残念ながらOUYAが流行る未来が全く見えません。せっかくゲーム作っても遊んで貰えないことが多そうですね。独占供給は辛そう。

第8世代ゲーム機OUYAが酷評!?「お金を払ってまで手に入れるものではない」 - koroのPSP改造

ウワサによると、iOS7から、GameControllerAPIが実装されるみたいなので、iOSAndroidへの移植を前提に開発するのであれば、OUYAに供給するのもアリなのかも。

Unity-OUYA楽しそう

UnityをOUYA対応するプラグインがあるようなので後日試して記事にしたいと思います。

Unity + OUYA

iPhoneゲームでインタラクティブミュージックに挑戦してみた話

先日、『VOXCHRONICLE -オクスクロニクル-』というiPhoneゲームを公開しました!
AppStoreにて完全無料で配布中です。(広告も一切ありません!)

f:id:gigi-net:20130512145921p:plain

VOXCHRONICLE - gigi-net.net

音を奏でる奥スクロールRPG『VOXCHRONICLE -オクスクロニクル-』リリースしました - 5.1さらうどん

f:id:gigi-net:20130512161149p:plain

このゲームは、音楽の動的生成をウリにしていて、他のゲームにはない尖った作品に仕上がっています。

このような音楽の自動生成は最近のゲーム業界では「インタラクティブミュージック」と呼ばれています。最近の事例としては、昨年のCEDECで紹介された『ファンタシースターオンライン2』のBGMのプロシージャル生成の例が記憶に新しいです。

4Gamer.net ― [CEDEC 2012]PSO2の「途切れないBGM」はこうやってできている。セガが語る「BGMのプロシージャル生成」

この記事では、『VOXCHRONICLE』を一例に、iPhoneゲームでのインタラクティブミュージックへの挑戦をご紹介したいと思います。

インタラクティブミュージックとは

インタラクティブミュージック(IM)」とは、狭義では従来、固定された音楽を鳴らしているだけのBGMに過ぎなかった音楽を、プレイヤーの操作により、状況に応じて動的に生成していくような試みのことだと思います。しかし、広義では音楽の動的生成はインタラクティブミュージックの一面にすぎず、音楽とゲームを幅広い形で融合させていこうという試みです。

詳しくは、インタラクティブミュージックについての勉強会などを主催している「インタラクティブミュージック研究会」のページをご覧ください。

InteractiveMusicLaboratory

VISS -オクスインタラクティブサウンドシステム-

概要

『VOXCHRONICLE』では、プレイヤーのコマンド入力によって動的に音楽を生成し、没入感を高めています。このシステムをVISS(ヴァイス)と呼んでおり、今作品のキモとなっております。

まず、以下の動画を見てください。

『VOXCHRONICLE』では、音楽の1小節がゲーム中の1ターンに対応しており、プレイヤーが選択したコマンドにより、次の小節が動的に変化していきます。

VISSは各小節毎に「メイン」「リフ」「ドラム」と呼ばれる3つの音声ファイルを同時に再生することで、様々な状況に応じてリアルタイムに音楽を作り出しています。

ゲームに使われている音声ファイルは、以下のような1小節毎の形になっていて、このような音を規則に沿って3音同時に鳴らしていると考えてください。

http://www.kawaz.org/commons/preview/1607/volca_voxattack0.mp3:sound

また今作ではステージによってガラッと曲調が代わっているのも特徴です。

メイントラック

メイントラックは主人公(オクス・ラスカ)の行動を表現したチャンネルです。

曲のメインメロディに相当します。

プレイヤーの入力したコマンドによって曲が切り替わっていく一番わかりやすい変化です。上記の動画を見て頂ければイメージは掴めるかと思います。

コマンド毎に1小節で終了する技や、連続で使い続けることで4小節が繰り返されるコマンド(剣、杖)があります。

また、イントロやアウトロ、ボス戦QTE時の専用ループなど、ゲームの進行に関わるメロディもメイントラックとして鳴らされます。

リフトラック

リフトラックはモンスターを表現したチャンネルです。

モンスターが固有の音を持っており、今一番近いモンスターが持っている固有音が再生されます。
リフは各音セットに4種類の音があり、出現する各モンスターに割り当てられています。

例えば、以下の動画がリフが一番わかりやすい「遺跡」のステージで一番近くのモンスターを切り替えていった例です。おわかり頂けるでしょうか。
カーソルが載っている敵がマスクと宝箱のモンスターどちらかに注意して音を聞いてみるとわかりやすいかと思います。

マスクのリフ:http://www.kawaz.org/commons/preview/1603/ttn_counter0.mp3:sound
宝箱のリフ:http://www.kawaz.org/commons/preview/1604/ttn_counter1.mp3:sound


また、音量も一番近い敵との距離によって変わります。
ちなみに、ボス戦においてはボスが使用した技によって細かくリフが変化しているのですが、音屋さんとの意思疎通ミスで、非常にリフの変化がわかりにくくなってしまいました。ちょっと心残り。

ドラムトラック

ドラムトラックは場全体を表現したチャンネルです。

場の盛り上がりを何となく推定し、それに応じてリズムを切り替えています。
例えば以下の動画、「草原」のステージがわかりやすい例。プレイヤーが何も操作せずに敵が近づいているだけで、どんどんドラムが盛り上がっていくのがわかると思います。

おそらく、遊んだことのある方はDSの『メテオス』などを思い出すのではないでしょうか。


具体的には、ドラムレベルという0~4の5段階の隠しパラメータがあり、場全体の状況からドラムレベルを推定し、それに応じた5種類のドラム音を切り替えるという処理を行っています。こちらのHPが低かったり、敵が多かったり、パワーが溜められていたり、ピンチの局面にはドラムレベルがどんどん上がっていきます。
(ちなみに、上記のような仕組みを開発内ではDSKY(どすこい・ドラムシステム空気を読む)と呼んでいました)

例として、以下は「深海」ステージのドラムです。

ドラムレベル0:http://www.kawaz.org/commons/preview/1601/negi-3c_drum0.mp3:sound
ドラムレベル4:http://www.kawaz.org/commons/preview/1602/negi-3c_drum4.mp3:sound

ドラムトラックとは便宜上の呼び方で、ステージによってはドラム自体はメイントラックに組み込んでしまい、代わりにパーカッションが使われていたり。例えば「炭鉱」ステージが好例。

上記の5種類の他に、このチャンネルは「インパク」と呼ばれる特殊なドラムを4種類持っています。これは普通の音楽のフィルインに相当します。

このゲームには「パワーチャージ」と呼ばれるキャラクターの強化コマンドが存在しており、チャージしたパワー4段階に応じて、普段のドラムを無視して強制的にインパクトが挿入されます。

例えば、以下の動画のドラムを注意深く聞いて頂くと、パワーの解放タイミングでシンバルなどが鳴っています。

インパクト1:http://www.kawaz.org/commons/preview/1605/volca_impact0.mp3:sound
インパクト4:http://www.kawaz.org/commons/preview/1606/volca_impact1.mp3:sound

これらの音をどうやって繋げているの?

これらの音をどのような仕組みで繋いでいるかは、以下の図解を時系列に沿って見て頂ければご理解頂けるかと。

1. 曲の再生開始=ターンの開始。3音が同時に鳴り始めます。
f:id:gigi-net:20130520171811p:plain

2. 0.5小節が経過。四つ打ち曲なら裏拍のタイミング。モンスターが行動します。
f:id:gigi-net:20130520171816p:plain

3. 0.9小節が経過。この時点でコマンド入力を打ち切り、現在の状況に応じて次のトラックを各チャンネルに挿入します
ここでは何もコマンドが入力されていないので、次のメイントラックは待機音
f:id:gigi-net:20130520171820p:plain

4. 次の小節へ。例えばここでアタック(剣)のコマンドを入力します
f:id:gigi-net:20130520171829p:plain

5. また0.9小節になったタイミングでアタックのトラックを次のトラックに挿入
f:id:gigi-net:20130520171834p:plain

6. アタックコマンド音の1小節目がなり始めます
f:id:gigi-net:20130520171838p:plain


このように、チャンネル毎に待ち行列を持っていて、今の状況に応じて次々と次のトラックをpushしていく作りになっています。

音作りの難しさ

僕は作曲については一切携わっていないので、詳しい解説は曲を作った方々の記事に期待するとして、開発の現場で言われていたことは以下のようなことでした。

1小節しかない行動のメロディ差別化

普通の曲は同じようなフレーズを複数回繰り返して曲を繋げていくのが一般的ですが、このゲームの場合、弓やノックバック、回復など多種多様の行動は1小節で全く異なるメロディを作成しなくてはならず、メロディのバリエーションを差別化するのが非常に困難でした

どのコマンドからでも破綻なく繋がる曲展開

ゲームの仕様上、ほぼ全てのコマンドに遷移してしまうため、どの順番で曲が繋がってもコード進行が破綻しないように作曲する必要がありました。また、溜めの後はスラッシュや魔法に繋がりやすい、といったゲームルールやレベルデザインを完全に理解し、プレイ傾向に応じた曲遷移を考える必要がありました。

オクスとラスカの差別化

今作はオクスとラスカのダブル主人公、キャラチェンジが実装されていて、その二人のコマンドを大きく差別化させるのが難しかったようです。例えば、リズムを変えたり、楽器を変えたり、拍子を変えたりと、各楽曲様々な趣向で二人の行動を差別化させています。

全14曲の圧倒的ボリューム

『VOXCHRONICLE』はプロ含め12人の音屋さんによる14つの曲セットという圧倒的ボリュームを秘めています。

上記の解説のような曲データを全部持つと、各曲セット毎に50小節前後の音声ファイルが必要になります。ゲーム中の全小節数の合計はなんと738小節。この規模感が伝わるでしょうか?

また、曲セット毎にかなり細かく音声の共通化設定を行えるような設計になっています。(例えばオクス・ラスカのドラム音を別々にするか、共通化するかなど)。そのため、最も少ない曲セットで43小節、最大構成で64小節の構成となっています。

ゲーム中で利用している楽曲はgithubにて視聴できますので、ご興味のある方はどうぞ

VOXCHRONICLE/VOXCHRONICLE/Resources/Music at master · giginet/VOXCHRONICLE · GitHub

iPhone上での実現の問題点

iOS上でインタラクティブミュージックを実現するにあたって、一番の問題点はメモリと曲の聞こえ方のトレードオフでした。

最初に、何も考えずに逐次ロードを試してみたところ、シームレスに音楽が繋がっているように聞こえるために、デコードなどの遅延がオーバーヘッドとなり、スムーズに音が繋がらない場合が多々ありました。(特にiPhone4などではまともに遊べなかった)

グラフィックでの数フレームの遅延はなかなか目視できないモノですが、音楽の場合は1フレーム途切れただけでもすぐにわかってしまいます。

そのため、音声データをバッファとしてメモリ上に全て展開しておく方針に転換しました。
こちらはこちらで、ロードを効率よく、かつ適切なタイミングで行わなければ、大きなロード時間が発生したり、メモリリークが発生したりするという新たな問題が発生しました。

そこで、要件としては以下を満たす必要がありました

  1. 小節切り替えに合間ができない
  2. 曲セットの変わるタイミングでロードが入らない
  3. メモリリークが起きない
  4. デコードはなるべく高速化
  5. アプリ容量は極力削減しなくてはならない

『VOXCHRONICLE』の場合は、1ステージ中に同時に使用される可能性のある小節数は多くても60程度、さらにステージ間でステージセレクト→イントロが鳴って操作不可能な時間が存在するので、そのタイミングで今まで使っていたステージの曲セットを解放し、同時にそのステージ中で利用するファイルを全て展開しています。

メモリ上に全て展開することで1の問題、操作不能なタイミングで1小節ずつ非同期ロードを行うことで2の問題は解決しました。

3, 4, 5の問題を解決するためには、音声フォーマットの選別と圧縮が必要でした。

WAVEは音質、デコード速度共に優れていますが、アプリ容量の面から難しく、mp3はループサウンドに不向きという特徴、OGGiPhone上でのデコードが難しいという理由からそれぞれ採用を見送りました。

結局、iPhone上でこのような動的変化をさせるには、CoreAudio一択となります。
具体的にはafconvertでCoreAudioのIM4 Codec、ステレオ22050bpsで固定することで、音質を損なわずにメモリ、容量の削減を行うことに成功しました。

コンシューマ機から見るとまだまだいろいろと甘いんでしょうが、今作はこれでiPhone3GSでもほぼ遅延なく動作できるように実装できたので、及第点ではないでしょうか。

ご興味を持った方は

自分でやっておいて言うのもなんですが、インディーズゲームでは前代未聞の規模感、仕様で実装できたなあと思っています。(おそらく無料の限界!)

もし、インタラクティブミュージックや、ゲーム開発そのものにご興味を持って頂いた方は、インタラクティブミュージック研究会(IM研)や札幌ゲーム制作者コミュニティKawaz、そしてこの『VOXCHRONICLE』をよろしくお願いします!

札幌ゲーム制作者コミュニティKawaz

VOXCHRONICLE for iPhone, iPod touch, and iPad on the iTunes App Store

音を奏でる奥スクロールRPG『VOXCHRONICLE -オクスクロニクル-』リリースしました

f:id:gigi-net:20130512145921p:plain

VOXCHRONICLE - gigi-net.net

去年の秋頃からチマチマ作っていたiPhone向け奥スクロールRPGVOXCHRONICLE -オクスクロニクル-』、ついに公開です!長かったー!

VOXCHRONICLE for iPhone, iPod touch, and iPad on the iTunes App Store

f:id:gigi-net:20130512161144p:plainf:id:gigi-net:20130512161149p:plainf:id:gigi-net:20130512161156p:plain

どんなゲーム?

行動と音楽が同期する奥スクロールRPGです。

主人公『オクス』が奥へと進み続けていくので、毎ターンコマンドを入力してオクスを安息の地まで導いてください。

一番の特徴は、プレイヤーの操作に同期し、リアルタイムに次々とメロディが紡がれていきます
1ターンが1小節に対応していて、ターンの長さは曲のBPMに依存します。

また、場の状況や盛り上がりを総合的に算出し、空気を読んだ曲展開になっていくのも特徴。


どんなゲームか一言で形容するのは難しいので、無料なのでとりあえず一度遊んでみてください。ここにしかない唯一無二のゲームだと自負しています。

外見は音ゲーRPGという皮を被っていますが、核の部分は硬派なレトロアーケード。しっかり遊びこまないと完全クリアは難しいバランスに仕上がりました。

初心者から上級者も納得の全9ステージ

前作(後述)は3ステージだったのに対し、今作はステージ分岐が付き、全9ステージに!

サクッとクリアできる初期ルートから、開発者でもうんうん唸る最難関ルートまで全4ルート!ステージによって曲も見た目もガラッと変わります。

f:id:gigi-net:20130512163448p:plain

f:id:gigi-net:20130512163548p:plain

豪華14曲

特筆すべきは豪華な作曲陣。プロ含めた音屋12名による書き下ろし14曲。インディーズゲームでは他に類を見ない物量を誇っています。

データ量としては前作は16小節3曲で48小節だったのに対し、今作は50小節前後の楽曲14曲で750小節以上!

この物量を感じ取って頂けますでしょうか。

個性的なボスたち

ステージの最後に待ち構えるボス達も個性的。守って、攻めて、キャラを切り替えて、多才な戦略が要求されます。

f:id:gigi-net:20130512163306p:plain

最後にはQTEでトドメの一撃。

f:id:gigi-net:20130512161201p:plain

充実のチュートリアル

前作はルールの説明を放棄していましたが、
今作は丁寧なチュートリアルを実装!遊びながらにしてルールを把握できます。

f:id:gigi-net:20130512160348p:plain

実績、モンスター図鑑、やり込み要素

GameCenterのAchievementに対応。さまざまなお題で何度も遊べる!

f:id:gigi-net:20130512163853p:plain

全54体の倒したモンスターが記録される『モンスター図鑑』、最速クリアを競うなどのやり込み要素も満載!

f:id:gigi-net:20130512163820p:plainf:id:gigi-net:20130512163847p:plain

前作『VOXQUEST』

このゲーム、実は昨年公開した『VOXQUEST』の続編となっております。


iTunes App Store で見つかる iPhone、iPod touch、iPad 対応 VOXQUEST

音を奏でる奥スクロールRPG『VOXQUEST -オクスクエスト-』公開しました - 5.1さらうどん - 過去ログ

『VOXCHRONICLE』から入っても全く問題なく遊べるので、気に入ったらこちらもあわせてどうぞ

プレイ動画

全9ステージのうち、比較的簡単な荒野→森林→古城ルートのプレイ動画です。

最後は4つあるエンディングのうちの一つ。残りは君の目で確かめよう!

技術的な話

このゲームはcocos2d-xにて実装されていますが、音楽を自動生成する複雑な仕様を実装するために、なかなか面白い技術をたくさん取り入れています。

また、このブログでも何度も取り上げているLua-Bindingを用いた通称「オクスクリプト」によるレベルデザインを行っていたりします。

近々、細かな仕様と共に、別の記事にまとめたいなぁ、と考えておりますのでお待ちください!

ソースコード

なんとオープンソースです。ご興味のある方はぜひ!

(5/13追記 誤解を招きましたがCC-BY-NA-NDです。オープンソースと言うよりもソース公開が正しい)

gitのコミットログが1500近くに達していて、かなりの規模になってしまいました。

giginet/VOXCHRONICLE · GitHub

開発

札幌ゲーム制作者コミュニティKawaz


なかなか尖ったゲームに仕上がりましたが、ゲームの出来は自信アリ。いろんな人に遊んで貰えると嬉しいなぁ!