サブプロジェクト制度を使用し、UnrealEngineでの開発に挑戦している話
こんにちは、Happy Elements株式会社でエンジニアをしている C.C です。
本記事では、サブプロジェクト制度を使用して何をしているかを書きたいと思います。
サブプロジェクト制度とは
サブプロジェクト制度とは、
「挑戦し成長できる機会の創出のため、
アプリ・コンテンツ開発を行うプロジェクトを立ち上げることが出来る制度」(社内ポータルより抜粋)
です。
アプリ開発に従事してきたエンジニアやプランナーさんは元より、イラストレーターさんやアニメーターさんらもコンテンツのより良い見せ方を模索するため、積極的にプロジェクトを立ち上げています。
技術を成長させるには「インプット」が必要ですが、メインプロジェクトの開発を行いつつでは時間をとりづらい現実があります。
サブプロジェクト制度は、ある程度の業務時間を割ける制度となっており、時間外に自分で勉強するというハードルを下げてくれます。
マイプロジェクト
私たちのプロジェクトは、「Unity DOTSでMMOを作る!」というところから模索を始め、
Unityの 「Entity」 や 「NetCode」 など新しい技術を学び、現在は 「UnrealEngine」 での開発を開始しています。
少人数であることを活かし、フットワークが軽いのもサブプロジェクトの特徴かと思います。
既に多くのことを学ばせていただいていますが、業務時間を使って「インプット」を得ているので、当然ながら「アウトプット」も必要です。
現在は、このアウトプットに向けて、鋭意開発中となります。
まだ世に出してはいけない素材を使用しているため、全力でモザイクをかけさせていただきますが、このようなゲームを開発しています。
UnrealEngineについて
弊社では基本的に 「Unity」 を使ってアプリを制作しています。
そのため、前職や自主的に以外で 「Unreal Engine」 を触ったことがありません。
(私は前職でも自主的にも触ったことがない人です)
ですので、「Unityと何が違うのだろう?」「何ができるのだろう?」から始まります。
UnrealEngineを使い始めてまだ2ヶ月(実働約2週間)ということで、技術的な話をすることはできませんが、これ良いなと感じる部分を紹介しようと思います。
ゲームのテンプレートがある
プレイヤー操作も含むゲームとして動くテンプレートが用意されています。
開発時のベースとしても使えますが、プロジェクトの初期段階で「どのようなゲームを作りたいのか?」というすり合わせに役立ちました。
デザインが入っていないため、先入観を抱かないのもありがたいですね。
ビジュアルスクリプトによる開発
ブループリントといわれるノードでのビジュアルスクリプティング開発が可能です。
プログラムで書きたいという気持ちもありますが、意外とプログラムと同様の考え方で作れるので理解しやすいと感じました。
デバッグ動作中は視覚的にどのノードが動いているかわかったり、プログラムには無い利点もあります。
また、UnrealEngine自体、非エンジニアの方に渡す前提の作りになっていることが印象的でした。
ブループリントで基盤を作成し、それを継承したものを個別に作成してもらえば、競合もなく各自が自由に設定を行うことができます。
(UnityのPrefabやSerializeFieldの考えと似ています)
タブで隣に移動すれば、主に非エンジニアの方が触るビューポート画面となります。
ブループリントとの行き来が容易(敷居が低い)で、エンジニアもこちらの画面を意識しつつ処理を入れることができます。
それっぽい動きになるまでが早い
大量の関数が用意されており、呼び出して繋げるだけでゲームとしての機能を拡張することが可能です。
ゼロからの開発では意識合わせが重要なので、実際に動かしながら「思っていたのと違った」「ここはこうした方が良いよね」などの話ができ、PDCAを早く回せるのはありがたいです。
共通化を視覚的に行える
プログラムは設計時点から先のことを考えておかないと簡単にスパゲッティ化します。
ノードでも同様ですが、ブループリントは関数化や変数も使用できるので視覚的に整理できます。
整理した後、各関数をチューニングしていけば、インターフェイスが確定した部品単位で作業を進めることができ、やりやすそうだと感じました。
※ まだこの工程に入っていないので、おそらく色々と困難が待ち受けていると思いますが、開発思想はこれだろうなと想像しています。
本業に活かせそうなこと
ゲームイメージを共有する際に使用できるかも
紹介内容に散々書いていますが、とにかく初期開発が早いので、Unityで作るアプリでも最初期だけはUnrealEngineを使ってイメージを固めるのも有りなのではと感じました。
ビジュアルスクリプティングが可能なので、エンジニア抜きで、プランナーさんを中心にゲームイメージを考える際にも使えそうです。
ゲームっぽい動きのノウハウが詰まっている
実際に動くものを作ってみると、コンシューマーゲームと比べて体感が違うことがあります。
ゲームとしては成り立っているけれど、何かが物足りない、心地よさが足りないと感じます。
UnrealEngineには、そのようなノウハウに繋がる細かい動きを制御する機構が組み込まれています。
例えば、カメラのSpringArm(自撮り棒のようなもの)の設定に「ラグ」があります。
自キャラの動きから僅かに遅れてカメラが追従する機能ですが、プランナーさんに教えていただくまでそのノウハウを知りませんでした。
そして、エンジニアの知らないノウハウが、既に設定項目として存在するありがたさ…!
このような細かな設定が多くあるので、プロジェクトの設定だけでも凄い項目数となっていますが、設定が何を意味するのか知るだけでも今後に活かせるものはありそうです。
終わりに
運用中のプロジェクトは(おかげさまで)何年も続いている状態であり、運用に携わるエンジニアは業務に追われて、なかなか「インプット」を得ることができません。
それこそ、自主的に…という形となり、なかなか意識低い系エンジニア(私)には厳しい状況です。
そのような状況でも「サブプロジェクト制度を使いたい!」と声をあげることで、
業務時間を使用して「インプット」を得られるこの制度、良いと思いませんか?
きちんと「アウトプット」も必要なので、計画を考える経験や納期に追われる楽しみも得られますよ!
Discussion