学年別ゲーム業界のエンジニアを目指すためにやること
今の学年+1年の分を読んでその分野を勉強したりするとスキルアップできると思います。
全学年共通
ゲームを遊ぶ
業界に入りたいのに業界の新しいものに触れてなかったり、知らないのは問題なので遊びましょう。
ここで注意したいのは今までずっと遊んでるゲームをやり続けるのではなく、新しく発売されたり、リリースされたスマホゲームを遊ぶなどしましょう。
好きなゲームを遊ぶのは娯楽で、知らないゲームや触れてこなかったジャンルを遊ぶのは勉強です。
遊んで新しい発見や『この処理どうやってやってるんだろう?』と疑問を感じたりすることが重要だと思います。
買うのは大変ですが、
スマホの無料ゲーム
Epic Gamesの毎週無料配布されてるゲーム
PS Plusに加入してもらえるゲーム
オープンベータ中のゲーム
これらの手段で買うより効率的にたくさんのゲームができます。
GitHubを利用する
ソースコードをチームメンバーで共有したり、SNSで自慢したりできて便利です。詳しい使い方はここでは語りませんが利用しましょう。
SNSをやる
SNSと書いてますがTwitterです。
Unityの新情報だったり、新作ゲームの発売情報、技術的な内容の論争、技術の共有がそこら辺に転がってます。
ふとTwitterを開けて眺めてるだけでも情報が収集できるので使いましょう。
1年生
なんとしてもゲームを完成させる
初めてプログラミングに触れるので、綺麗なプログラムや効率的な処理を作るのは難しいと思います。(汚いコードを書いてもいいわけではない)
自分の作りたいものを絶対に形にして、ものを作るという能力を鍛えるのがいいと思います。
1年間で3つぐらいゲームが作れたらいいと思います。
できなくても最低1つは作ろう。
Unityの言語設定を英語にする
Unityの使い方を調べると基本的に英語の情報が出てきます。
英語が読めない、わからない
の気持ちはわかりますが、このインターネットの世界には日本語の情報より英語ベースの情報の方があふれています。
変えましょう。変え方は調べてください。
英語がわからん?読めない?インターネットで調べれば翻訳できます。なんの障害もないです。
Unityに慣れる
Unityの基本的なコンポーネントや便利なコンポーネント、機能をいっぱい知りましょう。
Rigidbodyを使って物理的な挙動を作ったり、
[SerializeField] private int hp;
SerializeFieldと書くとUnityでパラメーターを調整できるようになったり、Unityでのテクニックを身に付けましょう。Unityというツールの使い方を2年生以降で勉強するのは非効率的で遅いです。
まとめ
1年生はゲームエンジンを使いこなして、作りたいものを作ることを一番考えて頑張るといいと思います。
2年生
SOLID原則を学ぶ
Player.csに1000行のスクリプトを書いてもいいのは1年生までです。
沢山行数のあるプログラムは素晴らしいわけではないです。
SOLID原則というのはプログラムを書くときのルールみたいなもので、これを守ると基本的に見やすく、わかりやすくなります。1000行の超大作プログラムから卒業できます。
デザインパターンを学ぶ
キャラクターの状態遷移を作りたいとき、リドゥ・アンドゥを作りたい、弾幕を作りたい、などありがちなものを作るときの作り方のようなものが存在します。それを学びましょう。
Unity公式がデザインパターンのデモを作っているのでダウンロードしてソースコードを一行ずつ全部理解して勉強しましょう。
設計を学ぶ
public class Player: MonoBehaviour
{
[SerializeField] private Enemy enemy;
void Start()
{
// 敵の攻撃を無力化する
enemy.attackPower = 0;
}
}
こんなスクリプト書いてませんか?SerializeFieldで何でもかんでも突っ込んで、PlayerクラスがEnemyの情報を握っていて書き換えることができるプログラム。動きはしますがこんな感じでどんなパラメーターでも書き換えることができる状況はプログラム的にはとても危ない状況です。
クラス同士が相互参照してるしてる状況はお互いのパラメーターを書き換えあうことができる危険な状況につながります。
この問題を解決するのが設計を学ぶということです。
相互参照しないように仲介役を作ったり、迂回させたりしてうまいこと回避します。
自分たちの書いてるコードがどれぐらいの設計レベルなのかを把握し、他にはどんなレベルがあるのかこのサイトで学びましょう。
よく設計の話で出てくるのがUI関係の実装です。いきなり勉強するのは難しいですが難しいのから逃げてると成長できないので頑張りましょう。わからなければインターネット使えばいくらでも情報出てくるので。
設計を意識してゲームを作りましょう。たぶん勉強の時間が多くなり、1年間で作れるゲームの本数は少なくなってしまいます。2つぐらい作れればいいと思います。
クラス図を読み書きできるようにする
クラスの参照関係を図にしたのがクラス図です。読み書きできないと設計図の読めない大工さんと同等の価値の人間になるので調べて勉強しましょう。
ServiceLocatorを学ぶ
設計を学ぶとたぶん出てくると思います。
ServiceLocatorパターンを作るとプログラムのインスタンスの概念や今まで謎だったnewとは何か、List、Dictionaryなどの知識が付きます。
こことか見て勉強するといいと思います。
Action
うまく使うことでコールバックを作ったりできます。
これを使いこなすことで設計をよくしたりできるのでオススメです。
[可能なら]Zenject
2年生で学べなかった場合は3年生の4月で勉強してください。必要です。
上のServiceLocatorパターンは素晴らしいですがいくらか使いにくい問題点があります。それを解決する完全上位互換のフレームワーク、アセットです。
ここら辺の記事が入門としてZenjectを解説してるのでオススメです。
まとめ
2年生は技術を一番勉強できる期間です。エンジニアになるために勉強しましょう。
1年生はプログラム初心者
3年生は2年で勉強した内容の実践&発展、
4年生は就活なので必然的にこうなります。
3年生
はじめに
基本的に3年生は2年生で学んだことを発展させる形になると思います。
2年生の項目で知らないことがあれば勉強しましょう。
UniTask
Unityのコルーチンをもっと扱いやすいものにしたのがUniTaskです。
コルーチンの上位互換です。
普通のコルーチン使うと戻り値を作れませんがUniTaskを使うと使えます。
UniRx
イベント処理を扱いやすくできるライブラリです。
int beforePlayerHp = 0;
void Update()
{
if(player.currentHP != beforePlayerHp)
playerHpUi.text = player.currentHP.ToString();
}
こんな感じで前フレームの値を常に監視するプログラムを書いているのであればこれから卒業できます。
UniRxのReactivePropertyというものを使うと
値に変化があった時のみ動作するプログラムを簡単に作ることができます。
[可能なら]他の分野の知識
C#やゲームのメイン部分以外の知識を付けるといいかもしれません。
Shaderなどのグラフィック
サウンド関係としてCRI
オンライン関係
など、自分だけの武器を磨くのがいいと思います。
まとめ
2年生ほど勉強の内容が無いですが、2年生で勉強した内容をレベルアップさせるものが多いです。
4年生
作りたいものを作る
学生時代でゲームを作る最後の機会です。すべての力を使って作りましょう。