1read 100read
2012年08月ゲ製作技術3: PlayStation Mobileプログラミング part 4 (591) TOP カテ一覧 スレ一覧 2ch元 削除依頼
絶対に成功しないプロジェクト 1000の特徴 (282)
C++でFC版ドラクエっぽいRPGを作る Lv4 (577)
【忍者】2ちゃんねるがログイン制 (367)
■ LiveMaker スレッド6 ■ (368)
ゲーム用BGMを作ってる人達のスレ (238)
AI特化のRPGを作って売りたい【避難所】 (952)

PlayStation Mobileプログラミング part 4


1 :2012/10/12 〜 最終レス :2012/12/08
PlayStation(R) Mobile SDKを使ってゲームやアプリを作るためのスレ
SDKは現在オープンβで公開中です。
■PSM公式サイト
http://www.playstation.com/psm/developer/index_j.html
■公式 PSM デベロッパー コミュニティ
http://community.eu.playstation.com/t5/PlayStation-Mobile-Developer/ct-p/PSSdevforum
■PSSウィキ
http://monobook.org/wiki/PlayStation_Suite_SDK
■前スレ
PlayStation Mobileプログラミング part 3
http://toro.2ch.net/test/read.cgi/gamedev/1339990741/
PlayStation Suiteプログラミング part 2
http://toro.2ch.net/test/read.cgi/gamedev/1335755875/
PlayStation Suiteプログラミング part 1
http://toro.2ch.net/test/read.cgi/gamedev/1330137413/

2 :
>>1


3 :
ラストスパートだ! 頑張るぞ!

4 :
俺の日曜プログラマレベルのクソゲの審査が通るかが問われる

5 :
>>1

6 :
昨日に引き続きで申し訳ありませんが別スレッドでのオブジェクト生成が上手くいきません…orz。
var task = Task.Factory.StartNew( ()
{
   Console.WriteLine (0);
   Obj =new Obj();
   Console.WriteLine (1);
});
これ書いても下のWriteLine動かないし、別スレッドでnewするとそこで途切れるっぽいんですがどういうことでしょうか?
普通にint a=0;から
var task = Task.Factory.StartNew( ()
{
   Console.WriteLine (a);
   a=1;
   Console.WriteLine (a);
});
なら全部動くけど
var task = Task.Factory.StartNew( ()
{
   Obj =new Obj();
   Console.WriteLine (a);
   a=1;
   Console.WriteLine (a);
});
これだと動かなくなっちゃう。

7 :
var task = Task.Factory.StartNew( () =>
{
   Console.WriteLine (0);
   var obj =new object();
   Console.WriteLine (1);
});
while(true){}
下にこういうのを書いてみたら?

8 :
PCだと普通に動くが、VITA実機だとダメなんだろうか・・・
Objクラスが悪さしてるとか?

9 :
>>7
下のwhileループはどういうことでしょうか?
一応ゲームループ内なので、メインスレッドが先に終了してるということではないとは思います。
>>8
自分はPCでも動きませんでした。
ちなみに作ったObjはNodeを継承したGameEntityを継承したクラスでした。

10 :
>>9
var task = Task.Factory.StartNew( () =>
{
   Console.WriteLine (0);
   var obj =new object();
   Console.WriteLine (1);
});
これは動くの?
動くんだったらObjクラスのコンストラクタが原因でしょう

11 :
>>10
その状況では上のWriteLineは動いて下のWriteLineは動きませんでした。
指摘されて自分も自作Objのコンストラクタが原因だと思いましたので
間でListやRandom、Stopwatchとかnewしてみましたがその時は両方のWriteLineが動きました。
このことから自作Objのコンストラクタが原因ぽいです。ご指摘ありがとうございました。

12 :
色々試しましたがTexture2Dのコンストラクタ重たいせいみたいです。
重たいから別スレッドで作成してメインスレッドに支障きたさないようにしたかったのに…。

13 :
Vistaなら実行停止でサブスレッドも止まるみたいだけど
Win7だと止まらなくてPSMスタジオ再起動するまでビルドでdll上書きするのが出来ない
OSの違いなのかなんなのかわからないけど同じプロジェクト2つのPCでデバッグしてるとそうなってる

14 :
>>12
試してないけど、ファイル読み込みは非同期を使わないと無理そうやね

15 :
ん?でもC#のスレッドってプライオリティが高いのに勝手に変わらないのか?
協調型のスレッド?Task.Factory.StartNewってスレッドとは違うのだろうか。

16 :
うーん、Task.Factory.StartNewだと、なんか動作が怪しいな・・・
if( 0 == _state ){           
 // 非同期読み込みスレッド作成    
 _loading = Task.Factory.StartNew(()=>{            
  ImageAsset image = null;     
  // 非同期読み込みで作成
  image = new ImageAsset("/Application/test.png",true);         
  // 完了までまつ
  // image.WaitForLoad()だと処理が終わってしまう??
  while( !image.Ready ){
  Thread.Yield();
  }     
  // ! ここで処理が終わってしまう??     
  _tex = image.CloneTexture();                
  // ImageAssetからキャッシュと削除
  image.UnloadFromCache ();
  image.Dispose();     
  // 以下必要なだけ繰り返す...
  System.Console.Write("Load Finish!\n");    
  });
 _state = 1;    
}else if( 1 == _state ){     
 // WaitForLoadかCloneTextureでIsCompletedがtrueに...
 if( _loading.IsCompleted ){       
  // タスク削除しておわり
  _loading.Dispose();
  _loading = null;    
  _state = 2;
 }else{
  System.Console.Write("Now Loading...\n");
 }
}

17 :
あ、分かった。メインスレッド以外でnew Texture2D("/Application/test.png", false);
やると例外発生して落ちる。

18 :
例外で落ちてたらすぐ気づくだろ・・・
テスト段階では変なとこで無駄にキャッチしないようにしとけ・・・

19 :
今気づきましたけど実機起動、実機デバッグ起動だとちゃんとTaskでnew Texture2D("/Application/test.png", false);
できてるっぽいですね。最初の1回物凄いフレームスキップして二回目以降はちょっとですけど。

20 :
いやー、キャッチは1つもしてないんだぜ。
Task.Factory.StartNewは例外が発生しても、Task.IsFaultedがtrueになるだけで
例外エラーダイアログは出してくれないみたいだな・・・

21 :
うげ、マジだ。VITA実機だと例外発生しねぇ。

22 :
ImageAssetを使って、お手軽に非同期読み込みやるとしたらこんな感じか
VITA実機でもカクつくことはなかった
if( null == _asset ){
// 読み込み開始
if( null != _tex ){
_tex.Dispose();
_tex = null;
}
// 非同期読み込みで作成
_asset = new ImageAsset("/Application/test.png",true);
System.Console.Write("Load Start\n");
}else if (_asset.Ready ){
// 読込完了
// テクスチャ作成
_tex = _asset.CloneTexture();

// ImageAssetからキャッシュと削除
_asset.UnloadFromCache ();
_asset.Dispose();
_asset = null;
System.Console.Write("Load Finish\n");
}else{
// 読み込み中
System.Console.Write("Now Loading...\n");
}

23 :
テクスチャ以外も非同期読み込みできるようにファイル読み込みを別にしてTexture2D(byte[] fileImage, bool mipmap)の方を
使ったほうが良くないか。と通りすがりが言ってみる。ただ上記のほうがお手軽だね

24 :
ファイルを非同期でロード出来るようにしよう(・∀・)

アーカイブしたファイルも対応したいな(・∀・)

圧縮したファイルもロード可能にしよう(・∀・)

デバッグ中はソケット経由でPCからVITAにファイルをロード出来るようにしよう(・∀・)

ファイルロードライブラリ完成(・∀・)パンパカパーン

25 :
そこまでやったらすごいなw

26 :
本気でやるならリソースをほとんどアーカイブにして上記の実装したほうがいいけどなw
まぁ本当にそれが必要がどうかという問題だな。長い目で見たらやったほうが勿論いい
(XNAでも使えるかな?)
てかそうか、ソケット経由という手があったか。それができたら開発が捗るな。さんくす

27 :
ImageAssetなんて便利なもんがHighLevelUIにあったのか。

28 :
この機能はCRIのファイルマジックPROってのを見ると欲しくなるからね(´・ω・`)
http://www.cri-mw.co.jp/product/lineup/filesystem/filemajikpro/index.html

29 :
そんな機能は標準で用意してくれよ

30 :
Taskよりはデリゲードによる非同期呼び出しの方が軽いみたい。でもどうしても最初の1回目がスキップする。
そしてGameEngine2DのPlayerとかのnewがなんであんなに速いのよって思ってたらGameの
BuildTextureTileMaps()で一回読んでディクショナリーに登録してるのなw
もう俺も非同期なんて言わずにメインinitで読んじゃうぜ!

31 :
ぶっちゃけ最初に読み込んでメモリに乗っかるようならそれでいいと思うんだぜ

32 :
GameEngine2Dのサンプルのサポートクラス読み込んでたけどシェーダーとかOpenGL部分がまったく理解できないw
サポートクラスの使うとこだけ取り出して使おうかな…

33 :
トロフィー整備という事はフレンドの呼び出しも来るか

34 :
フレンドを呼び出して説教するアプリの登場が待たれる

35 :
PSモバイルってPS3やVitaみたいなトロフィーを付けることって可能なん?

36 :
可能らしいわよ

37 :
2chねるに書き込んだ ブロンズトロフィー獲得

38 :
何やっても初回の描画で軽くスキップする。
GameEngine2DサンプルからActionGameDemoからSupportクラスぱくってきて、texture情報を先読み管理してもダメぽ。
GameEngine2D使うのやめてsamplespriteとかsampledraw改変使ったほうがいいのかな…。

39 :
って連投すまないが試しに実機でActionGameDEMOやってみたらサンプルデモですら初回描画重たいやん…。
なんか昔より動作が重たくなった気がする。

40 :
諦めろ

41 :
SupportクラスのところってGameEngine2D関係なくないか

42 :
まぁSupportで扱ってるのは関係無いのよね。Texture管理のとこ使ってるだけだし。
ただそこで軽くすれば(今まではループ内でTexture2Dをnewしたりw)解決するかなと思ってた自分が馬鹿でした。

43 :
      ___
      /:::::::::::::::::ヽ
      l/^_,ヽ::::::::::)   なんだよこのクソスレ
  _ ⊂从 ・ω・ )⊃___ 
 │    |    ヽ   │
 ( ⌒⌒⌒ヽ つ_つ⌒ )    
 .⊥ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄⊥

44 :
nexus7買ってアンドロイド用の開発環境構築してるんだが糞杉だな(´・ω・`)
PSMが楽すぎたってのもあるんだが・・・

45 :
Androidはエミュレーターがね…
実機ないとやってられん。

46 :
PSMのエミュは軽快だけど実機と挙動が違いすぎて
売り物にするには結局、実機がないとお話にならんな
もともと実機がなくても開発できるっていう触れ込みだったから
ホンチャンで改善されてるといいが

47 :
エミュレータ≠シミュレータ

48 :
別に上の文章でも言いたいことは伝わると思うが…
エミュじゃなくてシミュレータならなおさら実機がないと駄目でしょう

49 :
確かにパソコンだと軽快に動作するのにVITAだと重たいもんな。
もうちょっとPSMにパワー使わせてほしいな。

50 :
実機って、PSM動くスマフォ持ってないからVITAでしか検証できんわ・・・

51 :
最終的に実機確認は必須なのはまぁ買う方からしたら実機確認してないなんて怖すぎるしな
Android端末の差異をなるたけ吸収してくれればいいかな。多すぎる

52 :
>>48
androidのエミュレータは遅いって話に乗せてしまったんだからその違いは明確に意識すべき。
あと実機と開発環境で全く挙動が違うのはiOSでもAndroidでも同様だし、
ユーザー側のコードで完結していない部分の実動作の差異はむしろぼやいても仕方ないと思う
昔のwindows mobileは差異に苦しまなかったけど、何が違ったのやら

53 :
ショボいわ〜

54 :
エミュレータとシミュレータはどう違うのよ
一般にどっちのほうが再現度が高いということも言えないんじゃないの

55 :
>>54
・エミュレータ
ハードの仕組みまで再現した仮想マシン
入力と出力、動作まで完全再現
バイナリ互換
・シミュレータ
対象をモデル化してその上で試験を行う仕組み
それっぽく動くように作られているだけなので異なるハードでは動作も異なる
バイナリに互換性無し

56 :
アンドロイドもPSMもバイナリ互換のエミュレータじゃないの
どっちも仮想マシン上のバイナリだけど

57 :
Androidはエミュレータ、PSMやiPhoneはシミュレータだな。

58 :
つまりアンドロイドはARMをエミュレートしてるのか
ずいぶん大変なことをしてるんだな
ARMってそれぞれアーキテクチャ違うんだろうから再現って相当眉唾だが・・・

59 :
エミュレータはシミュレータの一種で、
よりハードウェアレベルに近い層をシミュレーションしてるものを指す
境界は曖昧だけど、一般的には、CPU・メモリ・周辺機器などの全部または一部を
ソフトウェア実装して、OSやアプリに実機用のものを直接動かしてるようなものを
「エミュレータ」という
実例だと >>57 の言う通りで Windows Phone もエミュレータが配られてる
バイナリ互換とは直接は関係しなくて、
たとえばアンドロイドは、arm版/mips版/mips版 それぞれエミュレータがあって、
OSのバイナリは当然個別でバイナリ互換は無い。アプリは基本はJavaなので
共通的に動作するけど、ネイティブ機能を使うとそれぞれ専用バイナリを含めないと動かない
>>58
あくまで特定世代の特定チップ相当の arm 用のエミュレータがあるだけだよ
差異の吸収は実機用のOS層で行うもので、それは各ベンダーの仕事なわけで
実際、arm のエミュレートは重くて大変で、
仮想機能が使える x86 版の Android エミュのほうが圧倒的に軽かったりする

60 :
>>59
ちょー勉強になった
Atomのスマホとかファックだろwとか思ってたけど
x86だからそりゃ速いわけだ

61 :
速いってのはエミュレーターがって話ね
ベンチマークではTEGRA3とかより速いぜ!
とかIntel先生は言ってるけど
そんなのよりクアッドコアですと言った方がマーケティング的にはインパクトあるよなぁ

62 :
CPUのエミュレータはぶっちゃけ根気があればだれでも作れるものだったりする。
問題はそのCPUにつながってる各種デバイスも作らなければならず、
それらは結構独自仕様やら仕様が公開されてないとかあるんでとってもくろうする。
極めつけはGPU関連のエミュレート。これがむっちゃ難しい。

63 :
>>56
monoはvirtual machineだけどvirtual hardwareを持っていないから
全く同列に語れないの

64 :
PlayStation Mobile isn't perfect, but it's a good start, devs say
http://www.gamasutra.com/view/news/179672/PlayStation_Mobile_isnt_perfect_but_its_a_good_start_devs_say.php#.UIHv5mf6kyg

65 :
Vita実機で無操作でしばらく時間置いてからネット接続するとフリーズしたりC2したりするのは
やっぱり省電力機構とかでネット接続を休んでるとこから復帰できてないとかのPSM側の不具合だと思うんすよ
思うんすよ

66 :
操作しっぱなしなら快調に動くんだがなあ
俺の2chブラウザ

67 :
デバッガで起動してなくても?
RestoredEventHandlerで登録する必要あるんかな。

68 :
HttpSampleでもオートスリープ復帰後に、connectすると固まるな。
スリープ復帰後にPSストアつないでネット接続機能起こしてからだと止まらないが。
フォーラムで報告や。

69 :
もう正式版までBAはないのかね

70 :
どこに書けばいいのか全くわからない
英語ができない
終わった

71 :
>>68
いやーやっぱ再現できないわ
でもいじってたら発見があった
int x = 0, y = 0, z = 0;
new Thread(()=>{ while(true){ x++; }}).Start();
new Thread(()=>{ while(true){ y++; }}).Start();
new Thread(()=>{ while(true){ z++; }}).Start();
これ実機で実行したら完全操作不能 強制電源オフしかなくなった

72 :
int x = 0, y = 0, z = 0;
Task.Factory.StartNew(()=>{ while(true){ x++; }});
Task.Factory.StartNew(()=>{ while(true){ y++; }});
Task.Factory.StartNew(()=>{ while(true){ z++; }});
Taskの場合実機だと3つで操作不能
うちのデュアルコアのPCだと2つで操作不能だなあ
マルチタスキングがプリエンプティブじゃないんだろうか

73 :
Taskなら操作不能でもスリープは出来るからOSのコアまでは使ってない、というようなことだろうか
多分その辺の並列動作に問題がありそうだなあ

74 :
sleepいれないとプリエンプティブでも駄目なんじゃ?

75 :
やっぱり全く再現できないから無操作でしばらく時間を置くっていうのは直接の条件じゃないのかもしれない
3G回線使ってたときはほとんど100%フリーズしてたんだけど
あんまりフリーズするからSIMカード抜いて動かしてたら
SIMカードどっか行っちゃったからSIMありだと再現できるのかもしれない

76 :
ああわかったわ
httpsample改造しても再現できなかったけど
俺のアプリの時だけはスリープ復帰後いつまで待ってもネット接続が復活しないんだ
だからネット接続でフリーズする

77 :
フォーラムって日本語で書いていいんだっけ?

78 :
大丈夫大丈夫

79 :
じゃあいくか…

80 :
ttp://photozou.jp/photo/show/2819159/153010030
( ´∀`)ノ


81 :
やっぱアプリ自体は関係ないのかもしれない
電波が強い(Wifi 電波3)→スリープ復帰後ネット接続復活
電波が弱い(Wifi 2-1ぐらいの表示)→スリープ復帰後もネット接続は自動では復活しない
アプリでネット接続を試みた時に復活しようとするが、電波が弱いとフリーズ?
フリーズしない場合、ネット接続が出来ないとこちらはタイムアウトしようとするが、タイムアウトできないことがある
ThreadPool.RegisterWaitForSingleObjectが正常に機能していないようだ
しかし実機でデバッグするのは難しい…

82 :
電波が弱い時のフリーズは頻度は低いがHttpSampleでも起こる
つまり悪いのは電波か
まあ電波が悪いとフリーズするライブラリのほうがおかしいけど・・・

83 :
ああ
フリーズ後もメインループは回ってるんだな
操作を受け付けなくなるだけで
問題はUISystemの中身かな
これはUISystemやめるしかなさそうだな

84 :
このフリーズ再現できる?
http://ideone.com/jIOyBz
これをHighLevel.UIの参照を加えてビルドして
Vita実機でスタンドアロンで実行する
もしPCとVitaを繋いでいたらケーブルは抜いておく
起動したら電源ボタンを押して画面を消す
しばらくするとPSボタンが点滅してスタンバイに入る
点滅が消えたら時計を見ながら16秒待つ
PSボタンを押してめくってスタンバイから復帰し、Startを押す
成功の場合→Readyのまま固まる。ボタンを押すと反応するが何回も押しているとやがて反応しなくなりフリーズ
失敗の時は画面を消して同じ事を繰り返す
うちの環境だとだいたい1/3、悪くても1/10ぐらいで成功してる
SIMなし3G版 電波1〜2ぐらい

85 :
一回でなった。ボタンは光ったままで、psボタンでliveareaには戻れる。
3GでSIMあり。

86 :
UISystemのソース眺めてもThread使ってるのはImageAssetだけだな
タッチがおかしくて入力されっぱなしになるなんて事はあるのだろうか

87 :
あと関係あるとしたらUIFont.csの
lock (syncCache)
でデッドロックするぐらいか?

88 :
すまん同じ手順でhttpsampleでもなるわ
確率は低くなる気がするけど
UISystem関係ないのかも

89 :
HttpWebRequestもスレッド使ってるし、スレッドのスケジューリング関係がバグってるのか。

90 :
昨日はhttpsampleでも出来た気がしたんだが今日はできないな・・・勘違いかな
なかなか結果が表示されないだけだからフリーズしたのかもよく分からんのだよなhttpsampleのままだと
ボタンをポチポチしてるとフリーズしやすいような気がするからボタンポチポチがトリガーでやっぱりUIの問題かもしれない
電波が弱いほうがやっぱりフリーズしやすいっぽいな
電波復活が早ければフリーズが避けられるのかもしれない

91 :
電波が関係あるとするとバックグラウンドでネットワーク処理してるとこにスレッド処理入ったらまずいとかか?
何にせよ特定しづらいな

92 :
別のプラットホームだと、スレッド使ってるときに、共通のリソースの触り方によってデットロックするから気をつけろ的な話を聞くな。
多分似たようなところだと思う。

93 :
Log("start");
int a = 1, b = 2, c = 3, d = 4;
new Thread(() =>{ while(true){a++;} }).Start();
new Thread(() =>{ while(true){b++;} }).Start();
new Thread(() =>{ while(true){ c++;} }).Start();
//new Thread(() =>{ while(true){d++;} }).Start();

while(true)
{
 Log(String.Format("a {0} b {1} c {2} d {3}", a, b, c, d));
 Thread.Sleep(3000);
}
実機だとこれは動かない(whileの中のLogは実行されてない)けど
Log("start");
int a = 1, b = 2, c = 3, d = 4;
new Thread(() =>{ while(true){a++;} }).Start();
new Thread(() =>{ while(true){b++;} }).Start();
new Thread(() =>{ while(true){Thread.Sleep(1); c++;} }).Start();
//new Thread(() =>{ while(true){d++;} }).Start();

while(true)
{
 Log(String.Format("a {0} b {1} c {2} d {3}", a, b, c, d));
 Thread.Sleep(3000);
}
これは動くんだな
3スレッドがビジーになると死ぬって覚えとけばいいのかな

94 :
psmstudioってオープンベータ終わったら使えなくなるかな?
vitaはチェック入ってるけど、
こっちはよく分からない

95 :
SCEがどういうつもりで展開しているかによるね。
PlayStationクオリティなゲームを作ってくれる人だけ来てくれればいいやと思っていれば、まず金を支払わないと何もできないようにしてきたとしてもおかしくはない。
オープンなものをベースにしただけで、うちはオープンにやる気はありませんよ、的な。
多分だけど、興味を持った開発者とSCEの間には、大きな認識の差があるように思える。

96 :
https://ja-support.psm.playstation.net/app/answers/detail/a_id/7/session/L3RpbWUvMTM1MTM0NDIyNi9zaWQvbjhFcHhNOWw%3D
実機で動かすのに制限掛かるだけでPC上で出来る事は変わらないんじゃないかな

97 :
oh
PSsuite時代に作ってみて久しぶりにやろうとしたら最新だとビルドが通らない…
結構直さないとだめなのかな?
usingファイルをサンプルに合わせてプレイステーションにしてもだめだった

98 :
金払わなくても正式版のSDKの中身はみれるのか
まあgoogleとかappleとかと同じか

99 :
てか金払うつもりがない(=開発する気がない)奴っているのか?

100read 1read
1read 100read
TOP カテ一覧 スレ一覧 2ch元 削除依頼
【オープンソース】Construct【ゲーム作成ソフト】 (633)
ゲームエンジン総合スレ★2 (933)
flashゲームでロックマンの同人ゲーム作ろうぜ (227)
RPGツクールの不満なところ (303)
【オープンソース】Construct【ゲーム作成ソフト】 (633)
シェーダープログラマが集うスレ (539)
--log9.info------------------
PC-6001/mkII/6601/SR★P6系ゲーム総合スレ (490)
電気グルーヴのラジオ10 (387)
【ハゲ騎士新作】ローズガンズデイズ【待つスレ】 (493)
【洒落】 U-15アイドルイメージビデオ専用スレ 96 (373)
69 (621)
P2P規制がないプロバイダでおすすめ教えて>< (971)
★☆★ Perfume関連総合スレッド59 ★☆★ (443)
【Share】エロ動画スレ Part.87 (689)
【BT/Share】超美形な素人エロ動画スレ 34【Winny】 (644)
【BT】洋物エロ動画スレ47【eMule】 (610)
nyのやり過ぎでHDD容量がヤバい奴集合 68寺目 (427)
【ny】巨RR動画スレPart.91【洒落BT】 (404)
BFスレ系作品 再アップ希望スレ7 (565)
ラジオ番組UPスレ TBSラジオ 13kHz (747)
東方総合スレ124 (433)
Perfect Darkで流してほしいものをリクエストスレ1 (318)
--log55.com------------------
ダガー系MS統合スレ
【アンチお断り】沙慈の扱いについて愚痴るスレ4
セックスしたいガンダムキャラ
メイリンを「るろうに剣心」の世界に放り込む
UCパイロット強さ議論スレ
【Gレコ】バララ・ペオールは登場キャラで一番可愛い
色々な漫画アニメキャラがキラ・ヤマトに一言
【IF系統合】もし種・種死の○○が××だったら 15
20140901212037
USA