ラベル Playstation Mobile の投稿を表示しています。 すべての投稿を表示
ラベル Playstation Mobile の投稿を表示しています。 すべての投稿を表示

2012年6月23日土曜日

[PlasStation Mobile] オーディオファイルを再生するには

How to correct the FileNotFoundException of audio files

オーディオデータを再生するためのサンプルアプリです。
ソリューションにwavフォーマットのオーディオファイルを追加します。
今回は「audio.wav」というファイルを追加しました。

このオーディオファイルを再生するだけのソースを書きます。
AppMain.cs
このままビルドして実行するとエラーが起きます。
System.IO.FileNotFoundException has been thrown
追加したオーディをファイルを右クリックして[ビルドアクション]-[コンテンツ]に設定します。
これでオーディオが再生できるようになりました。
ソリューションに複数のオーディオファイルを追加した場合は、それぞれのファイルを[ビルドアクション]-[コンテンツ]に設定する必要があります。
(画像データは追加するとビルドアクションが自動でコンテンツに設定されます)

ここまではSDKドキュメントに書いてあることです。
しかし、この手順通りに操作してもどうしてもオーディオを再生できないケースがありました。

SoundPlayer は、アシッダイズ(テンポ情報を埋め込んだwavファイル)はサポート外のようです。
アシッダイズのオーディオファイルを再生した場合もSystem.NotSupportedExceptionが起きます。

DAWでオーディオファイルを管理している開発者は特にご注意ください。DAWで扱うオーディオファイルはテンポ情報を埋め込んだ方が便利ですからね。
市販のオーディオ素材にもアシッダイズされたものがあるのでご注意ください。
Windows Media Playerで再生できるのにPS Suite SDKでSystem.NotSupportedExceptionが起きる場合は、アシッダイズされたオーディオファイルかもしれません。

Androidでオーディオデータを再生させるときの注意点も公開しています。
[Android] SoundPoolのオーディオ再生ミスをなくす

以上、参考になれば幸いです。

2012年5月26日土曜日

AndroidとPlayStation SuiteとMetroスタイルのSDKを比較する

スマートフォン/タブレット用OSのAndroid、ゲーム開発環境のPlayStation Suite(以下PSS)、PCやスマートフォンでの互換性を持つマイクロソフトのMeroスタイルはそれぞれ用途が異なるので比較しても意味がありません。
ただ、どれも開発環境が(今のところ)無償で公開されていて、今後のシェアがどのように変わるか興味深いものがあります。
そんなわけでSDKについて比較してみました。
※PSSは最近公開されたばかりなので対応が先送りされてる機能が多いです。
※Metroスタイル及びその開発環境であるVisual Studio 11の正式版が公開前のため不明な点が多数あります。
将来変更されそうな点が多数ありますのでご了承ください。

Android SDK
PSS SDK
Metroスタイル SDK
開発環境のプラットフォーム
Windows XP/Vista/7
Mac
Linux
Windows XP/Vista/7
OpenGL2.0必須
Windows8
Windows7への対応予定あり
実行環境(Runtime)
DalvikVM
Mono
WinRT
開発言語
Java
NDKにより部分的にC/C++可
C#
将来他言語への対応予定あり
C#/VB
VC++
HTML5 + JavaScript
高速なグラフィックAPI
OpenGL
nVIDIAのCg言語を使用したOpenGLっぽい独自ライブラリー?
DirectX
データの永続保存
SQLiteの他、独自APIにより可
独自APIにより可
独自APIにより可
ゲームパッド
未サポート
利用可
タブレットやスマートフォンではバーチャルゲームパッドをサポート
ジャイロメーターと加速度計を使った方法が公開されている
振動機能
利用可
無し
不明(端末に依存?)
カメラ
利用可
将来対応予定
利用可
地理位置情報の検出
GPSなど利用可
将来対応予定
GPSなど利用可
動画再生
特定のCodecに限り利用可
将来対応予定
特定のCodecに限り利用可
ネットワークアクセス
利用可
将来対応予定
HTTPやSocketのAPIはある
利用可
他のアプリとの連携方法
Intent、Broadcastなど
Shell
コントラクト
3D(立体視)機能
無し
シャープから自社製端末専用の独自ライブラリーが公開されている
無し
不明
アプリをホーム画面に常駐させる機能
あり
無し
あり
アプリ公開の公式サービス
Android Market
将来対応予定
Windowsストア
Androidの機能の利用可否は機種に依存します。
PSSのグラフィックAPIはOpenGLと呼んでよいのか分かりませんでした。

マイクロソフトはMetroスタイルの開発者を育成するための無料セミナー「Developer Camp」で情報提供を続けるようです。

以上、参考になれば幸いです。

2012年5月12日土曜日

[PlayStation Suite] ウィジットにクリックイベントを持たせるには

How to make Cliclable widgets

PlayStation Suite(以下、PSS)アプリケーションは、クリックイベントを取得できるButtonウィジットがあらかじめ用意されています。
Labelでもウィジットでもクリックイベントを取得したいことがあるので作ってみました。

幸いなことにPSS StudioにはButtonクラスのソースが付属しています。
C:\Program Files (x86)\SCE\PSS\source\UI\source\Button.cs
クリックイベントの付加にあたり、このソースを参考にしました。

イベントの名前はOnClick としました。

ClickableLabel.cs
AppNMain.cs(エントリーポイントを持つクラス)
このソースをビルドするには Sce.Pss.Highlevel.UI の参照が必要です。
ソリューションエクスプローラーの[参照]を右クリックして[参照アセンブリの編集]でSce.Pss.Highlevel.UIを追加するとビルドできます。

実行するとこんな画面になります。
画面のラベルをクリック(タップ)するたびに現在時刻を表示します。
ClickableLabelはLabelを継承してクリックイベントを受け取っています。
継承するクラスをImageBoxウィジットやPanelウィジットに変えてもイベントの取得ができることを確認しています。

Sony Tabletをはじめ、PlayStation Suite CertifiedのXperia(SO-01C、SO-02C、IS11S)はゲームパッドがありません。
ゲームパッドが無い端末はタッチスクリーンにバーチャルなゲームパッドが表示されますが、Androidアプリのようにタッチスクリーンで操作できた方が便利だと思います。
このブログを書いている時点(PSS SDK0.96~0.97)ではScrollPanelはゲームパッドでスクロールできません。フリック操作でしかスクロールできません。
ゲームパッドで操作するには入力の応じて全てのウィジットをSetPositionで移動させればコードが必要です。

Sce.Pss.Highlevel.UIを使ったアプリやゲームパッド無しの端末はタップで操作できる画面設計が使いやすいと思い、このブログを書きました。


以上、参考になれば幸いです。

2012年4月28日土曜日

[PlayStation Mobile] データを保存する汎用的なクラスを作る [PlayStation Suite]

※PersistentMemoryクラスはver0.99で廃止されました。(2012年7月15日追記)
How to save multipurpose data permanently

PlayStation Suite SDKでデータをファイルに保存する方法について考えてみました。
まず注意点ですが、PlayStation Suite SDKは過去のバージョンアップで次のような仕様変更がありました。

0.96→0.97
HashtableクラスやDictionaryクラスのシリアライズ・デシリアライズができなくなった。
キー・バリュー型のデータをファイルに読み書きすることができなくなりました。

0.97→0.98
Storageクラスが廃止された。

このような仕様変更のおかげでファイルI/O機能を何度も作り直す羽目になりました。
今後も仕様変更により、どんな影響が出るか予想できませんのでご了承ください。

今のところ、比較的簡単で安全と思われる方法を考えてみました。
セーブはstring[]をシリアライズしてPersistentMemoryに書き込む
ロードはPersistentMemoryをデシリアライズしてstring[]に戻す
この機能を MtkPersistenMemory というクラスで作ってみました。

実際のソースです。
MtkPersistenMemory.cs
MtkPersistenMemoryクラスの説明
Publicメソッド
void
SetValue (int key, string myValue)
keyに対応する項目の追加・更新をする
keyは0から63まで
string
GettValue (int key, string defaultValue)
keyに値を取得する、該当する項目がなければdefaultValueを返す
keyは0から63まで
enum
Write ()
SetValueメソッドで追加・更新された内容をPersistentMemoryに永続保存する
戻り値に成功(MtkPersistenMemory.Results.Successed)、または失敗を返す(MtkPersistenMemory.Results.Faild)

※PersistentMemoryクラスを使う都合により次の制限があります。
・保存できる容量は64kB以内
・保存されるタイミングはアプリケーション終了時。アプリケーションが異常終了した場合は保存されません。

MtkStorageを実際に利用するサンプルアプリのソースです。
※このソースはSce.Pss.Highlevel.UIを参照します。
ソリューションエクスプローラーの[参照]を右クリックして[参照アセンブリの編集]でSce.Pss.Highlevel.UIを追加するとビルドできます。
AppMain.cs
MtkPersistenMemoryの使い方の解説です。
(1) PersistenMemoryのインスタンス化
MtkPersistenMemoryはインスタンス化する必要があります。前回の保存内容を自動的にロードします。
例:
MtkPersistenMemory memory = new MtkPersistenMemory();

(2) PersistenMemoryから読み取る
GetValueで第1引数にキーを指定して読み取ります。指定したキーが存在しなければ第2引数の値が返されます。
たとえば
label.Text = memory.GetValue(MtkPersistenMemory.KEY00, "nothing");
の場合、KEY00に保存された文字列があればその内容がラベルに表示されます。
KEY00に文字列が保存されていなければ「nothing」が表示されます。
その他の例:
string value1 = memory.GetValue(MtkPersistenMemory.KEY01, "文字列1");
string value2 = memory.GetValue(MtkPersistenMemory.KEY02, "文字列2");

(3) PersistenMemoryに項目を追加・更新する
SetValueでキーと値の組み合わせを追加します。既にキーが追加されている場合は値を上書きします。
たとえば storage.SetValue(MtkPersistenMemory.KEY00, "....");
の場合、第1引数のMtkPersistenMemory.KEY00に保存された項目が存在すれば、値を第2引数の内容に上書きします。何も保存されていなければ追加します。
その他の例:
memory.SetValue(MtkPersistenMemory.KEY01, "文字列1");
memory.SetValue(MtkPersistenMemory.KEY02, "文字列2");

(4) PersistenMemoryに書き込みと結果のチェック
Writeで全てのキーと値の組み合わせを永続保存します。
戻り値に永続保存の結果を返します。保存する容量が64kBを超えた場合は失敗します。
例:
int result = memory.Write();
result == MtkPersistenMemory.Results.Successed なら成功
result == MtkPersistenMemory.Results.Faild なら失敗

KEY00やKEY02という変数名は、適切な変数名(DATEなど)にリファクタリングするとソースが読みやすくなります。
保存できる項目数が64件では多すぎる・少なすぎるという場合は MtkPersistenMemory.cs のvalues = new string[64]; と MAX_SIZE を改造してください。

以上、参考になれば幸いです。

2012年4月21日土曜日

[PlayStation Suite] 中括弧(波括弧) { を改行させない

How to stop moving braces to new line.

PS Suite SDKがオープンベータに移行したので、これからはPS Suiteネタもブログに書こうと思います。
PlayStation Suite Studio(PSS Studio)は使いやすいのですが「{(波括弧、中括弧)」が勝手に改行されてしまいます。

改行されてもアプリケーションに影響はありませんが、Mtkは改行しない方が好みです。
PSS Studioの設定を変えると「{」を改行しないようにできます。

[ツール] - [Options] を開いて
左側の
ソースコード
 コードフォーマッティング
  C#ソースコード
を選択します。
右側の[C#フォーマット]タブのEditボタンをクリックします。
Edit Profile画面のCategoryから角括弧を選択します。
左側の項目をすべて「行末」に設定します。
OKボタンをクリックして設定終了です。

ソースの修正も簡単です。
[編集] - [フォーマット] - [ドキュメントをフォーマット]を実行すると改行を削除してくれます。

これはMono Developer共通なので、Unityでも同じ設定ができます
以上、参考になれば幸いです。

2012年1月4日水曜日

PlayStation Suite Studioのデモで遊んでみる

How to play demo games on PlayStation Suite Studio.
あけましておめでとうございます。
今年最初のネタは「PlayStation Suite Studio」のデモで遊ぶ方法です。

まずは登録手続きからデモを動作するまでの手順について説明します。
OSはWindows7、32bit/64bitのどちらでも動作します。ビデオボードはOpenGL2.0必須です。

1.
Sony Entertainment Networkでアカウントを作る。
https://account.sonyentertainmentnetwork.com
この際、オンラインIDを登録する必要があります。

2.
Developer Program for PlayStation(R) Suite (Closed Beta Test)に申し込む。
http://www.playstation.com/pss/closedbeta/index_j.html

3.
「PS Suite Closed beta test チームからのお知らせ」というメールが届いたら、内容に従って手続きする。
Mtkは2011年10月に申し込んで、2011年12月下旬に連絡を頂きました。

4.
Developers Portal for PlayStation(R) SuiteからSDKをダウンロードしてインストールする。
http://www.playstation.com/pss/developer/index.html
たくさんのコンポーネントをインストールするので10分くらいかかります。
コンポーネントが一つでも欠けているとPlayStation Suite Studioが起動しないようです。
MtkのPCでは当初、PlayStation Suite Studioのアイコンをダブルクリックしても何も起きませんでした。原因はDirectXのインストールに失敗していたためです。


インストールするとPlayStation Suite Studioが使用できるようになります。
見た目はVisual Studioにそっくりです。ベースは「Mono Develop」だそうです。

次のパスにたくさんのデモのソースがたくさんインストールされています。32bit OSの場合、パスの「 (x86)」はつきません。
C:\Program Files (x86)\SCE\PSS\sample
オープンベータのPS Suite SDK(バージョン0.98)ではサンプルは次の場所に保存されます
C:\Users\Public\Documents\Pss\sample
(2012.04.19)

Windows Vista/7ではProgram Files以下のプロジェクトを開くとビルドに失敗します。
ビルドできるようにsampleフォルダーを丸ごと「ドキュメント」フォルダーなどにコピーします。

PlayStation Suite Studioの [ファイル]-[開く]で次のファイルを開いてみます。
sample\demo\BallMazeDemo\BallMazeDemo.sln

F5を押すとゲームが起動します。
エミュレーターのはずですが、サクサク動きます。
(このエミュレーターはPCシミュレータが正式名称です)
PlayStation Suite Studioも快適に動きます。

EclipseでAndroidアプリを開発すると何をするにも遅くてストレスに感じるのですが、PlayStation Suite Studioではあまりそのようなことはなさそうです。
豊富なサンプルと日本語資のおかげで自作アプリが簡単に作れそうです。


以上、参考になれば幸いです。