- 締切済み
勉強になるゲームのプログラミングの本
ゲームを作ってみたいと思っています! 参考になる本や資料があれば教えていただけないでしょうか? 目標は3Dゲームを作ることです。 参考となる本や資料は説明しか書いていないノウハウ本よりも、 コードが多めのもので構いません。 難易度も問いません。 言語についてもC・C++に限定するつもりはないです。 (現在習熟中の言語は、C・C++とVB) よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- srwproject
- ベストアンサー率0% (0/0)
ゲーム開発を入門されるということで、オススメの入門の流れと個人的にゲーム開発を経験して感じたことなどを書かせていただきます。 ゲームを開発するには大きく分けて二つの手段があります。 まずはどちらを選ぶのかを決めましょう。 1.プログラムを1から書く 2.ゲームエンジンを使う ■1.プログラムを1から書く場合 プロを目指される方向けです。 ●やらなきゃいけないこと ▼その1:数学 3Dゲームを開発するためには様々な数学的知識が必要となります。 特に3Dゲームの場合は以下の数学を用いることが多いです。 ・三角関数 ・ベクトル ・内積&外積 ・行列(マトリクス) ・クォータニオン ▼その2:グラフィックスAPIの習熟 3Dグラフィックスを表示するためにはGPUに描画するデータを渡す必要があります。 GPUとデータのやりとりをするためにはグラフィックスAPIを介するため、自分でAPIのラッパーを組む必要があります。 現在ではOpenGLかDirectXのDirect3Dの二択です。 ・Direct3D DirectXというAPIのパッケージに含まれるコンポーネントの一つです。 Direct3D11.1以降ではD3DXという補助ライブラリが削除されてしまい、既存のソースコードとの互換性が失われてしまいました。 代わりにDirectXToolKitやDirectXTexというC++専用の補助ライブラリが公開されています。 バージョンの幅が広くDirectX全体での資料の数はOpenGLよりもはるかに膨大だと思います。 ・OpenGL(スマートフォン・MacOSなら一択) OpenGLでは開発・動作OSを選びません。 個人的な感想ですが、インターネット上における日本語での3D表現技法の解説はOpenGLを用いたものが多いような気がします。 ▼その3:各種処理のライブラリ化 ゲーム開発においては必ずと言えるほど修正作業が入り、修正対象のコードがあちこちに点在するととても厄介です。 なのでよく使う処理や関数、クラスをライブラリ化することが重要です。 例えば衝突判定に関する処理などはライブラリ化することになります。 他にも前述のグラフィックスAPIのラッパーをライブラリ化したり、ゲームのシステムがある程度固まればフレームワーク化して管理しやすくすることも大切です。 ●まとめ 以上のことから、1からプログラムを書いて3Dゲームの開発入門をしようとするのはとてもハードルが高いです。 プロになりたいわけでもなく本当はプログラムも書きたくない、といった方であればおとなしく次点の選択肢である「ゲームエンジン」を利用するのが最も賢い選択でしょう。 ■2.ゲームエンジンを使う場合 ▼開発速度や効率 使用するエンジンと開発するゲームによっては「使い方の勉強→素材集め→ゲーム開発」といった一連の流れが一週間もあれば終わるでしょう。 最近ではUnityやUnrealEngineといった高性能な無料のゲームエンジンがあるので、ちょっとゲームを作ってみたいという方にはとてもオススメです。 上記二つのエンジンではAssetStoreという機能により、他のユーザーが作成して公開した各種素材やモジュール化されたプログラムが利用できます。 これらを組み合わせるだけで簡単にゲームが作れるので非常に高速かつ簡単にゲーム開発が行えます。 ▼やらなきゃいけないこと:使い方を覚える チュートリアルを実践しましょう。 やらなきゃいけないことはこれくらいです。 ▼まとめ 圧倒的な速度と効率、そしてゲームの作りやすさがそこにあります。 プログラムが書けなくてもインターネットで「ゲームエンジンの名前(例えばUnity) 目的のプログラム(例えばAIやキー入力) アセット オススメ」と検索するだけでおそらく見つかります。 思いついたゲームを作ってみたいというだけであれば使わない理由はないです。 ■難しいのはわかった!それでもプログラムを書いてゲームを作りたい方の場合 プログラムの習熟を目的にされている方やプロを目指される方であればやはりこちらを選択されると思います。 ●やったほうがいいこと ▼その1:公開されているライブラリを使おう 正直なところ私もしっかりと3Dの数学を理解できているわけではありません。 それでも1からフレームワークを自作し、DirectX11を用いて3Dのアクションゲームを作れました。 ひとえにライブラリのおかげでしょう。 難しい3Dに必要な計算(例えばマトリクスやクォータニオンの生成)は算術ライブラリを用いて行えますし、グラフィックスAPIに関しても補助ライブラリがあります。 ▼その2:物理エンジンを使おう 3Dゲームを開発するのであれば使うべきでしょう。 正直企業でも完全に自社製の物理エンジン・ライブラリを使用しているところは少ないと思います。 それほど公開されている物理エンジンが高品質で扱いやすいからです。 ただしプロのゲームプログラマーを目指されるのであれば物理エンジンは使わずに自分で一通り物理ライブラリを組んでみることをオススメします。 ●「ゲームプログラム」入門においてのオススメ ▼まずはゲームロジックに関するプログラムを勉強しましょう。 ・その1:DXライブラリを使おう グラフィックスAPIに触れる必要がないので、ゲーム開発の入門には最適です。 ・その2:2Dシューティングゲームを作ろう シューティングゲームには様々なジャンルに共通する要素があるのでとても勉強になります。 ・その3:3Dパズルゲームを作ろう 3Dの描画や3Dゲームプログラミングに慣れましょう。 ・その4:3Dアクションゲームを作ろう 3Dに慣れたらいよいよアクションゲームを作ってみましょう。 この頃になれば恐らく3Dとゲームプログラミングについて詳しくなっていると思います。 ■オススメ一覧 では長々と書きましたが本題であるオススメのもの一覧をピックアップしていきたいと思います。 ●プログラムを書いてゲーム作りたい方向け ▼グラフィックスAPI ・DirectX(コンシューマゲームを作りたい方) ・OpenGL(スマートフォンやWindowsOS以外で動作するゲーム) ▼フレームワーク ・Cocos2d-x(スマートフォン用) ▼ライブラリ ・DXライブラリ(ゲーム開発入門・コンシューマゲーム入門用) ・DirectXToolKit(DirectX用) ・DirectXTex(DirectX用) ・DirectXMath ▼エンジン ・Havok ・PhysX ・Bullet ▼サイト ・マルペケつくろーどっとこむ(※初心者向け) http://marupeke296.com/ ・新・ゲームプログラミングの館(※初心者向け) http://dixq.net/g/ ・全日本学生ゲーム開発者連合 交流会 発表資料置き場+α(※中級者~向け) http://www.zengeren.com/content/wiki/ ・ZeroGram(※上級者向け) http://zerogram.info/ ▼本 ・ゲームプログラマのためのC++ ISBN-13: 978-4797366761 ・実例で学ぶ ゲーム開発に使える数学・物理学入門 ISBN-13: 978-4798130866 ・動かして学ぶ3Dゲーム開発の数学・物理 ISBN-13: 978-4798136929 ・ゲーム開発者のためのAI入門 ISBN-13: 978-4873112169 ●ゲームエンジンを使いたい方 ▼ゲームエンジン Unity UnrealEngine ■グラフィックスAPIに関するオススメについて ▼プロを目指される方 DirectX12がリリースされたばかりでどうなってくるかはわかりませんが、コンシューマゲームに携わるのであればDirectXの習熟をオススメします。 スマートフォンのゲームにおいてはOpenGLを推奨します。 ▼本 最新のSDKではD3DXライブラリが削除されてしまっているため正常に動作する保障はありませんので、参考程度にしてください。 DirectXでの開発においては私は「鎌田 茂雄」さんという方が書かれている本をオススメします。 ・DirectX10/11プログラミング ISBN-13: 978-4990500634 ・DirectX3D11必携 ISBN-13: 978-4990500665 ■最後に いろいろと難しいことを書かせていただきましたが、後々(市販品レベルのゲーム開発をしたくなった時などに)必要になってくる技術や参考資料が多めです。 最初のうちは「このジャンルのゲームどうやって作るんだろう?」 → 「”ジャンル名 ゲーム 作り方”で検索してみよう」などといった風に一つ一つ調べていくといいと思います。 ゲーム作りは大変ですが、作り終えた時の達成感や人に遊んでもらった時の充足感はとても大きいです。 はじめてのゲーム作り、ぜひ頑張ってください。
3Dゲームを作りたいなら、プログラミング言語より、ゲームエンジンを勉強したほうがいいんじゃないでしょうか。UnityやUnreal Engineといったものですね。最近はこの種の入門書も増えてきましたから、そうしたものから探すとよいでしょう。