学生ゲームエンジニアにDirectXは学習コストが高い
ここ10年ほど前から、小中学生のなりたい職業ランキング上位に食い込んできた"ゲームクリエイター"という職業。
生成AIの登場や、ゲームエンジンの飛躍的な進化で開発のハードルが下がり、競争が激しくなっています。
それと反比例するように、エンジン開発やサウンド・ツール開発など、低レイヤーを触りたがる人は相対的に減っています。
だって自前で開発するより、今あるものを活用する方が短時間で済むんだもん
ー実際そうです。
早い・(開発コストが)安い・(ビジュアルが)高品質の三拍子そろってるエンジンを使わないほうがおかしいんです。
今回は、
1.なぜ低レイヤーを触るべきなのか
2.低レイヤーを触ってエンジンを使用している人に見劣りしないアプローチ
を解説していきます。
DirectX12は次回から触っていきますので、そちらを知りたい方は少々お待ちください
第二回を更新しましたので貼っておきます。
なぜ低レイヤーを触るべきなのか
結論は、根本をきちんと理解して、最終的にエンジンを使いこなせるエンジニアになるためです。
ゲームエンジニアといえど、ゲームを作る人間である前に"エンジニア"な訳ですから、プログラムが書けないとお話にもなりません。
ゲーム開発の現場では「オブジェクト指向プログラミング」という思想に則って開発することが多いです。
実際私も就活をしていますが、プログラマー枠での採用基準に「オブジェクト指向を理解していること」が前提となっている企業が多数となっています。
オブジェクト指向プログラミングとは
詳しい説明をすると沼なので端折りますが、
1.依存するプログラムを限りなく減らす
例えばプレイヤーと敵のそれぞれにHP関連処理を書き込むのではなく、
外付けの「HPを管理するだけ」のHPアタッチメントを作成し、後付けすることで
プレイヤー自体は何もしなくてもいい、という風に単純化する
2.継承を活用し、処理を共通化する
ラーメン・そば・うどん。この3つは違うものですが、根本は「麺類」。
食べ方は基本的に同じものです。「麺類」という区分として扱い、
細かい食べ方だけ書き換えれば使い回しができます。
厳密にはもっと複雑ですが、ここではそんなもんだと思っていいです。
3.カプセル化して処理を隠す
「隠す」というと人聞きが悪いですが、要するに
「余計なことを考えさせない」という意味です。
パソコンが壊れた場合、普通ならサポートセンターに修理してもらいます。
いちいちどこのパーツがどう壊れて、どう直すのか...考える必要はありません
それと同様に、処理の中身を隠し、使う人間の頭を余計な情報で汚染しない。
これが「カプセル化」です。
低レイヤー層では、すべてのプログラムを自分で設計し、実装する必要があります。
これはオブジェクト指向で非常に重要なプロセスです。
設計一つでプロジェクト全体の開発効率が大きく変わると言ってもいいでしょう。
下手に行き当たりばったりで初めて、後から「ここ仕様変更が必要です」と言われたとき、
どこをどういう風に変えればバグが出ないか、短い期間で実装できるか、考えるコストが倍以上になるケースもザラにあります。
低レイヤー開発は、仕様変更に耐えうる、拡張性の高い設計力を身に付ける最短経路です。
エンジンに限らず、ゲームそのものの開発でも「設計力」は大きな影響を与えるので、やるとやらないのとでは全然違います。
低レイヤーを触りつつ、エンジン使用のものに見劣りしない方法
これは非常に重要で、難しいところです。
エンジンを用いて開発したゲームは、圧倒的な完成度とビジュアルを誇ります。
例えとして分かりやすいのかは分かりませんが、釣りコンテストだと思って頂きましょう。
三年間かけて釣った魚の数や大きさ、質を審査するコンテストに、二人の釣り人が参加。
釣り=ゲームそのものの開発だとします。
1.市販のそこそこいい釣り竿で3年間釣りをしてきた人
2.釣竿を2年半かけて自分で作り、釣り自体は半年前から始めた人
直感的にはどちらがコンテストに優勝できるでしょうか?
運次第ではありますが、第一に優勝候補となるのは前者でしょう。
完全に「やってきた歴」が違います。
市販のものに負けない竿を自作し、それでマグロを釣り上げてきたなら後者でしょうが、時間がありません。
ここで見劣りしないためにできるアプローチは複数あります。
主なアプローチ
低レイヤーの開発をそこそこで打ち切り、それを使ってゲーム開発を行う
正攻法です。普通の学生や初心者プログラマーだと
エンジン(とは限りませんが)を自作し、「最低限の完成度」までできたら
さっさとゲーム開発に移らないと、確実にどちらも中途半端で終わります。
なお今回は、このアプローチがメインとなります。
ツールとして完璧なものを作る
非常にハードルが高いですが、これも一つの手です。
応募の際は、内製エンジンもしくはツール開発を重視している企業でないと
見る目が厳しくなります。
また、市販のものが非常に強力なだけあって、
基本的な機能の他に突出した「何か」 がないと比べられます。
作ったものを配布・販売し、世間に認められる
とてつもない大博打です。しかしその分非常に強力です。
人に認められたツールというのは、
「安定しており、信頼性がある」=「現場でも使える」
なので、就職に限らず起業やフリーランスとしての活動も視野に入ります。
なお言うまでもありませんが、
セルフブランディングやSNS等の運用など、研究するべき分野が広く難しいです。
という訳で、ここまでを理解して頂けた方のために、
低レイヤーで勉強し、ゲーム開発の時間を最大限にすることを目的とした
DirectX12でのフレームワーク開発を共有していきたいと思います。
次回から実際にコーディングを始めます。