NEWS / BLOG
2021.11.28
【内定者ポートフォリオ公開】企業は新卒作品のなにを見ているの?~ゲームプログラマー編~
#プログラマー #採用関連

皆様、こんにちは!

夏の暑さが突然消え、すっかり寒くなりましたね❄
寒くなると食欲が増してしまうのは、錯覚だという事を最近知り、
今年の冬は暴飲暴食を控えようと決意をしました、ジーン採用担当のやーまんです。

今回は、前回の採用ブログ第二弾
【内定者ポートフォリオ公開】企業は新卒作品のなにを見ているの?~2Dデザイナー編~
【内定者ポートフォリオ公開】企業は新卒作品のなにを見ているの?~3Dデザイナー編~
に引き続き、
「企業は新卒作品のなにを見ているか」 をテーマに、
選考担当者から見て、どこが評価の高いポイントだったのか~ゲームプログラマー編~を、
過去のジーン内定者作品を使用し、解説をしていきます!
※今回記載するポイントは、あくまで一部の内定者作品を使用した一例です。
本ポイントをクリアしていることが弊社の採用基準というわけではありませんので、ご注意ください。

ぜひ、最後までお読み頂けますと幸いです(/・ω・)/レッツゴー


今回解説するポイントは大きく分けて三つです。
-------------------------------------------------------------------
【ポイント① 読み手側を意識したコードになっている】
【ポイント② ゲーム内容が遊べるものになっている】
【ポイント③ 全体的にこだわりや目的を持って実装されている】
-------------------------------------------------------------------
ここからは、上記のポイント三つを、それぞれ解説します。

【ポイント① 読み手側を意識したコードになっている】

内定者Aさんの作品は、プログラムの記述方法に一貫性があったり、コードの意図が記載されていたりと、
読み手側を意識したものになっていました。
ポイント①-1.png
1. 単語を日本語化したのではなく、実装の意図までソースコード内のコメントに書いている。
画像を見るとわかるように
変数や定数を宣言する場所(宣言部)と、データの操作や処理内容を記載する場所(実装部)、
どちらも適切な量のコメントが記載されています。
記載されているコメントも、単純に処理内容を日本語化したような内容ではなく、
実装の意図まで書かれており、読み手側の理解を支えています。

2. 記述の仕方に一貫性がある。
全てのクラスにおいて、メンバ変数やメンバメソッドの定義順番にルールがあり、
コード全体に一貫性があります。
こういった一貫性がある事で、制作者以外の人が、必要な情報を探す手間が省け、
素早く情報にアクセスできるようになります。

また、クラス名やメンバ変数、メンバメソッドにて、命名規則も使用しており、
非常に読みやすく、こちらも読み手側の負担を軽減しています。

3.適切なインデント、改行が行われている。
文章の行頭にインデントを入れたり、改行を適切な頻度で行う事で、
コード全体に統一感が生まれています。
また、関係性のあるコードを1つのカタマリにしている事で、
読み手側がコードを読みやすくなり、理解までの時間短縮に繋がっています。

コードを書く作業が1日で終わったとしても、
他の人がそのコードを読んだり、メンテナンスしたりする回数は、
書く作業の何倍にもなる為、
適切なスペースや改行・読み手側の理解を支える工夫は非常に重要になります。

4. プログラムが状況に応じて適切な段階まで分割され、拡張性/保守性を考慮した設計になっている。
内定者Aさんのプロジェクトフォルダでは、プログラムが適切にフォルダ分けされており、
読み手側がプログラムの全体像を把握しやすくなっています。
ポイント①-2.png
プロジェクト構成が、適切に構造化できている事は
読み手側を意識したプログラムになっているか、に共通するだけでなく
開発中や運営中に、仕様変更やバリエーション追加が発生した際に、
それに耐える事のできる設計になっているか。それを意識した実装をしているのか。など
プログラム全体の汎用性・拡張性の高さに繋がります。

「読み手側を意識したコードになっているか」
という観点は、技術的に難しいものではありません。
だれにでも、今日からでもできることで、行うことにより、
プログラムを理解するまでの時間が削減され、
その分、コードのメンテナンスや作品のクオリティアップをするなど、
生産的な作業に時間を使うことができるようになります。

「読み手側を意識できているか / できていないか」 という部分は
個人の性格や、作品に対する向き合い方が分かります。
その他にも、スペルミスや誤字脱字が多くないか。 という点も、
制作において、チェック不足や、丁寧ではない仕事に繋がる部分になるので、
作品制作をする際は気を付けていただけると嬉しいです。


【ポイント② ゲーム内容が遊べるものになっている】

内定者Aさんの作品は
CPUの実装やチュートリアルが充実している事、ゲーム性のある駆け引きがあり、
しっかりと遊べる内容に仕上がっていました。

1. 対人戦を意識したゲームだが、CPUも実装し用意されている。
本作のベースになったものは対人戦ゲームだと思いますが、
対戦相手がいない場合でもCPUが実装されているので、手軽に遊ぶ事が出来ました。

ポイント②-1.png

2. チュートリアルが充実している。

ポイント②-2.gif

本作では、チュートリアルとして
順番に進めていくとルールが理解できるように工夫された専用ステージが実装されていました。

チュートリアルがしっかりと用意されている事から、
制作者がユーザーの近くにいないことを想定して
ユーザーだけでゲームのルールが理解できるように、
遊んでもらう事を意識した作りになっている事が分かります。

3. ゲーム性のある駆け引きが存在する。
本作はフィールドに落ちているブロックを、制限時間内に相手より多く自陣に運ぶ事が目的のゲームです。

ゲームでは、フィールドギミックとして召喚兵が用意されています。
召喚兵を呼び出すにはブロックを消費するものの、
呼び出すと、その後一定期間相手のブロック集めを邪魔してくれるため、
ブロックを自陣に運ぶか、召喚兵に投資するか、という選択肢を取れます。
相手より1つでも多く、召喚兵にブロックを投資することで
味方にすることが出来る為、相手の状況も見つつ、どちらを選択するか判断する必要もあります。

シンプルではありますが、駆け引きとしてしっかり成立しており、
それを分かりやすく伝えるための表現として、下記の仕組みも実装されていたので、
きちんとゲームとして遊べるものに仕上がっています。

↓召喚兵の召喚消費したブロックの量が比較して表示される実装

ポイント②-3.png


↓召喚兵の色で、どのプレイヤーが召喚したのかが一目で分かる実装

ポイント②-4.png


【ポイント③ 全体的にこだわりや目的を持って実装されている】

内定者Aさんの作品は、
読み手側を意識したコードやゲームの内容以外にも、下記2点から作品に対する細かなこだわりも伺えました。

1. カメラのめりこみに対する回避が適切に実装されている。
ポイント③-1.gif
本作ではアニメーションの通り、カメラのめり込みがスムーズに回避できています。
この事から、
しっかりカメラにまでこだわって作った事や、
オブジェクトの衝突判定処理や、処理順の制御が正しく行える事が分かります。

2. 遷移演出が単純なフェードイン、フェードアウトではない。
ポイント③-2.gif
本作の画面遷移は単純なフェードイン、フェードアウトではなく、
専用のワイプアニメーションが使用されています。
画面の遷移演出は、ゲームの内容に直結する部分ではないですが、
ゲームへの期待感を上げたり、遷移待ちの体感時間を削減する事に繋がります。

こういった細部にもこだわっている事は、
ゲーム部分だけを作って終わりではなく、
ゲームを最後まで完成させるという意識を持っている事、
それを行う為の適切なスケジューリング能力がある事が分かります。



いかがでしたか?
最後に、ゲームプログラマーとして業界就職を目指すのであれば、
以下の事を意識して、作品制作を行ってもらえればと思います。


【作品のクオリティを上げる為にできる事】
・他の人にゲームをプレイしてもらい、プレイしている風景を見学する。
 ⇒作品制作をしていると、何度も自分でプレイしているため
いつの間にかプレイヤー目線に立てなくなる事が多々あります。
  その場合は他の人に自分のゲームをプレイしてもらい、プレイしている様子を見学しましょう。
  プレイ風景を見学する事で、普段自分ではしない操作でバグが起きたり、
  当たり前にできると思っていた事ができない等の新たな発見ができ、そこから改善に繋げられます。

・中長期的に自分の中の「当たり前」の基準を育てる。
 ⇒制作している作品が、ただゲームとして動けば良い、というだけではなく
クオリティを高めるために、普段から
「もっと良い実装方法や、手段は無いのか」
と考え抜く力や、クセを身に着けておく事が大切です。
市場のゲームをプレイして分析を行ったり、
書籍や情報サイトなどでより効果的なプログラム作成方法を勉強したり、
それらを繰り返していくうちに、自分の中の「当たり前」の基準を上げることができ、
クオリティの高い作品作りが行えるようになります。

【ゲームをプレイする際に注目・観察するべき事】
・自分なら"どう実装するのか"という考えを巡らせる。
 ⇒ゲームプログラマーとしての業界就職を目指すのであれば、ゲームをプレイする時に
  どういった部分に注目し、観察するべきか。
自分が「力を入れていきたい」「学びたい」と思っている部分に注目し、
一度、参考にしているゲームの要素を分析してみると良いと思います。
その中で、どう実装するかを考えられた場合は、実際に実装してみたり、
   考えてみてもどう実装するのか分からなかった場合は、その部分を重点的に勉強するなど
様々な方法を試してみましょう。
特に有名なタイトルであれば、CEDECやGDC(Game Developers Conference)などで
発表されている可能性もあります。


以上が、ゲームプログラマー編となります。

ゲームプログラマーとしてプロを目指すのであれば、
"読み手を意識し、こだわりや目的を持って最後まで作りきる"事が非常に大切です。

その為にも、
「もっと良い実装や手段は無いのか」
「UIやサウンド、ゲームのルールなどを、どの条件やタイミングで発生させるべきか」
などについて、考え抜く力やクセを身に着けておくことが重要になります。

今回の記事が少しでも、ゲーム業界を目指している学生様の参考になれば幸いです!


ちなみに、これまでの採用担当者ブログシリーズはこちらです。
もしまだ見られていない方は是非、前回の記事もご覧いただけますと嬉しいです。
   プランナー編 :弊社説明会でよく頂く質問にお答えします【プランナー編】
   2Dデザイナー編 :弊社説明会でよく頂く質問にお答えします【2Dデザイナー編】
   3Dデザイナー編 :弊社説明会でよく頂く質問にお答えします【3Dデザイナー編】
   プログラマー編 :弊社説明会でよく頂く質問にお答えします【プログラマー編】


最後まで読んでいただき、有難うございました!
以上、やーまんでした。