[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 2chのread.cgiへ]
Update time : 03/22 15:46 / Filesize : 279 KB / Number-of Response : 838
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

【Xbox360】 XNA Game Studio その4 【C#】



1 名前:名前は開発中のものです。 [2007/12/22(土) 17:33:42 ID:spx8/Rc4]
前スレ
【XBOX360】 XNA Game Studio その3 【C】
pc11.2ch.net/test/read.cgi/gamedev/1176692259/

XNA Developer Center msdn.microsoft.com/directx/XNA/
XNA Game Studio Express msdn.microsoft.com/directx/xna/gse/
XNAをはじめよう! xna-studio.jp/

■ゲ製wiki
プログラミングガイドなど、基礎技術情報が豊富
www23.atwiki.jp/news4xna/

■ゲハwiki
フリーのライブラリ情報などが豊富
www16.atwiki.jp/xna360

641 名前:ハコ太郎 mailto:sage [2008/03/01(土) 08:42:57 ID:AGjJHtOG]
データバインディングはデバッグ窓としては有効だと思うけど
ゲーム内で使うメニューなどはボタンを押した時に処理を入れたい。

642 名前:名前は開発中のものです。 mailto:sage [2008/03/01(土) 11:11:26 ID:8ym58WA/]
zuneがサポートされるみたいだけど、日本で発売されるの?
zune向けにプログラムを書く場合、輸入しないとダメかな?

643 名前:名前は開発中のものです。 mailto:sage [2008/03/01(土) 13:53:11 ID:7cruTluh]
BoundingBoxとBoundingSphereで当たり判定を取ろうと思っていたのですが、
BoundingSphereの方は毎フレーム移動するので、中心の座標を移動させたいです。
ですが、そのようなインタフェースは無いようなので、毎フレーム新しいBoundingSphereを作って
入れ替えてやらなければいけないのかなと思っています。
その時のパフォーマンスを気にしているのですが、オブジェクトではなく構造体なら
毎フレームnewしてもGCの対象にはならず、パフォーマンスへの影響は無い(のか極めて小さい)
という理解で合ってますでしょうか。
気をつけなければいけないのは、オブジェクトの生存期間と数だけ?

644 名前:名前は開発中のものです。 mailto:sage [2008/03/01(土) 13:58:01 ID:mfMgIQq4]
構造体だから気にしなくていい
その前にBoundingSphereのフィールドは普通に書き換えできるぞ
だからってフレームを超えてキャッシュしとく意味はないけど

645 名前:名前は開発中のものです。 mailto:sage [2008/03/01(土) 14:05:26 ID:7cruTluh]
>>644
了解です。
最初に大量に作って使い回し云々は全部オブジェクトの話で、構造体には関係ないんですね。

646 名前:名前は開発中のものです。 mailto:sage [2008/03/01(土) 14:30:12 ID:iss0MbNP]
>>645
C#では構造体をスタック上に作る場合もnewキーワードを使ってて、
そこは混乱しやすいポイントではあるね。

647 名前:ハコ太郎 mailto:sage [2008/03/01(土) 14:39:31 ID:AGjJHtOG]
構造体のnewはメンバを全てNULLか0で初期化するだけだったはず

648 名前:名前は開発中のものです。 mailto:sage [2008/03/01(土) 17:11:56 ID:E+4DCZor]
xna-studio.jp/contest/0301.html
花やしき行ってくるけど、誰もいなかったりしないかドキドキする。

649 名前:名前は開発中のものです。 mailto:sage [2008/03/01(土) 18:13:27 ID:BJdyKXU8]
貸し切りでただで乗り放題なんで行って損はないそ゛。



650 名前:名前は開発中のものです。 mailto:sage [2008/03/01(土) 20:48:19 ID:KNB/+8nD]
Manegedの時よりXNAの方が処理スピード早くね?

651 名前:名前は開発中のものです。 mailto:sage [2008/03/01(土) 21:01:28 ID:BJdyKXU8]
今行ってきた。
福引きで俺の後ろの人が本体あたった.....

652 名前:名前は開発中のものです。 mailto:sage [2008/03/01(土) 21:12:03 ID:7cruTluh]
XNA Remote Performance MonitorてのはWindowsでローカルで開発している時は
使えないんですか?
パフォーマンスチューニングするのに良い開発用の↑みたいなツールって無いですかね?

653 名前:名前は開発中のものです。 mailto:sage [2008/03/01(土) 21:13:55 ID:ViryCY/U]
>>651
七回やって全部缶バッジは萎えたwww

654 名前:名前は開発中のものです。 mailto:sage [2008/03/01(土) 21:39:38 ID:HuE7K8R1]
>>650
基本的にMDXよりもヒープの使い方に敏感だし、
算術ライブラリは参照渡しとコードのベタ書き(要は手動のインライン化)が徹底されてるから
使う側から見れば注意することが少なくなってるってのはあるかもね。

>>652
CLRProfiler

意図のわからんイベントだが、花やしきいいなァ・・・。

655 名前:626 mailto:sage [2008/03/01(土) 23:53:26 ID:w3ZGIR9q]
完全にスルーされてるけど、日本語チャットの実装したい人って他に居ないの?

656 名前:名前は開発中のものです。 mailto:sage [2008/03/01(土) 23:59:06 ID:6CzHQ4+o]
いやだって360自体にあるメッセンジャー連携と音声チャット使えばいいし・・・

657 名前:名前は開発中のものです。 mailto:sage [2008/03/02(日) 00:03:22 ID:zzw5UN3t]
日本語で新しい本が出てるね。

ttp://www.amazon.co.jp/gp/product/4862460593

658 名前:名前は開発中のものです。 mailto:sage [2008/03/02(日) 00:03:42 ID:keBEe7WT]
>>656
Windowsの場合は?
自分はもうSystem.Windows.Formsで入出力窓作っちゃおうかなあとか思ってるんですが

659 名前:名前は開発中のものです。 mailto:sage [2008/03/02(日) 00:07:53 ID:fERtkynk]
NativeWindow使えばゲームループ中でもどうとでもなるんじゃね?



660 名前:名前は開発中のものです。 mailto:sage [2008/03/02(日) 00:43:32 ID:l4v/PVfq]
>>654
ユーザーの居場所検索、シャウト等メッセンジャーじゃカバーできない機能も沢山あるわけで
>>658
XBOXの人と話せないよね?

661 名前:名前は開発中のものです。 mailto:sage [2008/03/02(日) 00:53:02 ID:WAxvXIYw]
>>658
元が「360でのチャット」という話に対しての返答なのにWindowsを出されてきても

662 名前:名前は開発中のものです。 mailto:sage [2008/03/02(日) 00:55:04 ID:keBEe7WT]
>>661
ああいや、360の話は分かった、じゃあWindowsの場合はどうするのが良いんだろうって意味で書いただけで
>>656のレスにケチつけてる訳じゃないよ

663 名前:名前は開発中のものです。 mailto:sage [2008/03/02(日) 01:00:41 ID:l4v/PVfq]
>>661
360でチャットしたい人いるかなんて話はしてない
360でIMM32相当のAPIがあれば、WindowsPCとゲーム内チャットができるようにしたいという話

664 名前:名前は開発中のものです。 mailto:sage [2008/03/02(日) 01:05:55 ID:jGKSdtCZ]
>>657
\7,350は趣味で買うには高いよな。経費で買えるならいいけど。

665 名前:名前は開発中のものです。 mailto:sage [2008/03/02(日) 01:06:32 ID:fERtkynk]
>IMM32相当のAPI
確か「そんなものは無い」って話を聞いたことあるが・・・。
伊藤さんてるみー。

666 名前:名前は開発中のものです。 mailto:sage [2008/03/02(日) 01:32:38 ID:o9Cw/3Oh]
>>658
じゃあ作れ

667 名前:名前は開発中のものです。 mailto:sage [2008/03/02(日) 02:02:02 ID:OS2eoImf]
擦れ違いかもしらんが花やしきの様子書いておくか。
入りは意外にもかなりの盛況で作品台にもほぼ絶え間なく人が並んでいた。
客層もゲオタ以外の家族連れ、カップルと普段の客層と代わり映え無いほど。

出品作品をプレイすると福引きが出来て、ハズレはバッチだが当たりは
360本体で、俺の目の前だけでも3台用意されてた。
(もし俺の前に出ていたらそれ以上あったろう)
かなり太っ腹な対応で狙い目だったと思われ。

作品は作品台に並んでるのでもいかにも専門学校生が作ったレベルや
技術はあるが作り込みが全く未完成なのばかりでなんとか間に合わせた感が
強い。
MSKKが今後どれだけ掘り起こせるかに懸かってるだろう。
(期待してないが)

あと何で会場が花やしきなのかというとバンナム傘下の施設だから。
確実な利益のある新商品のプロモでもないのに偉く金かけてたな。
ttp://www.hanayashiki.net/rental/fee.html

668 名前:名前は開発中のものです。 mailto:sage [2008/03/02(日) 02:11:22 ID:l4v/PVfq]


669 名前:名前は開発中のものです。 mailto:sage [2008/03/02(日) 10:32:35 ID:8ZJ0iEdC]
d.hatena.ne.jp/Nunocky/20080301




670 名前:名前は開発中のものです。 mailto:sage [2008/03/02(日) 12:33:42 ID:keBEe7WT]
Gameクラスの中で、publicなメンバとしてSpriteBatchを宣言し、
GameクラスのDrawメソッドの中の単一のBeginとEndの中で、すべての描画したいオブジェクトのRenderメソッドを呼び、
GameのSpriteBatchを使って描画しています
このBeginはBegin( SpriteBlendMode.AlphaBlend, SpriteSortMode.BackToFront, SaveStateMode.SaveState );
という形で呼んでいるのですが、描画したいオブジェクトの中にSpriteBlendMode.Additiveで描画したいものがあります。
そのオブジェクトの中のRenderメソッドで、下記のようにしてみたのですが、うまくいきません。

this.game.spriteBatch.End();
this.game.spriteBatch.Begin( blendMode ); //blendModeで描画する
this.game.spriteBatch.Draw( texture, position, bounds, Color.White, rad, origin, 1.0f, SpriteEffects.None, depth );
this.game.spriteBatch.End();
this.game.spriteBatch.Begin( SpriteBlendMode.AlphaBlend, SpriteSortMode.BackToFront, SaveStateMode.SaveState );

上記コードを呼ばず、単にthis.game.spriteBatch.Drawを呼んで描画しているオブジェクトが
表示されなかったりします。
SpriteBlendMode.AlphaBlendとSpriteBlendMode.Additiveを使い分けるにはどういう風に実装するのが良いでしょうか。
GameクラスにSpriteBlendMode.Additive用のSpriteBatchと、SpriteBlendMode.AlphaBlend用のSpriteBatchを両方別々に持たせて
描画するオブジェクトの中で呼び分けようかなぁとか考えているんですが、あまりスマートじゃない気がします…。

671 名前:名前は開発中のものです。 mailto:sage [2008/03/02(日) 17:19:42 ID:YDJ5z10X]
XNA最大の問題点はパッドが実質非対応な点

672 名前:名前は開発中のものです。 mailto:sage [2008/03/02(日) 18:13:07 ID:l4v/PVfq]
>>671
何しにきたの?

673 名前:名前は開発中のものです。 mailto:sage [2008/03/02(日) 18:36:54 ID:DkxH8Qas]
www.famitsu.com/game/news/1213934_1124.html
アマチュアクリエーターのアイデアと想像力が結実した“XNA Game Studio Japan 2008 Spring Contest”の授賞式が開催

674 名前:名前は開発中のものです。 mailto:sage [2008/03/02(日) 19:02:50 ID:oAhqdNLL]
週末にちょろっと触ってみたんだが、
GameComponentをGameクラスのコンストラクタ時に登録しないと
GameComponentのInitializeを呼んでくれないんだけど、そういうモンなの?
気分的にはGameクラスのInitializeの中でアプリケーションの初期化終了後に登録したい感じだが

675 名前:名前は開発中のものです。 mailto:sage [2008/03/02(日) 19:42:00 ID:+DPdH8iN]
会場でもらった紙に書いてあったアドレス

XNAデベロッパーセンター
www.microsoft.com/japan/msdn/xna/

さあ、XNAをはじめよう!
xna-studio.jp/

XNA Game Studioフォーラム
forums.microsoft.com/msdn-ja/

XNAで作るマインスイーパー
www.microsoft.com/japan/msdn/vstudio/express/learn/xna

XNA GSE HELPの基礎
go.microsoft.com/?LinkId=8371116

できるプログラミングXNA Game Studio Express
go.microsoft.com/?LinkId=8371116

XNAビデオチュートリアル(英語)
go.microsoft.com/?LinkId=8371116

Visual Studio Express Edition学習用資料集
www.microsoft.com/japan/msdn/vstudio/express/learn/

手打ち疲れたお⊂(・ω・`)⊃

676 名前:名前は開発中のものです。 mailto:sage [2008/03/02(日) 19:44:48 ID:D87i6yt5]
おつかれ

677 名前:名前は開発中のものです。 mailto:sage [2008/03/02(日) 19:47:33 ID:YgJJfq7J]
スクショで見る限りかなりレベル高いよな
実際どーだったの

678 名前:ひげねこ ◆oxtErU/kVM mailto:sage [2008/03/02(日) 20:14:42 ID:75eB5Z/y]
寝る前にまた小一時間程お邪魔します。

前々回のまとめは>>598

前回のまとめ

新たに出した要望
1 コンパイラーエラーの強化
Windows上でもコンパイルしたときにXbox360でコンパイルできないものをエラーとする機能が欲しい
2 簡易GUIサンプル

聞いてきたもの
 XACTでABCBCのような形で再生させたい。

このABCBCというのが、イントロから入ってその後指定した部分からループというのであれば現状でもできます。
WAVファイル自体ににはループ情報を追加することができ、XACTはこのループに対応しています。

実際のやり方ですが、Sound ForgeやフリーのWAVファイル編集ツール(私が試したのはWavosaur)を使って
ループしたい部分、この場合はイントロが終わった部分から曲の最後まで選択した後に、ループ範囲の設定をします。
SoundForgeではLoop Region、Wavosaur上ではメニューのTool/Loop/Create Loop Pointsを選択します。

このループ情報を追加したWAVファイルをXACT上でWaveバンク内に読み込むとLoopと書かれている欄にYと表示されます。
そして、ゲーム中に再生するとイントロから始まり、ループ指定した場所をループし続けます(ループカウントの変更も可)

オーディオプログラマの人に聞いたら、このループ設定は多くのWAVファイル編集ツールでサポートされているとのことでした。

WAVOSAUR
www.wavosaur.com/


679 名前:ハコ太郎 mailto:sage [2008/03/02(日) 20:20:17 ID:Lox6KhX3]
へー出来たんだ
出張サポートセンターみたいな人だな



680 名前:ひげねこ ◆oxtErU/kVM mailto:sage [2008/03/02(日) 20:24:15 ID:75eB5Z/y]
>>609
VectorGraphics
これはリアルタイムで処理するものでしょうか?それともツールで作ったものをポリゴンデータに落とし込む方法のどちらが良いのでしょうか?
個人的には後者の方が好きなんですが……

GUI要望
 サンプルGUI
 編集ツール(主に配置)
 WPFとかSliverLightとか(コンパイルする)
 WTLのような扱いでも可(サンプルGUIと一緒?)
 VectorGraphicsのサポート

>>621
えっと、現在のSpriteBatchやBasicEffectの機能を使うのであればDX7上で動いて欲しいということでしょぅか?

>>622
返事が長くなるのでちょっと待ってください

その間に、こちらから質問

1 コンテントを用意する時の苦労や困っていることがあったら教えてください
2 皆さんが使っているコンテント(3Dモデルや、テクスチャとか)を作るのに使っているツールはどんなの使っています?

681 名前:名前は開発中のものです。 mailto:sage [2008/03/02(日) 20:37:36 ID:JDxaaE78]
とりあえずしょぼいC#でなくC++で書かせろと
話はそれからだ

682 名前:名前は開発中のものです。 mailto:sage [2008/03/02(日) 20:40:58 ID:zkaFSkJm]
そもそも、XNAの登場に合わせて、なぜ都合よくおまえらや昨日のコンテストに参加した連中が
C#ができるのか教えてくれ

683 名前:ひげねこ ◆oxtErU/kVM mailto:webmaster@higeneko.com [2008/03/02(日) 20:50:53 ID:75eB5Z/y]
>>622

もう少し詳しい情報をいただけないでしょうか?100と言うのは実際のゲーム中にだしたとき(他の処理も入っているとき)なのか
単体でパフォーマンステストしたときに遅くなったということでしょうか?
もし、よろしければメル欄のアドレス宛てにプロジェクトファイルを送っていただけないでしょうか?こちらの検証させてもらいます。

Xbox 360上でのパフォーマンスについてですが以下のMesh Instancing Sampleが参考になると思います。
creators.xna.com/Headlines/developmentaspx/archive/2007/01/01/Mesh-Instancing.aspx

このサンプルはメッシュインスタンスのサンプルコード以外にも、24頂点、12の三角形トライアングルのモデルデータを描画するときに
単に描画を複数回読んだだけのもの(DrawNoInstancingOrStateBatching)と、レンダーステートをバッチしたときのコード(DrawNoInstancing)が含まれます。

このサンプルをXbox 360上でリリース設定、デバッガなしの状態(Ctrl+F5)で起動させると、それぞれのパフォーマンス差が判ります。
DrawNoInstancingOrStateBatchingでは約430個、DrawNoInstancing時には1660個、そしてインスタンスありの場合は5100個のモデルが描画できます。

いきなりモデルインスタンスをするのは敷居が高いですが、ステートの設定回数を抑えたDrawNoInstancingはシェーダープログラムの変更なしで
できる最適化です。DrawNoInstancingOrStateBatchingは一つ一つのモデル描画時にモデル、ビュー、そしてプロジェクション行列、
VertexDeclaration、VertexBuffer、そしてIndexBufferを設定し直し、更EffectBegin、PassBeginと贅沢にステート設定をしています。

このコードを表示するモデルが1つのエフェクトしか使っていないので、最初に一回だけ共通するステートを設定して、EffectBegin、PassBeginを行った後に
それぞれのモデルに対してはモデル行列の設定して、CommitChangesを呼んでからDrawIndexPrimitiveをひとつのモデルに対して一回呼び出すようにしたのが
DrawNoInstancingOrStateBatchingです。これだけで、その最適化をしていないものに比べて4倍の数のモデル数を出すことができます。

つづく






684 名前:ひげねこ ◆oxtErU/kVM mailto:sage [2008/03/02(日) 21:16:04 ID:75eB5Z/y]
現状、こちらで把握しているなかでボトルネックとなっているのはマネージサイドによるメモリメモリアクセスです。

例えば、簡単なパーティクル表示で、ひとつのパーティクルは単純なテクスチャなしの四角形(2つの三角形ポリゴン、頂点にはVector3とColor)を表示したとします。
パーティクルの動きはあらかじめ設定された速度で動き画面端に届いたら移動量を反転するというものです。このプログラムを5000個のパーティクルを表示したときに
それぞれに掛かった時間を計測すると

パーティクルの移動処理に1ms
マネージメモリに頂点を書き出す部分が4ms
そして、SetDataを呼んでDrawPrimitiveを呼び出すのに掛かった時間が0.14ms程度です。

ここから、頂点データのコピーに掛かる時間をメモリ帯域と、ユーザーメモリからカーネルメモリへの変更コストを差し引くと、マネージサイドとネイティブサイドの
オーバーヘッドは非常に小さくなります。ですから、このオーバーヘッド部分を隠すためにマルチスレッド化しても効果が期待できないというのが現状です

次にレンダーステートのキャッシングについてですが、レンダーステートがGraphicsDeviceのみによって変更されるのなら問題は無いのですが、
レンダーステートはそれ以外にもネイティブサイド内のEffectによっても変更されます。Effectによるステート変更をマネージサイドのGraphicsDeviceと
辻褄を合わせるためにはせっかくネイティブサイドで動いているEffect実装部分をマネージサイドで実装しないといけません。そうなると、
今度はマネードサイドのEffect実装コードがボトルネックになり、ステートキャッシングによる最適化を相殺どころか逆に遅くなってしまいます。

更に続く

685 名前:ひげねこ ◆oxtErU/kVM mailto:sage [2008/03/02(日) 21:26:39 ID:75eB5Z/y]
そういうことで、DirectXと同じようにレンダーステートの変更数をアプリ側で極力少なくしてもらうしかないというのが現状です。

以下のブログがレンダーステートの管理方法について参考になると思います。
ttp://blogs.msdn.com/shawnhar/archive/2007/10/25/graphics-state-management.aspx
ttp://blogs.msdn.com/shawnhar/archive/2007/10/26/bitfield-renderstates.aspx

ライブラリレベルでできるレンダーステートの最適化はDX10の様に複数のステートをまとめておき、API呼び出し一回で
ガーっと変更することでしょうか?現状でもEffectを使って複数のステートを管理するという方法も役に立つと思います。

パフォーマンスに関しては、こちらの方で単体テストはしていますが、実際にゲームを走らしているときの問題とかを測定するのは
難しいので、実際にゲームを作っていてパフォーマンス問題があった場合は気軽に連絡していただけるとありがたいです。

686 名前:ひげねこ ◆oxtErU/kVM mailto:sage [2008/03/02(日) 21:47:02 ID:V3NWxRwr]
>IMMについて
ゲーム内に統合して使える形でのIMMはサポートしていません。
ただ、日本語版Xbox 360上ではチャットパッドがでた時にダッシュボード所で日本語入力ができるようになっているので
Guide.ShowComposeMessageを使えば単発のメッセージなら相手に送ることができます。
Windows上にあるダッシュボードではまだIMMに対応していなかったと思われます。少なくとも英語版Windows上では動作しませんでした。

ですから、現状ではボイスチャットを使って欲しいです。そして、IMMのサポートについては既に要望が来ています。

>クロスプラットフォームネットワークについて
XNAフレームワークはクロスプラットフォーム上でのネットワーク接続に対応しています。
ですから、Windows、Xbox360間で動作しているのなら、Windows同士、Xbox360間でも問題なく動きます、動かなかったらバグなので報告よろしくです

>>641
>データバインディングはデバッグ窓としては有効だと思うけど
デバッグ時に有効ってどういうことですか?
ちなみに私の言っているデータバインディングとはWPFのようにある程度の実行処理自体もデータで持っておいて
プログラムしなくても、例にあるアイテムショップ内でアイテム選択を変更する度に勝手に他の表示部分も変えてくれるような
機能のことです。確かExpressionの初期のチュートリアルがそんなのでした。


687 名前:ハコ太郎 mailto:sage [2008/03/02(日) 21:51:55 ID:Lox6KhX3]
私が考えていたものは
別途フォームを開くかゲーム内でメニューを開くかして
データをリアルタイムに変更できるようなものです。
GEMSにそんなのが載ってたので。

688 名前:ハコ太郎 mailto:sage [2008/03/02(日) 21:55:25 ID:Lox6KhX3]
プロパティグリッドのようなもので
キャラクタのステータスを変更したりするのには便利かなと思いました。

689 名前:ひげねこ ◆oxtErU/kVM mailto:sage [2008/03/02(日) 22:20:08 ID:V3NWxRwr]
>>670
これは推測ですが、やろうとしているのは半透明のスプライトをソートして表示したいわけですよね?
もしそうだとしたら、AdditiveBlendにして描画する前後ではソートが正しく行われなくなります。
例えばカメラの手前から奥に向かってA,B,X,D,Eという順の位置関係でXをAdditiveBlenにしたいとします。
そのときに描画を呼び出す順番がA,B,X,D,Eの場合に問題になります。

なぜなら、ここでの正しい描画順序はE,D,X,B,Aとなるからです。
SpriteBatchのソートはBegin/Endをまたいだソートはしません。ですから、Xを描画する時にBegin/Endを入れると、描画順は

0 Begin(Blend)
1 Draw A
2 Draw B
3 End --> B, Aとソートされ描画される
4 Begi(Additive)
5 Draw X
6 End -> Xが描画される
7 Begin(Blend)
8 Draw C
9 Draw D
10 End --> D, Cとソートされ描画される

この問題の解決方法はゲームによって色々と変わってきます。例えば横スクロールする2Dのゲームで奥行きを表現したいのであれば
手前、中央、奥といった奥行きを複数のレイヤーのようにして分けておきます。そして描画の時には、奥のレイヤーから順に描画します。
この時にレイヤー内ではBlend、Addtiveの順に描画すると描画問題は目立たなくなります。



690 名前:名前は開発中のものです。 mailto:sage [2008/03/02(日) 22:43:18 ID:wif61gOz]
BGMのストリーミング再生を行おうとしたところPlayCue()の部分でエラーが出てしまいました。
XACT上での設定はここを見て行いました
ttp://blogs.msdn.com/ito/archive/2007/05/29/xact-tips.aspx

エラー内容↓
InvalidOperationExceptionはハンドルされませんでした。
An error occurred trying to play the cue named "TestBGM". Is the cue name correct?

ストリーミング再生を行う場合はWaveBankのコンストラクタが違うということはわかったのですが
設定が上手くいっていないのでしょうか?それともそれ以外に設定が必要なのでしょうか?

691 名前:名前は開発中のものです。 mailto:sage [2008/03/02(日) 22:44:28 ID:keBEe7WT]
>>689
ありがとうございます。
半透明ではなく透明度ゼロのスプライトの表示ですね。
奥から、地形、アイテム、キャラ、弾丸(←こいつにAdditiveが混ざってる)、エフェクト、メニュー(←こいつが半透明)
という表示をしたくて、spriteBatch.Drawの最後の引数の値で管理してます。
AlphaBlend用のSpriteBatch(Aとする)とAdditive用のSpriteBatch(Bとする)をそれぞれ持っておくというのは合ってて、
下記のように呼べばOKでしょうか?
ただ、この場合、弾もメニューも他のものもDrawableGameComponentを継承した、○○Managerというのを作って、
そのDrawメソッドの中でそれぞれのオブジェクトのDrawメソッドを呼んでいるのですが、DrawableGameComponentにしちゃうと
まとめてGameから呼ばれちゃうので、弾ManagerとメニューManagerはDrawableGameComponentにせずに別管理になるということでしょうか。

//地形、アイテム、キャラ描画
SpriteBatch_A.Begin(Blend);
SpriteBatch_A.Draw( 地形とかアイテムとかキャラとか );
SpriteBatch_A.End();

//弾
SpriteBatch_A.Begin(Blend);
SpriteBatch_B.Begin(Additive);
if ( 弾.blendmode == AlphaBlend ) {
 SpriteBatch_A.Draw( 弾 );
} else {
 SpriteBatch_B.Draw( 弾 );
}
SpriteBatch_A.End();
SpriteBatch_B.End();

//メニュー
SpriteBatch_A.Begin(Blend);
SpriteBatch_A.Draw( メニュー );
SpriteBatch_A.End();

692 名前:ひげねこ ◆oxtErU/kVM mailto:sage [2008/03/02(日) 23:01:48 ID:Oj9SUC9L]
>>681
単にC++の構文が使いたいのであれば、Windows限定なら何の問題も無くC++/CLI使えますし、Xbox 360上でも/pureフラグ使えばできますよ。
どちらもサポート外でけど。

あと、名前は忘れましたがC++からC#のコードに変換してくれるソフトがあったりして、実際にそれを使っている人もいましたよ

適当にググってみたらこんなの見つけましたけど
ttp://tangiblesoftwaresolutions.com/Product_Details/CPlusPlus_to_CSharp_Converter_Details.htm

さあ、話しましょうか?

>>682
弘法筆を選ばず、プログラマー言語を選ばずです。

>>688
そういったパラメーター変更のような機能の要望は確かにあります。
現状ではWindowsのみならプロパティグリットは使えますが(WinFormとして使うなら)、要求としてはPC上から
Xbox360で動作しているデータの変更したいというのはあります。

>>690
このメッセージは指定した名前のキューが無かったときにでます。この名前はケースセンシティブなので
XACTでしていした名前と大文字小文字も一緒にする必要があることに気をつけてください。

693 名前:名前は開発中のものです。 mailto:sage [2008/03/02(日) 23:11:28 ID:qhGLCmSg]
XNAで「フォグ」って、ピクセルフォグしか使えないんでしょうか?
ピクセルフォグはDX9の設定をXNA的な書き方に直しただけで動いたのですが、
どーにもFogVertexModeではフォグカラーで塗りつぶされただけになってしまうので。


子一時間といってたけど・・・ま、次に来たときにでも教えてください>ひげねこさま



694 名前:名前は開発中のものです。 mailto:sage [2008/03/02(日) 23:13:15 ID:keBEe7WT]
>>691
あ、そうじゃなくて、SpriteBatch_IroiroとSpriteBatch_TamaとSpriteBatch_Menuを作って、
SpriteBatch_Iroiro.Begin( blend );
SpriteBatch_Tama.Begin( additive );
SpriteBatch_Menu.Begin( blend );
base.Draw(); //DrawableGameComponentをDraw
SpriteBatch_Iroiro.End();
SpriteBatch_Tama.End();
SpriteBatch_Menu.End();
とすれば良いのかな。Endのタイミングで描画でしたよね。

695 名前:名前は開発中のものです。 mailto:sage [2008/03/02(日) 23:30:45 ID:Ng8vALwi]
>弘法筆を選ばず、プログラマー言語を選ばずです。
xna-studio.jp/howto.html
↑にはプログラマーじゃない人でも出来る話なんですけど

696 名前:名前は開発中のものです。 mailto:sage [2008/03/02(日) 23:39:09 ID:wif61gOz]
>>692
そうなんですか。でもキューの名前は合っているはずなのにおかしいな?
もう少し調べてみます、ありがとうございました

697 名前:名前は開発中のものです。 mailto:sage [2008/03/02(日) 23:50:59 ID:RrXwWPHL]
>VectorGraphics

欲を言えばアンチエイリアス付きの簡易Flashみたいな。
まあ、System.Drawing の GraphicsやGraphicsPathが使えれば良いかなと。
(自作しようにもTesselation(Triangulation?)で躓いた)

ツールで作ったものをポリゴンデータにするっていう具体例が思いつきませぬ。

698 名前:名前は開発中のものです。 mailto:sage [2008/03/02(日) 23:54:01 ID:iyg+0+D4]
>>697
まさにSilverlight
Silverlightのサポートの予定はあるの?

699 名前:ハコ太郎 mailto:sage [2008/03/02(日) 23:55:06 ID:Lox6KhX3]
俺よく調べてないんだがSilverlightってweb側の技術じゃないのか



700 名前:ひげねこ ◆oxtErU/kVM mailto:sage [2008/03/03(月) 00:02:55 ID:JIaq5K5i]
>>693
FogVertexModeにした場合は、頂点シェーダーでFog係数を出力する必要があります。

struct VSOUTPUT
{




>>695
っていうか、最初の段落で思いっきりプログラミングツールって言ってるんですけど……。












701 名前:ハコ太郎 mailto:sage [2008/03/03(月) 00:10:20 ID:ih84mIid]
そもそも何も知らない主婦にやらせるのが間違いでは?
どうも意識のずれがあるように思うけど

702 名前:ひげねこ ◆oxtErU/kVM mailto:sage [2008/03/03(月) 00:11:23 ID:JIaq5K5i]
途中で送信してしまいました、すいません

>>693
こんな感じでFOG係数を頂点シェーダーから出力します
struct VSOUTPUT
{
float4 PositionPS : POSITION;
float Fog : FOG;
};

>>691
もしかして、Addtiveの弾とメニュー以外は、アルファ値が0と1しかないスプライトですか?
それだったら、もっと簡単な方法があります。


はう、こちらは朝の7時で非常に眠いです。
このまま書き続けるとヘンなこと書きそうなので寝ます。
日本時間で月曜の夕方くらいに戻ってきます。では


703 名前:ハコ太郎 mailto:sage [2008/03/03(月) 00:14:38 ID:ih84mIid]
お疲れ様でした

704 名前:名前は開発中のものです。 mailto:sage [2008/03/03(月) 00:46:07 ID:51SXKyNl]
xna-studio.jp/howto.html

>しかし、プログラミングを学習するのは難解であり、開発関係の情報は専門に選考している方に
>しか理解し難いものです。
>通常はこの段階で一般の方もしくは、これから始めようとされる方、興味を持ってもやはりその
>難しさにハードルの高さを感じて断念、敬遠される場合があります。


ここ読むと、プログラミング学習の難解さ、敷居の高さを解消しないとどうにもならないような気がするが。
でも、まさかMSがゆとり学生から氷河期ゲーム廃人までの全員を対象に無料プログラミングスクールを
毎週提供するわけにもいかないしなw

その下の段落読むと、プログラミングできない人はとりあえず応援して、アマチュアが作ったゲームを
楽しんでね〜、絵心や音楽のセンスあるやつはできる範囲で協力してXNAを盛り上げましょうね〜みたいな
感じだな。

705 名前:693 mailto:sage [2008/03/03(月) 01:03:25 ID:CQVhtOku]
>>700
 ありがとうございます。
 ということは、今はBasicEffectに頼り切ってfxファイルなんて使っていないので、あきらめろって言うことですね・・・。了解です。


706 名前:名前は開発中のものです。 mailto:sage [2008/03/03(月) 01:15:25 ID:oA5jTKAz]
>>702
> >>691
> もしかして、Addtiveの弾とメニュー以外は、アルファ値が0と1しかないスプライトですか?
> それだったら、もっと簡単な方法があります。

今のところそのつもりです。もしかしたら弾とエフェクトは半透明にするかもですが、
地形とキャラはベタの予定。

// スプライトの描画準備
this.spriteBatch.Begin();
// スプライトを描画する
this.spriteBatch.Draw(this.texture, Vector2.Zero, Color.White);

とか、Beginの引数を省略とかじゃなくてですか?<簡単な方法


707 名前:名前は開発中のものです。 mailto:sage [2008/03/03(月) 01:27:09 ID:LQEfvSeq]
XNAって文字をスプライト化せずに表示することは不可能なんでしょうか?
今までは画像ファイルで済ましていたんですが、
テキストの多いゲームを作ろうと思っているので、
片っ端から文字をスプライト化するのは避けたいんです
ユーザー側で使用フォントを変えれるようにもしたいですし


708 名前:名前は開発中のものです。 mailto:sage [2008/03/03(月) 03:55:13 ID:x67FlAoB]
過去レスくらい読もうぜ

709 名前:名前は開発中のものです。 mailto:sage [2008/03/03(月) 09:56:04 ID:ulYtu6Pm]
自前でTrueTypeレンダリングするとか



710 名前:名前は開発中のものです。 mailto:sage [2008/03/03(月) 12:56:24 ID:qepHyWRQ]
今、XNAフィードバック使えなくない?

IE7にしてから初めてのアクセスなので、自己解決しそうだけど念の為書いておく。

711 名前:名前は開発中のものです。 mailto:sage [2008/03/03(月) 16:03:15 ID:F45LgXfd]
Effect Fileを書くとき入力支援機能があると楽なんだが3.0に搭載してほしい

712 名前:名前は開発中のものです。 mailto:sage [2008/03/03(月) 16:55:48 ID:TzOzZLK6]
OPADSFはレリノマッソサイテスタルムン゜タイテ゜゛からせねふほぉん゜まのちしとはくちしとは

713 名前:名前は開発中のものです。 mailto:sage [2008/03/03(月) 17:05:51 ID:S1J4GBTq]
日本語でおk

714 名前:ひげねこ ◆oxtErU/kVM mailto:sage [2008/03/03(月) 17:18:04 ID:Q5EkCE5+]
今日は本当に小一時間だけ(で終わるといいなぁ)出没します。

>>696
あと、考えられるのはストリーミング用のWaveバンクを生成した後にAudioEngine.Updateを一回呼ぶ必要があります。

audioEngine = new AudioEngine(@"Content\Audio\xact.xgs");
streamWaveBank = new WaveBank(audioEngine, @"Content\Audio\Streaming.xwb", 0, 16);
soundBank = new SoundBank(audioEngine, @"Content\Audio\Sound Bank.xsb");

audioEngine.Update(); // これを追加

cue = soundBank.GetCue("test");

>>697
例えば、XAMLとかをそのまま正直にランタイムで処理すると時間が掛かるので、GPUフレンドリーなデータ構造に変換したり、
ツール内でベクター使いまくって作ったボタンイメージとかをコンバート時にビットマップに変換してくれたりといった機能ですね





715 名前:ひげねこ ◆oxtErU/kVM mailto:sage [2008/03/03(月) 17:34:28 ID:Q5EkCE5+]
>>706 こんな感じです。

// 抜きスプライトを描画
spriteBatch.Begin(SpriteBlendMode.AlphaBlend, SpriteSortMode.Immediate, SaveStateMode.SaveState);
GraphicsDevice.RenderState.DepthBufferEnable = true;
GraphicsDevice.RenderState.ReferenceAlpha = 128;
spriteBatch.Draw(...)
spriteBatch.End();
// 半透明のスプライトを描画
spriteBatch.Begin(SpriteBlendMode.AlphaBlend, SpriteSortMode.Immediate, SaveStateMode.SaveState);
GraphicsDevice.RenderState.DepthBufferEnable = true;
GraphicsDevice.RenderState.DepthBufferWriteEnable = false;
spriteBatch.Draw(...)
spriteBatch.End();
// Additveのスプライトを描画
spriteBatch.Begin(SpriteBlendMode.Additive, SpriteSortMode.Immediate, SaveStateMode.SaveState);
GraphicsDevice.RenderState.DepthBufferEnable = true;
GraphicsDevice.RenderState.DepthBufferWriteEnable = false;
spriteBatch.Draw(...)
spriteBatch.End();
// メニュー部分を描画
spriteBatch.Begin();
spriteBatch.Draw(...)
spriteBatch.End();

抜きテクスチャを描画する時にZバッファと、Alphaテストを使うのがコツです。こうするとAlpha値が1のものだけが
描画されると同時にZバッファも更新されるのでちゃんとしたdepthを指定すれば順不同に描画しても問題ありません
次にの半透明部分ですが、前の描画でZバッファには情報が入っているので既に描かれているものより手前のピクセルしか描画しません。
Zバッファは参照するけど、更新はしないというのがミソです。続くAddtiveの部分も一緒です。

これで見た目上一番問題のある抜きスプライトとそれ以外のスプライトの前後関係は正しくなります。ただし、半透明同士が重なったとき
の前後関係はおかしくなりますが、見た目上の問題は大幅に減るはずです。

716 名前:ひげねこ ◆oxtErU/kVM mailto:sage [2008/03/03(月) 17:44:53 ID:Q5EkCE5+]
>>705
確かにBasicEffectはFogパラメーターを頂点シェーダーで出力していませんが、独自のFogパラメータを持っています。
Fogパラメータを出力するように変更することができますが、Xbox360にはFog関連のレンダーステートが無いので、BasicEffectを
使う場合はそのパラメーターを変更することをお勧めします。

>>707
文面から察するにSpriteFontを使っていないように見えますが、そうであればSpriteFontを使うことで文字列描画できます。
このスプライトフォントには表示につかう文字コードを指定する必要があり、デフォルトでは英文字が追加されています。
それ以外の文字を表示するには以下が参考になります。
ttp://blogs.msdn.com/ito/archive/2008/02/22/simple-japanese-message.aspx
ttp://blogs.msdn.com/ito/archive/2007/05/02/content-pipeline-part3.aspx

>>711Effect Fileを書くとき入力支援機能があると楽なんだが3.0に搭載してほしい
これはインテリセンスが動作して欲しいということでしょうか?確かにあると便利なので要望として出しておきます。

717 名前:名前は開発中のものです。 mailto:sage [2008/03/03(月) 18:05:24 ID:S1J4GBTq]
RenderTargetでColor.Singleのフォーマットが作れないんですけど、
作成できるかチェックする方法ってあるんですか?

718 名前:名前は開発中のものです。 mailto:sage [2008/03/03(月) 18:18:16 ID:ST1FZc0o]
>>714
>例えば、XAMLとかをそのまま正直にランタイムで処理すると時間が掛かるので、GPUフレンドリーなデータ構造に変換したり、
>ツール内でベクター使いまくって作ったボタンイメージとかをコンバート時にビットマップに変換してくれたりといった機能ですね

なるほど。

そういったパーツを多関節でつなげたり、
スキニングみたいにトランスフォームしたりでアニメーションさせたいですね。
ってその程度であればスプライトで代用できるんで、拡大縮小で劣化を防ぐ以外にはあまり意味がないような。

そういうのをリアルタイムでやりたいんで、
グラフィックスパスをポリゴン化するようなサンプルが欲しいなぁと。

719 名前:名前は開発中のものです。 mailto:sage [2008/03/03(月) 18:51:45 ID:zo2Ibxr1]
Win2kで動くように…
無理か



720 名前:ひげねこ ◆oxtErU/kVM mailto:sage [2008/03/03(月) 19:13:41 ID:Q5EkCE5+]
>>717
GraphicsAdapterクラスのCheckDeviceFormatを使います。

bool canUse = GraphicsDevice.CreationParameters.Adapter.CheckDeviceFormat(
graphics.GraphicsDevice.CreationParameters.DeviceType,
GraphicsDevice.DisplayMode.Format,
TextureUsage.None, QueryUsages.None, ResourceType.RenderTarget, SurfaceFormat.Single);

この戻り値がtrueなら使えることになります。

>>718
Triangulationサンプルということですね。ここら辺の処理は他のグラフィクス処理に比べると地味ですが、あるとなにかと便利なんですよね

>>719
Win2Kがサポート外なのはXNAが依存しているものの問題なんで、厳しいですね。


明日は月曜日なので、今日はもう落ちます。ではでは


721 名前:名前は開発中のものです。 mailto:sage [2008/03/03(月) 19:48:20 ID:S1J4GBTq]
>>720
> GraphicsAdapterクラスのCheckDeviceFormatを使います。
ありがとうございます。945GMで無事にfalseが帰ってきましたorz
色々なサンプルを見るだけでも影のハードルは高いっすね・・・。

>>716
> これはインテリセンスが動作して欲しいということでしょうか?確かにあると便利なので要望として出しておきます。
個人的にはシェーダーでリファクタリングが使えるようになって欲しいですね。
同じようなシェーダーを書き換えたり、コピペしたりするときに欲しいなと思います。


722 名前:名前は開発中のものです。 mailto:sage [2008/03/03(月) 20:07:26 ID:EdvlV9oX]
XNAのインストールから会員の入会方法、XBOXで動かすのを具体的に解説してるページってないですか?

723 名前:名前は開発中のものです。 mailto:sage [2008/03/03(月) 20:35:22 ID:aH5g85ZF]
>>712

724 名前:696 mailto:sage [2008/03/03(月) 21:12:34 ID:vsU7ZvID]
>>714
おお、ちゃんと再生できました!!
ありがとうございます

725 名前:名前は開発中のものです。 mailto:sage [2008/03/03(月) 22:33:54 ID:CwLMLFGc]
>>722
xna-studio.jp/
スターターのダウンロード
ゲームを動くようにする
メンバーシップへ参加
スターターのダウンロード
パソコンとの接続設定
ゲームを動くようにする
Xbox 360 へ展開する
ゲームサンプル

てあるから読んでみたら?

726 名前:名前は開発中のものです。 mailto:sage [2008/03/03(月) 22:54:32 ID:EdvlV9oX]
その人と一緒にがんばってみます

727 名前:名前は開発中のものです。 mailto:sage [2008/03/03(月) 23:59:09 ID:b9qJgCmK]
スレ違いで恐縮なんですけども、win向けのXNAバイナリがどれもこれも動作しません。
・(問題の環境がVistaなので).Net2.0再頒布可能パッケージインストーラは蹴られる
・DirectX End-User Runtime Web Installerは「最新です」と言われる
 (DxDiagも正常、AeroGlass環境なのでGPU要件は問題無い、筈)
・Microsoft XNA Framework Redistributable 2.0はインストール済
・イベントビューアによると何らかのコンポーネントが足らないか壊れている、らしい

で、ここからが要望なんですが、もう少しエラーメッセージ周りをどうにかするか
(実際に何が欠けているかが解らないので、どれを疑ってよいのか解りません)
XNAバイナリを動作させる為の必須コンポーネントのAll-in-oneパッケージのようなもの
を用意していただけるとありがたいのですが。

728 名前:名前は開発中のものです。 mailto:sage [2008/03/04(火) 00:47:09 ID:sCnHkz0D]
おちんちんびろんびろ〜ん

729 名前:名前は開発中のものです。 mailto:sage [2008/03/04(火) 01:03:46 ID:s/9UoCnb]
それができたら苦労しない
そもそもPCでXNAやること自体間違っとる
箱でやれよ



730 名前:名前は開発中のものです。 mailto:sage [2008/03/04(火) 08:40:03 ID:RsF5/lls]
>>727
CRT8SP1だったか.NETFX2.0SP1だったかが足りにゃい

731 名前:名前は開発中のものです。 mailto:sage [2008/03/04(火) 09:20:55 ID:s/9UoCnb]
こんな得体の知れないランタイム要求するなんて
Vista買った初心者は全員XNA挫折だな

732 名前:名前は開発中のものです。 mailto:sage [2008/03/04(火) 10:19:39 ID:j0/ST36S]
XNA End-User Runtime Web Installerが必要かもな。
・DirectXをチェックしてインストール
・.Net Framework 2.0 SP1をチェックしてインストール
・XNA Framework をチェックしてインストール
このぐらい自動でやってもらいたいものだ。


733 名前:名前は開発中のものです。 mailto:sage [2008/03/04(火) 10:44:53 ID:s/9UoCnb]
無理だな
できるなら既にやっている
もうXNAが出てから何年も経ってるんだぞ

734 名前:名前は開発中のものです。 mailto:sage [2008/03/04(火) 10:50:42 ID:OToBjVMK]
ベータ含めて1年半だろ

735 名前:名前は開発中のものです。 mailto:sage [2008/03/04(火) 11:30:35 ID:dikiCYmh]
3.5入れさせとけ

736 名前:名前は開発中のものです。 mailto:sage [2008/03/04(火) 12:06:08 ID:RsF5/lls]
>>731
何が知れないのか知らんがCRTは要するにCランタイムでVS2005で
開発されたほぼ全てのアプリに必要。

VS2005SP1で更新されたんだが今いち内部ですら認識されてなさげ

つか見てみたがこれXna redistパッケージのバグと言ってもいい気がしてきた。

CRTだけで大丈夫なら同封すべき。NETFX2.0SP1必要ならNotWinFx2Actionの
カスタムアクションが間違ってる。とりあえず依存関係抽出してパッケージ
作るぐらいはして下さい>これつくった人

WiX使ってるようだけどこれは詳しくないと火傷するぽ


737 名前:名前は開発中のものです。 mailto:sage [2008/03/04(火) 12:33:49 ID:Q04dOBkw]
>>575のリンク先の原因と同じかな?
ちゅーかこれXNAに限らずC++/CLIアプリを配布する時に気をつけた方が良いなぁ。

738 名前:名前は開発中のものです。 mailto:sage [2008/03/04(火) 12:45:45 ID:ij7C/RJ0]
プレイさせるだけでも一苦労だな

739 名前:名前は開発中のものです。 mailto:sage [2008/03/04(火) 12:54:30 ID:NA3DgFZP]
さっさと>575の「この投稿は参考になりましたか?」の「はい」を押す作業に戻るんだ。



740 名前:名前は開発中のものです。 mailto:sage [2008/03/04(火) 13:02:16 ID:ozuNs0rT]
不毛なインストール作業を強いる時点で
ゲームプレイ環境としては失格だな

741 名前:名前は開発中のものです。 mailto:sage [2008/03/04(火) 13:24:57 ID:RsF5/lls]
>>738 >>740
その辺パッケージで吸収せなならんのにというそれ以前の問題っつーか
これつくったやつと通したQA出てこいっつーか…







[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<279KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef