ここから本文です

これで合っていますか?3Dのゲームの作り方

このエントリーをはてなブックマークに追加

質問者

luiiigiiieeeさん

2009/8/1103:16:49

これで合っていますか?3Dのゲームの作り方

個人で3Dゲームを作るのに必要なソフトなどを、
聞いたり調べたりしてなんとか理解してまとめてみたんですが、
これで合っていますか?

1.前提
プログラミング(C++など)、数学、物理の知識、2Dゲームを作れる技術

2.ソフトなど
・3Dを作るソフト
・3Dにモーションをつけるソフト
・DirectX

仕組み
DirectXにC++など記述して
あらかじめ作っておいた3DCGを表示して制御する→3Dゲームとなる


以上なんですが、合っているのかどうか、
間違っていたら何が足りないか教えてください
よろしくお願いします

閲覧数:
10,207
回答数:
3

違反報告

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

グレード

知恵袋マスター

abiko_tetuさん

編集あり2009/8/1112:29:17

[WindowsAPI]


C++といったプログラミング言語の標準仕様の範囲だけでは、標準的な事だけですので、実際のプログラミングではOSの機能を利用する場合が多いです。
具体的には、ボタンやテキストボックスといったウィンドウ用の各種部品や、ウィンドウ自体は、WindowsAPIを使ってプログラミングをします。
Windows APIは、WindowsというOSが、そのOS自体の機能を外部公開した関数群です。



[DirectX]


Windowsは、2Dとビープ音だけでは足らないので、3Dまで扱えるグラフィックス機能と、高度なオーディオ機能が付け足されました。
それがDirectXです。
ただし、ワープロ等のビジネスソフトの利用が目的のユーザーには、3D等は不要ですので、オプションで付け足す形式です(Vista以降では、オプションではなく、最初から装備)。

なお、DirectXは、意味的には前述のWindowsAPIと同じですが、一般にはWindowsAPIというと、DirectXの機能範囲(3D等)を含めない範囲を言います。
よって、ここでも別々のものとして取り扱うことにします。



[OpenGL]


DirectXの他にも、OpenGLという選択肢があり、DirectXはWindows限定ですが、OpenGLはマイクロソフト系でない開発環境でも使えます。
ただし逆に言えば、Windowsの機能のフル活用が可能な、DirectXを選ぶ人が多いです。



[必要なもの]


DirectXプログラミングをするのならば、WindowsAPIの習得は必須です。
ただし、DirectXの入門書に書かれている基本的なことだけでOKですので、あらたまってWindowsAPIの学習を始める必要はありません。
なぜならば、APIは、大半がDirectXとして提供される機能を利用すれば良いからです。



[数学や物理]


x、y、z座標とか、三角関数程度の基礎は知っている必要がありますが、影や光といった高度な計算は、DirectXのほうでやってくれます。
もちろん、「水の跳ね上がりをリアルにしたライブラリを物理研究チームが開発した」といった類の話しもあります。
しかし、基本はDirectXの機能範囲で十分です。
むしろ、物理にこだわり過ぎると処理が重くなります。



[XNA]


マイクロソフト系は、ゲーム系に限らず全般的に、.NET(ドットネット)と呼ばれる新技術に入れ替わりだしています。
DirectX系でも、DirectXの上にラップして、.NET化したXNAがあります。
XNAという技術では、PCゲームでの開発環境と、Xbox360の開発環境が統合されました。
DirectXは、難しくて挫折する人は多いですが、XNAのほうが分かりやすく簡単です。
言語は、C♯のみに限定されます。

ところで、DirectXに限らない一般のプログラミング全般の場合では、WindowsAPIを学習しなくても良い場合が多いです。
それは、WindowsAPIは難しいので、コンパイラーが提供する機能を利用したほうが簡単です。
すなわち、WindowsAPIの上にラップして、もっと簡単にした機能として、コンパイラー側が用意してくれます。

XNAプログラミングにおいても、C♯が分かれば、あとはXNA自体の機能を学ぶだけでOKです。
WindowsAPIやDirectXは気にしなくて大丈夫です。



[C♯]


C♯は、.NET技術での開発用にC++を改良した新言語のようなものです。
なお、アーケードゲームやゲーム専用機等を含めて、広い範囲でのゲームとしては、C♯よりもC/C++の方が重要です。
しかし、Windows系のみに限定するのならば、新技術関係は、逆にC♯のほうが重要になって行きます。

C♯は、C系の言語ではありますが、JavaやVB的な仕様を取り入れているので、C/C++より簡単です。
よって、C++を学ぶ前の入門言語としてC♯を学習する人も多いようです。

このことから、

C♯ + XNA

のほうが、3D機能としても、言語としても、どちらも簡単で良いと思います。


それに3DなのでXNAをおすすめしましたが、.NETによる新技術は他にもあり、C♯ならば他の技術も取り扱えます。
Silverlightは、インターネットエクスプローラー(IE)にプラグインするプログラムです。
将来的には3Dも可能ですが、まだ当分は2Dが中心になると思います。
Adobe Flashに対抗する技術ですので、IE上で動作する、ちょっとしたゲーム性のあるPGを作れます。


その他にWPFは、3DをWebで可能にしたものです。
前述のSilverlightは、DirectXへの依存性は無いです。
WPFはその逆で、底部でDirectXが動作していて、DirectXのWeb版のような存在です。
現行マシンでは、まだ無理がある気がしますのでXNAの方をおすすめしましたが、将来性は高いです。




[今後のDirectX学習]

DirectXは、一応旧技術という位置にはありますが、だからと言ってDirectX学習が無駄という訳ではありません。
むしろ、新技術と組合わせて高度なことが可能です。

XNAをおすすめしたのは、新技術としておすすめしただけではなく、つまづかないようにするためです。
XNAを学び終えて余裕があれば、DirectX学習もぜひチャレンジして見て下さい。



[追記]


普通DirectXの入門書にはサンプルが付いているので、最初はWinAPIは、その基礎範囲だけでも大丈夫ですよ。

質問した人からのコメント

2009/8/15 00:08:15

降参 皆さん回答ありがとうございます
とても詳しくて具体的に何をすればいいのか分かってきました
これらの回答を参考に頑張ろうと思います
本当にありがとうございました

ちょい足しを取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル
  • このエントリーをはてなブックマークに追加

このQ&Aで解決しましたか?質問する

閉じる

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

1〜2件/2件中

並び替え:回答日時の
新しい順
|古い順

zwigooさん

編集あり2009/8/1111:38:40

ほとんど説明されているので、ゲーム使われている3D表示の過程についてと参考になるサイトを紹介しておきます。

[プロの場合の3D表示までの過程]

3Dモデリングソフトでモデリングして、テクスチャを張る。

3Dモーション作成ソフトでモデルのモーションを付ける。
場合によってはモーションキャプチャしたデータを補正して使用。

ゲームエンジンのツールを使ってシェーディングやライティングの情報を付与。

↓ここまでは、3Dグラフィックデザイナーのお仕事。ここから下がプログラマーのお仕事。

操作やAIの処理をプログラミングして、それぞれにの状況に必要なモーションデータを選ぶ。

モーションデータに対して地面角度の補正やモデルに対しての自然現象(風など)の補正を加える。ここも大半がゲームエンジンがやってくれます。

3Dモデルとモーションと組み合わせて表示する。ゲームエンジンが表示を担当。
シェーディングやライティング処理はゲームエンジンがやってくれます。


[アマチュアの場合の3D表示までの過程]

3Dモデリングソフトでモデリングして、テクスチャを張る。

3Dモーション作成ソフトでモデルのモーションを付ける。

操作やAIの処理をプログラミングして、それぞれにの状況に必要なモーションデータを選ぶ。

モーションデータに対して地面角度の補正やモデルに対しての自然現象(風など)の補正を加えるプログラミング。

3Dモデルとモーションと組み合わせてDirectXで表示する。
シェーディングやライティング処理を自分でプログラミングして行う。

ゲームエンジンの有無でプログラマーのやる仕事に違いが出る事が分かってもらえれば幸いです。


>あらかじめ作っておいた3DCGを表示して制御する
実際には、3Dモデルを表示して終わりって事はありません。さまざまなシェーディング技術でリアルに見せたり、幻想的になったり雰囲気作りで大切な技術があります。
実際にはゲームエンジンが大半の事をしてくれるのでゲームエンジンの開発者にならない限りはプログラマーとして関与する事は少ないかもしれませんが、技術を知らないと使う事が出来ませんのでどんな物があるかだけでも把握してください。アマチュアの場合自分で行う事になりますが、如何にプロのレベルで表示する事が難しいかやってみると分かります。

「3Dゲームファンのためのグラフィックス講座」
http://game.watch.impress.co.jp/docs/series/3dcg/
どんな技術が使われているか、それはどんな効果をもたらすかを把握しましょう。

「3Dグラフィックス・マニアックス」
http://journal.mycom.co.jp/column/graphics/index.html
上のサイトと書いている人は同じです。
まぁ、プログラマとして最新の知らないと恥ずかしいだろって事で3Dの技術的な話です。
最終的にざっくりとした把握が出来ればよいです。

最初はまったく意味が不明でしょうが、プログラマを目指す限り最新情報を追いかけ続けてくださいね。

>ただし、DirectXの入門書に書かれている基本的なことだけでOKですので、あらたまってWindowsAPIの学習を始める必要はありません。

私も最低限のOSやAPIの知識が無いと組めないと思いますよ。
ゲーム会社に提出するプログラムの出来が悪いと、それだけで落とされますからね。
Windowモードに切り替えたら落ちるとか、スレッドが使えてないとか減点対象ですね。
それにベース技術を知らないゲームプログラマってプログラマとしてずっと下っ端ですよ。ゲームエンジンの開発などの難しい技術関係の会議で「ぽかーん」状態だし。

ちょい足しを取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

nogue_0さん

2009/8/1110:40:38

>ただし、DirectXの入門書に書かれている基本的なことだけでOKですので、あらたまってWindowsAPIの学習を始める必要はありません。

これ本当ですか?
DirectXアプリといっても、ウィンドウモードで動作させることがあるはずで、UIとかはかなりの部分をAPIで書かないといけないのではないかと思いますが、Generic.cをきちんと理解して書けるレベルまで「DirectXの入門書」がちゃんと説明してるのでしょうか?

いえまあ、以前にそのへんを全然わかってない質問者さんがいたもので。
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1026008220
とか。

ちょい足しを取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

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

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

ID/ニックネームを選択し、「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問や知恵ノートは選択されたID/ニックネームのMy知恵袋で確認できます。

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