トップページgamedev
284コメント93KB

C# C# C♯ でゲームを作ろう Part2

■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。2010/11/21(日) 09:52:59ID:wlCDMEbr
C#でゲームを作ろうと思う人が情報を交換するためのスレです。
テーマはアクション、パズル、RPG等なんでもOK


C#ゲーム製作@wiki
http://www21.atwiki.jp/csharpgamedev/



前スレ
C# C# C♯ でゲームを作ろう Part1
http://hibari.2ch.net/test/read.cgi/gamedev/1212989813/
0010名前は開発中のものです。2010/12/14(火) 10:17:59ID:Z/MBXr4C
GC機能を無しにできたらC#がスタンダードになるのになぁ
0011名前は開発中のものです。2010/12/14(火) 17:05:29ID:yiT76n5O
構造体使えばいいじゃん
0012名前は開発中のものです。2010/12/14(火) 18:57:57ID:u2vbGV0C
>>9 >>10
参考までに教えてほしいんだけど、例えばどんなときに邪魔になるの?
自分は邪魔になったことないので、興味がある。
0013名前は開発中のものです。2010/12/14(火) 21:03:41ID:2ATBqPCF
Gamefest Japan 2008 Demo
でぐぐる

ちょっと改造して、噴飯物の杞憂に過ぎない事を確認する

以上
0014名前は開発中のものです。2010/12/14(火) 21:17:27ID:IN5+AAst
フレームレベルで処理を行ってるゲームで
わりと負荷のかかるGCが働くとコマ落ちやラグがおきやすい
特にシューティングやアクションなんかのリアルタイム性が重要なゲームだと邪魔になる。

RPGやノベルゲームなら多少コマ落ちしても気にならないだろうし
ちゃんとGCの動作まで考えてプログラミングすれば邪魔にはならないとは思うけど、
自分はそこまでするならC++でいいやってなった。
0015名前は開発中のものです。2010/12/14(火) 22:41:40ID:u2vbGV0C
>>14
なるほど、回答さんくす。

ゲーム製作でC#が使われないのは、個人的には環境依存度が
C++と比較して大きいからだと思う。

.NET必須、かつXNAやSlimDX等でランタイムが必要で、
配布方法や対象者に制限が付くとなると嫌がる人も多いのでは。
0016名前は開発中のものです。2010/12/14(火) 22:57:31ID:2ATBqPCF
思いっきりアホなことして、毎フレームGC発生させたけど
うちじゃ3msぐらいで収まってるな

余所の環境だと違うだろうけど、ちょっとこれで試してみ
ttp://99hagelo.net46.net/up/img/low392.zip
ソリューションロードして、F5押して、画面が表示されたらEnterキーを一回
要PS1.1
0017名前は開発中のものです。2010/12/14(火) 23:31:03ID:0rAUYZNK
>.NET必須
0018名前は開発中のものです。2010/12/15(水) 00:14:56ID:ipHv9sbI
GCってそんなに働き者だっけ?
メモリが足りなくなったときしか働かないイメージがw
0019名前は開発中のものです。2010/12/15(水) 00:27:25ID:pQJTLtMM
2chてさ、適当な事書いとけば
オタ豚が真っ赤な顔して正しいことを調べ廻ってくれるから
スゲー 便利www
0020名前は開発中のものです。2010/12/15(水) 01:47:12ID:OOrbYoZ/
実力が身に付くのは調べまわった豚
0021名前は開発中のものです。2010/12/15(水) 16:57:51ID:znPdNwQj
調べまわった人より効率よく知識が入るという・・・

まぁそれはそれとして、GCの頻度は割とこまめ。
STGで大量に玉をnewで飛ばし続けてタスクマネージャで使用目盛り見たら、予想に反して増える気配がなかったのでかなりこまめにGCしてると思われる。
0022名前は開発中のものです。2010/12/15(水) 17:54:50ID:pQJTLtMM
GCの話ししてるのにモニタリングの仕方すら知らないとか
円周率=3ぐらい痛々しい
0023名前は開発中のものです。2010/12/15(水) 17:59:01ID:d+SueuXU
C#でできるアプリは大雑把にわけて4種類。

コンソールアプリ
コマンドプロンプトで、文字ベースのアプリケーション

Windows Formsアプリ
一般的なGUI。Windows95からの「Windowsっぽいアプリケーション」

XNAアプリ
ゲーム用のアプリ。グラフィックの表示、ゲーム用コントローラーからの入力、サウンドなどをサポート

WPFアプリ
GUI。Windows Formより高性能だが、処理が重い。
0024名前は開発中のものです。2010/12/16(木) 00:30:49ID:G422t28F
.NET CLRのメモリ管理に関する最低限の基礎知識(Xbox360上のXNAとは異なる)
・.NET CLRのGCは効率的な世代別GCを採用している
・CLRはメモリをG0/G1/G2(G=Generation)/LOH(Large Object Heap)の4つの領域で管理する
・〜.NET3.5:同時実行GC .NET4/Silverlight4:バックグラウンドGC
・同時実行GC:Full GCの実行中にG0/G1のGCが実行できない。
 新たな割り当てができなくなった段階で、Full GCの終了まで中断される。
・バックグラウンドGC:Full GCが実行中でもG0/G1のGCが実行できる。
 中断される回数が大幅に減少し、中断された場合でも中断時間が短くなる。

.NET4でコンパイルするか、App.configで.NET4対応にするだけで改善が期待できる。

>>19-22
掲示板に書ききれない話が行間に山ほど含まれてるので、一度調べてみるといいよ。MSDNマガジンの関連記事読むだけで全然違う。
>タスクマネージャで使用目盛り見た
せめて、管理ツールのモニタツール使ってパフォーマンス カウンタ見てくれ…。もっと踏み込むならメモリ プロファイラ使いたい。

>>23
Silverlightも入れてよ。次期リリースの5はもっと凄くなるよ。
Immediate Mode Graphics SupportでGPUを活用できるようになって3D(光源、テクスチャマッピング、アルファブレンディング)がサポートされる。
0025名前は開発中のものです。2010/12/16(木) 01:44:28ID:1jVCL3Xf
>>16はG0で済ましているから負荷が軽い
0026アジェグ4倍 ◆4xAJeG.COM 2010/12/16(木) 10:13:47ID:QtGXpLv7
なんや知らんが、秒間60回のフレームループの中で
newをやっちゃダメだよ。
0027名前は開発中のものです。2010/12/16(木) 16:54:03ID:4Vhu2VWF
なんか落とし穴とかわかりにくい
foreachとか駄目なんでしょ?
0028名前は開発中のものです。2010/12/16(木) 19:07:42ID:kONXhBxi
>>27
何がどうダメなのか具体的に
0029名前は開発中のものです。2010/12/17(金) 00:44:40ID:1SX4G+z6
動かすターゲットによって目標とする最適化の程度は異なる。

.NET CLR:世代別GC(.NET Framework/Silverlight)
.NET CF CLR:マーク&スイープGC(Xbox360/Zune)

.NET CF CLRはGCのコストが桁違いに大きいため、徹底的にGCを排除すると大きくパフォーマンスが上がる。
.NET CLRでは>>16>>25の言うようにG0/G1のGCのコストが小さいので、全部最適化するだけの労力に見合った効果が得られない。

.NET CLRはG2の発生が抑制されていてG0の発生頻度が1フレームより長ければ問題ない。
この状態を保てている範囲なら1フレーム未満の寿命しかないインスタンスを作り捨ててもいい。
もっと長い寿命を持つインスタンスの生成は、G2ヒープ/LOHにどのくらいのペースで積まれるかによって上限が決まるので、
プロファイルをとってヒープに積まれたインスタンスの生成元を調べて、最適化の効果が大きく簡単に改善できる個所から手を入れましょう。

これ以上の最適化は手段と目的が逆転するが大丈夫か?
0030名前は開発中のものです。2010/12/17(金) 00:52:07ID:zbyqlefy
SwapArrayやRingBufferを使えばforeachできない

これはIEnumeratorを吐く関数を作ればいい
0031名前は開発中のものです。2010/12/18(土) 02:37:41ID:jHzAZ+Pm
みんなすげえよく知ってるな。どうしても速度がほしくなったらここら辺のレスを元に掘り下げることができそうだ。サンクス
0032名前は開発中のものです。2010/12/18(土) 17:03:01ID:OVvsO5Q5
Winではとりあえず毎フレームGen0GC入れとけば劇的に安定するよね
0033名前は開発中のものです。2010/12/18(土) 17:35:19ID:UzXWUqS6
ちがうよ ぜんぜんちがうよ
0034名前は開発中のものです。2010/12/20(月) 00:09:43ID:zPc622SO
XNAのロボットゲームが非会員でも落とせる
ようになっとる

結構ぬるぬる動く
0035名前は開発中のものです。2010/12/20(月) 13:50:11ID:wBI9+2iY
C#でhtml文をパネルにしてくれるようなクラスってない?
0036名前は開発中のものです。2010/12/20(月) 14:32:52ID:1s3rp6hX
IEコンポーネントでHTMLをホストしたいならWebBrowser使う。
IE以外だと
GeckoにはActiveX版があってC#からも呼んで使える。でも↓の方が便利。
GeckoFX(ActiveXを使わず直接使ってる。あと開発者のアンドリューさんは日本語ちょっと話せるらしいw)
完成したらWebkit.NETも有望そう。

マークアップ ランゲージ(ML)でUI定義したいならWPFのXAMLがまさにそれ
WinForms用ならWFML(http://windowsclient.net/articles/wfml.aspx)あたりだろうか?これは使ったことない。

>>34
なにそれkwsk
0037名前は開発中のものです。2010/12/20(月) 14:38:54ID:wBI9+2iY
>>36
どれが使えるかわからんから、いろいろ調べてみるよ
ありがとう
0038名前は開発中のものです。2010/12/20(月) 15:55:15ID:zPc622SO
>>36
XNAの有料チュートリアルだった
補完のあるボーンアニメーションやパーティクル
木構造のデータ管理、AIなどが一通りそろっている
割と平易
XNAやC#以外でも使えると思われ

なにより軽い
0039名前は開発中のものです。2010/12/20(月) 19:06:39ID:zPc622SO
ttp://www9.uploda.tv/v/uptv0001083.png
C#を使っているために処理が重いのは
このグラフの左端のたった平均2msの部分

↑の人達はこの処理が重いからC#はダメだ(笑)
とか宣っていたんだから

今どんな気持ち?
        宦Q__宦@  
    ♪   | ノ ⌒  ⌒ヽハッ
        /  (●)  (●)
       |     ( _●_) ミ
 ___ 彡     |忿 ミ
 ヽ___       ヽノ、`\
       /       /ヽ <
      /   
0040名前は開発中のものです。2010/12/20(月) 19:27:22ID:utdIzmpZ
>39
そのPCのスペックは?
0041名前は開発中のものです。2010/12/20(月) 19:50:10ID:zPc622SO
何故自分の環境で動かさないのか?
宗教的理由でC#のソースをコンパイルすると死ぬんですね
わかります

P4 2.80
メモリ 1G
0042名前は開発中のものです。2010/12/20(月) 19:54:13ID:Vc2LMPvW
ていうか、それをC++で実装した場合との比較はないの?
0043名前は開発中のものです。2010/12/20(月) 20:00:01ID:zPc622SO
C++の方が速い
あたり前だ
なんで実装してまで調べる必要があるんだ?

頭の中のお花畑ぐあいをちょっと聞かせ
てくれないか?
0044名前は開発中のものです。2010/12/20(月) 20:40:29ID:1s3rp6hX
ちょっと落ち着けw

C#自体の速度は最適化してないC++並みって知らない人は置いとくとして
意図しないタイミングでのGCは避けるべきだけど、(PCでは)極端に忌避する必要はないって話に落ち着いてたでしょ

>>38
ロボットゲームってまんまRobot Gameなのかw
試してみるthx
0045名前は開発中のものです。2010/12/20(月) 20:50:42ID:czZepkU0
GCについてどうC++と比較するつもりなんだ?
0046名前は開発中のものです。2010/12/20(月) 21:49:42ID:1s3rp6hX
newはC++より一桁速い。それは何故か
ってとこからC#のメモリ管理について延々と語れるけど、それをやるには掲示板は狭すぎる。

世代別GCは一般に思われているより高速。
(何倍も時間かけて)C++で作ればC++の方が早い。
どの言語で作っても結局は描画にかかる時間が大半を占める。
0047名前は開発中のものです。2010/12/21(火) 01:12:58ID:HIfOIzlr
DirectXの情報がどうもないと思ったらXNAってもんがあるのかw
C#+DirectXで作っちゃった・・・

でも、苦労はあんまり変わらないような・・・
0048名前は開発中のものです。2010/12/21(火) 01:20:04ID:HIfOIzlr
と思ったら結構臭いな>XNA
C#は混沌としてるな
0049名前は開発中のものです。2010/12/21(火) 01:48:06ID:7nmvHqyX
薄いwrapperが欲しいならSlimDX
0050名前は開発中のものです。2010/12/21(火) 01:50:42ID:IUyb5141
2011年になろうかと言うときに
Managed Xとか…
釣りやなw

C++/CLIでツール作成ならまだ疑う余地
もあったけど
0051名前は開発中のものです。2010/12/21(火) 06:58:33ID:QhXoH/nz
あげておくか
0052アジェグ4倍 ◆4xAJeG.COM 2010/12/21(火) 09:16:03ID:kS4ld1Hr
いや、だから、タイミングや状態もわきまえずnewする時点で、
言語がなんであろうと以下略。
0053名前は開発中のものです。2010/12/21(火) 13:04:31ID:589aNUur
そうでもない
インタプリタが遅くてnew自体のコストなんか誤差になるような言語処理系は
スクリプト言語ではわりとある
0054名前は開発中のものです。2010/12/21(火) 17:39:24ID:7nmvHqyX
いや、だから、タイミングや状態もわきまえずnewしていいなんてどこに書いてあるよ?
やっちゃダメ>>26と、管理されていればやってもいい は全然違う。
それだけの開発コストを投入するに値する根拠ってあるの?

C#はインタプリタでもスクリプト言語でもない。
newのコストは誤差(C++より速い)の範囲内。動作速度はJITされるため一度動き出せば最適化していないC++並み。
で、GCのコストをどう見積もってどこまで対策するのかって話なんだが…
0055アジェグ4倍 ◆4xAJeG.COM 2010/12/21(火) 20:24:12ID:co1xIq2s
開発コストを投入するに値する根拠?

知ってると思うが、new ってのは mallocなんだぞ。
メモリの消費状況によっては、そこでスワッピングなどの
ディスクアクセスが発生する恐れもあるんだからさ。

で、ガベージが作動すりゃ、freeなわけだから、
そこでまたディスク沙汰に、なりかねないわけだ。

ソノヘンがわかってりゃ、例えば敵の弾の発生時にnewなんて
恐ろしくて恐ろしくて・・・
描画時のnew Color とかnew Fontなんてのにも注意しないと。

だから new は、ループに入る前とか、別のスレッドでやるとかがセオリー。
0056名前は開発中のものです。2010/12/21(火) 21:42:50ID:ByL+MADM
C#の絶対性能がC++より低いなら、その低い性能で足りる範囲でゲームデザインすりゃ済む話だろう。
見積もりを検討するなら、プロトタイプ組んで実測すりゃ済む話だろ。
全部アセンブリで書くならまだしも、C#やらC++で書いたゲームのソースコードだけ見て、事前に精密な見積出せるわけない。
そんなもん、言語仕様以前のレベルの話だ。
なのに、事前に脳内で結果が分かって当然って前提を置こうとしている時点で、>>54は全くゲームのコード書いたことが無い、脳内クリエイターかなんかなんだろうよ。
どうせ、C#の方が簡単そうだけど絶対性能で負けるなら何となく格好悪いから使いたくない、とかその程度の発想でウダウダ食い下がってるだけだと思うぞ。
0057名前は開発中のものです。2010/12/21(火) 21:55:38ID:7nmvHqyX
>>55
G0/G1ヒープがスワップアウトってどんな環境だw

敵の玉やFontなんて真っ先に
>最適化の効果が大きく簡単に改善できる個所
として槍玉にあがるとこじゃん。

プロファイルに基づかない最適化は害でしかない。
まぁ、終わりのない自己満足の最適化ゲームやりたいなら止めないけど

>>56
>事前に脳内で結果が分かって当然
主張しているのは真逆の事。誤読乙
0058名前は開発中のものです。2010/12/21(火) 21:59:22ID:XhDhH52e
昔のJavaスレをみるようだ歴史は繰り返すなw
0059アジェグ4倍 ◆4xAJeG.COM 2010/12/21(火) 23:38:07ID:co1xIq2s
まあ、要するに、newの使いどころをわきまえてりゃ、
ガベージがドーノコーノなんて話が出てくる必要もないわけで。

変なタイミングでnewするから、変なタイミングでガベージが動くんだぞ。

最初に書いたように、フレームループの中でnewしないように注意なんてのは、
プロファイルとやらがドーコー言う以前の、技術の基礎だからな。
0060名前は開発中のものです。2010/12/21(火) 23:50:24ID:IUyb5141
上のRobotGameでもふつうにnewしてGCしてる

クラス設計 特に継承を使った設計が
頭の中にないと なんでnew禁止が辛いのか
理解できないので
会話にならない
0061名前は開発中のものです。2010/12/22(水) 00:17:59ID:MbCuhdtT
俺がゲーム開発のノウハウ教えてやんよ
と、息巻いてる奴に限って
英語コンテンツは一切目をとうさず
シェーダーも使えない
悲しい現実
0062名前は開発中のものです。2010/12/22(水) 01:02:04ID:lDvG2hsH
>>61
あんなすごい技術を使ってても可愛い女の子の1人も出てこない向こうのゲームってなんなんだろうな?
って俺はいつも思うんだ
0063名前は開発中のものです。2010/12/22(水) 01:47:45ID:87uiMMNX
>>59
newの使いどころをわきまえる為に、.NET CLRのGCの特性を理解して使いましょうって話をしてるんだよ。
必死に無駄な最適化をしている君は実に馬鹿だなぁ
無駄な努力をするのは別にいいけど、誤った知識を広めて人に迷惑かけんなよ。
0064名前は開発中のものです。2010/12/22(水) 03:50:48ID:jdovR8NX
>>62
脳が腐ってる気もするけど、同意。なんだろう、ロリコンって少ないのか?他の国じゃ。
0065アジェグ4倍 ◆4xAJeG.COM 2010/12/22(水) 10:24:58ID:msb7iRfo
new と同様に注意しなきゃならんのは、Listで定義した配列のAddとRemoveだな。
多くの場合、Addの直前にnewしてるんだろうけど。

フレームループの中で有効件数が変わるような配列(敵の弾とか)は、
最大値を設けてあらかじめその数だけ取っとくなりしないと。
0066名前は開発中のものです。2010/12/22(水) 10:56:22ID:1bNr51j3
newのコストとかGCのコストなんてゲーム作ってくうちにネックに成ったら考えれば良い話。
簡単なパズルゲー、ノベルゲーなら多少フレーム落ちてもたいして問題ないし。
0067名前は開発中のものです。2010/12/22(水) 11:46:54ID:8WY0reJe
>>65
List<T>の内部配列のサイズはオーバーするたびに2倍になる。Removeされても縮小は行われない。
なので、そのせいでフレームレートが落ちるようなことは100%ありえない。
0068アジェグ4倍 ◆4xAJeG.COM 2010/12/22(水) 12:18:18ID:msb7iRfo
縮小は行われなくても、インデックスの更新などがあるからねぇ。
まあ、パズルやノベルなら、確かにさほど気にせんでもいいが。

おれが今作ってるのは音楽ゲー系(Javaだけど)だから、
タイミングにはイロイロとシビアでねぇ。
0069名前は開発中のものです。2010/12/22(水) 12:20:16ID:8WY0reJe
指数関数的に内部配列を拡張していって縮小はしないのはC++のvectorやJavaのArrayListなんかでも見られる
ごく一般的な動的配列の実装なんだけどな
上でもnew ColorがGCに影響するとかnewがmallocとか見当違いのこと言ってるし
0070アジェグ4倍 ◆4xAJeG.COM 2010/12/22(水) 12:45:03ID:msb7iRfo
CPUの進化ってすごいんだねぇ。

ここの連中のおれへの反論を見ると、
そう思っちまうねぇ。
0071名前は開発中のものです。2010/12/22(水) 12:59:52ID:a/rzg/Ro
もうその話題は終わったよ
0072名前は開発中のものです。2010/12/22(水) 13:11:33ID:MbCuhdtT
音ゲにNPC AIもステージ設計も無いもんな

むしろ事前初期化ぐらいしかやる事なさそ
0073アジェグ4倍 ◆4xAJeG.COM 2010/12/22(水) 13:21:41ID:msb7iRfo
おれの場合、MIDIを使って、既存のデータで遊べるようにしてるから、
そのMIDI関連の調査には、チョットばかし苦労したねぇ。
最近はソノヘンの資料が少なくてねぇ。

何とかならんのかねぇ、あの叩いてから音が出るまでの遅延。
マックならそれほどひどくもないんだが・・・
0074名前は開発中のものです。2010/12/22(水) 13:21:53ID:8WY0reJe
JavaのGCって.NETのと比べてストップザワールドを起こしやすいし
値型を定義できないしジェネリックも飾りでボックス化が発生しまくるからゴミも多発しやすい
インデックスの更新ってほんとにそんなものがボトルネックになったことあるのか?
知りもしない調べもしない測りもしない
0075アジェグ4倍 ◆4xAJeG.COM 2010/12/22(水) 13:32:07ID:msb7iRfo
そんなものがボトルネックになったことあるのかって?

そういうリスクを未然に防ぐ作り方を心がけてるから、
知りもしないでいいし調べもしないでいいし測りもしないでいい。

おれがおれのやりかた。
0076名前は開発中のものです。2010/12/22(水) 13:35:51ID:MbCuhdtT
本人がキチガイ認めて完結
0077名前は開発中のものです。2010/12/22(水) 16:16:47ID:87uiMMNX
なんだ、やっぱりキチガイが妄想を根拠にした俺理論で騒いでたのか。
通りで理詰めで説明しても通じないわけだ。

>必死に無駄な最適化をしている君は実に馬鹿だなぁ
>無駄な努力をするのは別にいいけど、誤った知識を広めて人に迷惑かけんなよ。
0078名前は開発中のものです。2010/12/22(水) 18:35:42ID:1bNr51j3
調べも測りもしない上に使ってる言語はJava
思慮に値しない戯言だったって事だな
0079名前は開発中のものです。2010/12/22(水) 18:52:03ID:YXiGsK9q
それぞれを比較できる幾つかの数値的な根拠なりなんなりを出していない時点でどっちもどっち。
0080名前は開発中のものです。2010/12/22(水) 19:51:48ID:87uiMMNX
ID違うけどお前さん◆4xAJeG.COMの捨て台詞みたいな事言ってるな。
まぁ、実際に問題なくゲーム(Robot Game)が動くのが何よりの証拠。お前の目は節穴か。
0081名前は開発中のものです。2010/12/22(水) 19:54:10ID:XMfWOza8
このスレはゲ製板を象徴するようなスレだな。ダウトだらけ。本当にコンスタントにゲーム作ってる人いるんかね。
0082名前は開発中のものです。2010/12/22(水) 20:01:53ID:4NXPbAbv
ここまでほとんどゲーム関係ないじゃん
純粋に.NETの知識としては特定の人以外はそんなに間違ってはいない
0083名前は開発中のものです。2010/12/22(水) 20:03:19ID:Wg8SNA4z
ゲーム関係ないw。いらないなこんなスレ
0084名前は開発中のものです。2010/12/22(水) 20:08:02ID:YY2LjFIA
C#の話題ならム板で事足りる。
最近の流れはヲチとしては面白い。
0085名前は開発中のものです。2010/12/22(水) 20:15:47ID:MbCuhdtT
>>84
何の話しする?
どうして いきなり興奮してるの?

教えて 84
0086名前は開発中のものです。2010/12/22(水) 20:44:11ID:MbCuhdtT
俺より難しいことを知ってる奴はゲームなんか作ってない

はい これ繰り返し言ってみなさい

ね、 落ち着いたでしょ
0087名前は開発中のものです。2010/12/23(木) 01:28:50ID:OCYjdJoh
C#で作ることのメリットデメリットは実行速度・ライブラリと組みやすさってのはわかってるし、特に言語にまつわるできるできないもそんなにないし。
SlimDXやXNAの話題は専用スレもあるし、
このスレの価値はこれらのライブラリを比較することと、C++に根本的にない文法で実装した方法紹介ぐらいしかないような気がする。
0088名前は開発中のものです。2010/12/23(木) 02:25:47ID:GtUoPrZH
yield return
Reflection.Assembly.LoadFrom
シリアライズ

効果
相手は死ぬ
0089名前は開発中のものです。2010/12/23(木) 07:11:33ID:7ot6aP0i
何でイテレータがそこに入ってるの?
配列へのforeach(最速)に比べりゃ遅いが
コンパイラが生成するクラスと動作を知ってれば大したコストはないと分かりそうなもんだが

>>84>>87
こういう最適化絡みの取るに足らない罵り合いはム板じゃできんよ。
あっちでやったら"誤差の範囲"と一蹴されて終わってしまう。
0090名前は開発中のものです。2010/12/23(木) 10:33:35ID:77raTIZw
まあ前はXNAのModelMeshCollectionなどの列挙子がクラスとして実装されてて
foreachでガベージが発生してパフォーマンスが落ちるとか騒がれてたくらいだからな
yieldも構造体じゃなくてクラスなのでwindowsではまず問題にならないけど360では問題になるのかも
0091名前は開発中のものです。2010/12/23(木) 12:02:54ID:vF4GDpDy
vs2010だとC++でも文字列処理の塊みたいなプログラムだと
Debugで実行するとReleaseの1000倍以上遅くなった
Debugで実行すると30分たっても終わらないのに
Releaseで実行すると5秒もしないうちに終わったりする

C#も似たような面がある
Debugで実行すると不安になるぐらいおっそいの
でもReleaseで実行すると問題ないぐらい早く動くの

debugで実行して遅い遅いいってない?(って開発の妨げになることはなるけど)
0092名前は開発中のものです。2010/12/23(木) 12:10:58ID:77raTIZw
文字列処理ならそうだろうけど、DirectX使ってるときはあまり感じないな
描画がボトルネックになってるとほとんど関係ない気が
0093名前は開発中のものです。2010/12/23(木) 12:15:02ID:GtUoPrZH
>>89,90
マイクロスレッド yield return
でぐぐるとよい

良かったね 知らない事がひとつ減って

>>91
音ゲーくんのことはもういいよ
音ゲーってそんなもんだ
0094アジェグ4倍 ◆4xAJeG.COM 2010/12/23(木) 12:37:31ID:9G5RY3Zb
最近のゲームって、このように基礎知識がなってない連中が作ってるのか。
まあガベージコレクション自体、ソノヘンが欠けた技術者?の為の機能だからな。
0095名前は開発中のものです。2010/12/23(木) 13:29:08ID:GtUoPrZH
痛々しいな
ツッコミが怖くて技意味のある発言ができなくなっとる

まぁ 嘘臭いからツッコまれるのだがw
0096名前は開発中のものです。2010/12/23(木) 13:31:49ID:y5spn/N8
GC自体否定&ゲームに使ってる言語もJava
なのになぜC#スレにくるのか…
0097アジェグ4倍 ◆4xAJeG.COM 2010/12/23(木) 14:17:35ID:9G5RY3Zb
なにしろ今、開発に忙しいからね。
技術味のある発言なんて始めからしてないし。

new に関する話なんて基礎の基礎だから、
技術味なんてご大層なレベルじゃないもん。
0098名前は開発中のものです。2010/12/23(木) 14:26:58ID:GtUoPrZH
俺より強い奴はみんなハメ
俺より強い奴はみんなチート

俺よりゲーム開発詳しい奴はみんなゲーム作ってない  new
0099名前は開発中のものです。2010/12/23(木) 19:00:16ID:y5spn/N8
開発に忙しいなら尚更こなければ良いのに。
0100名前は開発中のものです。2010/12/24(金) 11:05:04ID:t+N1XtKX
>>93
マイクロスレッドなら最初からそう書けよwアホかw
0101名前は開発中のものです。2010/12/24(金) 11:37:59ID:n1/ru3ep
煽るにも、俺の方が詳しいんだゼ
って事を書かないと
負け犬の遠吠えですぜ
0102名前は開発中のものです。2010/12/24(金) 11:55:56ID:t+N1XtKX
>yield return
>Reflection.Assembly.LoadFrom
>シリアライズ
>
>効果
>相手は死ぬ
>>93はこの並びにyield returnが入ってる理由の説明になってない。
yield returnはマイクロスレッドの事だって後付けにも程がある。後付けしたせいで「相手は死ぬ」との関連性が不明瞭になった。
最初から間違っていたのか、後付けしたために自己矛盾を抱えることになったのか、日本語が不自由だったため誤解を与えたのか。別にどれでもいいか。

>>101
俺は詳しくない。技術的には理解してても
あんまり上手く使いこなせてないから詳しいなら教えてほしい。
とは言っても設計に絡んだ事は自分で頑張るしかないだろうね。
0103アジェグ4倍 ◆4xAJeG.COM 2010/12/24(金) 11:59:47ID:dJK+lbCf
技術のことはソースで語るんだよ。
0104名前は開発中のものです。2010/12/24(金) 12:03:36ID:t+N1XtKX
>>103
つまり自分の書き込みには技術的価値は無い と
分かってるじゃん。
0105アジェグ4倍 ◆4xAJeG.COM 2010/12/24(金) 12:12:03ID:dJK+lbCf
おれがここで言うレベルなど、
技術者なら当然知っているべき、基礎の基礎だからな。
前にも書いたが、価値なんていうほどのもんじゃない。

でも、それさえ知らんとなるとねぇ・・・
0106名前は開発中のものです。2010/12/24(金) 12:19:11ID:QYPADZMz
もう無視でいいよね
>>102 C#をスクリプトっぽく使いたいんじゃね
yield returnをコルーチンとして使ってゲームのシナリオスクリプト書いたりしてて
そういうのはdllとして分離して動的に参照したいと
シリアライズはまあセーブに使うんだろう

ところでセーブってシリアライザ使うのが一般的なの?
XmlSerializerやDataContractSerializerはともかく、
他のはバージョン管理がうざいから嫌いなんだけど
0107名前は開発中のものです。2010/12/24(金) 12:21:34ID:n1/ru3ep
C++にできないか、面倒くさくてやる気が起きない物が
3っつ並んでるのを
変に思い悩んじゃったんだね

うぜー
0108名前は開発中のものです。2010/12/24(金) 13:06:13ID:t+N1XtKX
突っ込みどころが多すぎて、無視するのが勿体ないような気分に…

>>107
誰かと勘違いしてるだろw
0109名前は開発中のものです。2010/12/24(金) 13:26:19ID:n1/ru3ep
いったい誰とたたかっているんだ
■ このスレッドは過去ログ倉庫に格納されています