C♯で3Dゲーム

このエントリーをはてなブックマークに追加
188名前は開発中のものです。:2006/01/28(土) 14:12:49 ID:gWzWm1wV
>>184>>185の間に一年も時間の隔たりがあるのにワロタw
189名前は開発中のものです。:2006/01/28(土) 14:56:48 ID:PGCHDvKB
>>169

>それからC/C++厨よおまいらは本当にC/C++分かって物をしゃべっとんのか?
>そもそもそこまでマシン速度を要求するほどのすごいゲームをおまいら作っとんのか!
(中略失礼)
>本来工業用のアプリならC++で作るの当然だが3DゲームでDX9使ったりするならC#だ

3DモノやってるC++屋だが、3Dは表示できればいいってもんじゃない。
地形との当たり判定とか、マップが広いと、計算量が膨大になるので、ある程度大きい
ものを作ろうとすると、処理性能で妥協はできないです。

と、書いてて気づいたが、これ2年近く前の書き込みかorz

>1にも2にも書籍が足りないよ
>大丈夫かねC#
セミプロ以上の製作者はC++に流れるからのぅ。
プロ向けのVC++と素人向けのVBを除けば、どの言語も書籍が足りん。
Javaはゲーム用としては実用性に難有だし。
190名前は開発中のものです。:2006/01/28(土) 15:13:05 ID:YfWqjfTx
64bit機の発売が迫った今こそ.NETとC#に乗り換える奴が増えそうなものだが
VBでもMC++でも.NET開発できるし、C#って本当に微妙な言語だよなぁ・・・
JAVAプログラマを取り込めた気もしないし、C#を何とかしてくれMS
191名前は開発中のものです。:2006/01/28(土) 15:55:05 ID:XJ+8r7V6
>>186-187
洋書なら多いんだけどな
日本のライターは完璧な商業主義だから翻訳するなら他の本を選ぶし、
日本語版MSDNに書いてあるリファレンスレベルの入門書しか書かないし
ほんと、C♯に限らずMSの最新技術スキーは地獄だぜフゥーハハァー
192名前は開発中のものです。:2006/01/28(土) 17:53:08 ID:PhRDCvAj
>>172
徹底的なオブジェクト指向プログラミングは、
ゲーム作成に向いているのかという問題があるような気がするなぁ。

ゲーム作成で、デザパタとか使っている人いる?
193名前は開発中のものです。:2006/01/28(土) 18:34:11 ID:1zN1tpQ6
http://www.purple.dti.ne.jp/sslt/
C#で3Dのリバーシ作ってみました。
194名前は開発中のものです。:2006/01/28(土) 18:46:20 ID:YfWqjfTx
うむ、やってみようと思ったがエラーが起こった
やはり俺のノートPCじゃVRAMが足らんのかな
195193:2006/01/28(土) 20:59:29 ID:1zN1tpQ6
>>194
VRAM32Mでも動作するので、
DirectX Sample BrowserのManagedサンプルのどれかが動作するなら、
アプリ側に問題があります。
すみません。
 .NET FrameworkとManaged DirectX のランタイムが
入っていることが動作条件になっています。
なにが原因か表示できれば良いのですが。

196名前は開発中のものです。:2006/01/28(土) 21:07:48 ID:YfWqjfTx
>>195
楽勝でVRAM32Mもありません、どうみても俺のノートPCに問題があります
本当にありがとうございました
197名前は開発中のものです。:2006/01/29(日) 06:59:06 ID:m3zd7e+5
>>192
使ってる。
というか.NET自体がデザパタ使ってるし。

2DゲームならC#でも問題ない。
多分3Dでもモノによってはいけるかと。

2DならHSPとかでも十分。とか言う意見もあるかもしれんが
生産性で言ったら多分C#の方が全然良い。と思う(ていうかHSP詳細知らんw)
198名前は開発中のものです。:2006/01/29(日) 22:59:33 ID:KgDiru1o
HSP2 以降は変わったかもしれないが……HSP は、全変数がグローバルなのが何とも orz
少し大きなモノになると、たちまち破綻するよ。
199名前は開発中のものです。:2006/02/08(水) 21:54:47 ID:QSUPp/+v
VS2005(及びExp)でC#や.NET人口増えるかな?
200名前は開発中のものです。:2006/02/11(土) 08:57:52 ID:FJHhmPxN
無料版あるなら使ってみるか〜、という声はあちこちで聞くし、少しは増えると思う
おいらもDelphiからC#に乗り換えたし
201名前は開発中のものです。:2006/03/03(金) 16:39:14 ID:p9sAA+CF
Microsoft Visual C# 2005 Express Editionでゲーム開発
ビデオチュートリアル(2D&3D)
ttp://www.digipen.edu/main/Webcast

このチュートリアル作ってるデジペンは任天堂アメリカも
出資してるアメリカ最強のゲーム専門学校。
202名前は開発中のものです。:2006/03/32(土) 23:42:26 ID:AjFxKFkN
XNA FrameworkでC#がXbox360で動くよ、といっても日本じゃ
インパクトなさげ。
203名前は開発中のものです。:2006/04/02(日) 01:26:49 ID:anYS10JJ
Warp3D
High performance c# based software renderer.
ttp://alansimes.blogdns.net/cs/files/default.aspx
204名前は開発中のものです。:2007/01/27(土) 01:11:00 ID:12dXRPli
書籍のパソコン教科書シリーズのVisualC#の解説書の付録CDでインストールしたんですが
framework2.0 はインストールされましたがSDKはされませんでした。(入っていない?)
それでも普通にビルドできるんですが、frameworkのSDKはどんなときに必要になるんでしょうか?
205名前は開発中のものです。:2007/01/27(土) 01:11:51 ID:12dXRPli
誤爆しましたorz
206名前は開発中のものです。:2007/10/05(金) 01:07:07 ID:RS4GR0/A
C#スレ発見!
207名前は開発中のものです。:2007/10/05(金) 01:30:21 ID:brA74PS+
音楽の♯とかでタイトルかかれたら検索できるわけないwww
208名前は開発中のものです。:2007/10/05(金) 01:42:36 ID:SzSxFYQc
>>207
せっかくだからこのスレ使ってみろよ
意地張るこたねー。力抜け
209名前は開発中のものです。:2007/10/05(金) 02:25:07 ID:brA74PS+
と言うわけで、C#+ManagedDirectXで3Dゲームを作るのを最終目標に普及。
ただし3D周りはいじくったことありませんが。

てな訳で適当に質問どぞー
210名前は開発中のものです。:2007/10/05(金) 02:50:09 ID:brA74PS+
C#とManagedDirectXの現状

C#について
・.NET言語の一種で、普及率はあまり高くない。
・従来のランタイムとは異なる.NET Framework上で動作する
・C++より遅い。
・マイクロソフトのやる気がない。
・VisualStudio2005に対応してるのはC#2.0まで。C#3.0は未対応。
→C#2.0を前提にいきます。

Managed DirectX (MDX)とは
・DirectXとは別に存在する(.NET用に書き直されたとも言う)ライブラリ群。
・ランタイムに実は同伴されているが、普通の人はその存在にすら気づかない。
・なかなか微妙な経歴を持つ。(後述)

.NET言語?、.NET Framework(fw)って?
・.NET Frameworkとは、Win32APIにかわるAPI兼標準ライブラリ。なはずだったもの。
・.NET言語は次のものがある。C#、マネージドC++、VB.NET、J#など。
・いずれも、基本的にC++二比べ言語体系がシンプルかつ作りやすくなっている。
・なお、.NET frameworkのライブラリはC#を主軸に考えられていると言っても過言ではない。
・基本的に.NET言語同士では、はどれを使っても本質的な速度差はでない。(内部的に同じ)

MDXの経歴
・1.0が公開される。
・fw1.1に対応したMDX1.1が公開される。
・fw2.0に対応するMDXを作るため、2.0ベータが公開される。
・MDX2.0ベータ、開発中止。XNAの開発が決定、進む。
→MDX2.0のDLLは誤って使わないように。実行できない。


ココまで微妙な立場もすごい。
211名前は開発中のものです。:2007/10/05(金) 02:55:37 ID:brA74PS+
そこまでわかっていて普及活動する理由/XNAになびかない理由

・作るのが簡単だから。

XNAは以下のことが不便。
1、Windows2000以前での動作不能
2、XBox360用コントローラーしか認識しない
3、XNAを使ったソフトの実行には、XNA Frameworkが必要。

→2がどう考えても致命的です。
212名前は開発中のものです。:2007/10/05(金) 05:51:28 ID:ymBkO7W+
MDXって正直どんな感じ?

スクリーン切り替えでロストしなくて文字描画ができる
テスクチャーが作れるんだったら、ありかな、って思うんだが

>>211
2のデメリットはC++経由でDirectInputのライブラリ作れば解決する問題だったりしない?
まぁ、俺は使用OSが2000だから導入できないけど
213名前は開発中のものです。:2007/10/05(金) 17:33:00 ID:3NiZkGUV
>>211
4、シェーダー2.0必須

なのも痛いよな
214名前は開発中のものです。:2007/10/06(土) 01:22:16 ID:ZutdyDT9
>>213
初耳。最新のMDXもシェーダがある程度対応してるGPUじゃないともっさりすると思うけどね。

>>212
こんだけマンセーしてる割に知識がなくてすいません。
原則として、多少楽になっているものの、大抵は普通のDirectXと同じです。

フルスクリーン切替や、フルスクリーン時の外部からの割り込みでグラフィックデバイスがロストするのは仕様です。
ただし、適切なリセットを行えば再構築されるはずです。(通常のDirectXでもそうでは?)
少なくともスプライトは特に何も問題は発生しません。

文字描画も普通のDirectXと大差はありません。Fontクラスをインスタンス化すれば、
その後はDrawTextで描画できます。
ただし試してません。今はちょっと込み合ってるので日曜まで待ってorz

・・・質問に対する答えになってるか不安だぜ・・・。

215211のつづき:2007/10/06(土) 01:25:56 ID:ZutdyDT9
開発環境まとめ

・.NET Framework 1.1 (C#1.1、MDX1.1の機能を使用するに必要)
・.NET Framework 2.0 (C#2.0の機能を使用するの必要)
・VisualStudio 2005 C# Express Edition (総合開発環境。かなり重い)
・↑のアップデータ (これをあてないと、ヘルプが正常に機能しない)
・DirectX ランタイム (.NET言語では開発ライブラリ = 実行ライブラリ)

※ DirectXランタイムを更新すると、最新のdllが使えるようになる。
ただし、最新のdllを開発時に使用すると、実行側でもそのランタイムが必要になる、と言うことである。

ちなみに自分は 2007 Juneのdllを使用している。


動作必要環境まとめ

・DirectX9.0c ランタイム (開発時のdllに対応したバージョン以降のもの。)
・.NET Framework1.1 (大抵は入っているはず)
・.NET Framework2.0 (こちらは入っていない可能性大。)
216名前は開発中のものです。:2007/10/06(土) 01:41:27 ID:ZutdyDT9
>>212後半
そこまでいったらそもそも最初からC++で組んだ方が楽な気がするし、実用性も高いと思う。
217名前は開発中のものです。:2007/10/06(土) 07:34:48 ID:PjwFQTia
>>214
具体的に言うと、DirectX8(7かも)からビデオとメインメモリの両方にデータを持って
ロストが発生したとき、自動的に復旧するというシステムが
DirectXとして側に追加されているわけなんだが…

で、スクリーンに文字はかけてもテクスチャに文字を書くには
どーにかこーにかしなきゃならなくて、その小細工が
DirectX8になったとたんに出来なくなってしまったと

DirectX9からはなんとかなるとか聞いたんだけど、まだ調べてないんで
その辺どうなんだろう?ってのが趣旨

ビデオカードには指定したフォントで文字を書くって機能は無いから
これをするのはなかなか厄介だ、って記憶だけある

DirectX9フルサポートと考えていいのかな?
218名前は開発中のものです。:2007/10/06(土) 08:00:48 ID:q3E/M8lC
MDX1.1は、DirectXで言えば、何相当になるんでしょ?

MDX2.xは(消えてしまったけど)何相当だったんでしょ?
というか、MDX1.xで完成されていたなら、MDX2.xの意味はなかったと思うのですが、どうなんでしょ
219名前は開発中のものです。:2007/10/07(日) 00:57:54 ID:KL55DreU
>>217
それは出来そうに無いかもしれません・・・。
ただ、フォントインスタンスの
・GetGlyphdata
・PreloadFont、Glyph、Text
あたりを使えばテクスチャを入手したり、ビデオメモリに文字情報を配置できるようです。

>>218
MDXのナンバーは、どの.NET Framework バージョンの上に作られているかを示してる(はず・・・)。
なので、DirectXのバージョンとは直接の関係無いと思われます。
仮に完成していれば、開発、実行時に.NET fw1.1は入らなかったでしょう。
220名前は開発中のものです。:2007/10/07(日) 16:08:47 ID:0tTgQJl5
> なので、DirectXのバージョンとは直接の関係無いと思われます。
いや、機能的な話です。
DirectX8総統だったら、DCとれなかったりしますよね?
221名前は開発中のものです。:2007/10/07(日) 19:51:19 ID:KL55DreU
あっはっは、全然わからない・・・・orz
不安なので調べました。
DC (デバイスコンテキスト)
GDI+などを使用するときに取得する必要があるものですね。


取得出来る気がしない・・・。通常のDirectxは出来るみたいなこと書いてありましたが。調べが足らないかな・・・
.NET言語はとにかく簡単に開発するのが目的なので、あまりそういう知識が無いまま来てしまいますね。
Directxでリフレッシュレートにあわせた更新をするウィンドウを作るのも、
全てコミコミで60行前後で出来てしまいますし。
(決まりきった手順など、.NET系言語ではではデフォルト設定が存在し作れるようになった、というところがが大きいですが)


例えばMDXとは関係ありませんが、C#で純粋にウィンドウを作るだけならば、外部で多少設定が必要ですが、
以下のコードで済みますしね。
class SampleClass : Form // ウィンドウを作るためのクラスを継承した。
{
}

static class SampleEntryPoint()
{
 static void Main()
 {
  SampleClass hoge = new SampleClass(); // コンストラクタでクラスからインスタンスを作成
  hoge.show();
  while (hoge.Created)
  {
   Application.DoEvent();
  }
 }
}
222名前は開発中のものです。:2007/10/10(水) 02:24:47 ID:QoU150o2
>>221
そう、まさにDirectX8でなくなったのがそのGetDCなんだな
ただ、非難轟々だったらしく、DirectX9で復活したらしいという話だけ聞いた

って言っても、そもそも.NETでDCが取れたところで、
DCを使ってどーのこーのできないと意味が無いね
その辺の関数がごっそり.NETに置き換わっている気がする
223207:2007/10/11(木) 09:50:19 ID:0CzcpLju
やっぱりコテったほうがいいのかな?
ぐぐればすぐに出てきたので報告までに。

ttp://www.microsoft.com/japan/msdn/academic/Articles/fun/04/
.NETの標準ライブラリ内にある画像描画関係のライブラリ(System.Drawing)はGDI+を使っているようです。
またこのライブラリに存在するPoint構造体、Size構造体やRectangle構造体
(いずれもXY座標や画像のサイズ、およびその組み合わせへの使用を想定した構造体)
などをMDXでは、割と引数等で使っているので、基本的にグラフィック関係をプログラムするときは
System.Drawingライブラリも参照しておくことがほとんどです。

基本的に
System.Drawing
Maicrosoft.DirectX
Maicrosoft.DirectX.Direct3D
のライブラリがあれば画像の描画には困らないと思います。
2Dゲームならばスプライト関係のみでほとんど画像描画はできます。

224207:2008/01/13(日) 23:25:13 ID:oBLdPERd
誰も見ていないのを承知で思い出したかのように4ヶ月ぶりにレスしてみたり。
さらにスレは3Dを作るのが目標なのに、まったく3D関連実装してる気配がないライブラリ。xファイルとか使ったことないし。作り方わからんし。

・Framework.Initialize() ・・・ゲーム製作に特化した状態にDirect3D、Input関連を初期化する関数
・Framework.Mdx.Accelerate() ・・・AltEnter、CtrlEnter、ShiftEnterが押されたか判定、モード切替、Fps切替、実装未定
・Framework.Mdx.WindowClose() ・・・ウィンドウを閉じる。
・Framework.Mdx.WindowModeToggle() ・・・モード切替。二つ↑のAltEnterはこれが呼ばれる。
・Framework.Mdx.WindowShow() ・・・ ライブラリ内で保持してるフォームインスタンスのShow()そのまま
・Framework.Mdx.WindowCreated ・・・ライブラリ内で保持してるフォームインスタンスのCreatedそのまま
・Framework.Mdx.WindowTitle ・・・タイトルバーに表示される文字列 (代入可)
・Framework.Mdx.Graph.DrawText(引数あり) ・・・非実用的デバッグ用。文字を表示したいときに。
・Framework.Mdx.Graph.MakeTexture(ファイル) ・・・テクスチャを返す。抜き色等は設定しないので事実上dds専用。
・Framework.Mdx.Graph.SpriteBegin() ・・・もともとあるSpriteBegin(アルファブレンド)そのまま。
・Framework.Mdx.Graph.SpriteEnd() ・・・もともとあるSpriteEnd()そのまま。
・Framework.Mdx.Graph.SpriteDraw(色々) ・・・2D画像描画に使用。
・Framework.Mdx.Graph.SpriteDrawFixed(色々) ・・・2D画像描画に使用。こちらは自動で画像の中心が基準になる。
・Framework.Mdx.Graph.Update() ・・・垂直同期を取りつつ描画する。(FpsSkipが1か2だと描画を間引く。)
・Framework.Mdx.Graph.Fps ・・・現在のFps (整数値、1秒ごとに更新するタイプ)
・Framework.Mdx.Graph.FpsSkip ・・・現在のFpsスキップ値。 (代入可。0〜2)↑のAccelerate()のCtrlEnterはこれを++してる。
・Framework.Mdx.Graph.Render ・・・関数ポインタ。描画関連の処理は全てひとつにまとめた後、このポインタに代入する。
225続き:2008/01/13(日) 23:27:45 ID:oBLdPERd
・Framework.Mdx.Input.Poll() ・・・入力機器関連を全て更新
・Framework.Mdx.Input.KeyFlg(対象のキー) ・・・押されていればtrue
・Framework.Mdx.Input.JoyFlg(対象のデバイス、対象のボタン) ・・・押されていればtrue
・Framework.Mdx.Input.JoyX(対象のデバイス) ・・・-1000〜1000で返る
・Framework.Mdx.Input.JoyY(対象のデバイス) ・・・-1000〜1000で返る

近く実装予定
・キーコンフィグ用のクラス
・シューティングの表示物向けクラス
・シューティングの弾幕を作成するための関数
・シーンを管理する機構
・音の再生に関するクラス
・カメラ、ワールド座標の実装、3Dスプライトの実装

いつか実装予定(3Dモデルが自分で作れるようになったら。)
・メッシュ、マテリアル、テクスチャをまとめた≒3Dモデルをそのままクラス化したクラス
・↑と何かを利用して、スプライトのように簡単に3Dを描画する関数。
226名前は開発中のものです。:2008/01/19(土) 02:51:53 ID:MZ4kIRhC
Managed directXでゲーム作成中なんだが、まともな資料やコミュニティがないので困るぜ。
どこか質問出来るとこは無いのだろうか。公式にもカテゴリ無いしな。
227名前は開発中のものです。:2008/01/19(土) 15:32:37 ID:EG6dJFOe
Managed って氏んだよね?
228207:2008/01/19(土) 19:53:52 ID:wecEoPCw
>>227
サンプルは少し前のSDKから添付されなくなったけど、ランタイムにはManagedが動くためのファイルはまだあります

>>226
基本的な情報なら
ttp://msdn2.microsoft.com/ja-jp/coding4fun/default.aspx
ttp://www.microsoft.com/japan/msdn/directx/japan/dx9/default.aspx
ttp://www.microsoft.com/japan/msdn/community/gdn/ShowForum-0.aspx

ここら辺でしょうか
他にも個人サイトが3つ4つあると思います
それでも足らない場合は、ネイティブDirectXのほうを見れば大体は解決すると思います。
229名前は開発中のものです。:2008/01/19(土) 22:55:03 ID:lZOHlVzA
D3DRMみたいにOS変わったらなくなりそうで怖いな
230名前は開発中のものです。:2008/01/20(日) 03:29:23 ID:FGM0szlo
>228
お、コミュニティのアーカイブは知らなかった。ありがとう。
しかし道程は遠そうだ。
いきなりManaged directXで3Dゲームを作ろうというのは無理があるのかね。
231名前は開発中のものです。:2008/01/21(月) 22:16:13 ID:QkkzJVl3
2Dのゲームは作ったが3Dは経験が無いので、
ぜひ>>230が道しるべを作っていってくれ。
232名前は開発中のものです。:2008/02/09(土) 22:26:04 ID:Ynomr7lQ
>>224のFramework名前空間がなんなのか気になるんだけど。
XNA?
233207:2008/02/10(日) 05:08:02 ID:/G3xnOO+
>>232
Frameworkは自作中のstaticクラスです。眠い。
234名前は開発中のものです。:2009/01/24(土) 15:26:54 ID:n8Xq5Wpj
C♯で3Dゲーム
http://pc11.2ch.net/test/read.cgi/gamedev/1017164698/l50

そういやこんなのもあったの忘れてた。
235名前は開発中のものです。:2009/01/24(土) 21:45:53 ID:H3qIe4rR
それこのスレじゃないっすか
236名前は開発中のものです。:2009/01/25(日) 20:30:41 ID:L+MfRmk2
あ、これC#でゲームでつくろうスレにレスしようとしてミスったやつです。
お気になさらずに。
237名前は開発中のものです。
今、初めてこのスレを見つけたが、これでいいんじゃん?

SlimDX と C# で学ぶ DirectX
http://mainori-se.sakura.ne.jp/slimdxwiki/wiki.cgi?page=FrontPage
サンプルとか適当に改変してあそんでみ

理屈がわかっていれば今時Managedにこだわる必要はないはず。