はじめに
この記事は 琉大 Advent Calender 2020 の 20日目の記事となります。
https://adventar.org/calendars/5231
本記事は、ゲーム業界にプログラマとして入って2年目になる私が、業界に入るにあたってやっておいてよかったこと、やっておけばよかったこと、その他どうでもいいことを、訴えられない範囲内で後出しジャンケン的につらつら書き並べていくものになります。
まだまだ学生生活を謳歌する業界志望の学生さん、もうすぐ就活の学生さんも、後出しジャンケンで有利に内定を勝ち取ってください。
そもそも、ゲーム開発におけるプログラマの立ち位置とは?
ゲーム開発には、(おそらく)どのようなプロジェクトであっても大きく分けて3つの職種があります。
- 企画
- 美術
- 技術(プログラマー)←これ
このうちプログラマーは企画が所望するゲームそのものの実装や、ゲーム開発の機能を実装していきます。
ゲームの面白さを向上させるのは企画の仕事なので、プログラマの仕事は、ゲームの面白さ向上の技術的サポートということになります。
FPSの開発に例えると、例えば新規の銃を実装するのは、実はプログラマの仕事ではなく企画の仕事になります。
この場合、プログラマは銃の追加ツールの実装を行うのが仕事です。
美術チームが作成した銃器ポリゴンを登録し、ダメージや弾速度、発射間隔などのパラメータを企画が設定すれば、新しい銃が登録できるようなツールですね。
あとは、企画が要求したUIを美術がガワだけ作成して、プログラマーがデータを流し込めるようにしたりすることもあります。
このようにして、企画が求める機能を追加したり、改修したりするのがゲームプログラマのお仕事です。
ではお仕事のイメージがなんとなく湧いたところで早速、ゲーム業界に入るために、やっておいてよかったことから列挙していきましょう。
やっていてよかったこと
個人でのゲーム制作
個人やサークルでの自主的なゲーム制作は、ゲーム業界志望の就活において圧倒的なアドバンテージになります。
というか、おそらくこれがないとゲーム業界へ新卒で入るのは難しいんじゃないかと思います。
理由は簡単で、「ゲームを遊びたい人」を選考で弾くためです。
コンテンツの特性上、ゲーム業界は「作りたい人」ではなく「遊びたい人」も目指しがちですよね。
「作りたい人」なんだな、と思ってもらう方法は、ゲームの自主的な制作実績があるか、あるいは制作実績がなくても圧倒的なエンジニアリングスキルがあるかのどちらかです。
UE4の使用経験
私が就活していた頃はまだUE4は「たまに使われるかな」くらいで、普通のゲームはほとんど自社製ツールを使って制作されていましたが、今では多くのタイトルで使用されるようになって来ました。
DirectX直書きする機会もほとんど無くなりましたし(←偏見)、何か一つゲーム制作ツールを触っておきたい、というパターンなら、UE4C++がダントツでおすすめです。(もちろん、DirectXの知識があることが選考で全く加味されないという意味ではないです)
塾講師,家庭教師経験
正弦、余弦定理、覚えてますか?二次方程式の解の公式、覚えてますか?
ベクトルや三角関数、微分積分の知識はゲーム制作において必須です。
とはいえゲーム業界では高卒から採用することも少なくないので、
高校数学や大学数学の完璧な理解が求められることはあまりないんじゃないでしょうか?
逆に、義務教育範囲の数学知識の徹底的な定着と、高校数学範囲の概要は押さえておく必要がありそうです。
(志望する)企業説明会への参加
どんな組織なのか、企業理念はどんなものか、企業説明会には選考へのヒントが散りばめられています。
ミスマッチを防ぐためにも、きになる企業の企業説明会には参加しましょう。
例えば、このご時世、ちゃんとオンラインでやっているのか、社員を出社させているかどうか、
などで、パンフには現れない社風も読み取れたりします。
コンピュータアーキテクチャ
wd先生、ありがとう💕
やっておけばよかったこと
C++
信じられないかもしれませんが、一部のケースを除いて、基本的に使用言語はC++です。
CもJavaScriptもPHPも嗜んでいたので、面接時には「C++も余裕っすよ」とたかを括っていましたが、
地獄を見ました。C++は腰を据えて、学生時代から逃げずに立ち向かった方がいいです。
ちなみに、BluePrintsは企画がいじるもので、プログラマが触るものではありません。
(ちゃんと)バージョン管理ツールを使っておく
バージョン管理ツールとは、コードが事故った時にすぐになかったことにしたり、何が原因で事故ったか判別できる、魔法のツールです。
有名どころだと、gitやmercurial、subversionなどですね。
個人開発だと、バージョン管理ツールなくてもなんとかなったりするんですけど、基本的に不可欠です。
いつも呪文だと思ってるコマンド群も、きちんと理解しておきましょう。
オブジェクト指向、コンポーネント指向をきちんと理解しておく
ゲーム開発の中でも、特に他の開発事業と異なる点は、「仕様変更は当たり前」というところです。
面白さはロジックで説明できないため、「やってみて、修正」の繰り返しになることが多いです。
ということで、仕様変更に対する柔軟性に富んだ開発手法が取られます。
少なくともオブジェクト指向は理解して、実践できるようにしておく必要があります。
そのためにはやはり、自主制作が必須となります。
Q&A
自分が就活する時、疑問だったこと
Q.ゲームの提出を求められた時、どれを出せばウケがいいの?たくさん出した方がいいの?
A.自分の中での、至高の一品を出しましょう。多くて2つ。
そして、できれば学校の課題やゲームジャムなどの短期間イベントではなく自力で時間をかけて作ったものがいいです。
採用する側は、まず「作りたい」のか、「遊びたい」のかを見極めたいと思っているわけですから、自主的に制作したものがあれば「自分は作りたい人ですよ」とアピールすることができます。
課題制作を提出する際には、面接時に「自主的に制作されたゲームはないのでしょうか?」が間違いなく来ると思って回答を用意しておくのが吉です。
Q.言語は何を勉強しておけば良いの?
A.迷っているなら、C++一択です。
Q.学歴は必要?
A.正直、特殊な業界なのであまり新卒の学生に対して即戦力としての高いプログラムスキルそのものを要求してはいないように思います。
なので、良い学歴というよりは、上記の基礎がしっかり抑えられているのか?を重視しているように(現場の人間としては)感じます。
終わりに
なんで空のQiitaに書いてるかって?
使ってたブログのログインpasswordわかんなくなったからです。
もし、何か聞きたいことなどあれば、訴えられない範囲で答えようと思います。
就職氷河期ですが、ゲーム業界は(ゲームセンターは除いて)まだまだ元気です。
みなさんが無事、社会のレールに乗れるよう、応援しています。