🎵

『あんさんぶるスターズ!!Basic』での開発リズム感とコンポーネント指向

2022/12/07に公開

はじめに

『あんさんぶるスターズ!!Basic』開発エンジニアのK.Y.です。
あんスタ!!では2022年もゲーム内外において多くの動きがあり、『あんさんぶるスターズ!!Basic』においても、多くの機能公開や各種キャンペーン公開が行われました。
ゲーム開発はスピード感が重要だと言われることが多いと思いますが、その実現方法についてのアプローチは様々だと思います。

ここでは、『あんさんぶるスターズ!!Basic』開発においてのアプローチをご紹介したいと思います。

ゲーム開発とスピード感

改めてゲーム開発におけるスピード感の意味を考えてみると、プランニングと開発で少し意味が違うのではないかなと思います。
プランニングにおいてはムーブメントや季節などをゲームへ反映することへのスピード感、開発においてはそれらの開発を停滞させることなくリズム感よく進めていくことかなと考えています。
また、持続性という観点も重要だと考えています。ある開発が完了して達成感で燃え尽きることなく、次の開発を進める必要があるからです。

開発リズム感と持続性

開発において、開発リズム感と持続性を何によって確保するのかというアプローチが複数あると考えています。
その一つが、動作実績の具体的流用、つまり継承かなと思います。
具体的には、以下のようなアプローチです。

2022年キャンペーン画面 > 年初キャンペーン画面 > キャンペーン画面 > 画面

継承自体、とても意義のある概念である一方、近年、その弊害についても議論されているかと思います。
ゲーム開発においては、基底クラスというものがなかなか定義しづらく、上記の例では「キャンペーン画面処理において、2022年キャンペーン画面ならこのように処理する」というような、継承元で継承先の知識を必要とする、継承の逆転現象のような実装が避けられないケースがあるように考えています。
そして、そのような既存の処理への対応が必要な場合、進行が停滞してしまう要因となります。
また、「対応は無理をすれば避けられるが、できれば既存処理を修正したほうがよい」というような場合も同様かと思います。

そのため、継承というアプローチは基本的に行わず、部品を組み合わせることによって実装を行っています。

コンポーネント指向

Happy Elements カカリアスタジオでは、主に Unity C# + Ruby on Rails という構成で開発を行っており、『あんさんぶるスターズ!!Basic』も Unity C# によって開発を行っています。

「部品を組み合わせる」という部分が Unity と非常に親和性が高く、それは Unity のコンポーネント指向によっています。

オブジェクト指向とコンポーネント指向では実装設計が明確に異なり、コンポーネント指向では部品の組み合わせによって対象が表現されます。

オブジェクト指向

自動車 > 四輪車 > 車(タイヤの付いたモノ)

コンポーネント指向

タイヤ + 車体 + エンジン + ハンドル = 自動車

コンポーネントというのは、実体だけではなく、「左から右へ移動するアニメーション」などの実体に働きかける手続きも含まれます。
コンポーネント指向という実装設計ポリシーへの準拠を意識しながら開発を行っています。

部品の共有と組み立て方の成熟

例えば、「2022年キャンペーン画面」という実装を行う際、各種部品及び標準的な組み立て方によって実装を行うことになります。
ここで、実装的な意味での「継承」と変わってくる点としては、組み上がっているものを論理的にコピーして拡張するのではなく、部品を共有して組み立て方を成熟させていくというアプローチである点です。
また、あんさんぶるスターズ!!では、Basic, Music の2つのアプリで開発を行うということもあり、「どの単位で部品として扱うか」という点はコミュニケーションにおいて特にフォーカスする点の一つでもあります。

まとめ

部品の単位でコード資産として考え、組み立て方を成熟させていくというアプローチは、定期的に組み立て方のベストプラクティスを検討するきっかけにもなり、また、コードの新陳代謝も行われるため、リズム感よく開発を行うことにつながっています。

これからもコンポーネントの枠を超えて躍動するあんさんぶるスターズ!!のアイドル達にご注目ください!!

GitHubで編集を提案
Happy Elements

Discussion