メインコンテンツへスキップ
見出し画像

ネイトのバグ退治大作戦!迷宮UIとオーバーフローの脅威に挑む【プロジェクトネイト】

    今回やったこと

    ■ストーリー簡略化機能を追加!(あと、バグ修正など)



    ■ 告知!!!
    動画更新しました。
    良かったら見に来てね!



    ■募集中のアイディア
    ① このゲームを飾る「タイトル」を考えてください!!!
    さて、いよいよこの作品を飾る、一番大事なアイディアの募集です。
    本作のタイトルを、皆さんに決めていただきたいです!
    どんなタイトルでも構いません。
    皆さんのセンスが光るネーミングをお待ちしています。

    • アイディア募集期日:5/18(月) 18:00 まで

    • 決定方法:頂いたアイディアをまとめ、リリース前日である5/23(土) 18:00まで、note・X・YouTubeでアンケートを取り決定します!

    👇下のRunPenをクリックして書き込んでください!匿名で記入できます。


    ②「古代エジプト編」で発生しそうなイベント
    (例:ピラミッドでの過酷な修行、ナイル川での予期せぬハプニング など)
    ※期限はありません!皆さんの自由でユニークな発想をお待ちしています。


    ③「樹海編」で発生しそうなイベント
    (例:森の中、クマさんに出会った。お化けと遭遇 など)
    ※期限はありません!皆さんの自由でユニークな発想をお待ちしています。

    ④主人公・ネイトの「スキル」(無期限)
    (例:ファイアボール / 射程:2マス先の一体 / 効果:対象に小ダメージ)
    ※王道からちょっと笑えるネタスキルまで、
    どんなアイディアでも大歓迎です!


    こんにちは、「まる。」です!


    今回は、テストプレイで気になった部分のブラッシュアップと、現在確認しているバグの修正を一気にまとめてやっつけます😎


    ゲームの大部分が出来上がったからこその総仕上げ!


    果たしてネイトは大量の対応を無事にこなせるのか……?
    ぜひ、ネイトの勇姿(と開発の奮闘)を見届けてください!


    二人の茶番

    🎧今日の作業用BGM

    Elektronomia/作(編)曲 :NoCopyrightSounds
    Elektronomia & JJD - Free | House | NCS - Copyright Free Music

    画像
    ポマイラ(自称ネイトの使い魔)

    「よお、お前ら! オレ様だよ、ポマイラ様だ!

    ところで、お前らは好きな漫画とかあるか?
    オレ様は最近『サンキューピッチ』って作品にハマってるぜ!
    この作者の前作も読んでたんだが、これがまぁ、おもしれぇんだ!」

    画像
    ネイト(幻の星の精霊)

    「私は、藤田和日郎先生の作品が大好きね!
    最近読んだものだと、『チェンソーマン』の作者の短編『さよなら絵梨』も結構面白かったわ!

    それと、少し昔の作品になるけれど『封神演義』も大好きね」

    画像
    ポマイラ(自称ネイトの使い魔)

    「おっ、藤田和日郎先生と藤本タツキ先生!
    どっちもいいよな! 何というか、本物の天才って感じがするぜ!」

    画像
    ネイト(幻の星の精霊)

    「個性的で素敵な作品を描かれるわよね!
    私もいつか、あんな風に自分の個性を存分に発揮した作品を作ってみたいわね」


    🎞キャラ制作動画の告知

    ■【ゆっくり実況】新ユニット『ヒュドラ』作成!AIを使ったゲーム素材作りの裏側見せます【プロジェクトネイト】


    画像
    ネイト(幻の星の精霊)

    「そうそう!昨日また新しい動画を作ったから、
    よかったら見てちょうだい!
    一応、ボーッと眺めるだけでも楽しめるような作りにしたつもりよ」

    画像
    ポマイラ(自称ネイトの使い魔)

    「二日連続投稿とは精が出るな!
    でもよ、YouTubeの方はまだまだ再生数が伸びてねぇみたいだな」

    画像
    ネイト(幻の星の精霊)

    「最初はこんなものよ。
    まずは、再生数を『1』増やすことが目標ね。」

    画像
    ネイト(幻の星の精霊)

    「ここのnoteだって、
    今でこそたくさんの人が支えてくれているけど、最初は誰もいなかったの。
    だから、地道にコツコツ動画を作っていけば、いつか見てくれる人も増えるはずよ」

    画像
    ポマイラ(自称ネイトの使い魔)

    「なるほどな。 焦らず楽しく活動していくのが一番かも知れねぇよな!」


    画像
    ネイト(幻の星の精霊)

    「ええ!私も頑張るから、
    もしみんなも何か目標に向かって活動していたら、一緒に頑張りましょうね!」


    今日やること

    画像
    ポマイラ(自称ネイトの使い魔)

    「それで、ネイトさんや。 今日は具体的に何をやっていくんだ?」

    画像
    ネイト(幻の星の精霊)

    「今日は、この前のテストプレイで発覚した不具合の修正と、
    私が個人的に『少し不便だな』と感じた部分のブラッシュアップをしていくわよ」


    画像
    ポマイラ(自称ネイトの使い魔)

    「なるほど、完成に向けてみんなが遊びやすいように改良していくんだな!
    地味だけど結構大事な作業だぜ。 気合い入れて作業しろよ!ネイト!」


    🛠 改良点1:メニュー画面遷移の見直し

    画像
    ネイト(幻の星の精霊)

    「テストプレイをしていて気付いたんだけど、
    画面を戻る時の挙動がおかしいの。
    私のステータス画面からはちゃんと『一つ前の画面』に戻るのに、
    他の仲間の画面からだと、なぜか一気にトップメニューまで戻されちゃうのよ」

    ■理想

    画像

    ■今の状況

    画像
    画像
    ポマイラ(自称ネイトの使い魔)

    「確かに、他の仲間のステータスも続けて確認したいのに、
    いちいち最初の画面に戻されたら面倒だぜ」

    画像
    ネイト(幻の星の精霊)

    「そうでしょう?
    こういう小さな不便さが積み重なると、大きなストレスになっちゃうのよ。
    どんなに面白いシステムを作っても、手触り(UIの操作感)ひとつでゲームの印象がガラッと変わることはよくあるからね」

    画像
    ネイト(幻の星の精霊)

    「それじゃ!早速直していきましょうか」


    問題のコードを特定する

    画像
    ポマイラ(自称ネイトの使い魔)

    「ただよ、修正するって言っても、
    今じゃゲームのプログラムが大きくなりすぎて、どれを直せばいいか分からねぇぞ」

    画像
    ネイト(幻の星の精霊)

    「そうよね。そんな時は、UIから逆算して辿っていくと見えてくるはずよ」

    画像
    画像
    ネイト(幻の星の精霊)

    「まず、これが問題のUIの構成部分よ。
    今回は『戻るボタン』を押した時に不具合が発生しているわけだから、
    まずはそのボタンオブジェクトの中身を覗いてみるわ」


    画像
    画像
    ネイト(幻の星の精霊)

    「これがボタンのコンポーネントね。
    ボタンオブジェクトは、クリック時のイベントなどを設定して役割を果たしているの。
    ……見て、ここでアタッチ(指定)されているのは『Status_Panel』というオブジェクトみたいね」


    画像
    画像
    ネイト(幻の星の精霊)

    「さらに、そのオブジェクトのコンポーネントを確認すると、『StatusPanel.cs』というスクリプトがアタッチされていることが分かったわ!
    つまり、今回修正すべきターゲットはこのスクリプトね」

    画像
    ポマイラ(自称ネイトの使い魔)

    「なるほどな!
    画面のボタンから芋づる式に犯人を特定していくわけか!
    まるでハッカーのやり口みたいだな!」


    問題個所の特定

    画像
    ネイト(幻の星の精霊)

    「それじゃ、早速スクリプトを修正していくわよ」


    画像
    画像
    ポマイラ(自称ネイトの使い魔)

    「ひぃ!
    文字が多すぎて訳が分からないぜ!」

    画像
    ネイト(幻の星の精霊)

    「一応、Claudeさんがコメントを付けてくれているからだいぶ見やすい方なんだけどね。
    こういう時は、全部を読もうとせずに『問題の関数の部分』だけ見に行くのよ」

    画像
    ネイト(幻の星の精霊)

    「さっきのボタンのイベントを思い出して欲しいわ」

    画像
    画像
    ネイト(幻の星の精霊)

    「 このクリック時のイベントで『OnButtonListClose』という関数が呼び出されているわよね。
    この関数をコードの中から探し出すわ」

    画像
    画像
    ネイト(幻の星の精霊)

    「見つけたわ!」

    画像
    ポマイラ(自称ネイトの使い魔)

    「それで、原因は何だったんだ?」

    画像
    ネイト(幻の星の精霊)

    「この gameObject.SetActive(false); という一文を見てちょうだい。
    これはオブジェクトを非表示にするコマンドなんだけど、自分自身を非表示にしちゃってるわね。」

    画像
    ネイト(幻の星の精霊)

    「このスクリプトがアタッチされているのは、仲間の選択画面そのものである『Status_Panel』よ。
    つまり、選択画面である『自分自身ごと』消してしまっていたから、トップメニューに戻されたように見えたのね」

    画像
    ポマイラ(自称ネイトの使い魔)

    「なるほどな!……でもよ、なんでネイトの画面の時は正常だったんだ?」

    画像
    ネイト(幻の星の精霊)

    「それは、私の画面だけ少し仕様が違ったからよ。
    この『StatusPanel.cs』に相当するファイルを、私専用に別で用意して機能を切り離していたの」

    画像
    ネイト(幻の星の精霊)

    「実は最初は、この『StatusPanel.cs』も今とは少し違った運用をしていてね。
    その時の名残で、今回の不具合が発生しちゃったってわけ」

    画像
    ポマイラ(自称ネイトの使い魔)

    「なるほどな。
    機能改修の落とし穴って訳だ」


    スクリプトの修正

    画像
    ネイト(幻の星の精霊)

    「それじゃ、さっそく修正を始めていくわ。
    ……と、思ったんだけど。
    よく見たら、Claudeさんが既に『一つ前の画面に戻す便利な関数』を作ってくれていたみたいね」


    画像



    画像


    画像
    ネイト(幻の星の精霊)

    「……単純に、私の設定ミスだったわ」

    画像
    ポマイラ(自称ネイトの使い魔)

    「ヽ(・ω・)/ズコー
    おいネイト!しっかりしてくれよな」

    画像
    ネイト(幻の星の精霊)

    「あはは、ごめんなさい。
    でも、Claudeさんが作ってくれた関数は、私がやろうとしていた方法よりずっと優秀だったから結果オーライよ」

    画像
    ポマイラ(自称ネイトの使い魔)

    「ちなみに、ネイトはどうやって直すつもりだったんだ?」

    画像
    ネイト(幻の星の精霊)

    「シンプルに、『非表示にする対象』をキャラクター詳細画面に変更するだけの関数を新しく用意する予定だったの」

    画像
    ネイト(幻の星の精霊)

    「でも、このコードを見る限り、UIパネルをリスト化してそこで表示・非表示を一元管理する作りになっているわね。
    正直、私よりはるかにスマートよ!お見事ね、Claudeさん!」

    画像
    ポマイラ(自称ネイトの使い魔)

    「感心してる場合かよ……。
    まぁ、ひとまずこれでこの不具合は無事に解決ってわけだな」

    画像
    ネイト(幻の星の精霊)

    「ええ!実際の動作も全く問題なかったわ!」


    🛠 改良点2:ストーリー簡略化モードの実装

    画像
    ネイト(幻の星の精霊)

    「次は、メインストーリーの文章を簡略化する仕組みを作っていくわね。
    このゲームって何周も遊べるゲームデザインだから、この機能も地味に重要よ」

    画像
    ポマイラ(自称ネイトの使い魔)

    「でもよ、それって宴のシステムを直接弄る訳だろ?
    結構大変そうじゃねぇか?」

    画像
    ネイト(幻の星の精霊)

    「確かに、宴のアセットを弄る形にはなるけど…既存のコードは触らずに工夫して乗り切るわ!」


    オプションメニューに機能を追加

    画像
    ネイト(幻の星の精霊)

    「まずは、ノベルゲームエンジン『宴』のオプションメニューのUIを見ていくわよ。
    こんな感じね」

    画像
    画像
    ネイト(幻の星の精霊)

    「ここに、新しく『ストーリー簡略化』のチェックボックスを追加するわ。
    ここにチェックが付いている場合は、シナリオの文章を短く分かりやすいものに分岐させる設計よ」


    画像



    画像
    ポマイラ(自称ネイトの使い魔)

    「へぇ、サクサク読みたい人向けの親切設計だな!
    で、プログラムの方はどうやって組み込むんだ?」


    画像
    ネイト(幻の星の精霊)

    「念のため、他のオプションにアタッチされている既存のスクリプトを確認するわ。
    ……あ、コードの中身は有料アセットのものだから、
    大人の事情で割愛するわね」

    …


    画像
    ネイト(幻の星の精霊)

    「大体の役割は分かったんだけど…
    この機能は既存のオプションの領域で管理した方がいいのか、
    それとも完全に切り離した方がいいのか……。
    念のため、Claudeさんに意見を聞いてみましょう!」


    💡 Claudeさんへの【確認内容】

    Utage3のオプションにストーリー簡略化モードを搭載しようと考えてます。 以下の仕様で検討しています。
    ・宴側の変数で簡略化モードがOnかOffかの変数を所持しておく
    ・シナリオ中、簡略化モードがOnであれば簡略化された文章に分岐させる

    各関連コードを共有しますので、実装プランを検討して頂けますか?
    また、既存のコードには触らずに直接Utage側の変数を更新するスクリプトを作成することで対応しようと考えてますが、
    オプションのロジックを更新する方法とどちらが良いと思いますか?

    🤖 Claudeさんの回答

    どちらのアプローチが良いか

    結論: 既存コードに触らない外部スクリプト方式を推奨します。

    理由は以下の通りです:
    Utageのアップデート耐性 — AdvConfig や UtageUguiConfig を直接改造すると、Utage本体をアップデートする際に毎回マージ作業が必要になります。
    ストーリー簡略化モードはゲーム固有の機能なので、
    エンジン側のコードを汚染すべきではありません。

    関心の分離 —
    簡略化モードのロジックを1ファイルにまとめておけば、
    後から仕様変更や削除が容易です。
    シナリオ側の if で動かす場合、必要なのは Engine.Param への値反映だけ — AdvConfig まで巻き込む必要がありません。


    ただし AdvConfig に組み込む方式にも利点はあって、
    「全てデフォルト値で初期化」(OnTapInitDefaultAll)や Engine.WriteSystemData() での自動保存に乗れる点です。
    そこは外部スクリプト方式だと PlayerPrefs で自前管理する必要があります。
    とはいえトグル1個の永続化なら PlayerPrefs で十分シンプルに済みます。

    画像
    ネイト(幻の星の精霊)

    「うん、私とほとんど同じ意見ね!

    しかも、わざわざベースとなるスクリプトまで提案してくれたわ。
    本当に親切ね。
    それじゃあ、方向性も決まったし早速実装を進めていくわよ!」


    ストーリー簡略化モードの実装

    画像
    ネイト(幻の星の精霊)

    「まずは、制御用の変数を『宴』側に持たせるわよ」


    画像
    画像
    ネイト(幻の星の精霊)

    「これはシステムの根幹に関わる部分だから、パラメータの一番先頭に定義しておくわね。
    次に、オプション画面のトグル(チェックボックス)に、さっきClaudeさんが作ってくれたコードをアタッチすればシステム側の準備はOKよ!」


    画像
    画像
    ネイト(幻の星の精霊)

    「あとは、実際のシナリオファイル側で『簡略化用の文章』と『通常の文章』を分岐させる記述を追加すれば完成ね」

    画像
    ポマイラ(自称ネイトの使い魔)

    「「おっ!ついに完成か?早速動かしてみようぜ!」」


    ■テスト動画


    画像
    ネイト(幻の星の精霊)

    「バッチリ出来たわ!
    これでテストプレイはもちろん、実際に遊んでくれるプレイヤーさんの周回もグンと楽になるわね!」


    バグ修正

    画像
    ネイト(幻の星の精霊)

    「次は、この前のテストプレイで発覚したバグの修正ね。
    今のところ、まだ修正が完了していないバグはこの2つよ」

    【現在残っているバグ】

    • ネイトの移動力が、なぜかシナリオの途中で『9』まで強化された問題

    • 「元気」と「やる気」の数値が上限を超えてオーバーフローする問題

    画像
    ポマイラ(自称ネイトの使い魔)

    「移動力9って!盤面を縦横無尽に走り回りすぎだろ!
    あと、元気のオーバーフローってなんだよ、どんだけハイテンションなんだよ!」

    画像
    ネイト(幻の星の精霊)

    「あはは、ほんとにね。
    それじゃあ、前回のテストプレイ動画を見返しながら、
    どうしてこんな現象が起きたのか、それぞれの原因を分析していくわよ」


    ネイト爆走バグの原因

    画像
    ネイト(幻の星の精霊)

    「……原因が分かったわ!」

    画像
    ポマイラ(自称ネイトの使い魔)

    「おっ、何だったんだ?」

    画像
    ネイト(幻の星の精霊)

    「前回のテストプレイで、スフィンクスになぞなぞを出されるイベントがあったでしょ?
    あの時、正解した報酬として『全能力+5』の処理を入れたんだけど……
    なんと、そこに『移動力』まで加算されちゃっていたのよ!」

    画像
    ポマイラ(自称ネイトの使い魔)

    「スフィンクス、めちゃくちゃ大盤振る舞いじゃねぇか!」

    画像
    ネイト(幻の星の精霊)

    「さすがにちょっとやり過ぎよね。
    とりあえず、移動力はステータスアップの対象外になるように修正しておくわ」


    元気とやる気のオーバーフロー

    画像
    ネイト(幻の星の精霊)

    「次は元気とやる気の数値がおかしくなる問題ね。
    これはステータスの増減があった時に、数値が100を超えたり0を下回ったりしたら、自動で100や0に補正するコマンドを都度叩くようにするわ」

    画像
    ポマイラ(自称ネイトの使い魔)

    「よしよし。これでネイトが無限に元気になりすぎることもなくなるってわけだな!」

    画像
    ネイト(幻の星の精霊)

    「そういうこと!数値をしっかり指定の範囲内に丸めるようにしたから、もう限界値を上回る心配はないわ」


    まとめ

    画像
    ネイト(幻の星の精霊)

    「とりあえず、今日の作業報告はこんなところかしら。
    あとは引き続き、細かなシステムの調整やストーリーの執筆を進めていくわ」

    画像
    ポマイラ(自称ネイトの使い魔)

    「お疲れさん!こうやって少しずつゲームが磨かれていくのを見てると、
    いよいよ体験版の完成が近づいてきたって気がしてワクワクするぜ!」

    画像
    ネイト(幻の星の精霊)

    「ふふ、そうね!
    とはいえ、みんなに楽しんでもらうための改善の余地はまだまだあるわ。
    また大きく進展があったら報告するから、次回の更新も楽しみにしていてね!」


    最後に

    かくして、ネイトのバグ退治とブラッシュアップの1日は幕を閉じた。


    画面遷移の迷宮(UIの不便さ)を抜け、
    新たな機能(ストーリー簡略化)を手に入れ、
    スフィンクスの過剰な祝福(移動力バグ)や、
    肉体の限界突破(オーバーフロー)といった数々の試練を無事に乗り越えたのである。


    体験版の完成という目標へ向け、また一歩前進したプロジェクトネイト。


    だが、ゲーム開発の道に休息はない。


    次なる試練は、ゲームの動作を重くする見えない魔物……
    そう、『最適化』である!


    果たしてネイトは、この難敵を打ち倒し、
    プレイヤーにサクサク快適な世界を届けることができるのか!?


    次回、『プロジェクトネイト、最適化への挑戦』。


    次回も、どうぞ乞うご期待!

    #プロジェクトNeith #HorizonNotes #ゲーム制作 #個人開発 #Unity #開発日記 #読者参加型

     
     
    読者参加型でゲームを作っている、まる。です。 UE5でオリジナルのカードゲームRPG『HorizonNotes』を開発してます 育成SRPG『ネイト育成計画』体験版、無料公開中です! ■公式サイト https://horizonnotes.netlify.app/

    あなたへのおすすめ