상품 설명
■ 戦闘は作った。では、戦闘と戦闘の「あいだ」は?
SRPG やタクティクス RPG を作っていると、戦闘そのものより先に手が止まるのが「進行の層」です。
出撃マップを分岐させたい。でもノードの管理が面倒。
ボスまで進んだら次のステージを解放したい。条件の判定をどこに書く?
戦闘シーンへ移ったら、マップのどこまで進んだか分からなくなった。
イベント海域みたいに「ボスを5回倒してゲージを削る」をやりたい。
このアセットは、その進行の層——**分岐マップの進行**と**ステージの解放・攻略ゲージ・クリア報酬**——を丸ごと引き受けます。
■ できること
●分岐マップの進行
マスを並べて繋ぐだけ。一本道は自動で進み、**止まるのは「分岐」と「戦闘の結果待ち」の 2 箇所だけ**です。この単純な約束のおかげで、戦闘が 3 秒で終わろうと、別シーンで 3 分かかろうと、同じコードが動きます。
●マスの種別はデータ
「戦闘・強敵・宝箱・休憩・店・ボス」は列挙型ではなく ScriptableObject です。決めるのは
・そこで進行を止めて結果を待つか
・到達すると出撃が終わるか
・経路探索の目的地になるか
・失敗したら打ち切るか(OFF にすれば「負けても進む」設計に)
の 4 つだけ。**コードを書かずに種別を増やせます。**
●戦闘シーンを挟んでも続きから
出撃の途中経過は文字列 1 本になります。既存のセーブデータに 1 項目足すだけで、戦闘シーンから戻ってきたときに同じマスから再開できます(アセット専用のセーブファイルは作りません)。
●マップの自動生成
段数・1 段あたりのマス数・分岐の多さ・種別の出やすさを決めるだけで、**必ず出発点からゴールまで繋がった**分岐マップが返ります。同じシードなら同じマップなので、「今日のマップ」や不具合の再現にも使えます。出てくるのは手で作ったマップと同じ形なので、扱いも同じです。
●最短ルート探索と、マップの検証
ボスまでの最短経路・到達可否を返します。オート進行も同じ計算を通るので、**表示したルートと実際に進む道が食い違いません。** また「繋ぎ先が存在しない」「出発点から到達できないマスがある」「ゴールが無い」といった作り間違いを検出する機能も入っています。
●ステージの解放
「どのステージを・どの評価でクリアすれば解放されるか」をデータで設定します。ロック中のステージは、**足りない条件を文章ではなくデータで返す**ので、表示文面も多言語化も自由に作れます。
●攻略ゲージ
ボスを何度も倒して削り切る、周回型の進行です。評価ごとの減少量、条件となるマス種別、削り切った瞬間だけの報酬、自動で満タンに戻すか——をステージ 1 つの設定だけで表せます。
●報酬テーブル
個別抽選(運が良ければ全部当たる)/重み付きで 1 つ選択(ドロップテーブル)/確定、の 3 方式。**抽選までを引き受け、配るのは購入者のコード**なので、インベントリの実装には踏み込みません。
■ 導入は 3 ステップ
【1】マップを作る
メニューからマップを作ってマスを並べるか、シーンに `Map Node` を置いて隣のマスをドラッグして繋ぎます。どちらで作っても以降のコードは同じです。
【2】出撃を始める
var run = new MapRun(map, rewardHandler);
run.NodeEntered += node => MovePieceTo(node);
run.RouteOptionsPresented += options => ShowBranchButtons(options);
run.Finished += result => ShowResultScreen(result);
run.Begin();
【3】結果を報告する
run.ReportOutcome(NodeOutcome.Cleared(rank: 3)); // 勝った
run.ChooseNext(nodeId); // 分岐を選んだ
出撃が終わったら、その結果をそのまま進捗へ渡すだけです。
var report = progression.ReportRunResult(stage, run.Result);
report には「初回クリアか」「最高評価を更新したか」「ゲージがどこまで減ったか」「削り切ったか」「配られた報酬」「新しく解放されたステージ」が入っています。リザルト画面はこれを読んで組み立てられます。
■ 今ある戦闘システムも UI も、そのまま使えます
このアセットは**戦闘を一切持ちません**。マスで何が起きるかは購入者の実装で、本アセットは「勝った/負けた/評価はいくつ」を受け取るだけです。つまり、すでに戦闘を作ってある人ほど導入が簡単です。
**UI も持ちません。** マスの座標・分岐の選択肢・ロックの理由・ゲージの残量といった「表示に必要な値」を返すところまでを引き受け、uGUI でも UI Toolkit でも自作でも好きな見た目を被せられます。マップの描画例はデモに丸ごと入っています(`MapDemoView.cs` がそのまま参考になります)。
**セーブも既存のものを使えます。** 保存先は差し替え可能で、メモリ/PlayerPrefs/JSON ファイルが同梱、自前のセーブへ埋め込みたい場合はインターフェースを 1 つ実装するだけです。
■ 実演シーンを同梱
メニュー 1 クリックでシーンを構築し、再生するだけで 15 場面が字幕付きで自動再生されます(操作不要・無限ループ)。
マップの進行/分岐/マス種別/結果待ち/敗北での打ち切り/撤退/マスの報酬/最短ルート/中断と再開/ステージ解放/評価の条件/攻略ゲージ/ゲージ破壊報酬/リセットして周回/マップの自動生成——を目で見て確認できます。
外部素材はゼロで、図形はコード生成、文字は OS フォント参照です。
■ 動作環境
・Unity 2022.3 LTS 以降
・追加パッケージ不要(外部プラグインにも依存しません)
・Input System はどちらの設定でも動作します(入力を一切使いません)
・2D / 3D どちらでも動作します(描画を行わないため)
■ 収録内容
・Runtime(本体)… マップとマスの定義・出撃の進行・途中経過の保存と復元・経路探索と検証・マップ自動生成・ステージ解放・攻略ゲージ・報酬テーブル・保存先 3 種
・Samples … 最小構成のコード例 4 本(出撃の最短形/ステージ選択画面/報酬の受け取り/戦闘シーンを挟む保存と再開)
・Demo … 実演シーン一式(メニューから自動生成。削除しても本体に影響しません)
・動作確認メニュー … 129 項目の自己診断をその場で実行できます
・README(日本語/英語)
・フルソース付属。改変して組み込めます
■ よくある質問
Q. 戦闘システムは含まれますか?
A. 含まれません。マスで何が起きるかは購入者の実装です。本アセットは結果の報告を受け取って進行を続けます。
Q. マップの絵は描いてくれますか?
A. 描きません。マスの座標は返しますが、線や絵は購入者側で描きます(デモに描画の実装例が丸ごと入っています)。
Q. ローグライトの「毎回ちがうマップ」に使えますか?
A. 使えます。自動生成は段状の分岐マップ(Slay the Spire 型)に対応しています。洞窟状・格子状のダンジョン生成は対象外です。
Q. ヘックスや格子のマップでも使えますか?
A. マスの繋がりだけを見るので、盤面の形は問いません。ただし座標は表示用に返すだけで、マス間の距離計算は行いません。
Q. ネットワーク対戦に使えますか?
A. 同期の仕組みは含まれません。シードを共有すれば同じマップは作れます。
■ ライセンス
購入者ご自身の商用・非商用プロジェクトでご利用いただけます。アセット単体での再配布・販売はご遠慮ください。
모든 리뷰
더보기리뷰 등록
리뷰를 작성하려면 로그인이 필요합니다.
로그인하고 리뷰 쓰기