【Xbox360】 XNA Game Studio その4 【C#】at GAMEDEV
【Xbox360】 XNA Game Studio その4 【C#】 - 暇つぶし2ch614:名前は開発中のものです。
08/02/27 19:08:04 pA3Q2Mma
>GUI
・項目のリスト表示・管理(メニュー周り、スクロール付き)
・はい/いいえなどの選択肢ウィンドウ(メッセージボックス)
・汎用的なウィンドウの表示、Order、オープン/クローズアニメーション
・ウィンドウスキン
・その他ゲームに良くある機能など

個人的にはライブラリというよりは、
叩き台にできるサンプルが欲しいかなと。


615:ひげねこ ◆oxtErU/kVM
08/02/27 19:08:20 sG5OgzFC
>>571
>XACT周りでは音楽を再生するとき
>小節をABCBCというような形で再生させる方法が無いって問題があったと思う。

XACTの機能でできそうな気もしますが確認します。もし現状ではできなくとも、
Notifyイベントに対応して欲しいという要望があるので、それがあれば実現できると思われます。

>>574
「玄関開けたら5分でゲーム製作」は、他の面倒なことに時間を割くことなく、直ぐにゲーム製作
に入れるという意味での目標です。現状では実現しておらず、目標達成を目指しているところです。

>>586
愛すべきバカと呼ばれたいです

>>593
>あとは箱用に作るのに必要な料金さえ緩和してくれりゃな。

ごめんなさい、今のところ、それがチームでの唯一の収入源なんですwww






616:ひげねこ ◆oxtErU/kVM
08/02/27 19:28:49 sG5OgzFC
>>601
具体的に、どの固定シェーダー機能が欲しいのか詳しく。
マルチテクスチャの変態的なステージ設定が欲しいわけではないですよね?

>>604
>箱は無視でいいからさw
そんなご無体な……

>>608
>コンパイルエラー強化
確かにそうですね、要望としてだしておきます。
また、デスクトップ.NetにはNetCFに無い機能で必要性の高いと思われるものを見つけた場合は
再度連絡してくれるとありがたいです。
例としてはオリジナルの.NetCFには無かったStopwatchは既に使えるようになってたり、stackallocの
追加要望なども来ていますので。

>>611
根本的な問題点が判らない限りは同じことを問い続けます。
「あなたにとって何が一番重要な問題なんですか?」と、

>>614
GUIについては、まずはCustumUIのようなサンプルが欲しいといったところに落ち着くのでしょうか?

617:ひげねこ ◆oxtErU/kVM
08/02/27 19:34:25 sG5OgzFC
はう、小一時間とか言ってたのに二時間半も居ついてしまった………
もう落ちます。

一通り答えた筈ですが「スルーすんな!」という方は再度突っ込んでください

ではでは



618:名前は開発中のものです。
08/02/27 19:40:20 pA3Q2Mma
>>616
>GUI
そうですね。
ただ、CustomUIはただのコントロールの集まりだった気がするんで、
ツール的なものを作るには良いと思いますが、
個人的に欲しいのはよりゲームで使われる形に近いものかなと。

>>609
がスルーされた気がする……。

619:名前は開発中のものです。
08/02/27 19:57:11 MufxNy8F
574と同じ意見で、あと自分の意見

理想系としては、C++Builderみたいな感じで
レイアウト決まってるところに適当に貼り付けていって
とりあえず動くのは、それで作って
画像とか用意できたら、素材が出来次第
適当なプロパティに突っ込むとそれが反映される
そういう手軽さはあってもいいと思うんですがどうでしょうか?

パフォーマンスを要求されるゲームの中で使えなくても
タイトル画面、コンフィグ画面、タイトル画面、ロード画面、セーブ画面なんかでは
特にさっさと作り終わりたい部分だと思うし。

ゲーム作れるぐらい知識あればこれぐらいは簡単に作れるって話も上でされてるんですが
オフィシャルでかゆいところに手が届くようなのがあれば
(ビルドインだからパフォーマンスが良いとか、簡潔な書き方ができるとか、リソースエディタと連動するとか)
プラットフォームとして面白いんじゃないんでしょうか

あと、FSMみたいなシーン管理ってあるんでしたっけ?
これもソースを簡潔に書くためには欲しいところです。

今あるもので作れるかもしれないけどあれば便利みたいな
いわばC++におけるboostみたいな扱いでもいいと思うんですよね
WTLのように用意はしてるけどサポートはしないみたいなのでも。

そもそも3次元座標同士の足し算とかが
展開して書いたほうがパフォーマンスあがるっていうのにマクロで書けないのもなんだかなーと
コンシューマーの世界へようこそというなら、マクロを使わせて欲しい



620:名前は開発中のものです。
08/02/27 19:57:35 QnThtTGI
SilverlightのWPF UI FrameworkとDLR取り込めると面白そうだね
ゲーム開発だと高級すぎる気もするが

621:名前は開発中のものです。
08/02/27 20:24:42 p8GIJl6K
>>マルチテクスチャの変態的なステージ設定が欲しいわけではないですよね?
ゴメン言いたいこと伝わってねえな。単純にPC上なら固定機能のみで作動して欲しいってことと、
そこで360とのクロス性が問題になるならBasicEffectにステージ設定とか
追加して抽象化すりゃいいんじゃねぇのって提案。

>>ごめんなさい、今のところ、それがチームでの唯一の収入源なんですwww
そこはホラ、開発者に360買わせるアピールになりますよとか言ってさぁw

>>DLR
そういやこれの基盤たるLCGがCFだとサポートしてないんだっけ。
せめてGCだけでも世代別になんねーのかなぁ。

622:名前は開発中のものです。
08/02/28 00:21:43 /rY3e8Lf
360の実機で動かすと、描画命令の発行が重すぎてせっかくの高性能GPUが完全に遊んでしまうのが勿体なさすぎです。
15000ポリゴンのモデルを80くらい個出しても60fpsで動くのに、テクスチャ付きのただの6ポリゴンの箱を100個くらい出すだけで処理落ちしてしまうのは辛い・・・。

できることならコンソール機のプログラミングでの常套手段である、GPUへの描画命令発行を別スレッドで動かす仕組みをライブラリ内で隠蔽できないでしょうか。
発行した描画命令を内部でキャッシングしておいて次のフレームの頭で別スレッド動作させる、みたいな感じで。
描画命令発行を別スレッドに追い出すことでゲームロジックに使えるCPU時間が圧倒的に増えるでしょうから、相対的にCPU性能の低い360で動かすにはぜひとも欲しい機能です。

もし描画のマルチスレッド化が難しいのであれば、せめて描画命令の発行自体がもう少し軽くなるとありがたいです。
ちゃんと計測したわけではないので単なる憶測で申し訳ないですが、たとえ同じシェーダー・同じパラメータであってもすべての命令がキャッシングされずに無条件に全て送り直されているかのような挙動に見え、
ちょっと発行バッチ数が増えただけで簡単に処理落ちが発生するのでゲームが作りにくくて困ります。

高性能なはずのXBOX360でのゲームプログラミングなのに、『21世紀にもなって「ショットを撃つと処理落ちするから発射数を半分にして威力を2倍にするか……」』みたいな調整が必要になってしまうのはいかがなものかと。
ライブラリレベルでの高速化はみんなが恩恵を受けられるので、もし何かチューニングの余地があるのであれば、ぜひ考慮していただきたいです。


623:名前は開発中のものです。
08/02/28 21:41:12 Onhii9oo
というメールをMSに送った、
っていう話ですか?

624:名前は開発中のものです。
08/02/28 22:11:02 Kfd7v7e6
少人数のゲーム制作って考えると作り込んだモデルより
幾何学的でアブストラクトな表現は都合がいいと思うけど
>>622のレス読むとそういう表現は難しそうだね

625:名前は開発中のものです。
08/02/28 23:47:44 7jyXioPU
次世代機のCPUはPowerPCからX86に戻るかもしれない。x86なら競争が激しいから性能も価格もこなれている。もうMacが見捨てられて次はゲーム機かな

626:名前は開発中のものです。
08/02/29 01:21:41 79yrB4s/
XBOX360版XNAでIMM32のような機能はありますか?

627:名前は開発中のものです。
08/02/29 11:12:33 cyHkH63n
619みたいな要望なんだけれど、俺はWPF用のデザインテンプレートを
どうにか流用できないかな、と考えてた。
ぜんぜん詳しくないのでフレームワークにそういう機能がいいのか、
コンテンツエクスポーターで変換した方がいいのかは判らないが。

まあつまり俺がいいたい一番の問題はExpressionシリーズ、もう少し安くならない?
てことなんだがw

628:名前は開発中のものです。
08/02/29 13:30:49 5SO5wm1v
win、360で通信対戦昨日をつけたいのですが、
参考になるサイトありましたらおしえてください。


629:名前は開発中のものです。
08/02/29 13:49:35 KKyqcPHE
付属のドキュメント(英語)と、
URLリンク(creators.xna.com)
ここにあるサンプル。

630:名前は開発中のものです。
08/02/29 13:50:23 KKyqcPHE
って通信一般のことかな?

631:名前は開発中のものです。
08/02/29 14:00:06 5SO5wm1v
>>630
TCP/IP通信のようなことをやりたいのです
とりあえず教えていただいたサイトをみてみます
ありがとう

632:628
08/02/29 16:19:52 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:名前は開発中のものです。
08/02/29 16:29:38 KKyqcPHE
無理
通信はCC非会員は、WindowsでLAN内だけ。
Live使う場合は360、WindowsともにCC会員必須。

634:名前は開発中のものです。
08/02/29 16:30:42 KKyqcPHE
LAN内ってSystemLinkね、念のため

635:名前は開発中のものです。
08/02/29 16:38:02 5SO5wm1v
ありがとう。よくわかりました。

636:名前は開発中のものです。
08/02/29 17:56:37 rwW9Blwo
単純にオンライン対戦可能なオセロとかトランプとか作りたいんだが
もしかして1人動作確認は無理?
360とPCで対戦できる様にしとけば、360vs360でも動く事が期待でき
るとか、そんな都合がいい話は多分ないよね?

637:名前は開発中のものです。
08/02/29 18:08:29 sIYszjWf
いや、それでいいはず。
でも実際にやってみないとなんとも言えないけど、
サンプルで特別なことやってるようにも見えないし。
PC3台に360を1台でSystemLinkまでは確認できてるが、
まともにゲームの体裁整えてないと他人とつないで試すわけにもいかんしなあ。

638:名前は開発中のものです。
08/02/29 19:11:46 eQkbLnZK
C#をDirectX抜きで使っていたのでよく知らないんですが、
Managed DirectXとXNAには互換性は無いんですよね?

639:名前は開発中のものです。
08/03/01 01:24:32 lpucU8xl
>>629に紹介されてるサイトのサンプルには
SystemLinkのサンプルはないです?


640:名前は開発中のものです。
08/03/01 01:31:48 HuE7K8R1
>>638
互換性がソースコードレベルでの話しならイエス。
ぶっちゃけどちらもDirectXのラッパーだから大して違いはないけど。

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

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

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

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

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

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

647:ハコ太郎
08/03/01 14:39:31 AGjJHtOG
構造体のnewはメンバを全てNULLか0で初期化するだけだったはず

648:名前は開発中のものです。
08/03/01 17:11:56 E+4DCZor
URLリンク(xna-studio.jp)
花やしき行ってくるけど、誰もいなかったりしないかドキドキする。

649:名前は開発中のものです。
08/03/01 18:13:27 BJdyKXU8
貸し切りでただで乗り放題なんで行って損はないそ゛。

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

651:名前は開発中のものです。
08/03/01 21:01:28 BJdyKXU8
今行ってきた。
福引きで俺の後ろの人が本体あたった.....

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

653:名前は開発中のものです。
08/03/01 21:13:55 ViryCY/U
>>651
七回やって全部缶バッジは萎えたwww

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

>>652
CLRProfiler

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

655:626
08/03/01 23:53:26 w3ZGIR9q
完全にスルーされてるけど、日本語チャットの実装したい人って他に居ないの?

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

657:名前は開発中のものです。
08/03/02 00:03:22 zzw5UN3t
日本語で新しい本が出てるね。

URLリンク(www.amazon.co.jp)

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

659:名前は開発中のものです。
08/03/02 00:07:53 fERtkynk
NativeWindow使えばゲームループ中でもどうとでもなるんじゃね?

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

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

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

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

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

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

666:名前は開発中のものです。
08/03/02 01:32:38 o9Cw/3Oh
>>658
じゃあ作れ

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

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

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

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

668:名前は開発中のものです。
08/03/02 02:11:22 l4v/PVfq


669:名前は開発中のものです。
08/03/02 10:32:35 8ZJ0iEdC
URLリンク(d.hatena.ne.jp)


670:名前は開発中のものです。
08/03/02 12:33:42 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:名前は開発中のものです。
08/03/02 17:19:42 YDJ5z10X
XNA最大の問題点はパッドが実質非対応な点

672:名前は開発中のものです。
08/03/02 18:13:07 l4v/PVfq
>>671
何しにきたの?

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

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

675:名前は開発中のものです。
08/03/02 19:42:00 +DPdH8iN
会場でもらった紙に書いてあったアドレス

XNAデベロッパーセンター
URLリンク(www.microsoft.com)

さあ、XNAをはじめよう!
URLリンク(xna-studio.jp)

XNA Game Studioフォーラム
URLリンク(forums.microsoft.com)

XNAで作るマインスイーパー
URLリンク(www.microsoft.com)

XNA GSE HELPの基礎
URLリンク(go.microsoft.com)

できるプログラミングXNA Game Studio Express
URLリンク(go.microsoft.com)

XNAビデオチュートリアル(英語)
URLリンク(go.microsoft.com)

Visual Studio Express Edition学習用資料集
URLリンク(www.microsoft.com)

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

676:名前は開発中のものです。
08/03/02 19:44:48 D87i6yt5
おつかれ

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

678:ひげねこ ◆oxtErU/kVM
08/03/02 20:14:42 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
URLリンク(www.wavosaur.com)


679:ハコ太郎
08/03/02 20:20:17 Lox6KhX3
へー出来たんだ
出張サポートセンターみたいな人だな

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

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

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

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

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

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

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

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

683:ひげねこ ◆oxtErU/kVM
08/03/02 20:50:53 75eB5Z/y
>>622

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

Xbox 360上でのパフォーマンスについてですが以下のMesh Instancing Sampleが参考になると思います。
URLリンク(creators.xna.com)

このサンプルはメッシュインスタンスのサンプルコード以外にも、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
08/03/02 21:16:04 75eB5Z/y
現状、こちらで把握しているなかでボトルネックとなっているのはマネージサイドによるメモリメモリアクセスです。

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

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

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

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

更に続く

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

以下のブログがレンダーステートの管理方法について参考になると思います。
URLリンク(blogs.msdn.com)
URLリンク(blogs.msdn.com)

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

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

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

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

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

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


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

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

689:ひげねこ ◆oxtErU/kVM
08/03/02 22:20:08 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:名前は開発中のものです。
08/03/02 22:43:18 wif61gOz
BGMのストリーミング再生を行おうとしたところPlayCue()の部分でエラーが出てしまいました。
XACT上での設定はここを見て行いました
URLリンク(blogs.msdn.com)

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

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

691:名前は開発中のものです。
08/03/02 22:44:28 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
08/03/02 23:01:48 Oj9SUC9L
>>681
単にC++の構文が使いたいのであれば、Windows限定なら何の問題も無くC++/CLI使えますし、Xbox 360上でも/pureフラグ使えばできますよ。
どちらもサポート外でけど。

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

適当にググってみたらこんなの見つけましたけど
URLリンク(tangiblesoftwaresolutions.com)

さあ、話しましょうか?

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

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

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

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


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



694:名前は開発中のものです。
08/03/02 23:13:15 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:名前は開発中のものです。
08/03/02 23:30:45 Ng8vALwi
>弘法筆を選ばず、プログラマー言語を選ばずです。
URLリンク(xna-studio.jp)
↑にはプログラマーじゃない人でも出来る話なんですけど

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

697:名前は開発中のものです。
08/03/02 23:50:59 RrXwWPHL
>VectorGraphics

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

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

698:名前は開発中のものです。
08/03/02 23:54:01 iyg+0+D4
>>697
まさにSilverlight
Silverlightのサポートの予定はあるの?

699:ハコ太郎
08/03/02 23:55:06 Lox6KhX3
俺よく調べてないんだがSilverlightってweb側の技術じゃないのか

700:ひげねこ ◆oxtErU/kVM
08/03/03 00:02:55 JIaq5K5i
>>693
FogVertexModeにした場合は、頂点シェーダーでFog係数を出力する必要があります。

struct VSOUTPUT
{




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












701:ハコ太郎
08/03/03 00:10:20 ih84mIid
そもそも何も知らない主婦にやらせるのが間違いでは?
どうも意識のずれがあるように思うけど

702:ひげねこ ◆oxtErU/kVM
08/03/03 00:11:23 JIaq5K5i
途中で送信してしまいました、すいません

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

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


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


703:ハコ太郎
08/03/03 00:14:38 ih84mIid
お疲れ様でした

704:名前は開発中のものです。
08/03/03 00:46:07 51SXKyNl
URLリンク(xna-studio.jp)

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


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

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

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


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

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

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

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


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


708:名前は開発中のものです。
08/03/03 03:55:13 x67FlAoB
過去レスくらい読もうぜ

709:名前は開発中のものです。
08/03/03 09:56:04 ulYtu6Pm
自前でTrueTypeレンダリングするとか

710:名前は開発中のものです。
08/03/03 12:56:24 qepHyWRQ
今、XNAフィードバック使えなくない?

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

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

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

713:名前は開発中のものです。
08/03/03 17:05:51 S1J4GBTq
日本語でおk

714:ひげねこ ◆oxtErU/kVM
08/03/03 17:18:04 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
08/03/03 17:34:28 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
08/03/03 17:44:53 Q5EkCE5+
>>705
確かにBasicEffectはFogパラメーターを頂点シェーダーで出力していませんが、独自のFogパラメータを持っています。
Fogパラメータを出力するように変更することができますが、Xbox360にはFog関連のレンダーステートが無いので、BasicEffectを
使う場合はそのパラメーターを変更することをお勧めします。

>>707
文面から察するにSpriteFontを使っていないように見えますが、そうであればSpriteFontを使うことで文字列描画できます。
このスプライトフォントには表示につかう文字コードを指定する必要があり、デフォルトでは英文字が追加されています。
それ以外の文字を表示するには以下が参考になります。
URLリンク(blogs.msdn.com)
URLリンク(blogs.msdn.com)

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

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

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

なるほど。

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

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

719:名前は開発中のものです。
08/03/03 18:51:45 zo2Ibxr1
Win2kで動くように…
無理か

720:ひげねこ ◆oxtErU/kVM
08/03/03 19:13:41 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:名前は開発中のものです。
08/03/03 19:48:20 S1J4GBTq
>>720
> GraphicsAdapterクラスのCheckDeviceFormatを使います。
ありがとうございます。945GMで無事にfalseが帰ってきましたorz
色々なサンプルを見るだけでも影のハードルは高いっすね・・・。

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


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

723:名前は開発中のものです。
08/03/03 20:35:22 aH5g85ZF
>>712

724:696
08/03/03 21:12:34 vsU7ZvID
>>714
おお、ちゃんと再生できました!!
ありがとうございます

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

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

726:名前は開発中のものです。
08/03/03 22:54:32 EdvlV9oX
その人と一緒にがんばってみます

727:名前は開発中のものです。
08/03/03 23:59:09 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:名前は開発中のものです。
08/03/04 00:47:09 sCnHkz0D
おちんちんびろんびろ~ん

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

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

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

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


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

734:名前は開発中のものです。
08/03/04 10:50:42 OToBjVMK
ベータ含めて1年半だろ

735:名前は開発中のものです。
08/03/04 11:30:35 dikiCYmh
3.5入れさせとけ

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

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

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

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

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


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

738:名前は開発中のものです。
08/03/04 12:45:45 ij7C/RJ0
プレイさせるだけでも一苦労だな

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

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

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


742:名前は開発中のものです。
08/03/04 13:26:36 s/9UoCnb
MDXと違って金が入るからC#もXNAもこの先生きのこると思う人も多いかもしれないが
その期待をことごとく裏切るのがM$流
既にGDKなんて出してるくらいだからな
箱の寿命かDX10世代が来るまでの命だろ

743:名前は開発中のものです。
08/03/04 13:27:23 AVay9o0V
途中送信しかけた…
>>740
文句は言うのは自由だが、非生産的な文句は誰も得しないからやめれ

744:名前は開発中のものです。
08/03/04 13:31:48 dikiCYmh
GDKはサードパーティー製品の制限版だぞ

745:名前は開発中のものです。
08/03/04 13:42:19 s/9UoCnb
>不毛なインストール作業を強いる時点で
>ゲームプレイ環境としては失格

認識を持たせるという意味では生産的な意見だな

746:名前は開発中のものです。
08/03/04 14:09:42 ozuNs0rT
>>743
どうやら君の1bitの情報量も無い書き込みよりは生産的みたいだよ?

747:名前は開発中のものです。
08/03/04 14:11:24 6jZ5YXCn
>>745
かえって問題の本質をぼかしているだけだろ

748:名前は開発中のものです。
08/03/04 14:35:23 tkXnqvSo
この前のイベントが海外への良いアピールになっているといいなぁ
ひげねこ氏も積極的に動いてくれているみたいだし
要望を踏まえた3.0の成長に期待

あとは新機能が追加されてもそれを上手く使わせるサンプルが不足していることだと思う
ジオメトリインスタンシングのサンプルなんて複数のサンプルがごちゃごちゃしすぎて分かり難いし
スターターキットに至っては(ry

749:名前は開発中のものです。
08/03/04 14:38:21 du42uvgl
MSの開発ツールってドキュメントはMSDN Libraryに代表されるように非常にしっかりしてるんだが
サンプルが今ひとつな事が多いよな

750:名前は開発中のものです。
08/03/04 14:51:11 CujTJOWH
断片的な情報しかないのは仕様です。


751:名前は開発中のものです。
08/03/04 15:13:19 0b6eMKRw
翻訳何とかして欲しいなあ。
調べ物は英語でいいけど、パラパラ読みができん

752:名前は開発中のものです。
08/03/04 16:28:19 sCnHkz0D
おちんちんびろ~ん

753:名前は開発中のものです。
08/03/04 17:04:20 s/9UoCnb
戻らなくなるぞ

754:名前は開発中のものです。
08/03/04 17:23:51 sCnHkz0D
皮が伸びて被ったままになっちゃった・・・最初からだけど
つω;) ウッ・・・

755:名前は開発中のものです。
08/03/04 22:14:38 /QfDBMTz
>>728-729
wwwwwwwwwwwwww箱だとびろ~んできますか?wwwwwwwwwww

756:名前は開発中のものです。
08/03/04 23:08:18 mWxzbpcN
サンプルの充実と解説の和訳が欲しい
できればサンプルには、それを学ぶことでどのような知識が得られるのか、
落とす前に体系的にわかるようにして欲しい
基礎から応用まで


757:名前は開発中のものです。
08/03/05 00:02:31 G13W8xfV
2Dで、BoundingBoxとBoundingSphereを使って
矩形同士の衝突判定と、矩形と円の衝突判定をやっています。
ですが、矩形の方を回転させて、斜めになってる状態で判定する必要がでてきました。
そこでちょっと教えて頂きたいのですが、BoundingBoxを回転させる方法はありますでしょうか。
MSDNで探してみたつもりなんですが、そういうメンバは見あたりませんでした。
どうすればBoundingBoxを回転させて衝突判定させられるでしょうか。
それとも、回転する矩形の衝突判定する方法は提供されてなくて、
4点取って自分で衝突判定処理を実装しなければならないのでしょうか。
教えて頂けると助かります。よろしくお願いします。

758:名前は開発中のものです。
08/03/05 00:18:28 tt2IYbDX
>>757
ごめん、俺XNAは全然素人なんで正しい答えは返せないんだけど
元々矩形で当たり判定してるなら中身が回っても矩形的には無視
できるんじゃない?
中央の座標だけ揃えとくとか、そんなんじゃ駄目なんかな?

759:名前は開発中のものです。
08/03/05 00:35:26 iMklzerV
>>758
ええと、言いたいことが伝わってないかもしれません
ε=○□=3 と ε=□□=3
とやってたのを、
ε=○◇=3 と ε=□◇=3
とやりたい、ということです。

 /\○ ←当たってない
/  \
\  /
 \/
と、矩形の傾きで衝突してるか否かが変わってくると思います
で、BoundingBoxは原点に近い方の座標と遠い方の座標で値として持つので、
座標を傾けても、矩形の縦横の長さが変わるだけで傾きはないという認識です
で、もしBoundingBox自体を回転できなくても、BoundingBoxと傾き角度を引数とかで
渡してやれば衝突判定してくれるメソッドとかXNAで提供されてないかなぁと思いまして

760:名前は開発中のものです。
08/03/05 00:40:56 dCj5PHbb
おまえはBBの意味が分かっていない

761:名前は開発中のものです。
08/03/05 07:37:59 vf5nbNmt
>>759
XNAは知りませんが、普通2DのBBはAABBの一種で、座標軸に平行な矩形です。
回転するBBと円との当たり判定を行いたい場合、円の座標を変換して
AABB vs 円にしてから判定を行うとよいでしょう。
数学的に難しくは無いですが多少重いです。

762:名前は開発中のものです。
08/03/05 07:47:03 vf5nbNmt
訂正。
円の座標ー>矩形と円の座標


763:名前は開発中のものです。
08/03/05 08:17:04 iMklzerV
>>761
あーなるほど、円と矩形回転させてやって、軸に平行な矩形を作って、そちらと判定する訳ですね
矩形同士の衝突の場合も、片方の矩形は軸に平行になるようにして
あとは斜めになってる方の矩形の四点が、回転してない矩形に進入してるかどうか、ですかね?

764:名前は開発中のものです。
08/03/05 10:23:06 PKtFPGkc
759のようにもっと正確に判断したい場合
回転バウンディングボックス(OBB)と球の判定になるんだけれど
XNAのライブラリには含まれていないぽい

リアルタイム衝突判定本の中に説明とサンプルが含まれているので
自作するか誰かのコードを流用させてもらうのが良いかと

765:名前は開発中のものです。
08/03/05 12:13:04 wiI7nq2k
>回転バウンディングボックス(OBB)と球の判定になるんだけれど
>XNAのライブラリには含まれていないぽい

こういう中途半端なところがあるから嫌いだ。
物理エンジン書いたこともないような素人の算術ライブラリなんかのせるな。
自前で用意するからいいが、はっきり言って萎える。
依存箇所全て書き直しか?ふざけるのも大概にしろ。

766:名前は開発中のものです。
08/03/05 14:20:57 ptj03fcF
日本人がいかに完璧主義かがよく分かるスレだな。

767:名前は開発中のものです。
08/03/05 14:33:06 Cu5Bc2PE
少なくともこんなくだらないことで騒いでる奴よりは中の人の方が頭いいと思うよ

768:名前は開発中のものです。
08/03/05 14:35:13 x2y+3/wK
外人マッチョ「XNA初めてか?力抜けよ」

日本人「エ・・・、X、N、Aッー!」

769:名前は開発中のものです。
08/03/05 15:09:53 mPAG9DMI
URLリンク(xoops.peak.ne.jp)
中の人の頭の良さは別次元だからな。
>C# によるリテール版開発は、 Microsoft 自身が XNA 環境では XBOX360 コンテンツに課す要求クオリティレベルをクリアできないだろうと発言しています。

 そりゃ端からプロデビューして、C/C++ とインラインアセンブリでunreal engineも会社の経費で使い放題の奴らと
同じ事を考えろなんて無茶言うなよ。('A`)

770:名前は開発中のものです。
08/03/05 15:16:55 HhOx8svu
なんでもやろうとするからいけないんだ。
コンシューマーゲームって本来ハードスペックとの戦いだろ?
XNAも同じさ。XNAという仕様の中でいかにおもしろいもの作るかってことだ。
初心に戻って今のXNAでできることをやろうぜ?

771:名前は開発中のものです。
08/03/05 15:22:22 nSoZ+6/k
何か当たり前の事を書いてる記事だな。あぁ・・・そう・・・としか反応できんわ

772:名前は開発中のものです。
08/03/05 15:23:52 mPAG9DMI
>770
なんだよ。オマエ。 すげーエスパーだな。 俺の自作自演かと思ったぜ。
まーそう言う事だ。

773:名前は開発中のものです。
08/03/05 19:25:51 JIb0oR1t
>>768がじわじわくる

774:名前は開発中のものです。
08/03/05 22:01:40 iMklzerV
>>770
XNAは仕様じゃなくて手段だと思うな

775:名前は開発中のものです。
08/03/05 23:21:57 gnjL6vbU
>>771
2chの1レスを記事とか書いちゃうお前、嫌いじゃないぜ……

776:名前は開発中のものです。
08/03/06 01:06:36 T3j+VmAd
バイリニアフィルタとマルチテクスチャを使った草と土の綺麗な繋ぎ方ってどうやるんですか?
前から気になってはいたんですが、ポリゴンの分割とUVの微調整をしているのだと思っていました
DirectX7&8時代に使われた知られざる中級テクニック教えてください

777:名前は開発中のものです。
08/03/06 11:47:40 jWMG+kMJ
もしかしてMicrosoft.Xna.Framework.Game.dllってC++/CLIじゃなくてC#で書かれてる?
そのためにDLL分けてるのかな
そうだったからって別にどうでもいいんだけどやっぱりMSとしてはC++/CLIは
橋渡し言語としてしか使わない/使わせない方針なのかなあ

778:名前は開発中のものです。
08/03/06 14:22:02 L4hyp2ZA
むしろマーシャリング上の手抜き以外の理由でC++/CLIを使いたいって人が
意外と多いのが謎だけどな。そんなに新しい言語(C#)覚えるの嫌なのかしら。


779:名前は開発中のものです。
08/03/06 14:46:26 Xs46mVOD
オマエら幸せだな。
 人のソースとか読まないし。ボックス化とか聞いた事も無いだろう。

// position += velocity ;
// velocity *= frication;
position.x += velocity.x;
position.y += velocity.y;
position.z += velocity.z;

velocity.x *= frication;
velocity.y *= frication;
velocity.z *= frication;

こんなのでな、コメントアウトした行の3.8倍のスピードがでるんだぜ。

780:名前は開発中のものです。
08/03/06 14:50:18 a8Un48/x
VertexBufferとIndexBufferってビデオメモリに置いた方が高速なんだよね?
それってどうすればいいの?
Meshクラスはビデオメモリに作るようになってるの?
でもDrawIndexedPrimitiveってやってるよね?

781:名前は開発中のものです。
08/03/06 14:56:55 Xs46mVOD
これがよさげ、
URLリンク(creators.xna.com)
vertices[0].SetFrequencyOfIndexData(instanceTransforms.Length);
あたりを気を付けて読むと良いよ。

っていうか >683が既出。

>779 コメントアウトした方に戻すと。 0.26倍まで低下って書いた方がオマエらのレベルに合うな。

782:名前は開発中のものです。
08/03/06 14:57:02 jWMG+kMJ
>>779
それボックス化全く関係ないからw
演算子を実装するメソッド間の受け渡しが発生するから遅くなるだけ

783:名前は開発中のものです。
08/03/06 15:20:27 L4hyp2ZA
>>779
boxing覚えたてか?
上のコードが遅い原因は+=がop_Additionに変換されてVector3のビットコピーがx3発生。
さらにAdd(ref Vector3, ref Vector3, out Vector3)のようなメソッドを呼ぶにしても
jitのインライン条件が厳しすぎてやっぱりベタ書きの方が早い。
ってところまで書かないとお前勘違いしてそうだな。

>>780
何もしなけりゃビデオメモリにおかれてるよ。Drawうんたらは多分認識が間違ってる。

784:名前は開発中のものです。
08/03/06 15:35:09 Xs46mVOD
>それボックス化全く関係ないからw
さすがに解るよ。('A`)
俺の書き込みで、ボックス化と全く関係ない事に気付ない奴を連れてこいよ。

おまえらもうちょっと頑張れ。
問題はC#のILコードが糞だって事な事だろ。


785:名前は開発中のものです。
08/03/06 15:37:58 jWMG+kMJ
インライン展開される(ことがある)のはC#をILにコンパイルするときじゃなくて
実行時にネイティブコードにJITコンパイルされるときだぞ
それをいうならCLRが糞

786:名前は開発中のものです。
08/03/06 15:42:21 Xs46mVOD
>CLRが糞
すまんかった。
だけど C++/CILにはマクロがある Ok?

折角だから質問していく。
>何もしなけりゃビデオメモリ
ってDraw***Primitive系のメソッドでも良いのか?
mesh.Draw();が良いのはイメージできる。


787:名前は開発中のものです。
08/03/06 15:47:37 kWblePHM
>>779
つい最近、どっかで仕入れた知識をそのまま披露かw

788:名前は開発中のものです。
08/03/06 15:49:15 Xs46mVOD
>787
そういう事だ。
 C#初心者系のスレで、「効率を考える奴がC#をつかうなんてありえないよね」とか言われてきた。

789:名前は開発中のものです。
08/03/06 15:59:02 L4hyp2ZA
>>786
ModelMesh.Drawのことなら中でDrawIndexedPrimitiveが呼ばれてるだけだぞ。
てゆーかなんでジオメトリインスタンシングなんて紹介した?
ありゃカーネル<->ユーザーモードの推移を抑えて速度稼ぐものだから
>>780の質問のデータの配置云々はあんま関係ねーぞ。

>だけど C++/CILにはマクロがある Ok?
それを先に言え。だがプリプロセッサマクロごときの微妙な可読性/記述性を得るために
C#からC++/CLIにプロジェクト全体を鞍替えするのか?
残念だが、プロファイラでクリティカルな部分だけ探してベタ書きする方がなんぼかマシだ。

790:名前は開発中のものです。
08/03/06 16:12:14 Xs46mVOD
 ビデオメモリとDrawはVertexStream.SetSource()を見て、自己解決した気になってるが、
ビデオメモリに保存する事を狙ってやってるソースを見た気がしない。


...こりゃ、後から開き直るのがどうこう ってレスがつくんだな。
オマエらそれだけ解ってるのに、なんでC#つかってるんだ?
C#厨がマンセーしてると思って、やってきて釣られたようなもんだぜ。

>789
>残念だが、プロファイラでクリティカルな部分だけ探してベタ書きする方がなんぼかマシだ。
フォロー サンキュー。

791:名前は開発中のものです。
08/03/06 16:50:37 1SbOg85e
なんでって、、、Xbox360で動かす手段が事実上これしかないからだ

792:名前は開発中のものです。
08/03/06 19:33:22 a8Un48/x
例えば頂点の位置と色とテクスチャ座標をもった三角形をContent.Loadを
使わないでビデオメモリにVertexBufferとIndexBufferを自分で作成するにはどうすればいいのですか?

あと毎フレーム頂点の位置を(VertexShaderではなく)アプリケーションで変える
頂点をセットするような使い方のときはどういうふうにVertexBufferとIndexBufferを作成すればいいのでしょうか?

793:ハコ太郎
08/03/06 19:49:27 rAQJhDRv
リファレンスに載ってなかったっけ

794:ハコ太郎
08/03/06 19:50:27 rAQJhDRv
見当違いならすまん

795:名前は開発中のものです。
08/03/06 20:42:21 L4hyp2ZA
>>792
答えたはずだがな・・・何の反応もなくしかも質問内容増えてるし。ちょっとは自分で調べたか?

1.普通にコンストラクタで作ってSetData。ネイティブで考えればシステムメモリにも
頂点バッファは作れるが、恐らく360との絡みでXNAでは意識できないようになってる。

2.めんどくさいのでヘルプより抜粋

Xbox 360 does not support dynamic vertex buffers that use the Overwrite/Discard semantic.
This affects calls to DrawPrimitives. For this reason, when rendering dynamic geometry,
DrawUserPrimitives is recommended at all times on both Xbox 360 and Windows.
(The performance disadvantages of DrawUserPrimitives, though previously a factor on Windows,
are largely obsolete in newer video drivers.)

結論だけ書くと「DrawUserPrimitives使え」
個人的にはDynamicVertex/IndexBufferの存在がXNA2.0最大の謎。

796:名前は開発中のものです。
08/03/06 20:58:31 T8fo1IZY
URLリンク(www.bba.or.jp)

XNA、ひろゆき、新清士、ニワンゴ・・・

なんという異色の協演・・・

797:名前は開発中のものです。
08/03/07 10:35:28 fLmqr2Fy
誰かひろゆきにXNAについてどう思うか聞いてきて~

798:名前は開発中のものです。
08/03/07 13:42:25 fxAYtVJw
実機で動かすのに金いるのか
配布するときに入会させればいいのに
面倒だからやーめた

799:名前は開発中のものです。
08/03/07 15:28:02 gESQYUPJ
xnaはC++/CLIやvb.netでも書けるだろ

800:名前は開発中のものです。
08/03/07 16:15:54 1NfIumuY
C++でXNA使うなら、機能面で既存の別のライブラリ使うな


801:名前は開発中のものです。
08/03/07 17:51:50 wZGs4Gxf
「書ける」と「箱で動く」は別問題だよね。

802:名前は開発中のものです。
08/03/07 20:44:59 2hUQvDJc
MS、「XNA Game Studio Japan 2008 Spring Contest」受賞作を発表
URLリンク(journal.mycom.co.jp)

いろんなのがあるな

803:名前は開発中のものです。
08/03/07 21:58:15 B9T8jdIP
>>2,5
HSPコンテストのレベルと大して変わらんのじゃねーか

804:名前は開発中のものです。
08/03/07 22:10:04 NP1Sf3E1
そう言ってられる内の方がまだよくね?
どうせそのうち空気読めない外人が何億と金かけたゲーム作り始めて
ここはそういう力のある集団だけのコミュニティになる
俺たちアマチュアの居場所など無くなるさ

805:名前は開発中のものです。
08/03/07 22:52:04 1WoBL1I/
>>800
いやいや。
CRTには依存できないから既存のライブラリは使えないでしょ

806:名前は開発中のものです。
08/03/08 01:28:46 vb/FCMXc
URLリンク(xna-studio.jp)
動画になってるー

807:名前は開発中のものです。
08/03/08 14:59:20 eGTZlkp3
このスレの過去ログでを見てないだけの>791の人気に嫉妬。
つ/clr:pure
boost程度は行けるんじゃ無い? libを使うregexやpythonはダメだろうけど。
C#2.0でNGのfunction(ラムダ式とか)がいけるハズ。

入会してるやつに聞きたいんだけど、C#のunsafeオプション付けてポインタ使ったソースを実機でうごかした奴いる?

808:名前は開発中のものです。
08/03/08 15:26:09 ylYCbKqV
PCと箱でも違うだろ
相変わらず検証もせずにできるんじゃね?ばっかだな

809:名前は開発中のものです。
08/03/09 10:31:35 jqFDLiaS
C++/CLIが使えるっていうんだったらC#3.0も使える
LINQも使えないこともない

810:名前は開発中のものです。
08/03/09 14:39:46 XqL6geom
360で動かす気ならマルチスレッド化はゼッテー、とか聞いて速攻やる気無くなった

811:名前は開発中のものです。
08/03/09 14:56:17 49SSB0i8
ZUNEで動かすならシングルスレッドでおk

812:名前は開発中のものです。
08/03/09 15:00:08 H9PKMdul
ロスプラの記事?
あれはやる気なくなる
そもそもXNA マルチスレッドのサンプルっつーか
情報がまったくないんだが

813:名前は開発中のものです。
08/03/09 15:11:31 EmgsrfLc
>>807
BoostがXNAの代わりになるんだ、へ~(棒読み

814:名前は開発中のものです。
08/03/09 18:02:08 7kYlwlzQ
今回のコンテスト程度のゲームならシングルスレッドで十分だろ
どんなすげえ大作ゲーム作るつもりなんだよ
計画を聞かせてもらいたいね

815:名前は開発中のものです。
08/03/09 18:12:35 5/FT7FE1
処理の重さと作品規模は全く関係ないわけで

816:名前は開発中のものです。
08/03/09 18:16:06 5KzUSteu
そうだ!スローモーションゲームをつくろう!!

817:名前は開発中のものです。
08/03/09 18:27:14 7kYlwlzQ
>>815
小規模で高負荷ってーと、パーティクル出しまくって弾幕~とかやるぐらいか?
・・・それぐらいしか思いつかん俺もレベル低いな

818:名前は開発中のものです。
08/03/09 19:03:19 KeTdRw33
ゼッテーかどうかはともかく本腰入れるなら避けては通れないだろうなぁ>マルチスレッド

819:名前は開発中のものです。
08/03/10 00:26:56 Vk26lBz9
Draw1回にUpdate1回なら、Updateがマルチスレッドしてても、Draw完了まで空ループさせとくとかは?
…日本語ヤバイので、脳内仕様だけどモデルも書く。
Draw()//60fps
{
  if (threadA.count==0||threadB.count==0||threadC.count==0) return;//空ループ:処理落ち。
  //同期処理 & 描画処理
  threadA.count = 0;  threadB.count = 0;  threadC.count = 0;  //描画処理の前に置くと、4スレッド並走。
}
Update(){//入力とか60fps}

threadOya //スレッド継承元
{
  public int count =0;
  threadOya() //コンストラクタとか
  {
    thread = new Thread(new ThreadStart(running));
    thread.Start();
  }
  void running() //60fps以上のハズ。
  {
    thread.Sleep(0);
    if(count > 0 ) return;//空ループ:同期待ち
    //スレッド内処理、入力を見たり、行列を弄ったり。
    count++;  //boolでも良かった…。
  }
}
 スレッド内処理でthreadAの持ってるオブジェクトとthreadBの持ってるオブジェクトがぶつかったりすると、
すり抜けたり、残像に衝突したり、デッドロックする。

820:名前は開発中のものです。
08/03/10 00:33:21 9gm0l7t/
どういうゲーム作るかの前提無しに、プログラム設計だけ語っても仕方が無いだろ
まずはゲーム内容を決めてから、必要ならマルチスレッド化を検討すればいい

821:名前は開発中のものです。
08/03/10 09:37:05 wOwdHCnQ
360のベータ終了しました

822:名前は開発中のものです。
08/03/10 11:15:05 oL43JEi6
>>813
なんかかわいそうな子みたいだから触るのやめたわ、私は。

823:名前は開発中のものです。
08/03/10 13:07:19 mR//SHEf
boostは最強だろ

824:名前は開発中のものです。
08/03/10 14:05:52 5xBAafCs
>>822
>>800読んだ上で言ってる?

内部でnewするものは一切使えない
インライン展開による処理コスト低減が目的じゃないなら素直にC#3.0使えよと思う

825:名前は開発中のものです。
08/03/10 14:09:48 Uj9vviuV
>>824
だったらそれでXbox360で動かしてくれよ。
話の流れが読めないやつだな。

826:名前は開発中のものです。
08/03/10 14:21:59 Bcod4ZKE
自己満足の技術雑談とフレーム合戦ばかりで、ゲーム製作を実行する奴が少ない・・・
ワンダーウィッチの時の状況にそっくりた。

827:名前は開発中のものです。
08/03/10 14:47:09 wteaVBEy
ワーカーばかりでクリエイターがいない今の日本

828:名前は開発中のものです。
08/03/10 15:57:34 W43Q16wA
クリエイター(笑)

829:名前は開発中のものです。
08/03/10 16:37:57 MN338FyH
>>825
読めてないのはお前。
C#3.0はilレベルで互換性がある。
互換性が無い部分はLINQ等ライブラリに依存している部分のみ。
まさか>>472を見て、ilレベルで互換性が無いと思ったわけではないよな?
普通に動く


830:名前は開発中のものです。
08/03/10 16:41:37 bMJbJ2iH
>>827みたいな何か言った風で何も言ってない奴らばかりなのが今の日本

831:名前は開発中のものです。
08/03/10 17:24:13 sUorN5Yv
>>830
自己紹介乙

832:名前は開発中のものです。
08/03/10 17:52:06 BqL/OQgN
言い合ってるより、ゲームつくったほうが早そうだな。

833:名前は開発中のものです。
08/03/10 19:14:55 RLf5EWSW
某受賞作で、構造体の配列を自前でガベコレしてるのには泣いたので、
C++/CLIでもC#3.0でも、どっちでも良いから頑張ってほしい。

そして巨大な構造体の配列をポインターでやりくりするunsafeってネタも投下。
URLリンク(forums.microsoft.com)

日本語でURLリンク(forums.xna.com)ができれば、俺含めそう言う輩は幸せになれる事に気づいた。

834:名前は開発中のものです。
08/03/10 20:33:58 OjMru5Aq
>某受賞作で、構造体の配列を自前でガベコレしてるのには泣いたので、

でも、こうゆうの聞くとがんばろうとも思うよな。
自前でやってまでカタチにしてる姿勢は見習いたい。

835:名前は開発中のものです。
08/03/10 20:53:45 BQQtszMo
ガベコレが走る以上、言語レベルで頑張ってどうにかなる時が来るとは思えんけどねー。
ぶっちゃけGCとハードリアルタイムで求められるパフォーマンスをうまく実現できる
処理系も言語も見たこと無いよ。
むしろそのへんC#というか.NETがもっとも現実主義に見える。

836:名前は開発中のものです。
08/03/10 21:07:53 TDrO6x61
細かいパフォーマンス気にしてる奴ってそんなギリギリの性能が必要なゲーム作るの?

837:名前は開発中のものです。
08/03/10 23:19:34 TpVcEEJ9
というかGCはCFだから遅いんだと思うが。世代別じゃねーし


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch