ゲーム開発
Unity
UnrealEngine
C++
Blender
ゲーム数学
ゲームAI
グラフィックス
サウンド
アニメーション
GBDK
制作日記
IT関連
ツール開発
フロントエンド関連
サーバサイド関連
WordPress関連
ソフトウェア設計
おすすめ技術書
音楽
DTM
楽器・機材
ピアノ
ラーメン日記
四コマ漫画
その他
おすすめアイテム
おもしろコラム
  • ゲーム開発
    • Unity
    • UnrealEngine
    • C++
    • Blender
    • ゲーム数学
    • ゲームAI
    • グラフィックス
    • サウンド
    • アニメーション
    • GBDK
    • 制作日記
  • IT関連
    • ツール開発
    • フロントエンド関連
    • サーバサイド関連
    • WordPress関連
    • ソフトウェア設計
    • おすすめ技術書
  • 音楽
    • DTM
    • 楽器・機材
    • ピアノ
  • ラーメン日記
    • 四コマ漫画
      • その他
        • おすすめアイテム
        • おもしろコラム
      1. ホーム
      2. 20230214_01

      【Unity】「怪盗チョコレート」をリリース!工夫点や反省点をざっと振り返る【バレンタイン】

      Unity制作日記グラフィックス
      2023-02-12

      マイケル
      マイケル
      みなさんこんには!
      マイケルです!!
      エレキベア
      エレキベア
      こんにちクマ〜〜〜
      マイケル
      マイケル
      本日2/14は何の日か分かりますでしょうか?
      そう バレンタインデー ですね!!!
      エレキベア
      エレキベア
      (言っちゃったクマ・・・)
      マイケル
      マイケル
      というわけでイベントに合わせてバレンタイン用のゲームを開発してみました!
      それがこちら!!

      怪盗チョコレート – 3Dチョコ集めアクション –
      MOLEGORO 無料
      チョコを集めて育成する3D怪盗ゲーム

      マイケル
      マイケル
      「怪盗チョコレート」

      です!!!!

      エレキベア
      エレキベア
      (なんだそれクマ・・・)
      マイケル
      マイケル
      このゲームはマジでUnity1Weekレベルの短期間で詰めて作ったんだけど、
      友人の協力もありなんとかバレンタインに間に合わせることができました!!
      その辺りの短期間で開発するために行った工夫等についても触れながら振り返っていきます!!
      エレキベア
      エレキベア
      うぇ〜〜1、2週間でリリースまでやるのを考えると吐き気するクマね・・・
      マイケル
      マイケル
      睡眠削って普通に体調崩して熱出たからね・・・
      そんな気合い入れて作ったエピソード含めて楽しんでいただければと思います!!
      エレキベア
      エレキベア
      (このゲームにそんな価値が・・・?)
      マイケル
      マイケル
      なお、今回もスクリプト部分はどんと全て公開していますので、
      こちらも興味ある方はぜひご参考ください!

      GitHub – masarito617/unity-chocolate-thief-scripts

      [使用したバージョン]

      Unity 2021.3.1f1 (URP)
      エレキベア
      エレキベア
      何という男気クマ・・・

      開発するに至った経緯

      ふと思いつく

      マイケル
      マイケル
      きっかけは終電を逃して渋々歩いて帰っている時でした。
      「今年はチョコもらえなさそうだなぁ・・・」
      そう思いながら渋々歩いておりました。
      エレキベア
      エレキベア
      (悲しいクマ・・・)
      マイケル
      マイケル
      「もういっそ奪ってやろうか・・・」
      そんな悪の気持ちが芽生えた瞬間、頭の中のプランナーが企画書を書き始めていました!!
      それを具現化したものがこちら!!
      マイケル
      マイケル
      これが怪盗チョコレートの設計書(ALL)です!!
      一部変わってはいますが、ほぼ最終的な内容と一緒ですね!!
      エレキベア
      エレキベア
      ほう・・・
      まあ手軽に作れそうだしカジュアルゲームとしては悪くなさそうクマね
      マイケル
      マイケル
      そう、悪くなさそうだなと思いつつも、問題なのは思いついたタイミングでした・・・。
      これを出すとしたらバレンタインに合わせたい・・・しかし思いついたのは1/27でした・・・。
      エレキベア
      エレキベア
      おおぅ・・・
      マイケル
      マイケル
      2/14にアプリとしてリリースするとなると、最低限一週間前(2/8)くらいにはストア申請まで漕ぎ着けたい・・・。
      そして2/1〜2/5は実家の家族が東京に遊びに来る(僕の部屋に泊まり)のため、5日間作業ができないのも確定していました。
      つまるところ下記のような状態になります。
      マイケル
      マイケル
      一週間も作業する時間が無いという事実・・・
      使用できる土日も2日しかないため、これを仕事しながらリリースまではさすがに無理だろうと思いました。
      エレキベア
      エレキベア
      さすがにこれは厳しいクマね〜〜〜
      マイケル
      マイケル
      そんなこんなで一旦仕様書はお蔵入りとなりました・・・。

      プロトタイプ作成

      マイケル
      マイケル
      それでも割と「怪盗チョコレート」という響きが気に入っていた僕は、土日で作れるだけ作ってそこから決めようとプロトタイプの開発に着手してみました。
      エレキベア
      エレキベア
      諦めが悪いクマね〜〜〜
      マイケル
      マイケル
      そんなこんなで出来たのが下記になります!
      まずは土曜(1/28)の成果がこちら!
      ↑プロト(1/28時点)
      マイケル
      マイケル
      Unityデフォルトの3DCubeが動き回っているだけの状態ですね・・・
      エレキベア
      エレキベア
      まあこうなるクマね・・・
      マイケル
      マイケル
      そして日曜(1/29)の成果がこちらです!
      ↑プロト(1/29時点)
      エレキベア
      エレキベア
      おお・・!?なんかそれっぽいクマ・・・!
      マイケル
      マイケル
      後述しますが、3Dモデル等はアセットやツールをガンガン流用して、
      何とかメインとなるインゲーム部分は完成させることができました。
      ワンチャンいけるのでは・・・?という気持ちにもなってきました。
      エレキベア
      エレキベア
      むむ・・しかし一週間はさすがに・・・
      マイケル
      マイケル
      僕もそう思い、また一旦諦めることにしました・・・。

      友人に協力を仰ぐ

      マイケル
      マイケル
      しかしここまで作ったので中々諦めることができず、何とか出来ないか考えていたところ
      画像やサウンドの素材を並行で作ってもらえばギリギリ間に合うかも・・?」という考えに至りました。
      そこで友人の師匠ことwentに無茶振りで作成をお願いしてみました!

      ↑師匠ことwentはドット絵やピコピコサウンドを作っている!作品を要チェックだ!

      マイケル
      マイケル
      あまりに急かつ短期間で引いていましたが、何とか作ってもらえることになりました!
      元々一緒に作ってみたかったので丁度いい機会かもとも思いつつ、依頼したからには納得いく出来で完成させなければなりません!!
      ここで何としても作り切る覚悟を決めて取り組むことにしました!!
      エレキベア
      エレキベア
      申し訳ねえクマ・・・
      もう逃げられねえクマ・・・
      マイケル
      マイケル
      スケジュールを考慮すると、作業できないゾーンに入る前には全体のシーケンスと主要機能は完成させておきたい!
      そういうわけで 1/30、31 に死ぬ気で作って、師匠作の素材差し替えまで何とか完了しました!
      ↑全体をざっくり作って…(1/30)
      ↑作ってもらった素材に差し替えて大方完成!(1/31)
      エレキベア
      エレキベア
      おお〜〜〜!!
      何かほぼできてる感じがするクマ〜〜〜!!
      マイケル
      マイケル
      まあゲーム開発はここからが大変なんだけどね・・・
      そして師匠は無茶振りでお願いしたにも関わらず、ドット絵とBGM、SEまで速攻で作ってくれました!!
      さすが師匠ことwentです!!!感謝しかありません!!
      ↑非常にイカした怪盗チョコレートである
      エレキベア
      エレキベア
      すげえええクマ〜〜〜〜〜
      マイケル
      マイケル
      余談ですが、師匠はエレキベアのドット絵も描いてくれています!
      現在は僕のTwitterアイコンにしていますが、このブログのどこかにも飾っておきたいですね!!
      ↑盗電するエレキベア
      エレキベア
      エレキベア
      うええぇえ〜〜〜?!!?
      まさか知らぬ間にドット絵化していたとはクマ・・・・
      師匠ありがとうクマ〜〜〜〜〜〜〜
      マイケル
      マイケル
      そしてそこからは地道に開発を続けて、作業できないゾーンもなんだかんだ夜中にちまちま作業しつつ、なんとか目標となる2/8にストア申請まで漕ぎ着けることができました!!
      ↑無茶苦茶なスケジュールで何とか完了
      ↑最終的な怪盗チョコレート
      エレキベア
      エレキベア
      おお〜〜〜〜
      バッチリ完成してるクマ〜〜〜〜
      がんばったクマね
      マイケル
      マイケル
      今回は運よくストア申請もあっさり通って余裕があったので、追加のアップデートもいくつか行うことができました。
      詰め詰めできつかったけど、めっちゃ楽しかった!!!!
      エレキベア
      エレキベア
      やり切ったクマね〜〜
      えらいクマね〜〜

      短期間で開発するために行った工夫

      マイケル
      マイケル
      全体の経緯を書いたところで、ここからは開発寄りの話に入っていきます。
      まずはこの短期間で完成させるために行った工夫についていくつか紹介します!!

      前作ったコードを流用!

      マイケル
      マイケル
      一つ目は前に作ったアプリのコードを可能な限り流用すること!
      こちらは以前作ったオセロのコードをベースにして作りました。
      エレキベア
      エレキベア
      オセロ懐かしいクマ〜〜〜
      マイケル
      マイケル
      メインとなるゲーム部分以外の機能は大方一緒なので、流用できる部分も多いことは一目瞭然です。
      実際にタイトル画面を見比べてみてもデザイン以外はほぼ同じですね!
      エレキベア
      エレキベア
      まあこの規模だと似たようなもんクマね
      マイケル
      マイケル
      具体的には下記のような押下時の処理含めて丸々移植します。
      これによって作るゲーム固有部分の開発に集中する作戦です!
                  // MORE APPボタン
                  titleTopView.SetListenerMoreAppButton(() =>
                  {
      #if UNITY_ANDROID
                      Application.OpenURL("https://play.google.com/store/apps/developer?id=MOLEGORO");
      #elif UNITY_IPHONE
                      Application.OpenURL("https://apps.apple.com/jp/developer/masato-watanabe/id1523138920");
      #else
                      Application.OpenURL("https://elekibear.com/molegoro_app");
      #endif
                  });
                  // BGMボタン
                  titleTopView.SetListenerBgmButton(() =>
                  {
                      var isVolumeOff = _audioService.ChangeBgmVolumeOnOff();
                      titleTopView.ChangeBgmOnOffSprite(isVolumeOff);
                      _playerPrefsRepository.SaveIsBgmVolumeOff(isVolumeOff);
                  });
                  titleTopView.ChangeBgmOnOffSprite(_playerPrefsRepository.GetIsBgmVolumeOff());
                  // SEボタン
                  titleTopView.SetListenerSeButton(() =>
                  {
                      var isVolumeOff = _audioService.ChangeSeVolumeOnOff();
                      titleTopView.ChangeSeOnOffSprite(isVolumeOff);
                      _playerPrefsRepository.SaveIsSeVolumeOff(isVolumeOff);
                  });
                  titleTopView.ChangeSeOnOffSprite(_playerPrefsRepository.GetIsSeVolumeOff());
      ↑この辺は丸々持ってこれますね
      マイケル
      マイケル
      また、シーン構成に関しても基本は同じでタイトル画面のシーンゲーム画面のシーンがメインとなるため、全体のシーケンス処理についても流用できる部分が多いです。
      ↑今回作ったゲームのシーン構成
      ↑TitleScene(タイトルTOP画面)
      ↑TitleScene(強化画面)
      ↑GameScene
      エレキベア
      エレキベア
      そういうわけでゲーム全体の大枠は流用できたわけクマね

      設計は細かく考えない!

      マイケル
      マイケル
      そして設計思想についても前回作った考えに合わせて、細かい部分については考えずスピード重視で作りました。
      そのおかげで迷わずに実装を進めることが出来たと思います!
      ただ、DIコンテナを使用してそれなりに分割はしているのでコード量もそれなりに多くなっていますね!
      ↑VContainerを使用した構成
      エレキベア
      エレキベア
      意外と設計部分で悩んで時間かかることも多いクマからね〜〜
      マイケル
      マイケル
      DIコンテナやVContainerの使い方について知りたい方は、下記記事にまとめていますのでこちらもご参照ください!!

      モデルはアセットを活用!

      マイケル
      マイケル
      そして3Dモデルに関しては今回は自分で作っている時間はないので、アセットストアから使えそうなものを活用させていただきました!
      キャラクター
      マイケル
      マイケル
      まずキャラクターですが、下記のハイパーカジュアル用のキャラクターをセットを購入しました!!普通に赤字です!!

      エレキベア
      エレキベア
      このために買ったのクマか・・・
      マイケル
      マイケル
      まあ汎用性高いから今後も使えると思うし・・・・・・・
      こちらのモデルを少しいじって、自作シェーダーを適用していい感じにしてみました!
      ↑プレイヤー
      ↑女の子
      マイケル
      マイケル
      女の子は可愛くしたかったのですが、ただのピンクの生き物になってしまった・・・・
      エレキベア
      エレキベア
      まあ仕方ないクマ・・・
      ステージ
      マイケル
      マイケル
      そしてステージについても何か無いかな〜〜と探していたところ、
      以前購入した何かのセットに入っていたステージのモデルが使えそうなことが分かりました!

      エレキベア
      エレキベア
      使う機会ができてよかったクマね
      マイケル
      マイケル
      この中に入っていた道路のモデルを組み合わせて、それっぽい感じにしてみました!
      割とイメージ通りですね!!
      ↑速攻で作ったステージ
      エレキベア
      エレキベア
      たまたま持ってて助かったクマ
      その他
      マイケル
      マイケル
      あとはチョコとマーカーだけBlenderでサクッと作りました!
      マイケル
      マイケル
      使用した3Dモデルは以上ですね!
      なんて省エネなんだ!!
      エレキベア
      エレキベア
      アセットストアはマジ便利クマね

      UIはProcedural UI Image!

      マイケル
      マイケル
      そしてUIについてはほぼ全てProcedural UI Imageを使用して作成しています!
      こちらは以前紹介したツールですね!
      ↑シンプルなUIならこれだけで作れる
      エレキベア
      エレキベア
      UI作成は時間がかかるクマからこれもかなり便利クマね〜〜〜
      マイケル
      マイケル
      これはもはや標準の機能にしてほしい・・・
      シンプルイズベストだ!!

      アニメーションはVeryAnimation!

      マイケル
      マイケル
      アニメーションはVeryAnimationというツールを使用してUnity上で作成しています!
      こちらも定番となっていますね!
      マイケル
      マイケル
      下記がプレイヤーと女の子のアニメーション遷移です。
      こうしてみるとかなり多そうに見えますが、一つのアニメーションは数秒なのでこちらもサクッと作ることができました!
      ↑プレイヤーのアニメーション
      ↑女の子のアニメーション
      エレキベア
      エレキベア
      これで中身の実装に集中できそうクマね

      その他に工夫・挑戦した点

      マイケル
      マイケル
      その他に工夫・挑戦した点についてもいくつか振り返っていきます!

      シェーダーをいくつか実装

      マイケル
      マイケル
      まずは最近描画周りを勉強中ということもあり、シェーダーをいくつか書いてみました!
      トゥーンシェーダー
      マイケル
      マイケル
      まずはトゥーンシェーダー!
      こちらはキャラクターに適用していて、以前書いた記事で解説したものをほぼそのまま使っています。
      背面法で輪郭線描画するシンプルなものですね!
      エレキベア
      エレキベア
      トゥーンシェーダーは大好きクマ〜〜〜〜
      マイケル
      マイケル
      ただ一点、金色感を出すには陰影に少しオレンジ色を加えたらよいという意見をもらったので、ボーナスキャラの陰影には若干色を加算しています!
      金色・・とまではいかないですが、少しゴージャスな感じにはなったかと思います!
                  fixed4 frag (v2f i) : SV_Target
                  {
                      // RampMapから取り出して乗算
                      const half nl = dot(i.normal, _WorldSpaceLightPos0.xyz) * 0.5 + 0.5;
                      const fixed3 ramp = tex2D(_RampTex, fixed2(nl, 0.5)).rgb + fixed3(0.25,0.1,0); // 金色感を出すため少しオレンジを足す
                      fixed4 col = _MainColor;
                      col.rgb *= ramp;
                      return col;
                  }
      ↑少しゴージャスになった気がする
      エレキベア
      エレキベア
      自分でシェーダー書くと細かい調整が簡単クマね〜〜〜〜
      背景ボーダーシェーダー
      マイケル
      マイケル
      タイトルシーンの背景についてもシェーダーで実装しています!
      ボーダーをスクロールさせるものですね!
      マイケル
      マイケル
      こちらは下記記事を参考に実装させていただきました!
      uGUIで表示するための調整をいくつか行った上で実装しています!!

      参考:
      そろそろShaderをやるパート12 線を描画してスクロールさせる

      エレキベア
      エレキベア
      ありがたいクマ〜〜〜〜〜
      集中線シェーダー
      マイケル
      マイケル
      そしてゲーム画面の集中線エフェクトもシェーダーで作ってみました!
      こちらはShaderGraphでの実装例が多かったので下記記事を参考に挑戦してみました!

      参考:
      集中線エフェクト【uGUI】|Unity ShaderGraph CookBook vol.1【ShaderGraph 入門】

      エレキベア
      エレキベア
      ShaderGraphも中々楽しいクマね〜〜〜
      マイケル
      マイケル
      適用したものが以下になります!
      今回は調整が面倒だったので画面外からスケールさせることでエフェクトを出しています!
      ↑エフェクトあるとやはり印象が変わる
      ↑雑なエフェクト
      マイケル
      マイケル
      ただ、モバイルだとやはり描画負荷が大きかったのでオプション設定にせざるをえませんでした・・・
      この辺りはまだまだ調整してみたいですね・・・
      エレキベア
      エレキベア
      むむ・・・やはり描画負荷がネッククマか・・・
      マイケル
      マイケル
      実装したシェーダーは以上になります!
      ただ、URP環境でシェーダーを実装するにあたり中々一筋縄ではいかず、ShaderGraphからコード出力して一部修正したりといった不具合対処をいくつか行っています。
      こちらは、URPでの描画周りの不具合対処として別途記事を書きますのでお待ちください!
      エレキベア
      エレキベア
      URPはまだ発展途上な部分も多いクマからね〜〜〜

      ※↓こちらも記事にまとめました!

      序盤は早く成長させる

      マイケル
      マイケル
      そして強化処理については、序盤は中々経験値が得られないことも考慮して初めの内ほど早く成長するよう簡単な調整を行ってみました。
      こちらはEaseOutCircのイージング関数を使用して強化率を補完することで簡易的に調整しています!

      参考:
      easeOutCirc イージング関数チートシート

              // 成長曲線を意識して初めは成長が早い
              private float EaseOutStatus(float x) {
                  return Mathf.Sqrt(1 - Mathf.Pow(1 - x, 2)); // EaseOutCirc
              }
      エレキベア
      エレキベア
      イージング関数はアニメーションだけじゃなくこういう使い方もできるのクマね
      マイケル
      マイケル
      本当はもう少し細かく成長率を調整した方がいいとは思うけど、時間の関係上上記の処理のみで調整しました!
      こちらの関数を用いて下記のように強化後のパラメータを計算しています!
              /// <summary>
              /// 成功確率の計算
              /// </summary>
              public int CalculateActionSuccessPercent(int minPercent, int maxPercent, PlayerActionType actionType)
              {
                  var parameter = 0;
                  switch (actionType)
                  {
                      case PlayerActionType.Approach:
                          parameter = _playerStatus.CharmParameter + _addPlayerStatus.CharmParameter;
                          break;
                      case PlayerActionType.Please:
                          parameter = (_playerStatus.CharmParameter + _addPlayerStatus.CharmParameter
                                                                    + _playerStatus.TechParameter +
                                                                    _addPlayerStatus.TechParameter) / 2;
                          break;
                      case PlayerActionType.Thief:
                          parameter = _playerStatus.TechParameter + _addPlayerStatus.TechParameter;
                          break;
                  }
                  var ratio = (float) parameter / MaxParameterValue;
                  ratio = EaseOutStatus(ratio);
                  // 最終的な確率の計算
                  // パラメータが最大でない場合は、ステータスも-1しておく
                  var successPercent = minPercent + Mathf.CeilToInt((maxPercent - minPercent) * ratio);
                  if (successPercent == maxPercent && parameter < MaxParameterValue)
                  {
                      successPercent -= 1;
                  }
                  return successPercent;
              }
      ↑強化後のパラメータ計算
      エレキベア
      エレキベア
      なるほどクマ〜〜〜〜

      オブジェクトプールでの生成

      マイケル
      マイケル
      女の子の生成については、Listにプールしておくことで再利用して生成するようにしてみました!
      UnityにもObjectPoolクラスなるものがあるという噂ですが、これくらいなら自分で実装した方が早いでしょう!
              /// <summary>
              /// 女の子のPool用
              /// </summary>
              private static readonly int GirlPoolCount = 10;
              private List<Girl> _girlPoolList;
      
      ・・・略・・・
      
              public void CreateGirls()
              {
                  _intervalTotalTime = 0.0f;
      
                  // 女の子を一定数生成しておく
                  _girlPoolList = new List<Girl>();
                  for (var i = 0; i < GirlPoolCount; i++)
                  {
                      var girl = _girlFactory.CreateGirl();
                      girl.SetGirlId(i+1); // 一意となるようIDを振っておく
                      _girlPoolList.Add(girl);
                  }
              }
      エレキベア
      エレキベア
      オブジェクトプールのデザインパターンクマね
      ゲーム開発の定番クマ

      Timelineによるアニメーション作成

      マイケル
      マイケル
      あとは意外と余裕があったのでタイトル画面のアニメーションも作ってみました!
      こちらはTimelineを使用して下記のようにUIを動かすことで作成しています。
      ↑タイトルアニメーション
      ↑シーンビューで見た場合
      ↑キーを打った状態
      エレキベア
      エレキベア
      実際は海苔巻きで挟んだ感じになっているクマね
      マイケル
      マイケル
      せっかくカッコいいドット絵とBGMを作ってくれたから、いい感じに見せたかったんだよね
      簡単なアニメーションだけど、個人的には結構気に入っています!
      アニメーション制御のスクリプトについては下記のようになっています。
      using UnityEngine;
      using UnityEngine.Events;
      using UnityEngine.Playables;
      
      namespace Chocolate.UIs.View
      {
          public class TitleTimelineView : MonoBehaviour
          {
              [SerializeField] private PlayableDirector playableDirector;
              private UnityAction _endAnimationCallback;
      
              private bool _isPlayAnimation;
              public bool IsPlayAnimation()
              {
                  return _isPlayAnimation;
              }
      
              public void StartTitleTimeline(UnityAction endCallback)
              {
                  _isPlayAnimation = true;
                  playableDirector.Play();
                  _endAnimationCallback = endCallback;
              }
      
              public void SkipAnimation()
              {
                  _isPlayAnimation = false;
                  playableDirector.Stop();
                  _endAnimationCallback?.Invoke();
              }
      
              // Signalで呼ばれる想定
              public void EndAnimation()
              {
                  Debug.Log("EndAnimation");
                  _isPlayAnimation = false;
                  playableDirector.Stop();
                  _endAnimationCallback?.Invoke();
              }
          }
      }
      
      マイケル
      マイケル
      タップでアニメーションスキップできるようにもしています。
      しかし、アニメーション途中で意図しない状態で次へ進むと不具合の原因になりかねないので、アニメーションのCanvasは別途用意して作ったほうがよかったなと思いました。。
      エレキベア
      エレキベア
      なるべくアニメーションのみで切り離したいところクマね

      ストアレビューを入れてみた

      マイケル
      マイケル
      あとは今回実験的にスタッフロール後にストアレビューを促すよう実装を入れてみました!
      今回は時間がなかったのでiOSのみになります。
      namespace Chocolate.Services.Impl
      {
          public class StoreReviewService : IStoreReviewService
          {
              public void ShowStoreReview()
              {
                  // 時間がないためiOSのみ実装
      #if UNITY_IOS && !UNITY_EDITOR
                  UnityEngine.iOS.Device.RequestStoreReview();
      #else
                  UnityEngine.Debug.Log("Not Support Request Store Review.");
      #endif
              }
          }
      }
      
      マイケル
      マイケル
      ただレビューダイアログを出す前にもう一つ確認ダイアログを出すほうが丁寧だなと思いました。
      こちらは次回以降実装したいですね!
      エレキベア
      エレキベア
      レビューも中々付かないクマからね〜〜〜〜

      反省点

      マイケル
      マイケル
      最後に、山ほどある反省点の中からいくつかピックアップしていこうと思います!

      テスト、リファクタほぼ出来ていません!

      マイケル
      マイケル
      まず時間の関係上、勢いで実装したためテストやリファクタはほぼ出来ていません!!
      せめてパラメータ計算部分だけでも単体テスト書いておけばよかったなと思っています。。
      エレキベア
      エレキベア
      まあもうアップデートすることもないだろうクマ()

      自動ビルド環境作らなきゃ・・・

      マイケル
      マイケル
      短い期間で開発するにあたって、やはり各OSのビルド時間がネックになっているなと感じました。
      こちらは早いところビルド環境を整えたいところですね・・・
      エレキベア
      エレキベア
      お金は払いたくない・・・

      そもそものゲーム仕様

      マイケル
      マイケル
      そもそものゲーム仕様として、もっと工夫できる点は多々あったなと思いました。
      単純な周回だとメリハリが足りていないし、後半は気持ち良くなってくるけど序盤のモチベーション維持も工夫できた気がします・・
      この辺は反省して次の作品に活かしていこうと思います!!
      エレキベア
      エレキベア
      とりあえず実際に遊んでもらって正直な意見を集めながら改善していくのがよさそうクマね

      開発テンプレートは用意しておきたい

      マイケル
      マイケル
      以前作ったソースコードをかなり流用しましたが、汎用的なものについてはテンプレートとしてパッケージ化しておいたほうがいいな、と思いました。
      毎回作り直すのも面倒だしね・・・
      エレキベア
      エレキベア
      MolegoroLibを作るクマ〜〜〜〜〜

      おわりに

      マイケル
      マイケル
      というわけでざっくりにはなりますが、今回の開発の振り返りでした!
      最近は勉強目的で作ることが多かったけど、やっぱり思いついたものを勢いで作るのは最高ですね!
      マイケル
      マイケル
      それと自分以外の誰かと作るのも初めてだったから本当に楽しかった!!
      短い期間で急にお願いしちゃったのが申し訳ないけど、またもう少し時間を取って一緒に作れたらいいな〜〜と思います!
      改めてありがとう師匠!!!!!
      エレキベア
      エレキベア
      本当にありがとうクマ〜〜〜〜
      マイケル
      マイケル
      短期間で作る自信もついたから、開発テンプレートも用意したらUnity1Week等にも参加してみたいな!!
      あんまり長いとモチベーション維持も大変だしね・・・
      エレキベア
      エレキベア
      オセロはマジきつかったクマ・・・
      マイケル
      マイケル
      それでは今日はこの辺で!!
      アデューーーー!!!!
      エレキベア
      エレキベア
      クマ〜〜〜〜〜〜

      【Unity】「怪盗チョコレート」をリリース!工夫点や反省点をざっと振り返る【バレンタイン】〜完〜

      怪盗チョコレート – 3Dチョコ集めアクション –
      MOLEGORO 無料
      チョコを集めて育成する3D怪盗ゲーム

      ↑よかったら遊んでください!!!


      Unity制作日記グラフィックス
      2023-02-12

      関連記事
      【Unity】Timeline × Excelでスライドショーを効率よく制作する
      2024-10-31
      【書籍紹介】「コンピュータグラフィックス」に出てくる用語をまとめる【CGエンジニア検定】
      2024-07-13
      【UE5】Niagara SimulationStageによるシミュレーション環境構築
      2024-05-30
      【Unity】Boidsアルゴリズムを用いて魚の群集シミュレーションを実装する
      2024-05-28
      【UE5】第三回 ミニゲーム制作で学ぶUnrealC++ 〜UI・仕上げ実装 編〜
      2024-05-18
      【UE5】第二回 ミニゲーム制作で学ぶUnrealC++ 〜キャラクター・ゲーム実装 編〜
      2024-05-18
      【UE5】第一回 ミニゲーム制作で学ぶUnrealC++ 〜UnrealC++の概要 編〜
      2024-05-18
      【Unity】GoでのランキングAPI実装とVPSへのデプロイ方法についてまとめる【Go言語】
      2024-04-14