ゲームプログラマーになるためのロードマップ
今回は、ゲームプログラマーになるためにはどんなスキルをどのような順番で身につけると良いのかをまとめていきたいと思います。
大きな枠組みとしては、以下の通りです。
・入門者:プログラムを始めたばかり
・初級者:簡単なゲームであれば作れる
・中級者:ゲームプログラムを仕事にできる
・上級者:一生食べていける(かも)
仕事ではなく個人でゲームを作る分には、初級〜中級あたりの知識で問題ないような気がしています。
■入門者 Lv1
まずはここから開始です。誰もが最初は入門者!
このレベルでできること、このレベルの課題は以下の通りです。
・プログラムをコンパイル、実行できる
・変数や配列、クラスなどの基本的な文法を理解している
・じゃんけんゲームが作れる
・数を当てるゲームを作れる
■入門者 Lv2
少しプログラムのことがわかってきた段階です。簡単なミニゲームであれば作れるようになっているレベルです。
・クリックゲームを作れる
・矩形、円の当たり判定を理解して実装できる
・一筆書きゲームを作れる
■初級者 Lv1
この頃からできることが増えて、プログラムが楽しくなってきます。シューティングゲームのような、ゲームらしいゲームがやっと作れるようになり、好きに改造して自分なりのゲームを模索し始めます。
・2Dシューティングゲームを作れる
・三角関数やベクトルを理解して、キャラクターやUIの動きを制御できる
・状態遷移のある敵のAIを作ることができる
・単純なエラーを自分で解決できる(コンパイルエラーなど)
・パズルゲームを作ることができる
■初級者 Lv2
ここまでくると初級者というには、少し過小評価かもしれません。
2Dのゲームであれば自由自在に作れるような段階です。趣味で作るゲームであれば、このレベルでも問題ないと言えます。
・2Dアクションゲームを作れる
・格闘ゲームを作ることができる
・ローグライクを作ることができる
・外部マップデータを読み込んで、地形を表示できる
・経路探索のAIを書くことができる
■中級者 Lv1
このレベルまで到達できれば、ゲームを仕事にできる可能性があります。それなりの規模のゲームを破綻なく作れるレベルです。
・中規模のゲームを破綻なく作ることができる
・基本的なフレームワーク(シーン制御・画像のロードと描画など)を自作できる
・3Dゲームを作れる(3Dアクションなど)
・行列やクオータニオンを使ってモデルの制御ができる
・配列やポインタの危険性を理解して安全なコードを書くことができる (C/C++)
・デザインパターンを理解して、実際に有効利用できる
■中級者 Lv2
このレベルまでくると、ゲームプログラムに対してかなり深いレベルまで理解できていると思います。
・シェーダーを理解してゲーム内容にあった簡易的な演出を作ることができる
・高速化や最適化の調査ができて、パフォーマンスを上げることができる
・メモリリークを調査して修正できる。省メモリを意識した設計ができる
・簡易スクリプト言語を自作できる
・3Dの透視投影を自作できる
■上級者
ここまでくると、ある意味オーバースペックとなります。趣味で作る場合にはほとんど必要ない知識かもしれません。もし就職活動をするのであれば、これらの1つでもできれば、アピールポイントとなるのは間違いありません。
・物理エンジンを自作してレースゲームが作れる
・スクリプト言語を自作して、さらにデバッガも自作できる
・モデルデータを独自フォーマットで書き出したり読み込んで描画できる
・論文を理解してシェーダーを組むことができる
・レンダリングを拡張して独自のパイプラインを組むことができる
・メモリアロケーターを自作できる
■注意点
このランクづけは主観的なものですので、効果を確実に保証するものではありません。あと私のプログラムスキルは中級止まりなので……、上級の基準は正しくない可能性があるのでご注意ください。
また、実際にゲームを仕事にするためにはプログラムのスキルだけではなく、ゲームを形にして完成させる力や、チームメンバーとのやり取りを円滑にできるコミュニケーション能力が必要となります。
コミュニケーションスキルに不安があるなら、個人的には接客業のバイトをするとある程度身につくのではないかと思います。
◾️オススメのゲームプログラム本
素晴らしいまとめ記事。少しプログラム技術の専門的な部分に寄っていますが、こちらで紹介されている本はどれもオススメです。
一冊だけに絞るなら、やはり「ゲームプログラマになる前に覚えておきたい技術」がベストチョイスなのではないかと思います。
■関連する記事
ゲームプログラムの 入門者・初級者に向けて書いた記事です。作りたいものによるかもしれませんが、実際にゲームを作りながら学習していくのが一番効率が良いのではないかと考え、入り口としてはスクリプト言語から始めていくのが良いのでは……、といったことをまとめています。