ゲームプログラマ・エンジニアを目指してプログラミング言語を覚えた次に学ぶこと

この記事は、ゲーム制作 Advent Calendar 2018 の4日目の記事です。

そして、明日発売される書籍「ゲームプログラミングC++」の宣伝です。

ゲーム業界に入るのは難しい。近年はUnityなど素晴らしいゲームエンジンが出てきて、ゲームが手軽に作れるようになってきました。そう、デジタルゲームは、手を動かしさえすれば、誰でも作れてしまう世の中になったのです。逆にいえば、ゲームが作れるだけではゲーム業界には入れない世界になってしまいました。プログラマーであれば、より深いゲーム制作の知識や人と違った技術の習得が求められるようになってきたのです。と、いう話をゲーム業界の人とすると、「低レベルなメモリ管理ができなければいけない」、「直接3D APIを叩けなければいけない」という話に向かいがちなのですが、おいおい待てよと心に思うわけです。老害世代には、直接ハードをいじれる機会がありました。8bitパソコンのアセンブラ。DMAを直叩きしたPlayStation2。低レベルのプログラミングが機械を支配している万能感を与えてくれました。でも、今そんなのないって。人工知能のプログラミングをするなら手軽で速いPythonを選びますよね?Win32ならC++でプログラミングできるとかって、あなたのOS何ビットですか?Visual Studioでアセンブラを学ぶって言っても環境構築は面倒だし、昔みたいに、それをしないと性能が出しきれない状況にまず出くわさないので、そもそもの実際的な目的がないんですよ。ということで、自発的に低レベルな言語を学ぶ機会がないのが現代ではないでしょうか。そんな時代に老害世代と同じスキルを身に付けないと就職できないとか明らかにおかしい。しかし、そのような人たちが面接官という障壁として待ち構えている可能性高い現状、低レベルな技術を身につける必要があります。という理由だけではないのですが、ゲーム業界に入る前にゲームエンジンの中の知識をある程度は知らないとゲーム業界に就職しにくいというのが今の世の中といえるのではないでしょうか。

ゲームプログラミングを学ぶのは本当に難しいです。ゲームプログラミングを学ぶのに、最初にプログラミング言語を学習する必要があることは直ぐに思いつくかと思います。しかし、次の一歩が難しい。ジェイソン・グレゴリーさんの「ゲームエンジン・アーキテクチャ」は、その次の一歩ですが、この本はソースコードが少ない。頭で考えたことを自在に組み立てられる中級以上のプログラマにはお勧めで、沢山の良い知識を仕入れられるものの、初学者が書かれている事を即座に実装できるものではありません。「ゲームプログラミングパターン」という良書も訳されていますが、パターンを組み合わせてもアーキテクチャが生まれるわけではないので、この本を読んだところでゲームエンジンのような基盤が作れるようになるわけではありません。ということで、コンピュータ言語を学んだ後にゲームプログラミングを学んでいくための方法は悩みが深いのです。が、このミッシングリングを解く存在が「ゲームプログラミングC++」です。本書は、プログラムを少しづつ書き換えながらPongクローンからFPSのゲームエンジンを作っていくことになります。本書のソースコードは、GitHubのgameprogcpp/code に上がっていますので(英語版ですが)、具体的にどのような物を作るのだろうと気にされている方は、ご覧いただくのが良いかと思います。

もちろん、この本は完璧ではありません。今どき物理ベースレンダリングではないし、メモリ管理はSTL頼みだし、マルチスレッドではないし、エフェクト出ないし、ネットワーク扱わないし、バトルシステム作るならもっと作り込み必要だし。文句はいくらでもつけられます。まぁ、「そんなこと言うなら、お前書けよ」というのは最もですが、それは置いといて。本書を読めば実際に使える俺俺ゲームエンジン作れるようになるという事で、現代のゲーム開発者を目指す者・初学書にとって、必携の書籍といえます。

GPCpp.jpg

私は、本書の監修を務めさせていただきました。翻訳者の吉川邦夫さんの訳がすばらしかったので、こちらは、「ゲーム開発者はそんなこと言わないですよ」とか、「その意味違っていますよ」とかに集中することができました。で、おかしな点を指摘したら、原著からある間違いということが判明して、原著に訂正の指摘を出す事態に至ってもいます。ということで、英語版よりもある意味正確な日本語版。前半の方が文章がお堅い気もしますが、ぜひお買い求めいただければと思います。

明日のゲーム制作 Advent Calendar 2018 は、eunx32さんです。

コメントを残す