ここから本文です

解決済みのQ&A

DirectXかDXライブラリで2D格闘ゲームを作りたいです。

rekkuuza21さん

DirectXかDXライブラリで2D格闘ゲームを作りたいです。

DirectXは覚えることが多いのだの、難しいだのと聞きます。しかし、やはりDirectXは奥深いゲームを作れると思います。一方、DXライブラリは、DirectXを簡易にしたと聞きます。2Dゲームを作るなら問題ないと自分は思います。
「DiectXで2Dゲームを作るのはおかしい」などと聞くこともあります。それは、DirectXで2Dゲームを作るのはDirectXの機能をあまり発揮していないという意味なのでしょうか?
もうひとつ、DXライブラリで2D格ゲーとDirectXで2D格ゲー、やっぱりDirectXのほうがすばらしい作品が出来上がるのでしょうか?
皆さんのご意見をお願いします。

補足
上記に WindowsAPIを追加します。(DirectXとDXライブラリとWindowsAPIでは・・・ということです。)
ご迷惑をおかけします。
  • 質問日時:
    2009/1/19 23:48:58
  • 解決日時:
    2009/1/23 22:28:14
  • 閲覧数:
    10,583
    回答数:
    2
  • お礼:
    知恵コイン
    100枚

ベストアンサーに選ばれた回答

masaaki_nagao_01045さん

簡単に説明するとまず1つ。
「DXライブラリ」は「DirectXの関数」を簡単に扱えるようにした物なので
DirectXでゲームを作るのとDXライブラリでゲームを作るのは等価と思って問題ない。
(少なくとも超ハイレベルなプログラムを組まない限りは等価と思って問題ないです。)

ただしDirectXの機能を直接扱わずDXライブラリを介するので速度が落ちる点と
DXライブラリに実装されていない関数がある事を考慮しなければならない。
また、DirectXは元はと言えばWindowsAPIの一種です。
という事を念頭に置いて、

>「DiectXで2Dゲームを作るのはおかしい」などと聞くこともあります。
>それは、DirectXで2Dゲームを作るのはDirectXの機能を?あまり発揮していないという意味なのでしょうか?
それは多分「3Dのご時勢で3Dの機能があるのにわざわざ2Dで作るのはおかしい」という意味だと。
詳細な区分け等は前の回答者さんが書かれているので割愛しますが、
3Dの機能は2Dの機能を必ず内包しています。
(DirectXに限らず。画面は2Dな訳ですから内包してないと実際にディスプレイに映像を出せません)
そういう意味で2Dのゲームを作るのはおかしい訳ではありません。
ただ、3D用機能を主軸としている現在のDirectXでは2Dの映像を描写するにも3Dの機能を利用します。
(2D画像の回転などは3D機能を利用して回転します。)
2Dより3Dの方が必要な情報量は多い訳で、3D用の機能を使って2Dを描写するのは無駄があり、
そういう意味では「おかしい」とも言えなくもありませんが。
ただ、前の回答者が仰っている様にDirectX対応のグラフィックボードがないといけない訳で。

機能としては、
WindowsAPI<DirectX
速度としても(グラフィックボード装着環境下なら)
WindowsAPI<DirectX
互換性は
WindowsAPI>DirectX

>DXライブラリで2D格ゲーとDirectXで2D格ゲー、やっぱりDirectXのほうがすばらしい作品が出来上がるのでしょうか?
格闘ゲームで「素晴らしい」と言うならゲームバランスが主軸でしょうけど、
ゲームバランスはDirectXやWindowsAPIとは全く関係のないプログラミング部分の問題です。
よって、画像描写部分の問題だから「絵」次第です。
としか良い様がありません。
「絵」が一緒ならまったく同じゲームを作る事は可能。

「ゲーム」としての画像の出力やダメージなどの計算を行って結果を作るのが通常の「プログラム」
結果として出てきた数値を利用して実際に画面に描写してくれるのが「WindowsAPIやDirectX」
「ゲームの素晴らしさ」はWindowsAPIやDirectXとは全く関係のない通常のプログラミング部分や
元になる画像にあると言えます。
そして元になる画像を混ぜ合わせたり回転したりという処理を回転角度や混合率を与える事で行ってくれるのが「DirectX」
なのです。

結論から言うと
「画像の回転処理を行わないなら」WindowsAPI
「高度なプログラミングをしないなら」DXライブラリ
「高度なプログラミングをするなら」DirectX(直接制御で)

という区分けになりますが、Windows95などでも素で利用できるWindowsAPIの方が
「プレイヤーに対して配慮が行き届いているゲーム」という事になります。
ただ注意したいのはGDI+などDLLの導入を行わないと95等では利用できないAPIもあるので
その辺は勉強しないといけません。
ただ2次元の画像を描写するならWindowsAPIで十分です。

必要であればWindowsAPIのみで作成したゲームをお渡しする事もできます。
(プロフィールから連絡は取れます。)
ただしお渡しする場合、
WindowsXPからしか利用できない(DLL導入すれば95でも問題ない)GDI+を使っているので注意して下さい。

※WindowsAPIでも簡単に実現できますが、画像の拡大・縮小を行うのであればDirectXを推奨します。
また、C言語で作成するなら描写画面を勝手に作ってくれるDXライブラリをお勧めします

質問した人からのお礼

  • ありがとうございます。
  • コメント日時:2009/1/23 22:28:14

グレード

ベストアンサー以外の回答

(1件中1〜1件)

 

abiko_tetuさん

>DiectXで2Dゲームを作るのはおかしい


それは、基本的には、おかしくは無く、しかし、ある意味ではおかしいです。
(「おかしい」とまでは言いませんが、「別の選択もある」というところです)


[おかしくは無い理由]

DirectXにも、以前のバージョン(7.1以前)ではDirectDrawという2D用の機能が搭載されていたので、DiectXで2Dゲームを作るのは何も変ではありません。
ちなみに、DirectX8.0で、2D用のDirectDrawと、3D用のDirect3Dが統合されてDirectX Graphicsになりました。
ただし、統合と言っても、それまでにDirectDrawでプログラミングしていた人のために、DirectX Graphicsの一部として残したという感じです。
今は、DirectXで2Dをする人は、3Dと同じ方法で、z軸座標値を零で固定している人もいます。
「なぜ、3Dと同じ方法を使っているのに、2Dにするの?」と思うでしょうが、2Dの方が構成が簡単だからです。
3Dゲームだって、キャラクター自体と、その手足の動きは3Dだが、全体の動きは2D的な場合が多いでしょ。
飛んだり跳ねたりしながら、幾種類もの術を使うアクションゲームでは、奥行きがあるとややこしいでしょ。
3Dの格闘ゲームも、よく見ると全体の動きは、2D的な平面の動きです。
画面の手前にいる敵キャラクターを、奥側の自キャラクターで技をかけるなんて、ややこしいです。
話しがそれてきましたが、3Dでも2D的要素は重要だと言う事です。


[おかしい理由]

「おかしい」というか、「別の選択もある」という理由ですが、2DならDirectXを使わなくても、コンパイラーに備わっている機能だけでも十分に可能だからです。
WindowsAPIを使えば、コンパイラーの種類に殆ど依存しないプログラミングが可能です。
しかし、コンパイラーに備わっている機能を使った方が、簡単で高機能です。
この簡単で高機能な、コンパイラーに備わっている機能とは、.NET仕様によるクラスライブラリの事で、Visual Studio(VB、VC++、VC♯)で使えます。
「WindowsAPIの方が高機能では無いの?」と思うでしょうが、WindowsAPIはWindows95当初から続いている機能で、WindowsXPから.NETという新技術が加わりました(入れ替わりまいたと言いたいところですが、旧仕様も使えますので)。
WindowsAPIの2D機能と、.NETの2D機能は、どちらが高機能か微妙ですが、.NETなら高機能まで簡単に取り扱えます。
高速処理を求めるならWindowsAPIの方を選択します。


[DirectXとWindowsAPIの比較]

DirectXは、DirectX対応のグラフィックボードが無ければ動作しません。
しかし、逆に言えば、グラフィックボードを直接制御するのがDirectXですので、最高速です。
.NETのクラスライブラリより確実に速いし、WindowsAPIと比べても速いです。
ある意味DirectXは、グラフィック機能やサウンド機能のWindowsAPIとも言えます。
グラフィック機能をハードという形で提供してくれるのがグラフィックボードですので、それを制御するDirectXが一番速いです。


DirectXは、Windowsが提供するAPIではありますが、一般にWindowsAPIという呼称はWin32 API(Windows95当初から提供されたAPI)の事です。
DirectXは、後からCOMという技術で付け足されたAPIのひとつです。
(誤解を招いていたら申し訳ないので、付け足しました)


[DirectXとDXライブラリの比較]

DXライブラリは使った事は無いのですが、DirectXをラップするライブラリ一般という事で話します。
DirectXは高機能ですが、その分、関数の引数が多かったり、色々な構造体を多用していますので、難しく見えます。
それ程まで機能を活用しないのなら、DirectXをラップしたライブラリを使ったほうが簡単です。
取りあえず、DXライブラリで慣れてから、その後DirectXに移行するのも良いと思います。
DXライブラリの使い方がDirectXと対応関係にあるとは限りませんが、少なくとも、WindowsAPIや.NETのクラスライブラリよりは関連性があります。


一番良いのは、DirectXが高機能、高速処理ですので、DirectXの選択です。
難しいと感じたら、上記を参考にされて、DXライブラリ等のどれかを選ばれると良いと思います。

ただし、難しいと感じたらXNAの選択も良いです。
XNAは、DirectXにラップした機能で、マイクロソフトの技術ですので。
言語はC♯ですが、for文、if文等の基本は、C/C++と同じで、VB風に簡単にした言語です。
言語としても、グラフィック機能としても、初心者に優しいです。

  • 違反報告
  • 編集日時:2009/1/20 14:10:22
  • 回答日時:2009/1/20 03:42:42

Q&Aをキーワードで検索:

総合Q&Aランキング

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。

知恵コレに追加する

閉じる

知恵コレクションをするID/ニックネームを選択し、「追加する」ボタンを押してください。
※知恵コレクションに追加された質問や知恵ノートは選択されたID/ニックネームのMy知恵袋で確認できます。

ほかのID/ニックネームで利用登録する