フォト

Google AdSense


  • AdSense
無料ブログはココログ

« Windows 8のARM版(タブレット)で3Dゲームを開発するのってどうやるんだろう...という話題 | トップページ | 近いうちにGPU PerfStudio 2の使い方をまとめとく »

2012.01.14

AMD GPU PerfStudio 2のリモートデバッグってRadeon1枚でよかったのか...

ここのところDirect3D11のシェーダデバッグをどうしたらやれるか試行錯誤しておりました。

とりあえず、自宅はRadeon HD 5700シリーズを使っているので選択肢としてはGPU PerfStudio 2を使うと言うことになります。

GPU PerfStudio 2
http://developer.amd.com/tools/PerfStudio/Pages/default.aspx

GPU PerfStudio 2はNVIDIAのParallel Nsightと異なりシングルGPUでローカルでシェーダデバッグができます。ここで言うシェーダデバッグは

・ステップ実行
・シェーダ内の変数のウォッチ
・シェーダ内の各種バッファ、リソースの閲覧
・その場でエディタでシェーダを書き換えて変更を適用

などですね。ひとまずデバッグには十分な機能はローカルで使える...とのことでしたが、試してみたところローカルでのデバッグは動作が重すぎて実用的ではありませんでした。そりゃ、GPUは解析するプログラムだけで無くWindowsのシステム上でも利用しているのでデバッグ用に処理を止めちゃいけませんね。

そうなるとやはりParallel Nsightと同じくリモートでの利用ということにせざるをえません。

リモートということはPCが2台必要と言うことになるわけですが、Radeon搭載PCなんてさすがに2台も持っていないのでダメかとあきらめてました...ところが、実はGPU PerfStudio 2ってリモートデバッグの際に解析結果を見る側のPCはRadeon非搭載のPCでも良いと言うことがわかりました。

・・・というわけで、デスクトップでGPU PerfStudio 2のサーバーソフトを起動して解析したい実行ファイルの解析を担当させ、Windowsを起動したMacbook Airの方でGPU PerfStudio 2のクライアントを起動して解析結果を閲覧したり、シェーダデバッガを動かしてみました。結果は、下記の写真のように無事にリモートデバッグ成功です。これで自宅でシェーダ書いてるときにデバッグができます。

P1141660
クリックすると大きなサイズになります

« Windows 8のARM版(タブレット)で3Dゲームを開発するのってどうやるんだろう...という話題 | トップページ | 近いうちにGPU PerfStudio 2の使い方をまとめとく »

Programming」カテゴリの記事

画像付き」カテゴリの記事

コメント

最近の流れだともうDirectXなんて捨ててしまってゲームエンジンでいいじゃないかと思ってしまいます。
HLSLなんて書かなくてもアセットストアで十分だろうと思ってしまいます。
masafumiさんのような3D技術に造詣が深い方が、UNITYに完全に乗り換えてしまわない
理由を教えていただけないでしょうか?仕事で使うにしても会社がUNITYに移行しない理由は
なにかあるのでしょうか?

この件に関しては、あんまりここで話しちゃいけない話題もあるので、私の回答が曖昧でわかりにくかったらごめんなさい(多少ぼやかして言わないといけない部分があるので)。

それから、コメントしていただいた方の開発者としてのバックグラウンドがわからないので失礼なことを書いていたりとかしてるかもしれませんが、ご容赦ください。

ちなみに、私の推測ですが50人とか100人とかもしくはそれ以上の規模の開発をした経験がなくて、現在の世代の家庭用据え置きゲーム機の開発をしていないのかな、という推測で回答させていただきます(はずしてたらごめんなさい)。

それから「ゲームのおもしろさはグラフィックスじゃない」という意見もありますし、グラフィックス技術とか関係無しに面白いゲームは私も面白いと思います。ただ、私自身は「グラフィック技術」でゲームの価値を高めたい開発者というスタンスなのをご了解ください。

・・・とまぁ、ながながと前置きしておきますw。

まず、コメントでいただいた話ですが、まず2つのトピックにわけて回答します。

1. 最近の流れだともうDirectXなんて捨ててしまってゲームエンジンでいいじゃないかと思ってしまいます。
2. 仕事で使うにしても会社がUNITYに移行しない理由はなにかあるのでしょうか?

あと、

・HLSLなんて書かなくてもアセットストアで十分だろうと思ってしまいます。

も答えさせていただきますね。

> 「最近の流れ」

「流れ」だから「ゲームエンジン」というのはさすがに「ゲームエンジン」を採用するかしないかという理由としては明確では無いので、「ゲームエンジン」についてちょっと書きます。

代表的な購入したり無料で使える例
・Unity、Unreal Engine(UDK)

代表的な自分たちで作ってる例(購入できない、無料で使えない)
・Frostbite 2.0(EA DICE)、MT Framework(カプコン)

・・・ということで買うか買わないかというだけでゲームエンジンを作ってから製品の開発って現在は確かに多くなってます。「自分たちで作ってる」に関しては、外部にエンジン名を公表していないけど、エンジン的なつくりで開発してるところも多くあります。

このうち「自分たちで作る」というのは、市販のエンジンの不満や問題、品質、コスト面などなど様々な理由から「自分たちで作る」と判断しているわけだと思います。それから汎用ゲームエンジンが適さない特殊なゲームを作っているということもあるかもしれません。

それから大きな規模の会社は、様々なプロジェクトや傘下の開発会社に使わせることでエンジンの開発にかかるコストを分散させることが出来るので、買うよりもよかったということがありえます。

一方で、「エンジンを買う」「無料のを使う」という判断は、自分たちで基盤部分の開発までやったら明らかにコストが見合わないとき、基盤部分の開発ができない、人数が少ない(手が回らない)などなどですね。それから「ゲーム」の「遊び」の部分に注力したいから「基盤部分の開発」なんてしたくないという意見もあると思います。

で、ちなみに私個人が100%「エンジンを買う」「無料のを使う」のに移行しない理由ですが、私が「ゲーム」そのものを開発者では無く「基盤部分を開発」するエンジニアだからですね。未だに「基盤部分を自分たちで開発する」必要性があるという判断をしている理由に関しては、ここではごめんなさい。

> ・仕事で使うにしても会社がUNITYに移行しない理由はなにかあるのでしょうか?
世の中には、Unityを採用していないタイトルでも成功してるゲームっていっぱいありますよね?つまりそうしたタイトルの開発者は別にUnityじゃなくてもいけると判断してるからですね。

あ、それじゃ答えになってなかったですね。もうちょっと具体的な話ですぐに思いつく話題で

・大規模なゲームの開発を行う場合にUnityのワークフローは適さない
→Unityも大規模開発を想定してエンジンを設計していない
・家庭用やPCなどのハイエンドタイトルを開発する際にはUnityのグラフィックスの品質を十分と考えていない
・ゲーム専用機向けに開発する場合、Unityだけでは開発できない機能を組み込む必要性が出るが、それをUnityのアプリと合体させるのが大変
・Unityの無料版は大きな会社ではライセンス的に使えない(売り上げ規模が一定以上の会社はPro版しかない)ので、安くないという判断
・Unity Proに入ってる機能の多くはUnityが開発していない他の企業が作ったミドルウェアなので、それらが使いたければそちらと直接契約して自分たちで組み込んじゃう

などなど。他にも採用しない理由は自分の周辺の開発事情を考えると色々と思いつきます。

上の話は比較的、家庭用やハイエンドPCって話題ですが、逆にスマートフォンなどは

・端末が多すぎて検証できないのでエンジンがその辺の検証をしてくれてる
・100円とかで売るアプリにたくさんの人間を開発につけられないので、1人で何役もプログラムを書いて開発するのは無理なのでエンジンに基盤部分を任せる

などのメリットがありますので積極的に採用されると思います。私自身もiPhoneなどで趣味の実験するときには、Objective-Cとかで1からコードを書きたくないのでUnityは積極的に利用しております。

・スマートフォンの課金周りの機能(Appleや日本の携帯キャリア)
・SNS連携
・Web連動

などはUnityを使ったとしてもそこそこ苦労します。

> HLSLなんて書かなくてもアセットストアで十分だろうと思ってしまいます。
コレに関しては、私と私と一緒に仕事をしてくれているビジュアルアーティストの方たちはアセットストアの十分とは思っていません。

アセットストアのアセットに限らず、作り手としては今のハードウェアで実現している表現自体にも満足はしておりません。満足をしていないからこそよりよい表現、新しい技術の開発をしております。

ちなみに、「十分」、「十分じゃ無い」どっちの判断をするかってゲームの開発をするプログラマとしての適正や興味の部分が違うというだけでプログラマとして「良い」とか「悪い」と言うことでは無いと思います。

私自身は、ゲームのおもしろさやギミックの部分を実装する「ゲーム処理」担当プログラマではないのでどうしてもグラフィックスの品質を気にしがちですが、「ゲーム処理」担当の方であれば一定以上のグラフィックスよりもどうやって「面白いゲーム」の仕掛けを実現するかに関して私より敏感だと思います。

そんなわけで、このblog自体でも私が作った自作ゲームとかが全然出てこないのはそういう理由からです。それから私自身が「ゲーム処理」に無頓着でも大丈夫なのは大規模分業制で働くプログラマだからですね。

最後に、

今回の私の回答は、あくまでも私個人の立場からのもので、私と違う立場のゲーム開発者ならまた違った意見になると思います。あくまで個人的な意見ということで、これが「正しい」とか「正しくない」ではなく、そういう考えもあるんだ、と思っていただければ幸いです。

思慮深く丁寧なご返答を頂きありがとうございます。
こちらの背景も明かさずに要領を得ない質問をして申し訳ありませんでした。
私自身は最近3Dグラフィックに興味を持ち始めた個人で、
Unityが完璧に見えてしまうのでその欠点を知りたく思い質問させていただきました。
こちらの意図を把握して頂いたうえ、素晴らしいご意見を頂き嬉しく思います。

アセットストアに関してのくだりは大変失礼しました。これは表現分野の方々を蔑ろに
するような発言だったと反省しております。masafumiさんたちのような向上心のある方々のおかげで
美しく先進的なCG技術を楽しむことができているのであり、そのことに深く感謝しております。

こちらの回答の意図が伝わりましてよかったです。

ゲームを作る方法は今は色々と選択肢が多いですし、C++で苦労しなくちゃ作れないということもないですから上の話が参考になれば幸いです。

コメントを書く

コメントは記事投稿者が公開するまで表示されません。

(ウェブ上には掲載しません)

« Windows 8のARM版(タブレット)で3Dゲームを開発するのってどうやるんだろう...という話題 | トップページ | 近いうちにGPU PerfStudio 2の使い方をまとめとく »