Unity

【Unity】Game Creator 2 Stats(ステータス・能力値)完全解説

【Unity】Game Creator 2 Stats(ステータス・能力値)完全解説

当サイトを閲覧いただきありがとうございます。

本記事では、Game Creator 2のモジュールのひとつである「Stats」(ステータス・能力値システム)について詳しく解説します。

StatsはRPG的な能力値システム全般をカバーするモジュールで、Stat(能力値)/Attribute(HP・MP等)/Class(職業テンプレ)/Formula(式評価)/Table(経験値テーブル)/Stat Modifier(装備補正)/Status Effect(状態異常)を包括的に扱います。

公式ドキュメント:Game Creator 2 Documentation


Statsとは

RPG・シミュ・格ゲーを問わず、数値でキャラを表現する場面の基盤です。

主要オブジェクト:

  • Stat:伸びる/変わる数値(例:strength、wisdom、luck)
  • Attribute:上限付きの数値(例:HP 0〜100)
  • Class:StatとAttributeの組合せテンプレ(例:Warrior、Mage)
  • Traits:Classをシーン上のGameObjectにアタッチするコンポーネント
  • Formulasource.stat[atk] - target.stat[def] のような式
  • Table:経験値 → レベルなどの対応付け
  • Stat Modifier:装備やバフによる加算・倍率補正
  • Status Effect:毒/加速など時間経過で作用する状態

使い分けの原則

パターン使う機能
上限はなく伸びるStat(strength、wisdom、level…)
上限=別Statに依存Attribute(healthはmax_health Statにキャップ)
キャラごとの能力差ClassにStat/Attributeの初期値違いで差を吸収
装備中だけ+10Stat Modifier
毎秒HPを1減らすStatus Effect

導入

  1. Asset Storeから Statsモジュール を購入
  2. Window > Package Manager からインストール
  3. Game Creator > Install... のサンプル:
    • Examples:機能ごとのサンプルシーン
    • Classes:Warrior/Mage等のClassテンプレ
    • UI:HUD/キャラステータス画面のテンプレ

Stats(能力値)

作成

Project右クリック → Create > Game Creator > Stats > Stat

フィールド

  • ID:プロジェクト全体で一意。Formulaの source.stat[ID] で参照されるため、短く分かりやすい名前str / strength)を推奨
  • Base Value:初期値。最終値ではなく、Formulaの起点
  • Formula:未指定なら最終値 = Base Value。指定すると実行時計算で最終値になる
  • UI:Name/Acronym/Description/Color/Icon

BaseとFormulaの関係

Base 100、Formula = source.base[this] * source.stat[level] なら、Lv1で100、Lv2で200、Lv3で300…になります。Baseは「絶対量」、Formulaは「育成曲線」と考えると整理しやすいです。


Attributes(属性)

作成

Create > Game Creator > Stats > Attribute

フィールド

  • ID:一意。hp / health など
  • Min Value:下限(通常0)
  • Max Value別Stat参照。レベルアップでmax_health Statが増えれば自動的に上限も増える
  • Start Percent:初期割合(ほとんどのAttributeは1.0で満タンスタート)

典型例

  • health:max = max_health(Stat)、start = 1.0
  • stamina:max = max_stamina、start = 1.0
  • mana:max = max_mana、start = 1.0

Classes(クラス/テンプレ)

作成

Create > Game Creator > Stats > Class

構成

  • Attributes:含めるAttributeの一覧。各AttributeのStart Percentを Class内で上書き可
  • Stats:含めるStatの一覧。Base ValueとFormulaをClass内で上書き可(Warriorはstr=10、Mageはstr=4のように差別化)

オーバーライドの哲学

「同じ仕組み・違う数値」でMageとKnightを作るなら、同じClassテンプレをコピーしてBase/Formulaだけ書き換えるのが保守性の面で優れています。


Traits(キャラに結びつけるコンポーネント)

アタッチ

任意のGameObjectに Traits コンポーネントを追加します。Characterでなくても使えます。

Classの割当

コンポーネントにClassアセットをドラッグ&ドロップ。内容が表示され、個別Attribute/Statの値をこのインスタンスだけで上書きできます。

Runtime表示

プレイモード中は現在値をインスペクタで確認できるため、デバッグしやすいです。


Formulas(計算式)

作成

Create > Game Creator > Stats > Formula

式の書き方

テキストフィールドにmath式を書きます。最終値を返すのが役目です。

source.stat[attack] - target.stat[defense]

対象の表記

  • source … 呼出し元(攻撃側など)
  • target … 対象(被ダメ側など)

主要シンボル

種別書式
Stat(Base値)source.base[id]source.base[strength]
Stat(最終値)source.stat[id]source.stat[attack]
Attributesource.attr[id]source.attr[hp]
Local Variabletarget.var[id]target.var[hit-counter]

Random系

  • random[min, max]:[min, max]の小数乱数
  • dice[rolls, sides]:サイコロ振り(dice[2, 6] = 6面を2個振る)
  • chance[p]:確率pで1、それ以外0

Arithmetic系

  • min[a, b] / max[a, b]
  • round[v] / floor[v] / ceil[v]

Table系(Tableと連携)

  • table.level[value]:累積値からlevelを返す
  • table.value[level]:levelに達するための累積値
  • table.increment[level]:次レベルまでの差分
  • table.current[value]:現レベルで獲得済みの値
  • table.next[value]:次レベルまでの残り
  • table.ratio[value]:現レベル内の進捗率(0〜1)

循環参照に注意

AのFormulaがBを参照、BのFormulaがAを参照、のような循環依存はチェックされず無限ループ化します。設計時に依存グラフを意識してください。


Tables(レベル曲線)

作成

Create > Game Creator > Stats > Table

概念

  • Level:整数レベル
  • Cumulative Value:そのlevelに達するまでの累計必要値(合計経験値など)
  • Value:現レベル内で獲得済みの値

タイプ(Progression)

タイプ概要
Manualレベルごとに手動で必要値を設定
Constant全レベル同一値
Linear必要値 = 定数 × level(一般的なRPG向け)
Geometric必要値 = level × 係数(短期で急伸する設計向き)

Formulaとの連携

Formulaアセット側でTable参照フィールドを設定しておけば、table.* シンボルがそのTableを参照します。


Stat Modifiers(装備・バフ補正)

用途

装備・バフでStatを一時的に加算/倍率化する仕組みです。Traitsの Stat値を増減させる上乗せレイヤーとして機能します。

追加

Add Stat Modifier:Target/Stat/Type(Constant or Percentage)/Valueを指定。

削除

Remove Stat Modifier:同じStat/Type/Valueの組合せを持つModifierを1件削除。

計算順

Percentageを先に適用し、その後にConstantを加算します。順序が結果に影響するので注意してください。


Status Effects(状態異常)

作成

Create > Game Creator > Stats > Status Effect

フィールド

  • ID:プロジェクト一意
  • Type:Positive / Negative / Neutral。Clear Status Effects Type で一括解除するときの分類
  • Max Stack:同じStatus Effectを何重まで重ねられるか
  • Save:ロード後も残すか(残り時間も保存)
  • Has Duration / Duration:制限時間。OFFなら手動解除まで継続
  • On Start / On End / While Active:ライフサイクル毎のInstructionリスト

While Activeの使い所

  • Poisonなら While Active 内で一定秒ごとにHPを減らす処理
  • 発動/解除時にVFX/SFXをOn Start/On Endに仕込む

追加/削除

  • Add Status Effect:対象(Traits)と種類を指定
  • Remove Status Effect:対象と削除数、種別指定
  • Clear Status Effects Type:Positive/Negative/Neutralで一括クリア

User Interface(UIコンポーネント)

Stat UI

  • Target:Traitsを持つGameObject
  • Stat:表示するStatアセット
  • 任意フィールド:Name/Acronym/Value/Icon/Colorを Text/Imageにドラッグ

Attribute UI

  • Stat UIと同じ基本構造
  • Transitions(値変化アニメ):HPバーの「遅れて減るバー」など
    • Stall Duration:値変化から遅延開始までの秒数
    • Transition Duration:追従アニメ時間

Formula UI

任意の2キャラ間でFormulaを評価し、結果を表示します。

Status Effects UI

2コンポーネント構成:

  • Status Effect List UI(親):対象のTraitsの全効果を集約。Typesで絞り込み。Prefabを指定すると各効果ごとにインスタンスを自動生成
  • Status Effect UI(子プレハブ用):個別の効果アイコン/残時間等を表示

Visual Scripting リファレンス

Instructions(16)

Stats(11)

命令機能
Add Stat ModifierStatにModifierを追加
Remove Stat Modifier同値Modifierを削除
Add Status EffectStatus Effectを付与
Remove Status EffectStatus Effectを削除
Clear Status Effects Typeタイプで一括削除
Change AttributeAttributeの現在値を変更
Change StatStatのBase値を変更
Set AttributeAttributeアセットを変数へ保存
Set StatStatアセットを変数へ保存
Set FormulaFormulaアセットを変数へ保存
Set Status EffectStatus Effectアセットを変数へ保存

Stats > UI(5)

命令機能
Change AttributeUI AttributeAttribute UIの表示Attributeを変更
Change AttributeUI TargetAttribute UIの対象Traitsを変更
Change StatUI StatStat UIの表示Statを変更
Change StatUI TargetStat UIの対象Traitsを変更
Change Status Effects List UI TargetリストUIの対象Traitsを変更

Conditions(8)

条件判定
Check FormulaFormulaの結果を比較
Compare AttributeAttribute値を比較
Compare StatStat値を比較
Has Stat Modifiers指定StatにModifierがあるか
Has Status Effect指定Status Effectを持つか
Is Traits of ClassTraitsのClassが一致するか
Traits Has AttributeTraitsがAttributeを保有するか
Traits Has StatTraitsがStatを保有するか

Events(3)

イベント発火タイミング
On Attribute ChangeAttribute値が変化したとき
On Stat ChangeStat値が変化したとき(Modifier含む)
On Status Effect ChangeStatus Effectが追加/削除されたとき

Tipsと注意点

  • ID命名規約を最初に決めるhp/mp/str/dex/int/wis/luck のように統一。Formulaでタイポすると0扱いされて発見しにくいバグになります
  • 循環依存は自己責任:Statsは循環を警告しません
  • Stat Modifierの順序:Percentageが先、Constantが後
  • AttributeのMaxはStat参照:固定値でAttributeのMaxを決めると、レベルアップでMaxを伸ばせません。Max Statを挟むのが定石です
  • Status EffectのMax Stack:既定1。重ね掛け前提の毒系を作るなら明示的に増やす
  • Save機能:Status Effectは残り時間まで保存されます
  • UIはTransitionsを使う:体力バーの「遅延バー」演出はAttribute UIのStall/Transition Durationだけで実装可能
  • Formula内のrandomとchance:再現性が必要な処理(リプレイ等)では避ける
  • Tableの選択指針:長編RPGはLinear、短編ARPG・MOBAはGeometric

実践的な使い方 ― やりたいこと別の構成ガイド

攻撃力−防御力のダメージ計算を作る

Formulaアセットに source.stat[attack] - target.stat[defense] と記述します。sourceとtargetは命令の呼び出し元と対象で自動的に決まります。

レベルアップで最大HPが伸びるようにする

Stat max-hp のFormulaでレベル連動させ(例:source.base[max-hp] * source.stat[level])、Attribute hp のMax ValueにStat max-hp を参照させます。

経験値テーブルでレベルを自動計算する

Tableアセットで進行タイプを選択し、Stat level のFormulaに table.level[source.stat[experience]] を記述してTableアセットを紐付けます。

装備による一時的なステータス上昇

装備時に Add Stat Modifier、解除時に Remove Stat Modifier を実行します。Inventoryモジュールと連携する場合はItemのOn Equip/On Unequipに設定します。

毒の状態異常(時間経過HPドレイン)

Status Effectアセットを作成し、Type=Negative、While Activeに Change Attribute(hp減少)を設定します。On Startに毒エフェクト生成、On Endにエフェクト除去を入れます。

バフ・デバフのタイプ別一括除去

Status Effect作成時にTypeを正しく分類し、Clear Status Effects Type(Type=Negative)で一括クリアします。

同じStat/Attributeを持つ複数キャラ種を作る

Classアセットを複製してStat Base ValueとFormulaだけ書き換え、各キャラクターのTraitsに該当Classを紐付けます。

ダメージ計算にランダム要素を加える

Formula例:(source.stat[attack] - target.stat[defense]) * random[0.8, 1.2] で±20%の揺らぎを付加できます。

HPバーや状態異常アイコンのHUDを作る

Attribute UIをAttributeごとに配置し、TransitionでStall Duration + Transition Durationを設定すれば「ダメージ後にじわじわ減るバー」が実装できます。Status Effect List UIを配置すればアイコンが自動整列します。


公式リンク


まとめ

本記事では、Game Creator 2のStatsモジュールについて解説しました。如何だったでしょうか。

Statsモジュールは能力値の定義から計算式、経験値テーブル、装備補正、状態異常までRPG的な数値システムに必要な要素を一式備えています。

特にFormulaアセットによる宣言的なダメージ計算と、Stat Modifierによる装備補正の自動管理は、コアのみで手動実装する場合と比べて保守性が大幅に向上します。

全記事一覧 ― Game Creator 2 完全ガイド シリーズ総合案内senkohome.com/gamecreator2-series-index/

それでは次の記事も閲覧いただけると幸いです。