ChatGPTでRPGツクールMZのアクター作成について解説します。ここでは基本編ということで以下の作成を行います。
- アクターの名前
- アクターの職業名
- アクターの初期ステータス値
- アクターのスキル
「ChatGPTによりアクター情報をJSON形式で作成⇒RPGツクールMZで扱える形式に変換」
が基本の方針になります。
ChatGPTによるアクター作成
アクターの名前・職業初期ステータス値を作成するために、以下のようにChatGPTに聞きます。
XXXの設定でRPGを作成します。
RPGに登場する主人公を定義してください。
主人公は下のJSONスキーマで作成してください。
必ず省略せずにすべて出力してください。
* name:名前
* class:職業
* skill:スキルタイプ(魔法または必殺技)
* hp:体力(職業に即した値で300~600程度で1の位は0,5以外)
* mp:魔法力(職業に即した値で40~140程度で1の位は0,5以外)
* atk:攻撃力(職業に即した値で10~40程度で1の位は0,5以外)
* def:防御力(職業に即した値で10~40程度で1の位は0,5以外)
* mat:魔法攻撃力(職業に即した値で10~40程度で1の位は0,5以外)
* mdf:魔法防御力(職業に即した値で10~40程度で1の位は0,5以外)
* agi:素早さ(職業に即した値で10~40程度で1の位は0,5以外)
* luk:運(職業に即した値で10~40程度で1の位は0,5以外)
オーソドックスなRPGの主人公を定義します。ここでは、一般的なファンタジーRPGにおける「勇者」職業を例に挙げて設定します。
{
"name": "エドワード",
"class": "勇者",
"skill": "魔法",
"hp": 519,
"mp": 102,
"atk": 23,
"def": 39,
"mat": 36,
"mdf": 18,
"agi": 12,
"luk": 32
}
エドワードは、高い体力(hp)と適度な魔法力(mp)を持ち、攻撃力(atk)と防御力(def)も強力です。魔法攻撃力(mat)は高めで、魔法防御力(mdf)は平均的な値に設定されています。素早さ(agi)はやや低いですが、運(luk)が高く、さまざまな状況で役立ちます。これにより、勇者エドワードは多様な戦闘スタイルに対応できる汎用性の高いキャラクターとして定義されています。
これを繰り返し、パーティーメンバーの分だけ配列として連結し、JSONファイルを作成します。
最終的に以下のようなgpt_members.jsonを作成してください。
[
{
"name": "エドワード",
"class": "勇者",
"skill": "魔法",
"hp": 519,
"mp": 102,
"atk": 23,
"def": 39,
"mat": 36,
"mdf": 18,
"agi": 12,
"luk": 32
},
{
"name": "リリアン",
"class": "魔法使い",
"skill": "魔法",
"hp": 320,
"mp": 138,
"atk": 14,
"def": 12,
"mat": 38,
"mdf": 34,
"agi": 22,
"luk": 18
},
{
"name": "リナ",
"class": "盗賊",
"skill": "必殺技",
"hp": 384,
"mp": 81,
"atk": 38,
"def": 12,
"mat": 17,
"mdf": 12,
"agi": 27,
"luk": 23
},
{
"name": "ケン",
"class": "格闘家",
"skill": "必殺技",
"hp": 321,
"mp": 124,
"atk": 17,
"def": 31,
"mat": 22,
"mdf": 29,
"agi": 26,
"luk": 26
}
]
ChatGPTによるアクターのスキル作成
次にアクターのスキルを作成します。
前からの会話の流れでアクターのスキルを作成するために、以下のようにChatGPTに聞きます。
エドワードのスキルを4つ作成してください。
[前提]
* 通常攻撃ダメージ = (攻撃キャラのatk × 4 - 敵キャラのdef × 2) × (1 + 乱数変動係数)
* 物理スキルダメージ = (攻撃キャラのatk × 物理スキル係数 - 敵キャラのdef × 2) × (1 + 乱数変動係数)
* 魔法スキルダメージ = (攻撃キャラのmat × 魔法スキル係数 - 敵キャラのmdf) × (1 + 乱数変動係数)
* 能力名 = HP、攻撃、防御、魔攻、魔防、素早さ、運
* 属性名 = なし、炎、氷、水、電気、風、土、光、闇
* 良い状態 = 状態異常回復、戦闘不能回復、<能力名>アップ、<能力名>大アップ、HP再生、MP再生、TP再生、魔法反射、かばう、挑発、隠れる、反撃、状態異常防止、消費MP減、炎の力、氷の力、雷の力
* 状態異常 = 戦闘不能、毒、暗闇、沈黙、激昂、混乱、魅了、睡眠、麻痺、スタン、<能力名>ダウン、<能力名>大ダウン
[出力形式]
JSON形式の配列(JSONのキーは以下の通り、必ずすべてのキーを付けてください)
* name:スキル名
* class:職業名
* level:スキルを覚えるレベル
* description:説明文(日本語)
* mp:消費MP
* tp:消費TP
* type:物理、魔法、スキルのどれか
* scope:自分、敵単体、敵全体、敵ランダム、味方単体、味方全体のどれか
* effect_type:なし、HPダメージ、TPダメージ、HP回復、TP回復、TP付与、HP吸収、TP吸収、全回復のどれか
* effect_rate:スキル係数
* variance:乱数変動係数 単位%(例:10)
* repeats:効果を発動する回数
* formula:基本のダメージ計算式(atk,def,mat,mdf,agi,luk 例: user.atk*effect_rate-target.def)
* element:スキルの属性名
* target_add_state:対象者に付与する良い状態または状態異常の配列
* target_add_state_rate:対象者に良い状態または状態異常を付与する確率
* special_effect:その他のスキル特殊効果
* icon_index:アイコンの種類の数字(毒:2, 暗闇:3, 混乱:6, 睡眠:8, 麻痺:9, スタン:11, バリア:81, 物理:76, 炎:64, 氷:65, 雷:66, 水:67, 土:68, 風:69, 光:70, 闇:71, アップ:73, ダウン:74, 魔法:79, ハート:84, 短剣:96, 剣:97, 斧:99, 杖:101, 弓:102, 槍:107, 帽子:130, 兜:132, 服:135, 鎧:137, 小型盾:129, 盾:128, 手袋:142, 装飾品:146)
* animation:スキルのアニメーション(Absorb、ArrowSpecial、BallsOfLight、Bind、Blind、Bodyslam、Breath、ClawEffect、ClawFire、ClawIce、ClawPhysical、ClawSpecial、ClawThunder、Confusion、CureAll1、CureAll2、CureOne1、CureOne2、DarknessAll1、DarknessAll2、DarknessAll3、DarknessOne1、DarknessOne2、Death、EarthAll1、EarthAll2、EarthAll3、EarthOne1、EarthOne2、FireAll1、FireAll2、FireAll3、FireOne1、FireOne2、Flash、Fog、GeneralSpecial1、GeneralSpecial2、HealAll1、HealAll2、HealOne1、HealOne2、HitEffect、HitFire、HitIce、HitPhysical、HitSpecial1、HitSpecial2、HitThunder、IceAll1、IceAll2、IceAll3、IceOne1、IceOne2、LaserAll、LaserOne、LightAll1、LightAll2、LightAll3、LightOne1、LightOne2、LightPillar1、LightPillar2、NeutralAll1、NeutralAll2、NeutralAll3、NeutralOne1、NeutralOne2、Paralyze、PierceEffect、PierceFire、PierceIce、PiercePhysical、PierceSpecial1、PierceSpecial2、PierceThunder、Poison、Pollen、Powerdown1、Powerdown2、Powerdown3、Powerup1、Powerup2、Powerup3、Radiation、Revive1、Revive2、ShootAll、ShootBarrage、ShootNormal、ShootSpecial、Shout、Silence、SlashEffect、SlashFire、SlashIce、SlashPhysical、SlashSpecial1、SlashSpecial2、SlashSpecial3、SlashThunder、Sleep、Song、SonicWave、Sweep、ThunderAll1、ThunderAll2、ThunderAll3、ThunderOne1、ThunderOne2、WaterAll1、WaterAll2、WaterAll3、WaterOne1、WaterOne2、WindAll1、WindAll2、WindAll3、WindOne1、WindOne2のどれか)
以下は、「エドワード」のキャラクターに対して作成した4つのスキルです。エドワードの能力値を考慮して、彼の強みを生かすようなスキルを中心に考案しました。
[
{
"name": "鋼の守護",
"class": "勇者",
"level": 5,
"description": "自分を堅固な防御の構えに入れ、一定時間、防御力を大幅に上昇させる。",
"mp": 15,
"tp": 0,
"type": "スキル",
"scope": "自分",
"effect_type": "なし",
"effect_rate": 0,
"variance": 0,
"repeats": 1,
"formula": "なし",
"element": "なし",
"target_add_state": [
"防御大アップ"
],
"target_add_state_rate": 100,
"special_effect": "",
"icon_index": 137,
"animation": "Powerup1"
},
{
"name": "聖なる一撃",
"class": "勇者",
"level": 10,
"description": "光の力を剣に宿し、敵単体に大ダメージを与える物理攻撃。光属性。",
"mp": 20,
"tp": 0,
"type": "物理",
"scope": "敵単体",
"effect_type": "HPダメージ",
"effect_rate": 3.5,
"variance": 10,
"repeats": 1,
"formula": "user.atk*effect_rate-target.def",
"element": "光",
"target_add_state": [],
"target_add_state_rate": 0,
"special_effect": "",
"icon_index": 97,
"animation": "LightOne1"
},
{
"name": "鉄壁の反撃",
"class": "勇者",
"level": 15,
"description": "次に受ける物理攻撃を完全に防ぎ、反撃で敵にダメージを与える。",
"mp": 10,
"tp": 0,
"type": "スキル",
"scope": "自分",
"effect_type": "HPダメージ",
"effect_rate": 2.0,
"variance": 5,
"repeats": 1,
"formula": "user.atk*effect_rate-target.def",
"element": "なし",
"target_add_state": [
"かばう"
],
"target_add_state_rate": 100,
"special_effect": "次に受ける物理攻撃を防ぎ、反撃する。",
"icon_index": 128,
"animation": "GeneralSpecial1"
},
{
"name": "全力斬り",
"class": "勇者",
"level": 20,
"description": "敵単体に対して自分の攻撃力を最大限に引き出した強力な一撃を放つ。高い確率でクリティカルヒット。",
"mp": 25,
"tp": 0,
"type": "物理",
"scope": "敵単体",
"effect_type": "HPダメージ",
"effect_rate": 4.0,
"variance": 20,
"repeats": 1,
"formula": "user.atk*effect_rate-target.def",
"element": "なし",
"target_add_state": [],
"target_add_state_rate": 0,
"special_effect": "クリティカル率大幅アップ",
"icon_index": 97,
"animation": "SlashPhysical"
}
]
プロンプトを作成するRPGに合わせてカスタマイズしてもらえばと思います。
第1段落では前の会話で作成したキャラクターの名前を入力しています。
第2段落(前提)ではスキルを作成するのに必要なダメージ計算式、属性の種類、追加効果の種類などを書いています。
第3段落(出力形式)では出力するJSONの形式を指定しています。RPGツクールMZのデフォルトに合わせているのでお使いの環境に合わせてカスタマイズしてください。
複数名のスキルを作成する場合は、複数回ChatGPTとやり取りをしてgpt_skills.jsonを作成してください。
[
{
"name": "鋼の守護",
"class": "勇者",
"level": 5,
"description": "自分を堅固な防御の構えに入れ、一定時間、防御力を大幅に上昇させる。",
"mp": 15,
"tp": 0,
"type": "スキル",
"scope": "自分",
"effect_type": "なし",
"effect_rate": 0,
"variance": 0,
"repeats": 1,
"formula": "なし",
"element": "なし",
"target_add_state": [
"防御大アップ"
],
"target_add_state_rate": 100,
"special_effect": "",
"icon_index": 137,
"animation": "Powerup1"
},
{
"name": "聖なる一撃",
"class": "勇者",
"level": 10,
"description": "光の力を剣に宿し、敵単体に大ダメージを与える物理攻撃。光属性。",
"mp": 20,
"tp": 0,
"type": "物理",
"scope": "敵単体",
"effect_type": "HPダメージ",
"effect_rate": 3.5,
"variance": 10,
"repeats": 1,
"formula": "user.atk*effect_rate-target.def",
"element": "光",
"target_add_state": [],
"target_add_state_rate": 0,
"special_effect": "",
"icon_index": 97,
"animation": "LightOne1"
},
{
"name": "鉄壁の反撃",
"class": "勇者",
"level": 15,
"description": "次に受ける物理攻撃を完全に防ぎ、反撃で敵にダメージを与える。",
"mp": 10,
"tp": 0,
"type": "スキル",
"scope": "自分",
"effect_type": "HPダメージ",
"effect_rate": 2.0,
"variance": 5,
"repeats": 1,
"formula": "user.atk*effect_rate-target.def",
"element": "なし",
"target_add_state": [
"かばう"
],
"target_add_state_rate": 100,
"special_effect": "次に受ける物理攻撃を防ぎ、反撃する。",
"icon_index": 128,
"animation": "GeneralSpecial1"
},
{
"name": "全力斬り",
"class": "勇者",
"level": 20,
"description": "敵単体に対して自分の攻撃力を最大限に引き出した強力な一撃を放つ。高い確率でクリティカルヒット。",
"mp": 25,
"tp": 0,
"type": "物理",
"scope": "敵単体",
"effect_type": "HPダメージ",
"effect_rate": 4.0,
"variance": 20,
"repeats": 1,
"formula": "user.atk*effect_rate-target.def",
"element": "なし",
"target_add_state": [],
"target_add_state_rate": 0,
"special_effect": "クリティカル率大幅アップ",
"icon_index": 97,
"animation": "SlashPhysical"
}
]
RPGツクールMZ形式に変換
上で作成したgpt_members.json、gpt_skills.jsonをRPGツクールMZで扱える形に変換します。
前提としてRPGツクールMZのアクターやスキルなどのデータは「<RPGツクールプロジェクトフォルダ>/data」にJSON形式で入っています。今回扱うのは、名前などの基本情報が入っているActors.jsonと、ステータス値や覚えるスキルが入っているClasses.json、スキル情報が入っているSkills.jsonです。
RPGツクールMZアクター変換ツール
変換ツールを作成しましたので、こちらをお使いください。
gpt_members.json、gpt_skills.jsonで定義したアクター、職業、スキルをRPGツクールMZのActors.json、Classes.json、Skills.jsonの末尾に追加します。
以下の点線エリアに
・上で作成したgpt_members.json
・上で作成したgpt_skills.json
・<RPGツクールプロジェクトフォルダ>/data/Actors.json
・<RPGツクールプロジェクトフォルダ>/data/Classes.json
・<RPGツクールプロジェクトフォルダ>/data/Skills.json
をそのままドラッグアンドドロップしてください。
または
変換に成功すると、新しく生成されたActors.json,Classes.json,Skills.jsonのリンクが表示されます。それぞれダウンロードして、お使いのRPGツクールMZのプロジェクトフォルダのdataフォルダに上書きコピーしてください。
RPGツクールMZのエディターから追加されたアクター、職業、スキルを確認することができれば変換成功です。
まとめ
アクターの基本情報(名前・職業・ステータス)を自動作成する方法を説明しました。顔グラフィックや歩行キャラがまだないので画像系も次に説明します。