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
614 名前:名前は開発中のものです。 mailto:sage [2008/02/27(水) 19:08:04 ID:pA3Q2Mma] >GUI ・項目のリスト表示・管理(メニュー周り、スクロール付き) ・はい/いいえなどの選択肢ウィンドウ(メッセージボックス) ・汎用的なウィンドウの表示、Order、オープン/クローズアニメーション ・ウィンドウスキン ・その他ゲームに良くある機能など 個人的にはライブラリというよりは、 叩き台にできるサンプルが欲しいかなと。
615 名前:ひげねこ ◆oxtErU/kVM mailto:sage [2008/02/27(水) 19:08:20 ID:sG5OgzFC] >>571 >XACT周りでは音楽を再生するとき >小節をABCBCというような形で再生させる方法が無いって問題があったと思う。 XACTの機能でできそうな気もしますが確認します。もし現状ではできなくとも、 Notifyイベントに対応して欲しいという要望があるので、それがあれば実現できると思われます。 >>574 「玄関開けたら5分でゲーム製作」は、他の面倒なことに時間を割くことなく、直ぐにゲーム製作 に入れるという意味での目標です。現状では実現しておらず、目標達成を目指しているところです。 >>586 愛すべきバカと呼ばれたいです >>593 >あとは箱用に作るのに必要な料金さえ緩和してくれりゃな。 ごめんなさい、今のところ、それがチームでの唯一の収入源なんですwww
616 名前:ひげねこ ◆oxtErU/kVM mailto:sage [2008/02/27(水) 19:28:49 ID:sG5OgzFC] >>601 具体的に、どの固定シェーダー機能が欲しいのか詳しく。 マルチテクスチャの変態的なステージ設定が欲しいわけではないですよね? >>604 >箱は無視でいいからさw そんなご無体な…… >>608 >コンパイルエラー強化 確かにそうですね、要望としてだしておきます。 また、デスクトップ.NetにはNetCFに無い機能で必要性の高いと思われるものを見つけた場合は 再度連絡してくれるとありがたいです。 例としてはオリジナルの.NetCFには無かったStopwatchは既に使えるようになってたり、stackallocの 追加要望なども来ていますので。 >>611 根本的な問題点が判らない限りは同じことを問い続けます。 「あなたにとって何が一番重要な問題なんですか?」と、 >>614 GUIについては、まずはCustumUIのようなサンプルが欲しいといったところに落ち着くのでしょうか?
617 名前:ひげねこ ◆oxtErU/kVM mailto:sage [2008/02/27(水) 19:34:25 ID:sG5OgzFC] はう、小一時間とか言ってたのに二時間半も居ついてしまった……… もう落ちます。 一通り答えた筈ですが「スルーすんな!」という方は再度突っ込んでください ではでは
618 名前:名前は開発中のものです。 mailto:sage [2008/02/27(水) 19:40:20 ID:pA3Q2Mma] >>616 >GUI そうですね。 ただ、CustomUIはただのコントロールの集まりだった気がするんで、 ツール的なものを作るには良いと思いますが、 個人的に欲しいのはよりゲームで使われる形に近いものかなと。 >>609 がスルーされた気がする……。
619 名前:名前は開発中のものです。 mailto:sage [2008/02/27(水) 19:57:11 ID:MufxNy8F] 574と同じ意見で、あと自分の意見 理想系としては、C++Builderみたいな感じで レイアウト決まってるところに適当に貼り付けていって とりあえず動くのは、それで作って 画像とか用意できたら、素材が出来次第 適当なプロパティに突っ込むとそれが反映される そういう手軽さはあってもいいと思うんですがどうでしょうか? パフォーマンスを要求されるゲームの中で使えなくても タイトル画面、コンフィグ画面、タイトル画面、ロード画面、セーブ画面なんかでは 特にさっさと作り終わりたい部分だと思うし。 ゲーム作れるぐらい知識あればこれぐらいは簡単に作れるって話も上でされてるんですが オフィシャルでかゆいところに手が届くようなのがあれば (ビルドインだからパフォーマンスが良いとか、簡潔な書き方ができるとか、リソースエディタと連動するとか) プラットフォームとして面白いんじゃないんでしょうか あと、FSMみたいなシーン管理ってあるんでしたっけ? これもソースを簡潔に書くためには欲しいところです。 今あるもので作れるかもしれないけどあれば便利みたいな いわばC++におけるboostみたいな扱いでもいいと思うんですよね WTLのように用意はしてるけどサポートはしないみたいなのでも。 そもそも3次元座標同士の足し算とかが 展開して書いたほうがパフォーマンスあがるっていうのにマクロで書けないのもなんだかなーと コンシューマーの世界へようこそというなら、マクロを使わせて欲しい
620 名前:名前は開発中のものです。 mailto:sage [2008/02/27(水) 19:57:35 ID:QnThtTGI] SilverlightのWPF UI FrameworkとDLR取り込めると面白そうだね ゲーム開発だと高級すぎる気もするが
621 名前:名前は開発中のものです。 mailto:sage [2008/02/27(水) 20:24:42 ID:p8GIJl6K] >>マルチテクスチャの変態的なステージ設定が欲しいわけではないですよね? ゴメン言いたいこと伝わってねえな。単純にPC上なら固定機能のみで作動して欲しいってことと、 そこで360とのクロス性が問題になるならBasicEffectにステージ設定とか 追加して抽象化すりゃいいんじゃねぇのって提案。 >>ごめんなさい、今のところ、それがチームでの唯一の収入源なんですwww そこはホラ、開発者に360買わせるアピールになりますよとか言ってさぁw >>DLR そういやこれの基盤たるLCGがCFだとサポートしてないんだっけ。 せめてGCだけでも世代別になんねーのかなぁ。
622 名前:名前は開発中のものです。 [2008/02/28(木) 00:21:43 ID:/rY3e8Lf] 360の実機で動かすと、描画命令の発行が重すぎてせっかくの高性能GPUが完全に遊んでしまうのが勿体なさすぎです。 15000ポリゴンのモデルを80くらい個出しても60fpsで動くのに、テクスチャ付きのただの6ポリゴンの箱を100個くらい出すだけで処理落ちしてしまうのは辛い・・・。 できることならコンソール機のプログラミングでの常套手段である、GPUへの描画命令発行を別スレッドで動かす仕組みをライブラリ内で隠蔽できないでしょうか。 発行した描画命令を内部でキャッシングしておいて次のフレームの頭で別スレッド動作させる、みたいな感じで。 描画命令発行を別スレッドに追い出すことでゲームロジックに使えるCPU時間が圧倒的に増えるでしょうから、相対的にCPU性能の低い360で動かすにはぜひとも欲しい機能です。 もし描画のマルチスレッド化が難しいのであれば、せめて描画命令の発行自体がもう少し軽くなるとありがたいです。 ちゃんと計測したわけではないので単なる憶測で申し訳ないですが、たとえ同じシェーダー・同じパラメータであってもすべての命令がキャッシングされずに無条件に全て送り直されているかのような挙動に見え、 ちょっと発行バッチ数が増えただけで簡単に処理落ちが発生するのでゲームが作りにくくて困ります。 高性能なはずのXBOX360でのゲームプログラミングなのに、『21世紀にもなって「ショットを撃つと処理落ちするから発射数を半分にして威力を2倍にするか……」』みたいな調整が必要になってしまうのはいかがなものかと。 ライブラリレベルでの高速化はみんなが恩恵を受けられるので、もし何かチューニングの余地があるのであれば、ぜひ考慮していただきたいです。
623 名前:名前は開発中のものです。 mailto:sage [2008/02/28(木) 21:41:12 ID:Onhii9oo] というメールをMSに送った、 っていう話ですか?
624 名前:名前は開発中のものです。 mailto:sage [2008/02/28(木) 22:11:02 ID:Kfd7v7e6] 少人数のゲーム制作って考えると作り込んだモデルより 幾何学的でアブストラクトな表現は都合がいいと思うけど >>622 のレス読むとそういう表現は難しそうだね
625 名前:名前は開発中のものです。 mailto:sage [2008/02/28(木) 23:47:44 ID:7jyXioPU] 次世代機のCPUはPowerPCからX86に戻るかもしれない。x86なら競争が激しいから性能も価格もこなれている。もうMacが見捨てられて次はゲーム機かな
626 名前:名前は開発中のものです。 mailto:sage [2008/02/29(金) 01:21:41 ID:79yrB4s/] XBOX360版XNAでIMM32のような機能はありますか?
627 名前:名前は開発中のものです。 mailto:sage [2008/02/29(金) 11:12:33 ID:cyHkH63n] 619みたいな要望なんだけれど、俺はWPF用のデザインテンプレートを どうにか流用できないかな、と考えてた。 ぜんぜん詳しくないのでフレームワークにそういう機能がいいのか、 コンテンツエクスポーターで変換した方がいいのかは判らないが。 まあつまり俺がいいたい一番の問題はExpressionシリーズ、もう少し安くならない? てことなんだがw
628 名前:名前は開発中のものです。 mailto:sage [2008/02/29(金) 13:30:49 ID:5SO5wm1v] win、360で通信対戦昨日をつけたいのですが、 参考になるサイトありましたらおしえてください。
629 名前:名前は開発中のものです。 mailto:sage [2008/02/29(金) 13:49:35 ID:KKyqcPHE] 付属のドキュメント(英語)と、 ttp://creators.xna.com/ ここにあるサンプル。
630 名前:名前は開発中のものです。 mailto:sage [2008/02/29(金) 13:50:23 ID:KKyqcPHE] って通信一般のことかな?
631 名前:名前は開発中のものです。 mailto:sage [2008/02/29(金) 14:00:06 ID:5SO5wm1v] >>630 TCP/IP通信のようなことをやりたいのです とりあえず教えていただいたサイトをみてみます ありがとう
632 名前:628 mailto:sage [2008/02/29(金) 16:19:52 ID:5SO5wm1v] PeerToPeerSample、ClientServerSample共にダウンロードして 確認してみました。共にLiveに接続するところから始まり ゴールド会員のメールアドレスでサインインしたのですが、 base.Update(gameTime);でエラーを吐きます。内容が、 The current profile does not have an XNA Creators Club membership, which is required to sign in to the Live service. To continue, purchase a membership from Xbox Live Marketplace, or switch to a local gamer profile. とのことで、XNA Creators Clubのメンバーシップを購入していないと ひょっとしてつながらないのですが?ゴールドなら とりあえずセッションは開けるかと思ったのですが・・・。
633 名前:名前は開発中のものです。 mailto:sage [2008/02/29(金) 16:29:38 ID:KKyqcPHE] 無理 通信はCC非会員は、WindowsでLAN内だけ。 Live使う場合は360、WindowsともにCC会員必須。
634 名前:名前は開発中のものです。 mailto:sage [2008/02/29(金) 16:30:42 ID:KKyqcPHE] LAN内ってSystemLinkね、念のため
635 名前:名前は開発中のものです。 mailto:sage [2008/02/29(金) 16:38:02 ID:5SO5wm1v] ありがとう。よくわかりました。
636 名前:名前は開発中のものです。 mailto:sage [2008/02/29(金) 17:56:37 ID:rwW9Blwo] 単純にオンライン対戦可能なオセロとかトランプとか作りたいんだが もしかして1人動作確認は無理? 360とPCで対戦できる様にしとけば、360vs360でも動く事が期待でき るとか、そんな都合がいい話は多分ないよね?
637 名前:名前は開発中のものです。 mailto:sage [2008/02/29(金) 18:08:29 ID:sIYszjWf] いや、それでいいはず。 でも実際にやってみないとなんとも言えないけど、 サンプルで特別なことやってるようにも見えないし。 PC3台に360を1台でSystemLinkまでは確認できてるが、 まともにゲームの体裁整えてないと他人とつないで試すわけにもいかんしなあ。
638 名前:名前は開発中のものです。 mailto:sage [2008/02/29(金) 19:11:46 ID:eQkbLnZK] C#をDirectX抜きで使っていたのでよく知らないんですが、 Managed DirectXとXNAには互換性は無いんですよね?
639 名前:名前は開発中のものです。 mailto:sage [2008/03/01(土) 01:24:32 ID:lpucU8xl] >>629 に紹介されてるサイトのサンプルには SystemLinkのサンプルはないです?
640 名前:名前は開発中のものです。 mailto:sage [2008/03/01(土) 01:31:48 ID:HuE7K8R1] >>638 互換性がソースコードレベルでの話しならイエス。 ぶっちゃけどちらもDirectXのラッパーだから大して違いはないけど。
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フレンドリーなデータ構造に変換したり、 ツール内でベクター使いまくって作ったボタンイメージとかをコンバート時にビットマップに変換してくれたりといった機能ですね