Akatsuki Hackers Lab | 株式会社アカツキ(Akatsuki Inc.)

Akatsuki Hackers Labは株式会社アカツキが運営しています。

【ハチナイ】Unityクライアントエンジニアインターン【9日間】

こんにちは。teppeiと申します。3月16日〜3月27日まで、祝日を挟んで9日間インターンをしました。「八月のシンデレラナイン」のプロジェクトでUI関連の機能を中心に開発に携わりました。本記事では今回のインターンで行なったタスクや、自分の感じたことなど書いていきたいと思います!

 

目次

 

自己紹介

私は機械&情報系の大学院一年生で、VRやヒューマンコンピュータインタラクションの研究をしています。普段はVTuberの配信システムを作る会社でバイトをしています。インタラクティブで新しいエンタメを作る仕事をしたいので、それが実現できそうな会社を探して就活中です。

 

 インターンに参加した経緯

私は去年夏にあったアカツキのゲームジャムに参加し、その後選考を進めてアカツキから内定を頂いていました。就職先を決めるにあたってもう少しインターンを経験して判断材料を増やしたかったので、今回のインターンに参加させていただきました。

 

 初日〜作業開始まで 

 初日に同時に入社した方々と一緒に、人事、ゲーム部門、労務のオリエンを受けました。それぞれの時間は短く、簡潔にまとめられていたので受けるのが楽で良かったです。オリエンの合間に業務用MacBook Proの環境構築を進めていました。

二日目にメンターと開発プロデュサーの方と三人で、私が事前にゲームを遊んで気づいた改善点リストを見つつ、インターンで行うタスクを決めるミーティングをしました。タスクはすんなり決まり、ストーリーチャプターのレイアウトを自動で配置するUnityEditor拡張を作ることになりました。その日の午後から本格的に開発を始めることができました。

参加したチーム

「八月のシンデレラナイン」という、野球をする女子高生を育成するモバイルゲームを開発しているTSUBASAというチームでインターンさせていただきました!

ストーリーチャプター自動レイアウト機能の開発

方針の決定

ストーリーチャプターのアイコンはプランナーの方々がその都度位置を手打ちしているのですが、通常ステージではレイアウトが定型(波形など)のものも多いので、そういったレイアウトを自動化して手間を省けないかというのが今回のIssueでした。

まず最初に実際にレイアウト作業を行なっているプランナーの方々の席まで行って、現在のワークフローと、改善したい点を教えていただきました。

レイアウトの座標はUnity上でScriptableObjectに直接打ち込んでいるとのことだったので、同じくUnity上で作業ができるように、Unityのエディタ拡張で自動レイアウト機能を作っていく方針にしました。また、打ち込んだ座標が正しいかどうかはその都度ゲームを実行して確認しているとのことだったので、実行しなくても手軽に確認できるようにGUIを実装することにしました。

エディタ上でレイアウトを編集できる機能の実装

この前webで見かけたプレハブ編集画面を自分で作るというアプローチが良さそうだったので、ScriptableObjectに書かれたアイコンレイアウトの情報をSceneView上に表示して、GUIで編集・保存できるようにしようと考えました。

f:id:negitoro113:20200325144600p:plain

実際に作ったものの画面がこちら ↑ です。赤い四角がアイコンの位置を表しており、左上にあるGUIで数値を変更するとSin波や三角波の形状にアイコンが自動配置されるようになっています。

この機能がそれなりに動くようになった時点で実際に機能を使う方々に見せに行き、フィードバックを頂いて機能改善をしていきました。

三日目にはだいたい動くようになったので、プルリクを出してコードをレビューしていただきました。細かい部分まで丁寧にレビューコメントをいただきました。普段のバイトでは開発に携わる人数が少ないということもあり、そこまで細かくはレビューされないので、新鮮でいい経験になりました。

プレイ中に編集・保存を行えるように実装方針を変更

既存のコードやプランナーの方の要望への理解が深まっていくにつれ、もっと使いやすい設計が思い浮かんできました。

これまでの実装だとアイコンの位置が赤い四角で示されていましたが、実際の見た目で位置を調整するに越したことはありません。なので、実際の見た目でアイコン位置を調整してそのまま保存できるように、ゲームのプレイ中に自動レイアウトと保存ができるように仕様を変更することにしました。

f:id:negitoro113:20200325153631p:plain

できたものがこちら↑です。実際の見た目でレイアウトの保存・編集ができるようになりました。

実行中のゲームオブジェクトからエディタの機能を呼ぶのはUnityの仕様では基本的にできないのですが、Reflectionを使うなどして半ば無理矢理に実装しました。未経験の機能を使えて楽しかったです。

 

その他のタスク

上記のタスクを早めに終わらせることができたので、再びプログラマとプロデューサの方とミーティングして追加のタスクを決めました。不具合の修正や細かな改修をいくつか行いました。これらのタスクを通してコードの色々な箇所を見ることができ、勉強になりました!デバッグに思ったより時間がかかってしまったので、もっと効率的にデバッグができるようにならなければと反省しました…。

 

まとめ

靴を脱いで上がるオフィスや、リビングのような共有スペースがあり、非常に居心地のいいオフィスでした。また、一人一人の考えと行動で会社を良くしていくという文化が一貫していることが印象的でした。新しい事業や技術に挑戦している方も多くいらしゃいました。総じて、ストレスレスに楽しく働ける会社という印象を持ちました。

コロナの影響により多くの社員がリモートワークで会社にはいらっしゃらなかったですが、私の席の周りは結構人がいて寂しくはなく、それなりにコミュニケーションもとれたので良かったです。

今まで参加したインターンや仕事は、プロジェクトの立ち上げや開発初期段階のものがほとんどだったので、 既に数年サービスを継続しているプロジェクトで働いた経験は新鮮でとても勉強になりました。ありがとうございました!