188 :
名前は開発中のものです。:2006/01/28(土) 14:12:49 ID:gWzWm1wV
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はゲーム用としては実用性に難有だし。
64bit機の発売が迫った今こそ.NETとC#に乗り換える奴が増えそうなものだが
VBでもMC++でも.NET開発できるし、C#って本当に微妙な言語だよなぁ・・・
JAVAプログラマを取り込めた気もしないし、C#を何とかしてくれMS
>>186-187 洋書なら多いんだけどな
日本のライターは完璧な商業主義だから翻訳するなら他の本を選ぶし、
日本語版MSDNに書いてあるリファレンスレベルの入門書しか書かないし
ほんと、C♯に限らずMSの最新技術スキーは地獄だぜフゥーハハァー
>>172 徹底的なオブジェクト指向プログラミングは、
ゲーム作成に向いているのかという問題があるような気がするなぁ。
ゲーム作成で、デザパタとか使っている人いる?
うむ、やってみようと思ったがエラーが起こった
やはり俺のノートPCじゃVRAMが足らんのかな
195 :
193:2006/01/28(土) 20:59:29 ID:1zN1tpQ6
>>194 VRAM32Mでも動作するので、
DirectX Sample BrowserのManagedサンプルのどれかが動作するなら、
アプリ側に問題があります。
すみません。
.NET FrameworkとManaged DirectX のランタイムが
入っていることが動作条件になっています。
なにが原因か表示できれば良いのですが。
>>195 楽勝でVRAM32Mもありません、どうみても俺のノートPCに問題があります
本当にありがとうございました
>>192 使ってる。
というか.NET自体がデザパタ使ってるし。
2DゲームならC#でも問題ない。
多分3Dでもモノによってはいけるかと。
2DならHSPとかでも十分。とか言う意見もあるかもしれんが
生産性で言ったら多分C#の方が全然良い。と思う(ていうかHSP詳細知らんw)
HSP2 以降は変わったかもしれないが……HSP は、全変数がグローバルなのが何とも orz
少し大きなモノになると、たちまち破綻するよ。
VS2005(及びExp)でC#や.NET人口増えるかな?
無料版あるなら使ってみるか〜、という声はあちこちで聞くし、少しは増えると思う
おいらもDelphiからC#に乗り換えたし
XNA FrameworkでC#がXbox360で動くよ、といっても日本じゃ
インパクトなさげ。
書籍のパソコン教科書シリーズのVisualC#の解説書の付録CDでインストールしたんですが
framework2.0 はインストールされましたがSDKはされませんでした。(入っていない?)
それでも普通にビルドできるんですが、frameworkのSDKはどんなときに必要になるんでしょうか?
誤爆しましたorz
206 :
名前は開発中のものです。:2007/10/05(金) 01:07:07 ID:RS4GR0/A
C#スレ発見!
音楽の♯とかでタイトルかかれたら検索できるわけないwww
>>207 せっかくだからこのスレ使ってみろよ
意地張るこたねー。力抜け
209 :
名前は開発中のものです。:2007/10/05(金) 02:25:07 ID:brA74PS+
と言うわけで、C#+ManagedDirectXで3Dゲームを作るのを最終目標に普及。
ただし3D周りはいじくったことありませんが。
てな訳で適当に質問どぞー
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は誤って使わないように。実行できない。
ココまで微妙な立場もすごい。
そこまでわかっていて普及活動する理由/XNAになびかない理由
・作るのが簡単だから。
XNAは以下のことが不便。
1、Windows2000以前での動作不能
2、XBox360用コントローラーしか認識しない
3、XNAを使ったソフトの実行には、XNA Frameworkが必要。
→2がどう考えても致命的です。
MDXって正直どんな感じ?
スクリーン切り替えでロストしなくて文字描画ができる
テスクチャーが作れるんだったら、ありかな、って思うんだが
>>211 2のデメリットはC++経由でDirectInputのライブラリ作れば解決する問題だったりしない?
まぁ、俺は使用OSが2000だから導入できないけど
>>211 4、シェーダー2.0必須
なのも痛いよな
>>213 初耳。最新のMDXもシェーダがある程度対応してるGPUじゃないともっさりすると思うけどね。
>>212 こんだけマンセーしてる割に知識がなくてすいません。
原則として、多少楽になっているものの、大抵は普通のDirectXと同じです。
フルスクリーン切替や、フルスクリーン時の外部からの割り込みでグラフィックデバイスがロストするのは仕様です。
ただし、適切なリセットを行えば再構築されるはずです。(通常のDirectXでもそうでは?)
少なくともスプライトは特に何も問題は発生しません。
文字描画も普通のDirectXと大差はありません。Fontクラスをインスタンス化すれば、
その後はDrawTextで描画できます。
ただし試してません。今はちょっと込み合ってるので日曜まで待ってorz
・・・質問に対する答えになってるか不安だぜ・・・。
開発環境まとめ
・.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 (こちらは入っていない可能性大。)
>>212後半
そこまでいったらそもそも最初からC++で組んだ方が楽な気がするし、実用性も高いと思う。
>>214 具体的に言うと、DirectX8(7かも)からビデオとメインメモリの両方にデータを持って
ロストが発生したとき、自動的に復旧するというシステムが
DirectXとして側に追加されているわけなんだが…
で、スクリーンに文字はかけてもテクスチャに文字を書くには
どーにかこーにかしなきゃならなくて、その小細工が
DirectX8になったとたんに出来なくなってしまったと
DirectX9からはなんとかなるとか聞いたんだけど、まだ調べてないんで
その辺どうなんだろう?ってのが趣旨
ビデオカードには指定したフォントで文字を書くって機能は無いから
これをするのはなかなか厄介だ、って記憶だけある
DirectX9フルサポートと考えていいのかな?
MDX1.1は、DirectXで言えば、何相当になるんでしょ?
MDX2.xは(消えてしまったけど)何相当だったんでしょ?
というか、MDX1.xで完成されていたなら、MDX2.xの意味はなかったと思うのですが、どうなんでしょ
>>217 それは出来そうに無いかもしれません・・・。
ただ、フォントインスタンスの
・GetGlyphdata
・PreloadFont、Glyph、Text
あたりを使えばテクスチャを入手したり、ビデオメモリに文字情報を配置できるようです。
>>218 MDXのナンバーは、どの.NET Framework バージョンの上に作られているかを示してる(はず・・・)。
なので、DirectXのバージョンとは直接の関係無いと思われます。
仮に完成していれば、開発、実行時に.NET fw1.1は入らなかったでしょう。
> なので、DirectXのバージョンとは直接の関係無いと思われます。
いや、機能的な話です。
DirectX8総統だったら、DCとれなかったりしますよね?
あっはっは、全然わからない・・・・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();
}
}
}
>>221 そう、まさにDirectX8でなくなったのがそのGetDCなんだな
ただ、非難轟々だったらしく、DirectX9で復活したらしいという話だけ聞いた
って言っても、そもそも.NETでDCが取れたところで、
DCを使ってどーのこーのできないと意味が無いね
その辺の関数がごっそり.NETに置き換わっている気がする
223 :
207: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ゲームならばスプライト関係のみでほとんど画像描画はできます。
224 :
207: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を描画する関数。
Managed directXでゲーム作成中なんだが、まともな資料やコミュニティがないので困るぜ。
どこか質問出来るとこは無いのだろうか。公式にもカテゴリ無いしな。
Managed って氏んだよね?
228 :
207:2008/01/19(土) 19:53:52 ID:wecEoPCw
D3DRMみたいにOS変わったらなくなりそうで怖いな
>228
お、コミュニティのアーカイブは知らなかった。ありがとう。
しかし道程は遠そうだ。
いきなりManaged directXで3Dゲームを作ろうというのは無理があるのかね。
2Dのゲームは作ったが3Dは経験が無いので、
ぜひ
>>230が道しるべを作っていってくれ。
>>224のFramework名前空間がなんなのか気になるんだけど。
XNA?
233 :
207:2008/02/10(日) 05:08:02 ID:/G3xnOO+
>>232 Frameworkは自作中のstaticクラスです。眠い。
それこのスレじゃないっすか
あ、これC#でゲームでつくろうスレにレスしようとしてミスったやつです。
お気になさらずに。