(以下の「ゲーム開発」は「VTuber開発」とか「VR開発」とかと読み替えても構いません)

こんにちは!おなかソフトの伊藤です。

おなかソフトでは「恵比寿Unity部」という部活を毎週開催しております。部員は引きこもりや母子家庭等のなんらか社会的に事情がある中高生が中心で、皆各自でやりたい事をやっています。

ある方はVRoidという3DモデリングツールでVTuber用のアバターを作っていたり、ある方は通称「和尚本」を読みながら学習していたりと様々です。

恵比寿Unity部で学ばれている方の一人は「ベクトル」という概念が難しかったようで、悩まれていました。

ご存知の方は分かると思うのですが、ベクトルはUnity(というかゲーム開発全般)に欠かせない概念で、これは知らないと大半のゲームは作れません。ではベクトルはどこで知るかというと、高校生の数学です。

この高校生でベクトルを習う、まさに同じタイミングにUnityでベクトルを扱っていたら、「あー!そういうことだったのか!」と明快に理解できると思うのです。そうなるとベクトルは自分のゲーム開発でも、とても役に立つ存在になります。もちろん学校でもベクトルが出題される数学のテストは満点取れることでしょう。

つまり、

ゲーム開発で新概念(例えばベクトル)を知る

よくわからないで使ってみるがあんまり理解できていない

学校でその概念を習う

明快に理解できる

ゲーム開発でもそれを利用できる

テストでも満点

ということです。

順番は別に、学校で習ってからゲーム開発に使う、 でも良いでしょう。

何が言いたいかというと、「ゲーム開発は学校の勉強の土台に立っており、それを学ぶことでゲーム開発がより楽しくなる」ということです。学校で教えてくれる内容と切っても切り離せない関係にあるのです。

ということはですよ、ゲーム開発を通じて学校の勉強が進む、または学校の勉強を通してゲーム開発が捗る、となるのです。

ではどんな教科に役に立つのか?

とりあえず100%役に立つと言える教科は「数学」「英語」「物理」です。

数学がゲーム開発に役に立つ

先ほどのベクトル以外にも役に立つ概念がたくさんあります。

  • Sin,Cos,Tan
    • オブジェクト滑らかにゆらゆら移動させるときに使う
    • 角度とベクトルを変換させる際に使う
  • 行列
    • 3DCGの場所の計算は行列で計算されている
  • 一次関数
    • 音をフェードアウトするには1フレームにどのぐらい小さくさせれば良いのか、とか
  • 二次関数
    • 物理運動に沿った曲線は二次関数を使う。
    • 「飛び始めて何秒後に着地モーションに切り替えるか」とか
  • 微分積分
    • Δt の概念がまんま「Time.deltaT」
  • 複素数
    • 回転をコントロールする概念「クオータニオン」を理解するにはコレが基本
  • 三次元平面
    • ノーマルマップは各ピクセルの法線ベクトルを表している
    • 平面と直線の交点
  • 確率
    • ガチャの出方
    • 敵の出現度合い
  • 統計
    • プレイ履歴の分析

と、まあ、ほとんどですね。

数学はゲーム開発にはマスト。逆言えば、ゲーム開発していけば数学が楽しくなるはずですはずです!

英語がゲーム開発に役に立つ

まあ、ゲーム開発に限らず英語は大切なのですが、ゲーム開発はとりわけ大事です。

なんと言っても英語はゲーム開発おいて、公用語です。基本的に日本以外でのすべての国でゲーム開発のベースとなるのは英語です。日本以外のヨーロッパ、中国、韓国、東南アジア等の母国語じゃない国でも開発者は英語が読み書きできます。日本だけです、ブログとか書籍とかゲーム開発に必要な情報が母国語で存在するのは。

日本人なら日本語の情報が溢れているから大丈夫かー、と思ったら違います。やはり全世界の情報量は圧倒的に英語の方が多いのです。ですから、なんらかのマイナーなバグで詰まったときに検索すると、日本語ではなく英語で書かれることは多いのです。その時やはり英語が読めた方が良いですよね。

また、Unityも日本語化されてるとは言え、エラーメッセージはまだ英語です。「何か赤い文字で出ている」というのと、「あ、これはこうゆう理由で間違いだと教えてくれてるんだな」というのとでは解決のスピードも圧倒的に違います。

そう言ったわけで、英語、とりわけ文法が理解できて、読解できることが重要です。

物理がゲーム開発に役に立つ

物理を使わないゲームもありますが、使うゲームも沢山あります。

現在Unityには物理エンジンが中にあるため、そこまで物理を知らなくても物理ゲームが作れてしまいます。

ただ物理を知った上でUnity上で実験してみるとかなり理解が広がります。

例えば力を加える、と一言で言っても、「瞬間的にかかる力」なのか、「継続的にかかる力」なのかで計算が全く違います。UnityのAddForceの引数「ForceMode.Impulse」がまさにそれです。

Unity安原さんがその説明をしているので、興味のある方はこちらをご覧ください。

(安原さんの講演を解説しているプログ記事)→http://nexusyuumilo.hateblo.jp/entry/unity_physics_5

物理を知るとUnityの物理エンジン挙動がわかるし、Unityの物理エンジンを使ってれば物理が楽しく理解できる、ということです。

最後に

いつか役に立つかはわからない勉強は面白くありません。どうせなら役に立つ勉強の方が楽しいじゃないですか。スマホゲームでも役立つ「スキル」を得るために経験値貯めますよね?スキル使えるようになると一気に楽しくなるじゃないですか。

つまり、「数学スキル」「英語スキル」「物理スキル」を身につければ、「ゲーム開発」という「ゲーム」で役に立つし、途端にその過程も楽しくなる、ということです。どうせ勉強するなら面白く勉強しましょう。