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
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 >>711 Effect 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出てこいっつーか…
742 名前:名前は開発中のものです。 mailto:sage [2008/03/04(火) 13:26:36 ID:s/9UoCnb] MDXと違って金が入るからC#もXNAもこの先生きのこると思う人も多いかもしれないが その期待をことごとく裏切るのがM$流 既にGDKなんて出してるくらいだからな 箱の寿命かDX10世代が来るまでの命だろ
743 名前:名前は開発中のものです。 mailto:sage [2008/03/04(火) 13:27:23 ID:AVay9o0V] 途中送信しかけた… >>740 文句は言うのは自由だが、非生産的な文句は誰も得しないからやめれ
744 名前:名前は開発中のものです。 mailto:sage [2008/03/04(火) 13:31:48 ID:dikiCYmh] GDKはサードパーティー製品の制限版だぞ
745 名前:名前は開発中のものです。 mailto:sage [2008/03/04(火) 13:42:19 ID:s/9UoCnb] >不毛なインストール作業を強いる時点で >ゲームプレイ環境としては失格 認識を持たせるという意味では生産的な意見だな
746 名前:名前は開発中のものです。 mailto:sage [2008/03/04(火) 14:09:42 ID:ozuNs0rT] >>743 どうやら君の1bitの情報量も無い書き込みよりは生産的みたいだよ?
747 名前:名前は開発中のものです。 mailto:sage [2008/03/04(火) 14:11:24 ID:6jZ5YXCn] >>745 かえって問題の本質をぼかしているだけだろ
748 名前:名前は開発中のものです。 mailto:sage [2008/03/04(火) 14:35:23 ID:tkXnqvSo] この前のイベントが海外への良いアピールになっているといいなぁ ひげねこ氏も積極的に動いてくれているみたいだし 要望を踏まえた3.0の成長に期待 あとは新機能が追加されてもそれを上手く使わせるサンプルが不足していることだと思う ジオメトリインスタンシングのサンプルなんて複数のサンプルがごちゃごちゃしすぎて分かり難いし スターターキットに至っては(ry
749 名前:名前は開発中のものです。 mailto:sage [2008/03/04(火) 14:38:21 ID:du42uvgl] MSの開発ツールってドキュメントはMSDN Libraryに代表されるように非常にしっかりしてるんだが サンプルが今ひとつな事が多いよな
750 名前:名前は開発中のものです。 mailto:sage [2008/03/04(火) 14:51:11 ID:CujTJOWH] 断片的な情報しかないのは仕様です。
751 名前:名前は開発中のものです。 mailto:sage [2008/03/04(火) 15:13:19 ID:0b6eMKRw] 翻訳何とかして欲しいなあ。 調べ物は英語でいいけど、パラパラ読みができん
752 名前:名前は開発中のものです。 mailto:sage [2008/03/04(火) 16:28:19 ID:sCnHkz0D] おちんちんびろ〜ん
753 名前:名前は開発中のものです。 mailto:sage [2008/03/04(火) 17:04:20 ID:s/9UoCnb] 戻らなくなるぞ
754 名前:名前は開発中のものです。 mailto:sage [2008/03/04(火) 17:23:51 ID:sCnHkz0D] 皮が伸びて被ったままになっちゃった・・・最初からだけど つω;) ウッ・・・
755 名前:名前は開発中のものです。 mailto:sage [2008/03/04(火) 22:14:38 ID:/QfDBMTz] >>728-729 wwwwwwwwwwwwww箱だとびろ〜んできますか?wwwwwwwwwww
756 名前:名前は開発中のものです。 mailto:sage [2008/03/04(火) 23:08:18 ID:mWxzbpcN] サンプルの充実と解説の和訳が欲しい できればサンプルには、それを学ぶことでどのような知識が得られるのか、 落とす前に体系的にわかるようにして欲しい 基礎から応用まで
757 名前:名前は開発中のものです。 mailto:sage [2008/03/05(水) 00:02:31 ID:G13W8xfV] 2Dで、BoundingBoxとBoundingSphereを使って 矩形同士の衝突判定と、矩形と円の衝突判定をやっています。 ですが、矩形の方を回転させて、斜めになってる状態で判定する必要がでてきました。 そこでちょっと教えて頂きたいのですが、BoundingBoxを回転させる方法はありますでしょうか。 MSDNで探してみたつもりなんですが、そういうメンバは見あたりませんでした。 どうすればBoundingBoxを回転させて衝突判定させられるでしょうか。 それとも、回転する矩形の衝突判定する方法は提供されてなくて、 4点取って自分で衝突判定処理を実装しなければならないのでしょうか。 教えて頂けると助かります。よろしくお願いします。
758 名前:名前は開発中のものです。 mailto:sage [2008/03/05(水) 00:18:28 ID:tt2IYbDX] >>757 ごめん、俺XNAは全然素人なんで正しい答えは返せないんだけど 元々矩形で当たり判定してるなら中身が回っても矩形的には無視 できるんじゃない? 中央の座標だけ揃えとくとか、そんなんじゃ駄目なんかな?
759 名前:名前は開発中のものです。 mailto:sage [2008/03/05(水) 00:35:26 ID:iMklzerV] >>758 ええと、言いたいことが伝わってないかもしれません ε=○□=3 と ε=□□=3 とやってたのを、 ε=○◇=3 と ε=□◇=3 とやりたい、ということです。 /\○ ←当たってない / \ \ / \/ と、矩形の傾きで衝突してるか否かが変わってくると思います で、BoundingBoxは原点に近い方の座標と遠い方の座標で値として持つので、 座標を傾けても、矩形の縦横の長さが変わるだけで傾きはないという認識です で、もしBoundingBox自体を回転できなくても、BoundingBoxと傾き角度を引数とかで 渡してやれば衝突判定してくれるメソッドとかXNAで提供されてないかなぁと思いまして
760 名前:名前は開発中のものです。 mailto:sage [2008/03/05(水) 00:40:56 ID:dCj5PHbb] おまえはBBの意味が分かっていない
761 名前:名前は開発中のものです。 mailto:sage [2008/03/05(水) 07:37:59 ID:vf5nbNmt] >>759 XNAは知りませんが、普通2DのBBはAABBの一種で、座標軸に平行な矩形です。 回転するBBと円との当たり判定を行いたい場合、円の座標を変換して AABB vs 円にしてから判定を行うとよいでしょう。 数学的に難しくは無いですが多少重いです。
762 名前:名前は開発中のものです。 mailto:sage [2008/03/05(水) 07:47:03 ID:vf5nbNmt] 訂正。 円の座標ー>矩形と円の座標
763 名前:名前は開発中のものです。 mailto:sage [2008/03/05(水) 08:17:04 ID:iMklzerV] >>761 あーなるほど、円と矩形回転させてやって、軸に平行な矩形を作って、そちらと判定する訳ですね 矩形同士の衝突の場合も、片方の矩形は軸に平行になるようにして あとは斜めになってる方の矩形の四点が、回転してない矩形に進入してるかどうか、ですかね?
764 名前:名前は開発中のものです。 mailto:sage [2008/03/05(水) 10:23:06 ID:PKtFPGkc] 759のようにもっと正確に判断したい場合 回転バウンディングボックス(OBB)と球の判定になるんだけれど XNAのライブラリには含まれていないぽい リアルタイム衝突判定本の中に説明とサンプルが含まれているので 自作するか誰かのコードを流用させてもらうのが良いかと
765 名前:名前は開発中のものです。 mailto:sage [2008/03/05(水) 12:13:04 ID:wiI7nq2k] >回転バウンディングボックス(OBB)と球の判定になるんだけれど >XNAのライブラリには含まれていないぽい こういう中途半端なところがあるから嫌いだ。 物理エンジン書いたこともないような素人の算術ライブラリなんかのせるな。 自前で用意するからいいが、はっきり言って萎える。 依存箇所全て書き直しか?ふざけるのも大概にしろ。
766 名前:名前は開発中のものです。 mailto:sage [2008/03/05(水) 14:20:57 ID:ptj03fcF] 日本人がいかに完璧主義かがよく分かるスレだな。
767 名前:名前は開発中のものです。 mailto:sage [2008/03/05(水) 14:33:06 ID:Cu5Bc2PE] 少なくともこんなくだらないことで騒いでる奴よりは中の人の方が頭いいと思うよ
768 名前:名前は開発中のものです。 mailto:sage [2008/03/05(水) 14:35:13 ID:x2y+3/wK] 外人マッチョ「XNA初めてか?力抜けよ」 日本人「エ・・・、X、N、Aッー!」
769 名前:名前は開発中のものです。 mailto:sage [2008/03/05(水) 15:09:53 ID:mPAG9DMI] ttp://xoops.peak.ne.jp/modules/d3pipes/index.php?page=clipping&clipping_id=216 中の人の頭の良さは別次元だからな。 >C# によるリテール版開発は、 Microsoft 自身が XNA 環境では XBOX360 コンテンツに課す要求クオリティレベルをクリアできないだろうと発言しています。 そりゃ端からプロデビューして、C/C++ とインラインアセンブリでunreal engineも会社の経費で使い放題の奴らと 同じ事を考えろなんて無茶言うなよ。('A`)
770 名前:名前は開発中のものです。 mailto:sage [2008/03/05(水) 15:16:55 ID:HhOx8svu] なんでもやろうとするからいけないんだ。 コンシューマーゲームって本来ハードスペックとの戦いだろ? XNAも同じさ。XNAという仕様の中でいかにおもしろいもの作るかってことだ。 初心に戻って今のXNAでできることをやろうぜ?