ゲームプログラミングC++
以下の本でSDLとOpenGLを用いたC/C++ゲーム開発の勉強を進めています。
各章には練習問題があるので、その問題の私なりの解答コードと詰まった箇所をここに残しておきます。
環境構築編はこちら
SDL_imageというライブラリを使うので、それの環境構築がまだな人は以下の記事から構築をしてください。
kurora-shumpei.hatenablog.com
練習問題1はこちら
kurora-shumpei.hatenablog.com
練習問題2はこちら
kurora-shumpei.hatenablog.com
練習問題3はこちら
www.kuroshum.com
練習問題の内容
第4章ではステートマシンや経路探索、ゲーム木などのゲームで用いられる人工知能が主題となっています。それらを駆使してタワーディフェンスゲームと(重力付き)四目ならべゲームを制作して終了です
練習問題では、
- タワーディフェンスゲームの敵と塔をステートマシンで実装
- 四目ならべゲームをアルファ・ベータ法で実装
練習問題の解答
解答のコードは以下のGithubのリポジトリのChapter4に置いています。
ただ、誠に申し訳ないのですが、今回は練習問題の2(四目ならべ)は実装していません...。卒論が忙しいのと、練習問題1(タワーディフェンスゲーム)だけで大分時間がかかってしまって、これ以上時間をかけると終わらない気がしたからです...。すみません...。
また時間があれば練習問題2も実装してみます。
一応変更した箇所と追加した箇所にはコメントアウトを入れておきました(どこか抜けているところがあるかもしれません。。ごめんね)。Star押してくれたらありがたいです。
github.com
ただ、解答のコードはC/C++初心者の私が作成したもので、これが正解だ!というわけではありませんし、他にもっと簡単かつ上手い実装方法があるということを念頭に置いた上で上記の解答コードを参考にしてくれたらありがたいです。
個人的に詰まった箇所
Astarアルゴリズムの挙動
私(バカ)はコードと本に書いてある説明だとあまりAstarアルゴリズムの挙動がわからなかったので、紙に挙動を書いてみたらやっと理解できました。以下に、Astarの挙動をgifにしてみたので、確認してみてください。ゴールまで到達したら、親ノードをさかのぼることで経路探索ができちゃうのですね。
ノードをオープンセットに追加する度に親ノードを設定しているので、それだと欲張り最良優先探索と同じだよなあと思っていたら、同じノードを二回目にみたとき、経路コストが小さいほうを採用するんですね。考えた人頭良いなあ。
resize
pythonで慣れていたのでreshape的なやつかなと思ったらちょっと違ってました。
suzulang.com
reserve関数がどうとかとも言っていたので、ついでにこっちも
qiita.com
クラス図
この前VisualStudioで自動的にクラス図を作成してくれる神機能があることを知りました。どうせなら使ってみたいなと思ったので、コードの全容を把握するのに役立ててください。
最後に
今回はChapter4の練習問題を扱いました
4章に入ってからまた難易度が向上したような気がします。2章の時も言った気がしますが、今回は経路探索やゲーム木などのゲームで用いられる人工知能の技術が詰め込まれていたので、2章のときよりも難易度が高く感じました。前回の記事が9月なので私の苦戦具合を察してください...。
また、2,3月と卒論執筆&発表と学会発表をやらされる()ので次の記事も時間があいてしまう気がしますが勘弁してくださいまし...。
5章はこちら
www.kuroshum.com