THE PSP攻略+α ~SONYへの挑戦状~

PSP関連ブログ?いいえ、ただのゆとりブログです

スポンサーサイト 

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
[ --/--/-- --:-- ] スポンサー広告 | トラックバック(-) | コメント(-)

PSPの限界?あるあr…ねーよwww 

よく、PSP向けの自作ソフトとかで「処理落ちしますがPSPの限界ですかね」とか「やはりPSPだと限界を感じます」とかありえない意見を良く見かけるが、そんなちょっと弾を描画しただけで処理落ちするほど低スペックではない。
大体は無駄な処理が多かったり、GUをうまいこと使ってないのが処理落ちの原因だろう(当たり前なことを自慢げに語られてもw)
特にGE(グラフィックエンジン)に関しては分割して転送したり、テクスチャーの並びを変えたりしないと描画速度が激減するので注意が必要。
性能を熟知してる人がプログラムを組めば、何十倍もの差が出るツンデレな扱いの難しいハードである。
PCも昔はそうだったんだろうけど、CPUとかグラボの性能が格段に上がったせいで、そういうことを意識しなくても大して差がでないんだよなぁ。
アセンブラやCPU拡張命令使えばかなり早くなるけど、ライブラリ化できるので、初心者でも簡単に使えるし。
PSPに限らず、専用ハードへの組み込み系のプログラミングも似たようなもので、開発者マジすごい。

なんか話が違う方向にシフトしてしまいましたが…
というわけで、PSPの性能を把握してない初心者プログラマーの俺が某弾幕ゲーをPSPで動かす仮定で性能をテストしてみた。(某草動画風)


とは言っても大したものじゃないのですが…

☆テスト環境☆
■PSP
 PSP-1000 CFW4.01M33-2
 CPUは222MHzで動作(途中から下げたり上げたりしてます)
■グラフィック
 画面やテクスチャーは32bitモードで、テクスチャーはswizzle済み。
 基本的に画像のサイズは56.25%に縮小したもの。
 背景画像(512x512だが使用するのは288x288)
 フレーム画像(512x512だが使用するのは360x270)
 自機画像(256x32)
 弾画像(256x256)
 弾の画像のみ16x16のまま使ってます。
 弾の画像以外はRAMに置き、弾の画像のみVRAMに読み込み。
 VRAMではswizzleすると転送速度が下がるので、そのまま。
■BGM(SE)
 MP3を再生。
 MediaEngine(2つ目のCPU)にてハードウェアデコードをしてる?(ライブラリを使用)
■撮影
 動画撮るような機材は持ってないので携帯の超画質動画(一応VGAらしい)

■ゲームに必須+負荷が高いと思われる状況を作ってみた。
・BGM再生。
・自機と敵弾の当たり判定計算&ピチューン
・周りのフレームを表示。
・背景が回転。
・敵弾も全部回転。
・敵弾は4隅から自機狙い弾を1発ずつ、中央からばら撒き弾を10発を0.5秒間隔に発射。

■システムの補足
・自機狙い弾は発射時にアークタンジェントで角度を計算。
・すべての弾はサイン、コサインを使って毎フレーム計算してます。
・自機と敵弾の当たり判定はどちらとも円。

■不具合
・背景画像が90度、270度の時に負荷が2倍近く上がる。
 おそらく背景画像の分割不足(slice的な意味で)
 画像を4分割したときは90度ごとに処理落ちが発生していたが、8分割したら90度と270度のみに軽減された。
・自機がピチュった後に下から出現する動作を追加したら負荷が一気に増えた。
 左にたくさん表示されてる数値は処理時間を計測したものだが、全く別のところの負荷が増えるというわけわかめ。
 1つ1つコメントアウトして動作しても負荷が減らないが、何個かコメントアウトすると負荷が減るという謎仕様。
 おそらくキャッシュミス?PSPのプログラミングwikiによるとキャッシュミスが発生すると処理時間が68倍になるらしい…
 これを追加する前は222MHzでも1500発は余裕だったのに…


超画質で文字が見えないので高画質モード推奨。
なんか最近のようつべは埋め込みでも高画質ボタンが付いた模様。
あと、アノテーション機能を使ってみたが便利だなこれ。




上の時に撮り忘れてた弾数のテスト。
上の動画じゃいくつ弾が表示できるかわからん罠w
携帯で撮ったのをそのまま上げたので超画質&超音質。
画面内に表示してる弾数も重要ですが、高速に弾を増やすモードでは14+100発を0.5秒間隔で発射してます。
1フレーム中に生成する弾の数も割りと重要。



1週間程度で作ったものなのでまだまだ不具合やバグがあるかもしれない。
自機ショットや敵を表示すればもっと本格的なテストができるだろうなぁ。
あと、これはPSP用に最適化されてない、ド素人が組んだプログラムの例なので、これがPSPの限界だなんて思わないでねw
PSPをデレ化させたプロフェッショナルなスーパーウルトラプログラマーが組めば222MHzで2000発ぐらいは余裕だと思います。

というわけで、PSPで東方は性能的に可能なのでおまいら頑張れw
もうすぐ4時です眠たい。いい加減食前、食後、就寝前にわけて少しずつ記事を書くべきか…
[ 2009/05/18 03:46 ] 未分類 | TB(0) | CM(10)
No.658
久しぶりにツンデレ君に魅せられましたw
ここまで来ると、プロフェッショナルでスーパなウルトラプログラマーがプログラムを組めば、PSPで出来ないことはないかもしれませんね。(RAMは少ない気がしますが・・・)

後、睡眠時間を削ると、インフルエンザに・・・
[ 2009/05/20(水) 00:00 ] [ 編集 ]
No.659
PSPをデレさせるプロフェッショナルでスーパーなウルトラハイパーハッカーは、CFWやエミュのような高レベルのプログラムにしか興味がないんでしょうかね?w
PSP用としてゲームのメモリ配分を計算して組めば、20MBほどのRAMでもそこそこやりくり可能かと思います。
今回のテストではBGMがメモリを喰ってるだけで16MBほど空きがありますし、常に20MB分が必要な場面というのはなかなかないので、膨大な量のデータを格納できるメモステ(本家ならUMD)から随時データを入れ替えてやればかなり節約になります。
ローディング時にUMDがシャカシャカうるさい某シミュレーションADVなんかは少し酷い気もしますが…
今回はBGMをメモリに全部読み込んでますが、1秒再生するのにすべてが必要なわけではないので、メモステから随時読み込むだけでも3MB弱の節約になります(大量にメモリが余ってるのでその必要はありませんがw)
DSみたいに4MBしか空きがないとさすがにきついですw
4MB以上必要な時が頻繁にありそうですからね…
STGなんかは本家のゲームでも元々使用メモリが少ないので、PSPに移植しても問題はありませんが、格ゲーなんかはフレーム単位で必要な画像が何十、何百枚もあるので上手いことやりくりする必要がありそうです。
画像のでかいキャラ、いわゆるデカキャラの画像をPSP用に縮小して、1P、2Pの2キャラ分メモリに読み込むのを計算してみたところ、20MBじゃ足りないですね…
最近じゃ解像度も高い上にボイスも豊富なんでメモリとの相談が難しそうです。(PSP-2000だと32MBも容量が増えるので余裕ですがw)

睡眠時間削って体調が万全じゃない状態で難波周辺に行ったから菌もらってるかも?w
俺含めて周りの人も他人事だから困る
[ 2009/05/21(木) 02:01 ] [ 編集 ]
No.660
初めまして、某草動画の主です

え?あの動画は30fpsで700発なんだが(笑)

七次元さんが初心者プログラマーってことは俺は素人以下ってことですね!
分かっていましたが、やはり経験者とはレベルが違いすぎる・・・
[ 2009/05/27(水) 07:59 ] [ 編集 ]
No.661
おお、私なんかのところに直々にコメントをいただけるとは光栄です。
自分はSDKのサンプルからGUの部分をコピペして組んでるレベルなんで本当に大したことはしてないです。
自分で手を加えた、特に重要な点はsin、cos、atan2をテーブル化したことぐらいでしょうか。
あとは弾の画像をVRAMにでも置けば1500弾/frameは出ます。
また、自分のはゲームとして遊べるレベルではないテストプログラムなので、比較できるレベルでもないです。
ネタでもなく、本当にこういうゲーム系のプログラムを組むのは初めてで、DirectXとかも扱ったことがないので3Dの表示どころかGUの使い方すらよくわかってません^^;
他にも、BGMのデコード処理なんかが負荷の原因になりやすいですが、PSPにはメディア関係のハードウェアエンジンが積んであるので、MP3やATRAC等が非常に低負荷でデコードできます。が、自分には使い方がさっぱりなので他人が組んだライブラリを使ってます^^;;
前からPSPのプログラミングには興味があったので、知識はそこそこありますが、技術面では他の人に劣っていますからね…
メインはWin用プログラムをHSPで組んでるゆとりですし、C言語も基本を理解してる程度なので、C++ではなくC+α程度の使い方しかできないです(for文の初期化時に変数を宣言するとか)
kidonaruさんならPSPの特性を理解すれば、すぐに私のプログラム以上のものが作れると思います。
動画を投稿して他の人にやる気を出させる程度の能力をお持ちですしw
あの動画が無かったらこんなプログラム組んでなかったぜ。
今は大学が始まって脱ニート状態(笑)で忙しいかと思いますが、続きの動画が上がれば他のプログラマーにより良い刺激になると思いますので、ちょっとwktkしてます^^
[ 2009/05/27(水) 18:38 ] [ 編集 ]
No.926
初めまして。

最近PSPでゲーム作るようになったので、ここに流れ着き、色々と参考にさせて頂きました。_(. _ . _)

プログラム暦が1年にも満たないのと、ハードのことがほとんどわからないのでネットを漂流してたところ、七次元さんのおっしゃる通り、PSPに東方を移植しようという人が極少数であることがよくわかりました。望んでる人は多いんですけどね。プロの方は忙しくて、やるとしたら学生なんでしょうかね?
そこで、自分もPSP移植を熱望してる内の一人なので、いっそのこと自分でやろうと思い立ちました。
で、オリジナルより罵られそうなアイシクルフォールができました・・・。

もっと改良していきたいのですが、上記のように手がけている人が少ないのでPSPでのゲーム開発の参考になるサイトが少なくてちょっと困ってます。

七次元さんはどこから知識を仕入れてるのでしょうか?
図々しいようですが、ほんの一部でもいいので教えてください。
(忙しいようでしたらスルーしてください><)
[ 2009/10/27(火) 21:41 ] [ 編集 ]
No.931
返事が遅くなったのでもう見てないかもしれませんが…

PSPのプログラミングは始めたばかりなどころか、メインに扱ってるネタとは全く関係ないのになぜ何人もここに流れ着いてくるのだろうか…

>PSPに東方を移植しようという人が極少数であることがよくわかりました。
私が面倒なことになったように、東方関係を扱うとああいうことになるので、少し興味がある人でも敬遠してしまうことも多いかもしれません。
そうなるのを分かっていてネタにするのは、私のような頭のオカシイ人ぐらいですからw
とはいっても、最近はVC++で使える構築済みの開発環境が配布されるようになったり、DXLPなどでPSP固有の問題を気にせずにプログラムが組めるようになってきたので、PC向けのプログラムが組めるユーザーもちらほらやってみようとしているみたいです。

>オリジナルより罵られそうなアイシクルフォールができました・・・。
なんだか時期的に某スレに上げられてたもののような気がしますが…
独自ライブラリなどを見ましたが、はっきり言って私よりもC++の熟練度は上です。
>七次元さんはどこから知識を仕入れてるのでしょうか?
私はSDK付属のソースやAPIリファレンスぐらいしか見ていないので、特別なサイトで勉強したわけでもありません。

上記の通り、ここには何も参考になるようなものは無いです…
非公式開発なので元々参考になるようなサイトは日本にはほとんど無く、私もそういう情報が欲しいぐらいです^^;
大体のことは、SDK付属のAPIリファレンスとps2devのフォーラムに載っていて、もし無いようなら自分が最前線と言われてるぐらいです。

ですが、ピンポイントなことを書いてもらえれば、何かアドバイスができるかもしれません。
そういうものがあれば掲示板にでも適当に書いてください。
[ 2009/11/06(金) 22:13 ] [ 編集 ]
No.935
レスありがとうございます。

>私はSDK付属のソースやAPIリファレンスぐらいしか見ていないので、特別なサイトで勉強したわけでもありません。
自分は経験が浅すぎてサンプル見て学ぶってことすら思いつきませんでした…そのせいで汚してしまい申し訳ないorz

>非公式開発なので元々参考になるようなサイトは日本にはほとんど無く、私もそういう情報が欲しいぐらいです^^;
専門学校でやっていたため、これにも最近まで気づきませんでしたorz

これからはわからないことがあれば掲示板で聞くようにします。色々ありがとうございました。

PSPでの開発はゲームが止まることも多く、本当に自分が考えた仕様通りに動くのか不安でしたが、七次元さん達の先駆者が可能性を見せてくれたおかげで、かなり心持楽にできましたこと、重ねてお礼申し上げます。
[ 2009/11/13(金) 00:50 ] [ 編集 ]
No.936
非公式開発ゆえに、開発者が増えるのはうれしいことです。
私はまだ、ゲームと呼べるようなものを作っていませんが、これからもお互い頑張っていきましょう^^
[ 2009/11/15(日) 07:04 ] [ 編集 ]
No.937
なんか雑誌で紹介されてたぞ
windows100とかなんとかってので
[ 2009/11/16(月) 15:57 ] [ 編集 ]
No.938
雑誌からの依頼は最近も来てたが、windows100%からは来てないな…
なぜかよくわからんが、大分昔に作った携帯動画変換君の補助ツールがよく掲載されている模様。
それ以外の掲載だったら少し興味があるかも…
[ 2009/11/17(火) 00:04 ] [ 編集 ]
コメントの投稿













管理者にだけ表示を許可する
プロフィール

七次元

Author:七次元
永遠の18才
夢を追い求める学生
プログラミング初心者(笑)
愛用言語はHSP(スイーツ)
プログラマーを目指すものの「C言語?読むだけ^^」「C++?知らんがな。クラスって何?おいしいの?」
というゆとりっぷり。
Delphi入れたりVC++2008入れたり迷走中。
夢はコミケで何かやりたい。一般参加すらしたこと無いけど。
PSP-1000(CFW)持ち。PSP-4000マダー?
よく難波周辺のゲーセンに出没するらしい。
STGも格げーも初心者。
ろ、ロリコンちゃうわ!!!

連絡先:homepage_touroku[a]yahoo.co.jp
(メールはほとんど確認してません。掲示板に書き込むのが確実です)

関連リンク
そふとうぇあこうかいじょ
公開したファイルが置いてあります。

掲示板
連絡やら雑談やら適当にどうぞ。
カウンター



現在の閲覧者数:
ブロとも申請フォーム


上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。