Next Run · MOD

Next Run モッドガイド

Next Run のモッドの仕組み、ファイル構造、ゲームコンポーネントの詳細をまとめています。自作モッドを作成・公開するときのクイックな答えとして、このリンクを保存してください。

1. 概要

このドキュメントでは Next Run のモッドシステムについて、インストール方法、自作モッドの作り方、ほかのプレイヤーと共有する方法を説明します。

2. モッドシステム

ゲームを起動して「プレイ」「ゲームを作成」を押すと、ゲームディレクトリ内の Mods フォルダーがスキャンされます。modinfo.json がある各サブフォルダーはモッドとして認識されます。

2.1. Steam Workshop、モッドのインストールと公開

Steam クライアントからゲームを起動すると、「プレイ」メニュー内に「モッド」パネルが表示され、次のボタンが含まれます:

  • Steam ワークショップ
  • モッドフォルダー
  • 公開する
  • ガイド

2.1.1. Steam ワークショップ

Steam クライアント内で Steam ワークショップを開きます。モッドをダウンロードするには購読が必要です。購読すると自動的にダウンロードが始まります。モッドのサイズが大きい場合は時間がかかることがあります。ダウンロードの進行状況は Steam クライアントに表示されます。

2.1.2. モッドフォルダー

ゲームのモッドフォルダーを開きます。

2.1.3. 公開する

ゲームが Mods フォルダーを自動的にスキャンし、あなたが作者であるすべてのモッドを Steam ワークショップに公開します。

  • モッドが新規の場合、steam_id が自動生成されます。
  • 既存のモッドであれば更新されます。
  • アップロード中は公開ボタンの見た目が一時的に変わります。
  • 変更がある場合にのみモッドは公開されます。
  • modinfo.json を変更してもコンテンツの変更とはみなされません。
  • 公開されたモッドは世界中のプレイヤーが利用できます。Steam ワークショップは配布方法のひとつにすぎず、モッドフォルダーにモッドを配置するだけで直接配布することもできます。

2.1.4. ガイド

このガイドへのリンクです。

2.2. JSON ファイル

ゲーム内のすべてのデータとテキストは JSON 形式を使用します。通常のテキスト形式との主な違いは、データを中括弧 {} で囲む必要がある点です。

JSON の構文の説明:

  • https://en.wikipedia.org/wiki/JSON
  • https://developer.mozilla.org/en-US/docs/Learn_web_development/Core/Scripting/JSON

ゲーム内ファイルのサンプルを参照することをお勧めします。

2.3. ファイル構造

各モッドはゲームと同じファイル構造を持ちます。これらのファイルは新しいコンテンツを追加するか、既存のものを変更します。JSON ファイルはゲーム内の個別要素を追加または変更します。PNG や OGG など他の形式のファイルは丸ごと置き換えられます。

例: data/game.json を作成してその中のエンティティ 'Warrior'(ゲームクラス)を変更すると、そのクラスだけが変更され、game.json 内の他のエンティティは変わりません。portrait_warrior_front.png を追加すると、名前が一致するためゲーム内の対応する画像が完全に置き換わります。

モッドには必須と任意のファイル・フォルダーがあります。標準的な構造は次のとおりです:

  • モッドフォルダー名(任意。モッド名ではありません)
  • modinfo.json
  • preview.png
  • data/
  • icons/
  • sounds/
  • texts/
  • tiles/

理解を深めるには、ゲームのサンプルや既存モッドを確認することをお勧めします。以下では各フォルダーとファイルを詳しく説明します。

2.3.1. modinfo.json

モッドのメタデータを含むファイルです。このデータの一部は Steam ワークショップでの公開時に使用されます。

  • title - モッド名。Steam に表示されます。
  • version - モッドのバージョン。
  • description - モッドの説明。
  • tags - Steam ワークショップでのナビゲーション用タグ。
  • order - モッドの読み込み順。複数のモッドが同じデータを変更する場合、order が大きいモッドが小さいモッドを上書きします。
  • steam_id - 手動入力は不要で、公開時に自動生成されます。
  • created_time - 作成日時。
  • changed_time - 変更日時。
  • 他のフィールドを追加しても構いませんが、ファイル内でのみ使用されます。モッドの作者は Steam ワークショップ経由で自動判別されます。

2.3.2. preview.png

Steam ワークショップで使われるモッドのアイコン画像です。推奨解像度は 256x256 または 512x512。正方形で、透過 PNG または JPG を使用できます。

2.3.3. data

データ用 JSON ファイルのフォルダーです。既存のゲームエンティティを変更したり、新規に追加したりするファイルを含みます。必要なファイルやフィールドだけを作成すれば十分です。変更可能なデータの詳細はセクション 3 を参照してください。

2.3.4. icons

ゲーム内のアイコン用フォルダーです。GUI やタイル以外のほとんどの画像が含まれます。さまざまな状況に合わせて複数の標準サイズやレイヤーが使われます。ゲームでは透過 PNG ファイルを使用します。

2.3.5. sounds

サウンドと音楽のフォルダーです。新しいファイルを追加したり既存のものを置き換えたりできます。使用形式は OGG です。

2.3.6. texts

ローカライズされたゲームテキストのフォルダーです。各ファイルは 1 つの言語に対応し、IETF BCP-47 / ISO 標準を使用します。現在サポートされている 13 言語は、ruRU.json, trTR.json, jaJP.json, koKR.json, zhTW.json, zhCN.json, plPL.json, ptBR.json, itIT.json, esES.json, frFR.json, deDE.json, enUS.json です。

2.3.7. tiles

タイル画像のフォルダーです。透過 PNG を使用し、標準サイズは 256x384。タイルはいくつかのレイヤー(地面、オブジェクト、森、山、道路など)で構成されます。

2.4. モッドの同期

モッドを入手すると、ゲームを起動するたびに Steam ワークショップに公開されている最新バージョンと自動的に同期されます。

自分がそのモッドの作者の場合、同期は行われずモッドのファイルは上書きされません。これにより、モッドを作業中にゲームを再起動しても変更内容が失われないようにしています。

ほかの人のモッドを元にモッドを作りたい場合、ゲームを再起動する前に次の操作を行ってください。

  • モッドフォルダーの名前を、その id とは異なる別の名前に変更する。
  • modinfo.json ファイルから次のフィールドを削除する: 'author', 'created_time', 'steam_id', 'changed_time'.

2.5. データのマージ

モッドとゲームの JSON データファイルは置き換えられるのではなく、マージされます。

マージの順序:

  • ゲームの JSON ファイルにある元のエンティティをベースとして使用します。
  • その上にモッドのデータを適用します。モッドは modinfo.json の order フィールドで指定された優先度の順に適用されます。

マージでは、すべてのコンポーネントのすべてのフィールドが個別に処理されます。たとえばエンティティに 'hideIfZero':true が設定されていて、false にしたい場合、フィールドを削除するだけでは不十分で、明示的に 'hideIfZero':false と指定する必要があります。

list.json 内のリストも同じ方法でマージされます。1 つの要素を追加するだけなら、すべてのフィールドを含む各リストを複製する必要はありません。ただし、単純なデータだけを含むリストは完全に置き換えられます(例: RndGoodEvents や RndEvents)。

3. コンポーネント

Next Run は ECS アーキテクチャで構築されています。ゲームはすべてエンティティでできており、エンティティはコンポーネントのコンテナです。エンティティが持つフィールドは id のみで、その他のデータはすべてコンポーネントで記述され、JSON ファイルで定義されます。

JSON ファイル内の例:

3.1. Button

ゲーム内のボタンの見た目と挙動を定義します。

  • panel = string。ボタンが属するデフォルトのパネル。ゲームのボタンは何らかのパネルやメニュー内にあります。配置したいパネルを選ぶ際はサンプルを参考にしてください。
  • icon = string。ボタンのアイコン名。icons フォルダーの PNG ファイル名を使います。
  • iconType = string。ボタンのタイプでサイズや要素に影響します。'btn' - シンプルなボタン、'btnBig' - 下部に数値のあるボタン。
  • color = string。アイコンの背景色。例: green, yellow。ゲームで使用できる色の一覧: green, superGreen, lightGreen, darkGreen, red, superRed, darkRed, gray, lightGray, darkGray, lightBlue, blue, darkBlue, darkDarkBlue, grayYellow, yellow, pink, cyan, darkCyan, almostBlack, black, orange, darkOrange, lightViolet, purple, chartreuse, num, gameBack, blank, halfTrans, white, base。
  • numText1 = double。アイコンの値。
  • numTextAdd = string。値の後ろに付ける文字(例: '%')。
  • numText1Type = string。アイコン値の種類。例: level, total, duration。
  • numCustom = string。独自の値(例: '∞')。
  • numIcon = string。値の横に表示するアイコン。例: star(レベル用)、coin(商品用)。
  • hotkey = string。キーボードのホットキー。
  • hide = bool。ボタンを非表示にするか。
  • hideIfZero = bool。Total.now が 0 の場合にボタンを非表示にします。
  • disabled = bool。ボタンを無効化するか。ゲーム開始時に無効化されているメニューなどがあります。
  • interactable = bool。インタラクティブかどうか(デフォルトは true)。非インタラクティブな例としてインベントリスロットがあります。
  • cantBeDeselect = bool。このボタンの選択解除を禁止します。
  • cantBeSelect = bool。クリックしても選択されないようにします。
  • draggable = bool。ドラッグ&ドロップで移動できるか。
  • x = double。パネルに属さないボタンなどで使用する UI 上の X 位置。
  • y = double。同様に Y 位置。
  • upMiniPred = string。このエンティティ用にチェックされるアクション名。利用可能な場合、強化系のミニヒントアイコンが表示されます。
  • craftMiniPred = string。クラフト用の同様のヒント。
  • raiseMiniPred = string。拾う/上げる行動用の同様のヒント。

3.2. Tooltip

ボタンのツールチップ内容を定義します。

  • text = string。ゲーム内に表示されるエンティティ名。
  • dontShowDuration = bool。持続時間の表示を禁止します。
  • hideSources = bool。値に影響するソースエンティティの表示を禁止します。
  • hideAsSubjTT = bool。関連エンティティのソースとしてこのオブジェクトを表示しないようにします。
  • desc = string。説明テキスト(ツールチップ冒頭)。
  • desc2 = string。説明テキスト(ツールチップ末尾)。
  • redDesc = string。赤字で表示される説明テキスト(末尾)。
  • totalTextAs = string。'合計' の代わりに表示するテキスト。
  • ttPos = string。ツールチップの位置。選択肢: 'top'、'left'。

3.3. GameClass

ゲームクラスのメカニクスを定義します。

  • text = string。ゲーム内でのクラス名。
  • portrait_back = string。クラス選択時の背景画像 391x598。
  • portrait_front = string。クラス選択時の前面画像 411x620(透過)。
  • figurine = string。マップ上のキャラクターアバター 149x243。
  • doll = string。インベントリでのクラスの白黒画像 460x784。
  • bonusSkill1 = string。ボーナスを得るスキル 1 の名前。
  • bonusSkillVal1 = double。スキル 1 のボーナス量。
  • bonusSkill2 = string。ボーナスを得るスキル 2 の名前。
  • bonusSkillVal2 = double。スキル 2 のボーナス量。
  • debuffSkill1 = string。ペナルティを受けるスキル 1 の名前。
  • debuffSkillVal1 = double。スキル 1 のペナルティ量。
  • debuffSkill2 = string。ペナルティを受けるスキル 2 の名前。
  • debuffSkillVal2 = double。スキル 2 のペナルティ量。
  • gold = double。クラスの開始時ゴールド量。
  • remains = double。開始時の遺骨の数。
  • equip = List(string)。開始時に装備するアイテムのリスト。
  • units = string。開始時のユニット名。
  • itemName = string。開始時にインベントリにあるアイテム名。
  • itemNum = double。開始アイテムの数量。
  • learnList = string。学習する呪文や設計図のリスト名。list.json にあります。
  • learnNum = double。リストから学習する呪文/設計図の数。
  • lessTime = double。地獄の攻撃間隔がどれだけ短くなるか。
  • manaBonus = double。マナのボーナス(最大値と合計)。
  • upgradeDexterityBonusMod = double。敏捷性スキルによる強化対象へのボーナス。
  • skillPointsPerLevel = double。レベルアップ時に得るスキルポイント数。
  • upgradeManaCostMod = double。呪文アップグレード効率へのボーナス。
  • freeRegion = bool。無料の地域かどうか。
  • necroBonus = bool。ネクロマンサーのゲームプレイとボーナス。
  • druidBonus = bool。ドルイドのゲームプレイとボーナス。
  • stances = bool。姿勢/フォーム/命令を持つか。
  • defStance = string。デフォルトの姿勢。
  • notDemo = bool。このクラスは体験版では利用不可。
  • notTutorial = bool。チュートリアルモードで利用できるか。

3.4. GameMode

ゲームモードのメカニクスを定義します。

  • text = string。ゲーム内でのモード名。
  • back = string。モード選択時の背景画像 391x598。
  • moreTime = double。地獄の攻撃間隔をどれだけ延ばすか。
  • lessTime = double。地獄の攻撃間隔をどれだけ短縮するか。
  • woundChance = double。負傷確率。
  • notDemo = bool。体験版では利用不可。
  • scenario = string。このモード専用マップの名前。
  • noHellAttacks = bool。このモードでは地獄の攻撃がありません(サンドボックスのように)。
  • savesOnExitOnly = bool。このモードでは終了時のみセーブされます。

3.5. Biome

バイオームのメカニクスを定義します。

  • frequency = double。マップ生成時の出現頻度。数値が大きいほど頻繁に登場。0 なら生成されません。Lava バイオームは常に最終リージョンとして生成されます。
  • hexBase = string。バイオームのベースタイル名で、集落の下地として生成されます。
  • music = string。バイオームの音楽トラックのファイル名。
  • hexPatterns = List(string)。バイオーム内のオブジェクトパターンのリスト。カードの山のようにシャッフルされ、ランダムに引かれます。0 になると山を再生成。パターン形式: オブジェクト名#オブジェクト名(# が区切り)。
  • mobLevel1 .. mobLevel8 = string。リージョンレベルに応じて生成されるクリーチャー名。

3.6. TileAsset

マップ上のオブジェクトの見た目を定義します。

  • tileMap = string。レイヤー名。LandTilemap - 地面、ObjectTilemap - 通常オブジェクト、RoadTilemap - 道路など。重ね順のみが異なります。
  • rawSprite = string。マップに配置する 256x384 の画像。
  • icon = string。すべての TileMap の上に重ねるアイコン。
  • buttonIcon = bool。Button からアイコンを取得するか。
  • delLevel = double。削除レベル。アクションでオブジェクトを除去する難しさ。

3.7. Shop

ショップのメカニクスを定義します。

  • slots = int。ショップのスロット数。
  • type = string。list.json にあるショップ品ぞろえの名前。

3.8. Item

アイテムのメカニクスを定義します。

  • slot = string。装備スロット名。
  • stackable = bool。同じスタックに 1 以上保持できるか。
  • upgradable = bool。アイテムを強化できるか。強化時間はレベルに依存します。
  • upProgress = double。強化にかかる時間。
  • order = double。ショップ内の並び順。数値が小さいほど上位に表示されます。

3.9. Mob

クリーチャーのメカニクスを定義します。

  • hell = bool。クリーチャーが地獄系。買収ペナルティがあり、地獄の攻撃に参加し、遺骨ボーナスがあります。
  • undead = bool。クリーチャーがアンデッド。買収不可で、特殊な強化メカニクスがあります。
  • type = string。クリーチャータイプ - 'Warriors'、'Defenders'、'Mages'、'Gatherers'、'Crafters'。基盤色、プレイヤーへの命中率、ダメージタイプ、ルートタイプを決めます。
  • upMob = string。クリーチャーが強化される先の名前。
  • upCostName = string。強化に必要なアイテム名。
  • upCostNum = double。強化に必要なリソース数(デフォルト 1)。

3.10. Dungeon

ダンジョンのメカニクスを定義します。

  • magic = bool。魔法ダンジョン。ダメージタイプ、ルート、アドオンに影響します。
  • boss = bool。最終ダンジョンかどうか。

3.11. Ruins

遺跡(アイテム探索場所)のメカニクスを定義します。

3.12. Addon

拡張(アドオン)のメカニクスです。ダンジョンや遺跡と同じタイルに配置され、そのパラメーターを変化させ、個別の報酬を与えます。

  • skill = string。ダンジョン掃討や遺跡探索完了時にプレイヤーが得るスキル。'Random' や 'Strength' などを指定可能。
  • unit = string。完了後に得られるボーナスユニット名。'Random' も可。
  • item = string。完了後に得られるボーナスアイテム名。'Random' も可。
  • phyChanceMulti = double。掃討時の物理ダメージ確率の補正(例: 50%)。
  • magChanceMulti = double。掃討時の魔法ダメージ確率の補正(例: 50%)。
  • progressMulti = double。掃討や探索にかかる時間の倍率(例: 100%)。
  • dmgMulti = double。掃討時のダメージ量の補正(例: 50%)。

3.13. Build

このオブジェクトが建造物であることを示します。

3.14. Center

このオブジェクトが集落であることを示します。

  • captureProgress = double。集落を占領するのに必要な労力。
  • upProgress = double。集落をアップグレードするのに必要な労力。
  • upCostName1 = string。アップグレードに必要なアイテム 1 の名前。
  • upCostNum1 = double。アイテム 1 の必要数。
  • upCostName2 = string。アイテム 2 の名前。
  • upCostNum2 = double。アイテム 2 の必要数。
  • upCostName3 = string。アイテム 3 の名前。
  • upCostNum3 = double。アイテム 3 の必要数。
  • upProp = string。アップグレード後の集落名。

3.15. Gatherable

このオブジェクトを採取してリソースを得られることを示します。

  • gather = string。採取で得られるリソース名。
  • deposit = bool。このリソースが鉱床かどうか。true の場合、鉱山を建設できます。

3.16. AlliedForest

ドルイドでプレイする際の「同盟の森」メカニクスと値を定義します。

  • allyBonus = double。'同盟の森' ボーナスの値。

3.17. Graveyard

このオブジェクトが墓地であることを示すメカニクスで、ネクロマンサーでのプレイ時に重要です。ここで取得できる遺骨の量はランダムに生成されます。

  • now = double。現在の遺骨量。
  • rndMin = double。遺骨の最小ランダム値。
  • rndMax = double。遺骨の最大ランダム値。
  • rndCeil = bool。ランダム値を切り上げるか。

3.18. Pred

アクションコンポーネントです。機能の多くはコード側ですが、一部は設定できます。

  • action = string。アクション実行時に起こる処理名。
  • local = bool。オブジェクトと同じマスにいる必要があるか。
  • attackPred = bool。このアクションが攻撃タイプで、戦闘呪文使用時に自動適用されます。
  • gatherPred = bool。このアクションが採取タイプで、資源採集呪文使用時に自動適用。
  • craftPred = bool。このアクションがクラフトタイプで、クラフト呪文使用時に自動適用。
  • skill = string。アクション実行に使うスキル名。攻撃アクションでは攻撃スキルなど。
  • longPred = bool。このアクションは即時ではなく時間が必要です。
  • repeat = bool。停止するまでアクションを繰り返します。
  • noOwner = bool。対象の選択を必要としません。
  • skipLongTooltip = bool。アクション用の簡易ツールチップを使用します。
  • onlyClass = string。特定クラスのみ利用できる姿勢/フォーム/命令タイプのアクション。

3.19. Total

数量などの数値を定義するコンポーネントです。

  • now = double。現在値。
  • inc = double。ターンごとの増加量。
  • max = double。最大値。
  • min = double。最小値。
  • rndMin = double。ランダム値の最小。
  • rndMax = double。ランダム値の最大。この場合 now を置き換えます。
  • rndCeil = bool。ランダム生成時に切り上げるか。
  • overMax = bool。上限を超過できるか。
  • delIfZero = bool。値が 0 の場合に削除するか。
  • numPercent = bool。値がパーセントかどうか。

3.20. Level

エンティティのレベルを定義します。

  • now = double。現在値。
  • max = double。最大値。
  • min = double。最小値。
  • localLevelPlus = int。リージョンレベルに上乗せするボーナス。マップ上のオブジェクトに対してのみ機能し、地域レベル + この値がレベルになります。

3.21. Duration

エンティティの持続時間を定義します。

  • now = double。現在値。
  • max = double。最大値。
  • min = double。最小値。
  • delIfZero = bool。値が 0 なら削除するか。

3.22. Mods

モディファイアのリストコンポーネントです。このコンポーネントを作成すると、他のエンティティに影響する変更セットが生成されます。エンティティが削除されると変更も消えます。

  • radius = int。モディファイアが影響する半径(マップ上でのみ有効)。
  • objType = string。モディファイア対象のエンティティタイプ(例: 'Stat'、'Skill'、'Prop'、'Item'、'ModableVal'、'PropMod')。
  • objName = string。対象エンティティ名(例: 'Speed')。
  • objComp = string。対象コンポーネント名(例: 'Total'、'Level')。
  • objKey = string。対象コンポーネントのフィールド名(例: 'now'、'inc'、'max')。
  • modType = string。フィールドへの影響方法: 'add'、'mult'、'addPerLevel'、'multPerLevel'。
  • now = double。変更に使うモディファイア値。
  • subjTooltipText = string。動的ツールチップに対象の注記を追加します。
  • skipPerTooltip = bool。ツールチップで PerLevel を Plus に置き換えます。
  • skipSubjTooltip = bool。対象のツールチップを省略します。

3.23. ModableVals

ゲームのグローバル変数リストです。特定のエンティティへの紐づけは形式的で、多くのロジックはゲームコード内にあります。

  • now = double。変数の値。

3.24. Slot

このエンティティがインベントリのスロットであることを定義します。

  • name = string。スロット名。アイテムをこのスロットに置くには、Item コンポーネントの slot フィールドと一致する必要があります。

3.25. Container

このエンティティがスロットを持つコンテナであることを示します。

  • cells = int。コンテナ内のセル数。
  • cellsPanel = string。パネル名。

3.26. Tom

呪文書であることを定義し、学習すると呪文を得たり強化できます。

  • cast = string。呪文名。

3.27. Cast

このエンティティが呪文であることを定義します。

  • mana = double。呪文のマナ消費。
  • predSkill = string。この呪文を発動すると起動するアクションタイプ。攻撃タイプなら攻撃アクションを自動開始します。
  • notSkills = string。この呪文の使用に必要なアクションについてのヒント。
  • attack = double。攻撃タイプのアクションをどれだけ加速するか(実質的な魔法ダメージ)。
  • gather = double。採取タイプのアクションをどれだけ加速するか。
  • craft = double。クラフトタイプのアクションをどれだけ加速するか。
  • heal = double。プレイヤーヒーローがどれだけ回復するか。
  • newEvent = string。呪文がトリガーするイベント名。多くはバフ系イベントです。
  • teleport = bool。選択した場所へテレポート。
  • explore = double。このマスと隣接マスをどれだけ偵察するか。

3.28. Blueprint

設計図エンティティのメカニクスです。

  • item = string。作成されるアイテム名。
  • build = string。建設される建物名。
  • costName1 = string。作成に必要なアイテム 1 の名前。
  • costNum1 = double。アイテム 1 の必要数。
  • costName2 = string。アイテム 2 の名前。
  • costNum2 = double。アイテム 2 の必要数。
  • costName3 = string。アイテム 3 の名前。
  • costNum3 = double。アイテム 3 の必要数。

3.29. Cost

購入・販売が可能であることを示す価格コンポーネントです。

  • raw = double。モディファイア適用前の基本価格。購入/販売価格の計算基準。

3.30. Event

イベント用コンポーネントです。

  • uniq = bool。イベントがユニークかどうか。同名のイベントが再度出現すると古いものが削除されます。
  • rndEvent = bool。このイベントがランダムイベントかどうか。
  • nextEvent1 = string。現在のイベント終了後に開始される 1 番目のイベント名。
  • nextEvent2 = string。同様に 2 番目のイベント名。
  • castType = string。呪文の強化タイプで、同じタイプを上書きします。

3.31. Proc

病気の発生確率など、プロック(確率)を処理するコンポーネントです。

  • addEvent = string。プロックが発動した際に開始されるイベント。

3.32. ProcMod

エンティティがプロック確率に影響を与えられるようにするコンポーネントです。

  • proc = string。影響を与えるプロック名。
  • chance = double。影響の強さ。機能の一部はコード側にあります。
  • dependsLevel = bool。エンティティのレベルに依存するか。

3.33. Usable

一度使うと効果を発揮するコンポーネント(例: ポーション)。「使用」アクションで発動します。

  • stat = string。影響を与えるステータス名。
  • skill = string。影響を与えるスキル名。
  • nowBonus = double。Total.now に加算するボーナス。
  • maxBonus = double。Total.max に加算するボーナス。
  • cure = bool。病気効果を治すか。

3.34. Drankable

湖やオアシスなど、マップ上で飲めるオブジェクトを定義します。

3.35. Sphinx

マップ上のクエストオブジェクト「スフィンクス」。パラメーターはリージョンレベルに基づき自動設定されます。

3.36. Living_tree

マップ上のクエストオブジェクト「生きた木」。パラメーターはリージョンレベルに基づき自動設定されます。

3.37. Vision

プレイヤーヒーローがこのエンティティのあるマスに入ると、マップの視界を広げるオブジェクトのメカニクスです。

  • explore = int。偵察半径。1 - 通常の偵察、2 - 1 マス拡張。

3.38. Remains

遺骨コンポーネントとしてのエンティティの説明で、アンデッド化を可能にします。

3.39. Audio_comp

エンティティのタイプに応じてサウンドを再生できるコンポーネントです。

  • click = string。エンティティをクリックしたときのサウンド。アクションや呪文で使用。
  • added = string。エンティティ作成時に再生されるサウンド(イベントで使用)。
  • ambient1 = string。環境音トラック 1。
  • ambient2 = string。環境音トラック 2。
  • ambient3 = string。環境音トラック 3。
  • process = List(string)。アクション実行中に再生されるサウンド名のリスト。
  • waits = List(double)。サウンド再生間隔のリスト。
  • finish = string。アクション完了時のサウンド。
  • rndProcess = bool。再生中のサウンドに小さなランダム効果を加えます。

3.40. Childs

子エンティティを再帰的に生成するコンポーネントです。

  • list = List(Entity)。このエンティティのために自動生成され紐づけられる子のリスト。

3.41. Preds

特定のエンティティにアクションを作成するコンポーネントですが、多くのエンティティはコード側で定義されています。

  • list = List(string).

3.42. Equip

このアイテムをヒーローが装備できることを示すマーカーコンポーネントです。

3.43. Res

このエンティティがリソースであることを示すインジケーター。ツールチップやアニメーション、ゲーム概要に使われます。

3.44. TurnAct

このコンポーネントを持つエンティティはゲーム時間の各ティックでチェックされます(Total や Duration など)。

4. リスト

list.json には、エンティティやコンポーネントではないデータセクションが収録されています。ゲーム内コンテンツを生成するさまざまなリストを定義します。

4.1. RndGoodEvents

ゲーム開始直後に生成される良いランダムイベントのリスト。

4.2. RndEvents

ゲーム進行中に生成される良い/悪いランダムイベントのリスト。

4.3. Generator_dungeon_addons_physical

物理ダメージ系ダンジョンに生成される拡張(アドオン)のリスト。

4.4. Generator_dungeon_addons_magical

魔法ダメージ系ダンジョンに生成される拡張(アドオン)のリスト。

4.5. Generator_ruins_addons

遺跡用に生成される拡張(アドオン)のリスト。

4.6. Generator_settlement_levels

リージョンレベルと集落エンティティ名の対応リスト。例: 'lvl1':'Village' はレベル 1 のリージョンで Village 集落が生成されることを意味します。

4.7. Generator_rar_metals

リージョンレベルと鉱床名の対応リスト。例: 'lvl2':'Deposit_tin' はレベル 2 のリージョンでスズ鉱床が生成されることを示します。

4.8. Generator_mages

リージョンレベルと魔法使いの対応リスト。例: 'lvl3':'Priestesses' はレベル 3 のリージョンで女司祭が生成され、魔法塔を守ることを意味します。

4.9. LevelMobs_

リージョンレベルごとのクリーチャーリスト。ダンジョン掃討や遺跡探索で囚人を解放した際、プレイヤーが得るクリーチャーを決定します。

4.10. Crafter_start, Lord_start, Mage_start,

GameClass コンポーネントの learnList フィールドで使用する、クラスごとに開始時に受け取るアイテムのリストです。learnNum フィールドで生成数を指定します。

  • obj = string。アイテム名。
  • min = double。ランダム生成の最小値。
  • max = double。ランダム生成の最大値。
  • chance = double。このアイテムが生成される確率。
  • 必要に応じて別のリストを作成し、異なるクラスの設計図や呪文を学習させることもできます。

4.11. Gold_

リージョンレベルに応じたゴールド生成量を定義するリストです。報酬の 50% でゴールドが出現します。構文は 4.10 を参照。

4.12. Loot_-

リージョンレベルに応じた報酬生成を定義するリスト群です。クリーチャー、ダンジョン、遺跡に適用されます。クリーチャーの場合、50% の確率でこのリストからアイテムがドロップし、残り 50% は 4.13 のリストが使われます。構文は 4.10 を参照。

4.13. Warriors_, Defenders_, Mages_, Gatherers_, Crafters_,

リージョンレベルとクリーチャークラス別の報酬生成を定義するリスト群です。クリーチャーにのみ適用され、Loot_- リストを拡張します。50% の確率でクラス依存の報酬を生成し、例として魔法使いに呪文書や杖が出やすくなります。構文は 4.10 を参照。

4.14. Shop_, Books_

リージョンレベルごとのリスト(例: Books5 や Shop6)。ショップの品ぞろえ生成に使用します。構文は 4.10 を参照。これらのリストは Shop コンポーネントの type フィールドで指定し、塔ではゲームコードから生成されます。