TGS出展を目指して身についた技術力周りのお話


はじめに

本記事はUnityゲーム開発者ギルド(UGDG)アドベントカレンダー10日目の記事です。
Unityゲーム開発者ギルド Advent Calendar 2023 - Adventar
今回は今年の9月におこなわれたTokyoGameShow2023(TGS)のアカデミーコーナーに自作ゲーム「GhostDivePuzzle」を展示するまでの技術周りの成長に関する話をします。TGSの振り返り記事は以下のURLから読めます。
TGS2023振り返り|Hamu (note.com)

製作期間

まず製作期間ですが昨年12月のから本格的に制作を開始しました。
そこから9月まで制作は続いてたのですが途中、卒業論文や試験などがあったためずっと制作していたわけでなく、制作していたのはだいたい6~7カ月くらいです。

前半戦(12月~5月)

元々は昨年秋頃に2Dのアクションゲームを開発してみたいと考え、制作を開始し12月に入ったころからパズルアクションの方向で行くことを決定して、
ちょうどいいタイミングでUnity1Week(u1w)と東京ゲームダンジョン2が開催されたのでその2つにプロトタイプ版を展示しました。そこで良いフィードバックをもらえたのでSteamリリースなどを目標に本格的に制作を開始しようと思い、3月頃から制作を再開しました。元々u1w規模のゲームだったので凄いごちゃごちゃしたプログラムだったので1から作り直すことにしました。ある程度長期の開発になることや仕様が変更されることを考慮して以下の書籍などを参考にプログラムの設計などを学びながらプログラムを組み立てていきました。
ゲームプログラミングパターンでコードをレベルアップさせよう | Unity Blog
オブジェクト指向の考え方 5th Edition - インプレスブックス (impress.co.jp)
こういったことを意識しながらプログラムを組んでいくと今まで分かったようで全然分かってなかったクラスやインターフェースなどのオブジェクト指向に関する事柄が少しづつ分かっていきました。また4月から専門学校に再入学してそこでC/C++と学校独自のエンジンでゲーム制作を勉強していったのですが、C言語中心だったためオブジェクト指向(コンポーネント指向)がなく、Unityの優秀さが改めて分かり、またじゃあどういう風に書けばオブジェクト指向ぽくなるのか?を考えていくようになりました。

後半戦(6月~9月)

そんなこんなでゲームを制作していると、ある日(たしか6月の始めころ)当然もっとこうすれば分かりやすくプログラム書けるんじゃ?といったアイデアがたくさん思い浮かぶようになり、またゲームをほぼ1から組みなおすことにしました。少し具体的に言うと今までは神クラスぽいのがいたり、煩雑な参照をおこなっていたのですが、そういった問題をある程度解決できるようになりました。
そして7月の始めころに新しく書き直した実装が完成し、そこからTGSまでは時間があまりなかったのでそこからは機能実装にひたすら注力しました。そのため今のバージョンだと一部汚い実装部分はありますが、TGS本番では20~30分規模のゲームを無事展示できるようになりました。

技術周り(設計)の話

どんな感じで制作していったかを書いていましたがこれからはもう少し技術的(プログラム周り)の話をしていきたいと思います。
TGS出展に向けて制作していく上で自分が一番成長できた分野がプログラムの設計周りの話なのでそこについての話をしていきたいと思います。
まずは個人的に一番役に立っている
(今でも定期的に見返したりしています)記事を紹介します。
Unityにおける「設計レベル」を定義してみた #Unity - Qiita
上記の記事から引用するとGhostDivePuzzleの制作を開始した当初の自分はギリギリレベル1になっているかどうかといったくらいの実力でした。
そのくらいのレベルでも小さい規模のゲームならまだしもある程度の規模になると途端に歯が立たなくなってきます。なのでレベル2を目指すために最初に紹介した本を読んだり、あとは以下のような記事を参考に設計を学んでいきました。
[初心者向け]破滅的なクソコードを書かないために意識したい3つのこと #初心者 - Qiita
【Unity】クラスは膨らむ前に分けよう。保守性と可読性の向上へ【C#】 │ エクスプラボ (ekulabo.com)
最初はとりあえず全部理解しないまま書かれたことを守るようにして開発を続けていくとある日とつぜん自分の中で言語化できるようになり、なぜこうしたほうが良いのかなどを自然に分かっていくようになります。
そうしていくうちにデザインパターンの使いかたなども少しづつですがわかってくるようになりました。特にGhostDivePuzzleではStatePatternとSingletonPatternにとても助けられています。
(これもそのうち記事にしたいですね)
そうするとSOLID原則なども少しづつ理解できるようになり、UnityのMonobehaviourの必要性なども分かってくるようになって
そこからは自分の中の設計ルールが少しづつ確立できるようになってきました。今はMVPパターン周りの理解を深めています。

最後に

今回はTGS出展までの技術的な成長について記事にしました。
ほぼ独学なので少し遠回りをしてしまったりしてますがそれも含めとても良い経験になったと思います。あとここまで制作を続けられたのはUGDGの皆さんのおかげです、本当にいつもありがとうございます。
来年もこんな感じで頑張ってゲームを作っていくのでよろしくお願いします!!


この記事が気に入ったらサポートをしてみませんか?