C# C# C♯ でゲームを作ろう Part2
■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。
2010/11/21(日) 09:52:59ID:wlCDMEbrテーマはアクション、パズル、RPG等なんでもOK
C#ゲーム製作@wiki
http://www21.atwiki.jp/csharpgamedev/
前スレ
C# C# C♯ でゲームを作ろう Part1
http://hibari.2ch.net/test/read.cgi/gamedev/1212989813/
0063名前は開発中のものです。
2010/12/22(水) 01:47:45ID:87uiMMNXnewの使いどころをわきまえる為に、.NET CLRのGCの特性を理解して使いましょうって話をしてるんだよ。
必死に無駄な最適化をしている君は実に馬鹿だなぁ
無駄な努力をするのは別にいいけど、誤った知識を広めて人に迷惑かけんなよ。
0064名前は開発中のものです。
2010/12/22(水) 03:50:48ID:jdovR8NX脳が腐ってる気もするけど、同意。なんだろう、ロリコンって少ないのか?他の国じゃ。
0065アジェグ4倍 ◆4xAJeG.COM
2010/12/22(水) 10:24:58ID:msb7iRfo多くの場合、Addの直前にnewしてるんだろうけど。
フレームループの中で有効件数が変わるような配列(敵の弾とか)は、
最大値を設けてあらかじめその数だけ取っとくなりしないと。
0066名前は開発中のものです。
2010/12/22(水) 10:56:22ID:1bNr51j3簡単なパズルゲー、ノベルゲーなら多少フレーム落ちてもたいして問題ないし。
0067名前は開発中のものです。
2010/12/22(水) 11:46:54ID:8WY0reJeList<T>の内部配列のサイズはオーバーするたびに2倍になる。Removeされても縮小は行われない。
なので、そのせいでフレームレートが落ちるようなことは100%ありえない。
0068アジェグ4倍 ◆4xAJeG.COM
2010/12/22(水) 12:18:18ID:msb7iRfoまあ、パズルやノベルなら、確かにさほど気にせんでもいいが。
おれが今作ってるのは音楽ゲー系(Javaだけど)だから、
タイミングにはイロイロとシビアでねぇ。
0069名前は開発中のものです。
2010/12/22(水) 12:20:16ID:8WY0reJeごく一般的な動的配列の実装なんだけどな
上でもnew ColorがGCに影響するとかnewがmallocとか見当違いのこと言ってるし
0070アジェグ4倍 ◆4xAJeG.COM
2010/12/22(水) 12:45:03ID:msb7iRfoここの連中のおれへの反論を見ると、
そう思っちまうねぇ。
0071名前は開発中のものです。
2010/12/22(水) 12:59:52ID:a/rzg/Ro0072名前は開発中のものです。
2010/12/22(水) 13:11:33ID:MbCuhdtTむしろ事前初期化ぐらいしかやる事なさそ
0073アジェグ4倍 ◆4xAJeG.COM
2010/12/22(水) 13:21:41ID:msb7iRfoそのMIDI関連の調査には、チョットばかし苦労したねぇ。
最近はソノヘンの資料が少なくてねぇ。
何とかならんのかねぇ、あの叩いてから音が出るまでの遅延。
マックならそれほどひどくもないんだが・・・
0074名前は開発中のものです。
2010/12/22(水) 13:21:53ID:8WY0reJe値型を定義できないしジェネリックも飾りでボックス化が発生しまくるからゴミも多発しやすい
インデックスの更新ってほんとにそんなものがボトルネックになったことあるのか?
知りもしない調べもしない測りもしない
0075アジェグ4倍 ◆4xAJeG.COM
2010/12/22(水) 13:32:07ID:msb7iRfoそういうリスクを未然に防ぐ作り方を心がけてるから、
知りもしないでいいし調べもしないでいいし測りもしないでいい。
おれがおれのやりかた。
0076名前は開発中のものです。
2010/12/22(水) 13:35:51ID:MbCuhdtT0077名前は開発中のものです。
2010/12/22(水) 16:16:47ID:87uiMMNX通りで理詰めで説明しても通じないわけだ。
>必死に無駄な最適化をしている君は実に馬鹿だなぁ
>無駄な努力をするのは別にいいけど、誤った知識を広めて人に迷惑かけんなよ。
0078名前は開発中のものです。
2010/12/22(水) 18:35:42ID:1bNr51j3思慮に値しない戯言だったって事だな
0079名前は開発中のものです。
2010/12/22(水) 18:52:03ID:YXiGsK9q0080名前は開発中のものです。
2010/12/22(水) 19:51:48ID:87uiMMNXまぁ、実際に問題なくゲーム(Robot Game)が動くのが何よりの証拠。お前の目は節穴か。
0081名前は開発中のものです。
2010/12/22(水) 19:54:10ID:XMfWOza80082名前は開発中のものです。
2010/12/22(水) 20:01:53ID:4NXPbAbv純粋に.NETの知識としては特定の人以外はそんなに間違ってはいない
0083名前は開発中のものです。
2010/12/22(水) 20:03:19ID:Wg8SNA4z0084名前は開発中のものです。
2010/12/22(水) 20:08:02ID:YY2LjFIA最近の流れはヲチとしては面白い。
0085名前は開発中のものです。
2010/12/22(水) 20:15:47ID:MbCuhdtT何の話しする?
どうして いきなり興奮してるの?
教えて 84
0086名前は開発中のものです。
2010/12/22(水) 20:44:11ID:MbCuhdtTはい これ繰り返し言ってみなさい
ね、 落ち着いたでしょ
0087名前は開発中のものです。
2010/12/23(木) 01:28:50ID:OCYjdJohSlimDXやXNAの話題は専用スレもあるし、
このスレの価値はこれらのライブラリを比較することと、C++に根本的にない文法で実装した方法紹介ぐらいしかないような気がする。
0088名前は開発中のものです。
2010/12/23(木) 02:25:47ID:GtUoPrZHReflection.Assembly.LoadFrom
シリアライズ
効果
相手は死ぬ
0089名前は開発中のものです。
2010/12/23(木) 07:11:33ID:7ot6aP0i配列へのforeach(最速)に比べりゃ遅いが
コンパイラが生成するクラスと動作を知ってれば大したコストはないと分かりそうなもんだが
>>84>>87
こういう最適化絡みの取るに足らない罵り合いはム板じゃできんよ。
あっちでやったら"誤差の範囲"と一蹴されて終わってしまう。
0090名前は開発中のものです。
2010/12/23(木) 10:33:35ID:77raTIZwforeachでガベージが発生してパフォーマンスが落ちるとか騒がれてたくらいだからな
yieldも構造体じゃなくてクラスなのでwindowsではまず問題にならないけど360では問題になるのかも
0091名前は開発中のものです。
2010/12/23(木) 12:02:54ID:vF4GDpDyDebugで実行するとReleaseの1000倍以上遅くなった
Debugで実行すると30分たっても終わらないのに
Releaseで実行すると5秒もしないうちに終わったりする
C#も似たような面がある
Debugで実行すると不安になるぐらいおっそいの
でもReleaseで実行すると問題ないぐらい早く動くの
debugで実行して遅い遅いいってない?(って開発の妨げになることはなるけど)
0092名前は開発中のものです。
2010/12/23(木) 12:10:58ID:77raTIZw描画がボトルネックになってるとほとんど関係ない気が
0093名前は開発中のものです。
2010/12/23(木) 12:15:02ID:GtUoPrZHマイクロスレッド 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なのになぜ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/N80100名前は開発中のものです。
2010/12/24(金) 11:05:04ID:t+N1XtKXマイクロスレッドなら最初からそう書けよwアホかw
0101名前は開発中のものです。
2010/12/24(金) 11:37:59ID:n1/ru3epって事を書かないと
負け犬の遠吠えですぜ
0102名前は開発中のものです。
2010/12/24(金) 11:55:56ID:t+N1XtKX>Reflection.Assembly.LoadFrom
>シリアライズ
>
>効果
>相手は死ぬ
>>93はこの並びにyield returnが入ってる理由の説明になってない。
yield returnはマイクロスレッドの事だって後付けにも程がある。後付けしたせいで「相手は死ぬ」との関連性が不明瞭になった。
最初から間違っていたのか、後付けしたために自己矛盾を抱えることになったのか、日本語が不自由だったため誤解を与えたのか。別にどれでもいいか。
>>101
俺は詳しくない。技術的には理解してても
あんまり上手く使いこなせてないから詳しいなら教えてほしい。
とは言っても設計に絡んだ事は自分で頑張るしかないだろうね。
0103アジェグ4倍 ◆4xAJeG.COM
2010/12/24(金) 11:59:47ID:dJK+lbCf0104名前は開発中のものです。
2010/12/24(金) 12:03:36ID:t+N1XtKXつまり自分の書き込みには技術的価値は無い と
分かってるじゃん。
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/ru3ep3っつ並んでるのを
変に思い悩んじゃったんだね
うぜー
0108名前は開発中のものです。
2010/12/24(金) 13:06:13ID:t+N1XtKX>>107
誰かと勘違いしてるだろw
0109名前は開発中のものです。
2010/12/24(金) 13:26:19ID:n1/ru3ep0110名前は開発中のものです。
2010/12/24(金) 16:03:06ID:c59ct/TR0111名前は開発中のものです。
2010/12/25(土) 10:23:42ID:ekX5bmeQいろいろな考えあって勉強になる
0112名前は開発中のものです。
2010/12/26(日) 03:16:46ID:k+BPickKもうXNAやらC#のゲームとか、普通に出回ってるな
で、ちょっとだけのつもりでリフレクしちゃったんだけ
2chで言われってる事は嘘ばっかりだな
嘘で去勢はるのにこんだけ熱心になるとか
マジキチガイだよお前ら
0113名前は開発中のものです。
2010/12/26(日) 10:43:37ID:KkuDmqCl0114名前は開発中のものです。
2010/12/26(日) 10:46:25ID:hn07w6Cz日本語でおk
0115名前は開発中のものです。
2010/12/26(日) 10:54:17ID:awOm0khxそんなに難しいことはここまでひとつも書かれてないよ
0116名前は開発中のものです。
2010/12/27(月) 03:34:23ID:vJm0vazkお前らと言うからには他にも沢山あるんだろうが、具体的にどれがどう間違ってんの?w
>>114
リフレクするって言い方は馬鹿っぽいと思うけど、普通に考えて.NET Reflectorだろ。.NET使った開発での定番ツールの一つ。
>>112が平気でライセンス違反するような屑だという疑惑が出てくるが、そんな事は別にどうでもいいや。
0117名前は開発中のものです。
2010/12/27(月) 08:43:43ID:is3ZHvvL新しい話題がでてもこの一手先が読めない猿が
偉そうにオナニー講釈するだけで終わりだな
0118名前は開発中のものです。
2010/12/27(月) 11:09:37ID:e7NS5L10このスレには、C#ゲームを現在のPCで動かすことを前提とした人と、XNAで動かすことも見越した人がまずいる。
それとは別に、流れがどういうスタンスか考えずにとりあえず持ってる知識で相手を否定したがる人が数名。
速度を過剰に云々語る人は、まぁ十中八苦アマチュアではないよなーとは思う。
まったく作ったことがないか、それとも過去の歴史にしがみつつ、わかってても少し警笛をならしたい老人か。
あとこのスレやJava関連で語るのに適した話題として、データ構造やアルゴリズム設計なんかもあるかもね。
シーンをどう定義してどう管理してるとか、メニューを作るとか。
まぁここら辺はちゃんと仕様書がきってあって、変更されにくいポイントだと言う前提なら、ハードコードしてもいいんだが。というかさっさと最速で実装するべきだが。
・・・ん、背伸びしてレスしてもいいことないな・・・
みんなそんなことよりゲーム作ろうぜ
0119名前は開発中のものです。
2010/12/27(月) 11:39:22ID:e7NS5L10>yield return
本来は確かforcach文を実現するために使われる文法の1つ。
匿名メソッドとかラムダ式とかと似たような感覚で、主に既存の文法を省略表記できるように、とっぴな記述を実現できるようにしたやつらの一人。
列挙子あるいは反復子(英語だとイテレータだっけ?デザパタとかとは別で、C#の用語・文法に存在する)とよばれる、
特定の自作クラスをfreeach文で利用する可能にするための一連の記述内で登場する。
実際の動きがマイクロスレッドやファイバーと呼ばれる機構そのままを実現してる。
ゲーム屋はそういう用途で使いたいときに使うことも可能。自分はやったことないけど。
>Reflection関連
メタデータから強引にあれこれしたいときに使う。通常用途はプラグイン機能を実現するための機能。
ここら辺をうまく使うと、理論上C#プログラムのスクリプト言語にC#を選択できるみたいだけど、知らん。C#仮想マシンってそもそも簡単に使える状態で公開されてるの?
実現すればかなり有効な気はしないでもないが、動的コードの読み込みと再起動を実現したいためにスクリプトを使う場合は、情報の多いLua仮想マシンを利用する手段に落ち着く傾向ががが。
0120名前は開発中のものです。
2010/12/27(月) 11:55:53ID:M20BTjY4現状では無理がある。一度読み込んだらアンロードできないからAppDomainを分けない限りメモリリークする。
CLRには、ILを動的に生成して実行できて生成されたコードはGC対象になるという
LCGと呼ばれるとっても便利な機能があって
IronPythonなどはそれを使ってるから問題ないんだけど、C#コンパイラは対応してない。
0121名前は開発中のものです。
2010/12/28(火) 00:15:05ID:w6osm0oX0122名前は開発中のものです。
2010/12/28(火) 01:48:16ID:RS4PyatJ×XNAで動かす/○XNAで作ってXbox360で動かす なら頑張ってGC抑制するしかないってのもずっと上の方で結論出てるじゃん。
ぐぐれば出てくる基礎的な話で、知ってるからといって威張れるような話ではない。でも知らずに書くと上の例のように周りから笑われてしまう。その程度の話。
>まったく作ったことがないか、それとも過去の歴史にしがみつつ、わかってても少し警笛をならしたい老人か。
Javaで作ってると主張してるのに、newがmallocと思ってて、ListのAddとRemoveで都度長さが変わると思ってるJavaの基礎の基礎ができてない人が
間違った知識で講釈垂れ流そうとしたあたりから話がおかしくなった。
>このスレの板的知名度も大分上がったんだなーとかふと思う。
Part1の過疎っぷりを思うと胸が熱くなるな。
みんなそんなことよりゲーム作ろうぜ
0123名前は開発中のものです。
2010/12/28(火) 04:11:28ID:kmbjQwMU詳しい情報サンクス。
うふふ、うひゃひゃ寝る暇ねー。。。。また・・・また・・・体験版を刷らなきゃいけないのか・・・
リプレイの機構見直さないとうまく動かないや・・・
0124名前は開発中のものです。
2010/12/29(水) 00:31:16ID:FINczj2t突っ込みがあったら容赦なくplz.
0125名前は開発中のものです。
2010/12/29(水) 01:05:46ID:OFv+y9dvIEnumerableは途中で変更されない一連の動作をさせるには便利っぽいんだけど
どうも使い所が見つからないw
0126名前は開発中のものです。
2010/12/31(金) 15:18:47ID:VyXa73Toプログラムから送信するってできる?
ボタンが押されていなくても、押した事にするという感じで。
getじゃなくてsetというイメージ。
0127名前は開発中のものです。
2010/12/31(金) 15:30:12ID:6eev3oNeInputManagerみたいなクラスを作って、コントローラーの入力を直接取得するのはそのクラスだけにする。
他のクラスは常にInputManagerを経由して入力を取得するようにする。
そうしておけば、InputManagerを使って自由に入力を偽装できる。
0128名前は開発中のものです。
2011/01/03(月) 23:59:18ID:+Us08eHKとりあえず自分で作ったポリゴンモデル動かしたいだけなんだけど、
DirectX + C++でやるのとXNAでやるのは生産性全然違うって認識でいいの?
0129名前は開発中のものです。
2011/01/04(火) 00:04:16ID:vxp4EKHnたくさんコード書くならC#の方が遥かに楽だけど
0130名前は開発中のものです。
2011/01/04(火) 00:24:09ID:ysUfWyLyIrrlicht.NET by SWIGはどう?
実用に耐える?
0131名前は開発中のものです。
2011/01/04(火) 00:28:52ID:zGzKnjbPmikumiku dance
が多分お望みの物だな
d3dx.hを使わないで済ませられれば飛躍的に楽になる
同様にXNAのSkinnedEffectも忘れた方がいい
結局mikumiku dance for XNAを読むハメになった
0132名前は開発中のものです。
2011/01/04(火) 00:52:44ID:ysUfWyLySkinnedEffect使わなくても、easy3Dかなんかでは簡単に同様の事ができたり?
その二つも検討してみるよ、ありがとん
0133名前は開発中のものです。
2011/01/04(火) 18:20:35ID:IVa0KycjコンストラクタでIEnumeratorを受け取るようにすればテンプレートメソッドにする必要がなくなるんじゃね?
あとActionを返す反復子を作ってみたら結構使えそうだった
0134名前は開発中のものです。
2011/01/04(火) 23:24:49ID:zGzKnjbPC++と比較したい訳では無かったのか。
読み返すと全く話が解ってないまま回答してしまった。
とりあえず解決したっぽいし、良いか。
0135名前は開発中のものです。
2011/01/05(水) 18:12:52ID:4nw3q9lq0136名前は開発中のものです。
2011/01/05(水) 20:05:41ID:WpE5qgLi0137名前は開発中のものです。
2011/01/05(水) 22:40:12ID:mBota3aS0138名前は開発中のものです。
2011/01/06(木) 01:19:29ID:3qyNRZkyファイルからIOしたいわけですよ
0139名前は開発中のものです。
2011/01/06(木) 01:23:27ID:3qyNRZkyKeyboard.GetState().IsKeyDown(Keys.Right)とLeftが押してもないのにtrue返しやがる・・・
もうわけわかめ
0140アジェグ4倍 ◆4xAJeG.COM
2011/01/06(木) 09:28:24ID:QYGetP1Nそういや使ったこと無いな。
KeyDownとKeyUpのイベントがあれば、そこでフラグをセットだけして、
使用時にそのフラグを見るようにするのがよかろう。
0141名前は開発中のものです。
2011/01/06(木) 17:06:58ID:wjpby+MQでもそんなバグがあったら今までに見つかってないわけがないので、
君の環境がおかしいか使い方が間違ってる可能性が高い。
バグだというなら再現する最小限のコードをMSに提出。
ファイルについてだけど、Windowsなら普通にFileStreamでも使えば読める。
Texture2D.FromStreamで画像読み込んだりすることもできる。
上の人は無視で。
0142名前は開発中のものです。
2011/01/06(木) 17:26:13ID:uXXSOax90143名前は開発中のものです。
2011/01/06(木) 19:45:49ID:3qyNRZky良く見たら同じメソッドがパッドからの入力で呼ばれてたよ
寝ぼけばがらやるもんじゃないね、迷惑かけた
0144名前は開発中のものです。
2011/01/07(金) 01:46:29ID:/mL8TiWEWindows.FormでXNAが使えるなんて思わなかった
モデルの読み込みが激重だけど・・・
0145名前は開発中のものです。
2011/01/07(金) 10:25:58ID:GqCoKInr公式のサンプルあるよ
0146名前は開発中のものです。
2011/01/08(土) 13:59:26ID:f8whFlFu「フィルからIO」ってなんだろ。意味が分からない・・・。
0147名前は開発中のものです。
2011/01/10(月) 09:11:51ID:POFYwAz5もちつけ
0148名前は開発中のものです。
2011/01/17(月) 22:09:49ID:5lTPbuLE未だにボーンモデルが使えない周回遅れって
生きてて恥ずかしく無いの?
0149名前は開発中のものです。
2011/01/17(月) 22:32:20ID:Ycj63+Du何を勘違いしてるの?
0150名前は開発中のものです。
2011/01/18(火) 20:05:15ID:wAcnWAak0151名前は開発中のものです。
2011/01/20(木) 11:35:14ID:E0RqosUy0152名前は開発中のものです。
2011/01/22(土) 08:48:10ID:nHDGDD4u日付を見れば釣りな事がわかるw
0153名前は開発中のものです。
2011/02/07(月) 12:27:36ID:cGOhPdzX0154名前は開発中のものです。
2011/02/07(月) 13:04:44ID:t3vECL+OXNA?
0155名前は開発中のものです。
2011/02/07(月) 23:52:04ID:pYcP+EtY非プログラマ視点に立つと
XNA + SlimDXのDirectInputラッパ
XNA + MDXのGamePad
とかが非商業ゲームでよくある
だけど、2ch内ではSlimDXオンリーや
P/InvokeでjoyGetPos()を使わないと
火病を患う奴が多いので注意
俺、コレ書いたらしばらく潜伏するw
0156名前は開発中のものです。
2011/02/08(火) 00:04:35ID:h0yfeQKCできれば余計な依存を増やしたくないっていうのは普通の感覚だよ
プログラム書いてりゃ誰でもそれで痛い目見てきてるから
0157名前は開発中のものです。
2011/02/10(木) 00:09:07ID:ysLsR0ku日本では流行ってないよね?
0158名前は開発中のものです。
2011/02/10(木) 03:51:31ID:ysLsR0ku0159名前は開発中のものです。
2011/02/10(木) 06:21:30ID:G/eJJ3Sw0160名前は開発中のものです。
2011/02/10(木) 14:12:41ID:ctXKdQ7j割と日本語のドキュメントがある
0161名前は開発中のものです。
2011/02/12(土) 10:06:59ID:VbHC53Xo無茶言うなしw
初代スレからいるけどこのスレは毎日ポーリングしてないよw
同人ではXNAで開発してるらしい話はちらほら聞くけど、実際には見たことないなー。
0162名前は開発中のものです。
2011/02/12(土) 10:26:52ID:uk7PegRF大丈夫俺を信じろ
■ このスレッドは過去ログ倉庫に格納されています