Mech Battler Crisis開発録【紹介編】#02

Created: 2025/10/16

初めに

 東京ゲームダンジョン行ってきました!!!

代替テキスト
ちゃんと記録写真撮るの忘れて展示の画像がこれくらいしかない(汗)
代替テキスト
ポスターが張れなくて焦ってた時に落書き用のホワイトボードに書いたやつ

 正直大変でした……今回は大学で別に東京ゲームダンジョンの出展を行っているグループに参加する形で出展したのでお金の心配などはなかったのですが、当日の準備やポスター印刷など考えることが多くて、おまけに出展した時期が大学の授業がとてつもなく忙しい時期だったのでようやく肩の荷が下りた感じです。

 ただ、おかげで一般の参加者にゲームをプレイしてもらって貴重なデータをとることができたので本当に良かったと思っています。

 今回の出展で分かった問題をざっくりいうと

プレイヤーが快適にプレイできる環境構築に問題がある
シンプルに宣伝が足りない


 という感じになると思います。
 特に宣伝不足は深刻で、本当は東京ゲームダンジョン当日までにPV投稿やXの宣伝アカウントの立ち上げを行うつもりだったのですがスケジュールの関係で結局手が付けられず、当日もほとんど参加者にアピールできなかったせいで、遊んでくれる人はいたのですが本当に一握りだったんですよね。とはいえここは今すぐはどうしようもない。

 プレイヤーが快適にプレイできる環境構築についても深刻で、今まで100%自分がプレイしやすいようにゲームを作っていたのでロボットの感度が高すぎて参加者がまともにプレイできなかったり、クラフトシステムもプレイヤーに操作方法を誘導してくれるUI表示などがほとんどないせいでよくわからないまま終わってしまうということがありました。

 これらの反省点(特に快適にプレイできる環境構築のほう)を踏まえてMech Battler Crisisに様々な修正を施したので今回はそちらを紹介していこうと思います。

概要

部品セーブ・ロード

 こちらは機能そのものは東京ゲームダンジョンの出展に向けてMech Battler Crisis開発録【紹介編】#01を投稿した後に実装したものなのですが、実際に紹介するのは東京ゲームダンジョンの反省を踏まえてよりプレイヤーが使いやすいように改良を施したものになります。

代替テキスト
いままでのシステムでは戦艦などを組み立てるのが難しかった

 Mech Battler Crisisは基本的にブロックを一個ずつ手動で設置しながらロボットを組み立てていくのが基本なのですが、これはとても時間がかかります。特に戦艦の砲塔のような一個ずつ手作業で全く同じ武装を何個も組み立てていく作業は大変です。ただブロックを一個ずつ置いていくだけでも手間なのに、それをミスなく正確に配置する必要があるからです。

 また、せっかくかっこいいロボットの武器などを作っても、それを別のロボットに持たせるためにはそのロボットのセーブデータを読み込んで、イチから組み立てなおす必要があるのです。これはあまりにも非効率です。

代替テキスト
部品セーブ・ロードの一例

 そこで考えたのが部品セーブ・ロードシステム。

 これはロボットの一部のパーツだけをセーブして別のロボットで読み込めるようにしたシステムです。

 これを使えば戦艦の砲塔パーツだけを部品セーブして、別の個所にペーストできます。それどころかその砲塔を画像のようにロボットの腕にロードすることも可能です。武器だけを部品セーブすればその武器だけを別のロボットに流用できますし、手足を部品セーブすればロボットの手足を某ハイスピードロボットアクションゲームのように交換することもできます。これによってMech Battler Crisisのクラフト難易度は飛躍的に下がり、まったく何もわからない初見プレイヤーでもサンプルデータに保存されたロボットの手足や武器を部品セーブ・ロードで組み合わせて、自分だけのオリジナルロボットをより簡単に組み立てることができるようになるのです。

 しかし、この部品セーブ・ロードシステム。東京ゲームダンジョンの出展を見据えて開発したのですが、いくつかの理由から全くプレイした人たちからいい反応がもらえませんでした。

代替テキスト
部品セーブロードのためには関節パーツを直接選択する必要があった

 まず、部品セーブ・ロードはロボットの関節を起点にして、その関節から先のパーツをブロックで置き換える……というシステムになります。このため部品セーブロードを利用するにはまず起点となる関節を選択しなければなりません。

 問題の一つは選択のやり方です。この関節の選択システム、画像のようにロボットの関節をピンポイントで選択しなければならないのですが自分が作ったロボットならともかく、他人が作ったロボットの関節の位置をいきなり把握してピンポイントでその関節を選択して部品セーブロードを使うのは困難です。

 その問題が東京ゲームダンジョンで露呈し「部品セーブロードでロボットをカスタマイズしてみてください!」といっても「ロボットの関節がどこにあるかわからないんだけど?」「そもそも関節ブロックってどんな見た目してるの?」と困惑してしまう参加者が大量に発生してしまう結果になりました。というか初見で部品セーブロードを使いこなした人は0%です。はっきり言って大事故ですね。
 

代替テキスト
セーブデータが名前しか表示されないせいで分かりにくい

 あと、これは部品セーブ・ロードに限った話ではないのですが私のゲームではまだ自動で画像を出力するシステムが不足しているせいで、セーブデータの中身を判別するには名前から見分けるしかありません。今回の出展のためにロボットのサンプルデータをいくつか用意したのですが初見のプレイヤーがいきなり名前だけで自分の好みにあうロボットのデータやパーツを見つけ出すのは難しく、それも部品セーブ・ロードシステムが使われない一因になりました。

 画像システムは今すぐどうにかなるものではないのでどうしようもないのですが、せめて関節選択はもっとわかりやすくしたい。そこで選択対象を「関節ブロックそのもの」から「関節ブロックが制御しているブロック」に変更しました。これで適当にロボットの手足を選択すればそのブロックを制御する関節が選択されることになります(正確には選択されているのは関節ブロックそのものではなくその関節ブロックが制御するSectionというオブジェクトなのですが、技術編の話になるので割愛)

代替テキスト
手足や武器など大まかなパーツを選択する方式に変更

UI誘導システムの実装

代替テキスト
選択しているブロックの種類やステータスを表示

 さらにクラフト中にプレイヤーにブロックの情報や指示を描画するテキストUIとその制御システムも実装しました。
 
 これでユーザーにブロックの説明が案内などができるようになったのでさらにわかりやすくなりました。

描画負荷の最適化

 これは目に見えるタイプの変更じゃないし、がっつり紹介しようとしたら思いっきり技術の話になるのですが描画負荷を限界まで最適化しました。もともとメッシュ結合という技術を使ってロボットの編集時に存在する大量のブロックを結合し、ロボットを操縦するタイミングでは描画負荷を削減するようにしていたのですがここに加えてテクスチャアトラスという技術も導入することで負荷をさらに削減しました。

代替テキスト
負荷計測目的で作ったロボット10体同時出現するミッション

 今ではロボット10体出してもエディタ上で動作するくらい軽量です。以前の処理でもできないことはないはずですが、FPSの低下が激しくなりすぎまともにプレイはできなかったと思います。

代替テキスト
描画最適化していない編集中の負荷
代替テキスト
描画最適化された操縦中の負荷

 あまりにも描画負荷を最適化しすぎたせいでロボットの操縦中は描画負荷よりスクリプト負荷のほうが高くなってます。もちろんスクリプトも極限まで最適化しているので本当にそれだけ負荷を削っているという感じですね。

 ただ、一応まだ負荷を削る余地がないのかと言われたらあるにはあって、現在のシステムだとロボットの内側にあるブロックのメッシュなどはそのまま描画されたままになっているので、これを直接削除すれば理論上まだ負荷は下げられます。ただこれは下手な実装すると逆効果になりかねないので本当に難しいんですよね……(技術的なことは割愛)