この記事は、GameEngineDev Advent Calendar 2022の25日目の記事です。
目次
はじめに
まずはじめに。
雑記です。ゆる~く読んでください。
私も、あえてゆる~く書いてます。
(なので構成も少しgdgdです)
こんな記事を最終日にして良かったのだろうか…
この記事では、
専門学生の私が「ゲームエンジンそのもの」を就活作品として開発する中でのいろいろを書きます。
「やってよかったこと」
「苦労していること」
を書き連ねます。
技術のことは少なめです。
(技術方面のことは、私の昨日24日目のAdCの記事でいっぱい書いたし…)
あと、面接や選考については、書けそうだったら、就活終わってから改めて別途書こうと思います。
自己紹介
簡単に自己紹介しておきます。
ゲームプログラミング系の専門学生です。高校は普通科。
4年卒学科の3年生です。12月なので、説明会やエントリーなど就活始まったところ。
幅広い技術に触れられるゲームエンジン開発に魅力に感じていて、実際にゲームエンジンを自作してます。
ゲーム業界就職してエンジンとかミドルウェアとかやりたいと思っています。
はじめて作ったエンジン
2年生のとき、当初は特定のゲームを開発するためのゲームフレームワークのつもりで開発していたものを、
ゲームエンジンとして本格的に開発し始めました。
物理エンジンPhysXを組み込んでいたり、Undo/Redo機能があったりと、機能はわりと充実させました。
いま作っているエンジンについて
経験を積んで出来ることが増えて、エンジン設計そのものを大きく変えたいと思い、別のエンジンをイチから開発することにしました。
C#スクリプトに対応したゲームエンジンを作っています。
その名も、「Miyadaiku Engine 1.0」です。
実はオープンソースです。
マルチプラットフォーム対応と、ゲーム開発のイテレーション向上を目的としたエンジンです。
まだ開発の初期段階です。
- ApplicationとEditorの完全分離(別exeファイル)
- ApplicationとEditor間のプロセス間通信
(TCP/IPで通信。ゲーム機で動くランタイムでも、PCのエディタから編集できるという設計) - C#スクリプト対応
- エディタはC#とWPF、MVVMパターンで開発
- CIも構築(GitHub Actions)
などの特徴があります。
ポートフォリオサイトにたくさん説明を書いてます。
ここで説明すると長くなるので、こちらを参照いただければと思います。
やってよかったこと・意識していること
ゲームエンジンのソースコードや実装を研究
かなりの時間を掛けてます。
Godot Engine、Unreal Engine、DiligentEngine等々…
世の中には、ソースコードが公開されているゲームエンジンが大量にあります。
それらのソースコードを、通学時間含めて、ひらすら読み漁っています。
設計や実装のアイデアを頭に蓄積しています。
例えば、私のエンジンでは、グラフィックスAPIを薄くラッピングしてマルチプラットフォーム対応しやすくする、RHI(Rendering Hardware Interface)という概念がありますが、これはUnreal Engineなどのソースコードから着想を得て実装しました。
私のエンジンもオープンソースなので、いつか参考にされるようになりたいなぁ・・・
既存のゲームエンジンを使ってみる
ゲームエンジンを知らずして、ゲームエンジンは開発できません。
Unreal EngineやUnityを実際に使ってみたり、作品を作ったりしています。
これをすることで、はじめて先述のソースコードや実装の研究ができます。
ゲームを作る
当然ですが、ゲーム作りを経験しないとゲームエンジン開発できないです。
ゲームはこれまでに(大小ありますが)6つ以上は作ってきました。
ゲームを開発する際は、一般公開を目標にしています。
公開のためには、完成させる必要があって、
この「完成させる」という経験が、特に力になると思っています。
ちなみに、いま開発中のエンジンでもゲームを作ります。
ゲーム機向けにゲームを開発する
Windows PCだけで開発を完結させることもできますが、ゲーム機向けにゲームを開発するという経験は重要です。
ゲームエンジンに必要なことを別の視線で知ることができます。
Xboxなら、3000円程度払って開発者プログラムに登録すれば、一般に小売店で売られている本体でも開発機にできます。
私は、個人的にXbox Series Sを買って、毎日学校に持って行ってゲーム開発してました。
(Xbox Series Sはティッシュケース程度のサイズなので、電車通学だけど何とかなりました)
無事、PCとXboxでゲームを公開できました ( がっぽり!爆走人力車)
楽しんで開発する
ゲームも、ゲームエンジンも、それ以外も楽しんで開発するのが一番良い成果が出ます。
なので、楽しんで開発するように&できるように意識しています。
お遊びの開発
学校で出席登録サイトで毎日出席登録する必要があるのですが、これがとても忘れがちでした。
忘れないように、リマインダーするDiscord Botを作ったことがあります。
面白おかしいメッセージ(全4種 ランダム)とともに。
(GASとDiscordのWebhookを使ってます。このためだけに勉強しましたw)
この一見おふざけな開発の技術は、自作エンジンのCIの成否通知の技術に応用することができてます。
幅広くアンテナを張る
もはやライフワークという感じで、技術に関する情報を収集しています。
普段はTwitterで。
面白いと思った技術は、即ブックマークにぶち込んで、あとで技術の詳細を調べる。
あとは、CEDECなどのカンファレンスの過去資料も沢山見てます。
わからない技術が出てきたら、すぐにググるクセをつけたりもしてます。
調べてもよく分からなくても、名前だけは頭の片隅に置いています。
ゲームエンジン開発は、幅広い知識を要求されるので、このクセはとても役に立っています。
実際、ネットワークを使ったプロセス間通信機能やCIなどは、普段からの情報収集が無ければ実現できなかったと思います。
交流と露出
これは凄く重要です。
コミュニケーションスキルが身に付きますし、自分自身を多くの人に知ってもらうことで色んな良いことが訪れます。
学内での交流
先輩後輩同級生問わず、頑張ってる人達と沢山仲良くしてます。
学内の技術共有Discordサーバー運営もしてます。200人以上居ます。
勉強会もやってたりします。
先生方には沢山相談に乗っていただいています。
高い学費を奨学金借りてまで払ってるのだから、使えるものは使っていく!
とにかく、モチベ高い人との交流を大事にしてます。
進捗ツイートとか疑問に感じたことをツイートしたりしてます。
また、他校の学生やプロのエンジニアもフォローすることも大切にしています。
学内の知り合いだけでは井の中の蛙ですし。
はじめは勇気が要りましたが、今は軽い気持ちでフォローしに行ってます。
頑張ってる学生の刺激や、学校では知り得ない知識を得ることができます。
あと、進捗ツイートをいいねやRTして貰えると嬉しくてモチベ上がります。
そして、何よりも「ゲームエンジン開発者仲間」を見つけられます。
学内では仲間が居なくて孤独だったので、とても嬉しいことです。
タダでこれらが得られるなんて!Twitter最高!!
アウトプット
色々やってます。
- 先述の学内の技術共有Discordサーバーで勉強会を開く
- Qiitaや個人ブログで技術系記事書く
- 友人や先生などと技術談義
- GitHubでPR投げる
- 自分のソースをGitHubのpublicなリポジトリに置く
アウトプットすることで理解が深まりますし、自信もつきます。
就活のときも、アウトプットしてることはアピールポイントになります。
英語でコメントやコミットメッセージを書く
これは開発途中からやってます。
とにかく英語に慣れることができます。
そして、ソースコードの命名が良くなります。
良いことづくめです。
文法が少し怪しいことは気にしすぎず、ググったりしながらガリガリ書いています。
深夜0時以降のコミットを原則禁止
マイルールです。
ちゃんと睡眠時間確保するためにやってます。
徹夜作業しても良いことありません。
徹夜作業をアテにしないことで、作業効率を安定させています。
苦労していること・悩んでいること
頑張った部分を伝えるのが難しい
「シェーダー頑張りました!」とか「ゲームAI工夫しました!」とか「おもろいゲーム作りました!」なら、すぐに伝わります。
あと、多機能で便利なエディタも伝わりやすいです。
ですが、私が今回特に頑張ったのは、もっと"地味"な部分です。
CIとか、C#スクリプトとか、プロセス間通信とか。
これらを上手に伝えるのはとても難しいです。
上手に就活するためには、地味じゃない機能も入れていく必要があるかも?
ひとまず、ポートフォリオに分かりやすく図説してみたりするなど工夫をしています。
エディタの機能の実装が少ない
これはただの私のやらかしに近いですが、現状ではエディタの機能の実装が少ないです。
就活作品として企業に提出した際、企業の方が
- まずは起動
- エディタの機能の実装が少ないなぁ
- もうええわ(以降は一切見てもらえない。添付したポートフォリオ完全無視)
という流れになって、選考落ちする可能性がそこそこあります。
今になって危機感を覚えていて、何とか改善しようとしているところです。
"就活のための開発"になってしまうことがある
就活作品製作あるあるだと思うのですが、開発の優先順位が、期限とか就活のためのアピールポイントを考慮して決まっちゃうので、思うように開発できません。
少しつらい。
経験が足りない
まだまだ経験が浅いがゆえに、実装や勉強に時間が掛かってしまうことがあります。
もっと経験が欲しい……下積みを続けていきます。
おわりに
自作ゲームエンジンを就活作品にするのは大変です。
今後も課題は解決しつつ、就活頑張ります。
本当にただの雑記になっちゃったけど、 就活終わったら振り返り記事とかを書いてみたいなぁ。
追記:就活終わったので書きました。
おわり。