ChatGPTでRPGツクールMZの敵キャラ作成について解説します。ここでは基本編ということで以下の作成を行います。
- 敵キャラの名前
- 敵キャラのステータス
- 敵キャラのスキル
「ChatGPTにより敵キャラ情報をJSON形式で作成⇒RPGツクールMZで扱える形式に変換」
が基本の方針になります。
ChatGPTによる敵キャラ作成
アクターの名前・職業初期ステータス値を作成するために、以下のようにChatGPTに聞きます。
XXXの設定でRPGツクールMZを使ってRPGを作成します。
RPGに登場する敵キャラを定義してください。
[前提]
* 通常攻撃ダメージ = (攻撃キャラのatk × 2 - 敵キャラのdef) × (1 + 乱数変動係数)
* 物理スキルダメージ = (攻撃キャラのatk × 物理スキル係数 - 敵キャラのdef) × (1 + 乱数変動係数)
* 魔法スキルダメージ = (攻撃キャラのmat × 魔法スキル係数 - 敵キャラのmdf) × (1 + 乱数変動係数)
[出力形式]
以下のJSONスキーマで作成してください。
* name:名前
* hp:体力(1の位は1~9)
* mp:魔法力(1の位は1~9)
* atk:攻撃力(1の位は1~9)
* def:防御力(1の位は1~9)
* mat:魔法攻撃力(1の位は1~9)
* mdf:魔法防御力(1の位は1~9)
* agi:素早さ(1の位は1~9)
* luk:運(1の位は1~9)
* gold:倒した時に得られるお金
* exp:倒したときに得られる経験値
以下はオーソドックスなRPGに登場する敵キャラの定義です。
[
{
"name": "ゴブリン",
"hp": 193,
"mp": 22,
"atk": 15,
"def": 8,
"mat": 10,
"mdf": 5,
"agi": 12,
"luk": 7,
"gold": 10,
"exp": 15
},
...
]
このデータは敵キャラの基本的なステータスを設定しており、RPGツクールMZのオーソドックスなRPGに適しています。それぞれのステータスは戦闘におけるバランスを考慮して設定されています。
ステータス値を調整しながらこれを繰り返し、敵キャラ分だけ配列として連結し、JSONファイルを作成します。
最終的に以下のようなgpt_enemies.jsonを作成してください。
[
{
"name": "ゴブリン",
"hp": 193,
"mp": 22,
"atk": 15,
"def": 8,
"mat": 10,
"mdf": 5,
"agi": 12,
"luk": 7,
"gold": 10,
"exp": 15
},
{
"name": "スケルトン",
"hp": 208,
"mp": 18,
"atk": 18,
"def": 12,
"mat": 8,
"mdf": 6,
"agi": 11,
"luk": 5,
"gold": 12,
"exp": 20
},
{
"name": "ウルフ",
"hp": 174,
"mp": 16,
"atk": 20,
"def": 10,
"mat": 7,
"mdf": 8,
"agi": 18,
"luk": 10,
"gold": 15,
"exp": 25
},
{
"name": "スライム",
"hp": 154,
"mp": 9,
"atk": 12,
"def": 14,
"mat": 9,
"mdf": 9,
"agi": 8,
"luk": 4,
"gold": 8,
"exp": 10
},
{
"name": "オーク",
"hp": 237,
"mp": 24,
"atk": 25,
"def": 18,
"mat": 12,
"mdf": 10,
"agi": 9,
"luk": 6,
"gold": 20,
"exp": 30
},
{
"name": "ウィザード",
"hp": 185,
"mp": 32,
"atk": 10,
"def": 7,
"mat": 22,
"mdf": 14,
"agi": 10,
"luk": 8,
"gold": 18,
"exp": 25
},
{
"name": "バンパイア",
"hp": 255,
"mp": 28,
"atk": 22,
"def": 15,
"mat": 20,
"mdf": 12,
"agi": 14,
"luk": 9,
"gold": 25,
"exp": 35
},
{
"name": "ドラゴン",
"hp": 325,
"mp": 40,
"atk": 30,
"def": 25,
"mat": 18,
"mdf": 20,
"agi": 12,
"luk": 10,
"gold": 50,
"exp": 50
}
]
ChatGPTによる敵キャラのスキル作成
次に敵キャラのスキルを作成します。
前からの会話の流れで敵キャラのスキルを作成するために、以下のようにChatGPTに聞きます。
ゴブリンのスキルを2つ作成してください。
[前提]
* 通常攻撃ダメージ = (攻撃キャラのatk × 4 - 敵キャラのdef × 2) × (1 + 乱数変動係数)
* 物理スキルダメージ = (攻撃キャラのatk × 物理スキル係数 - 敵キャラのdef × 2) × (1 + 乱数変動係数)
* 魔法スキルダメージ = (攻撃キャラのmat × 魔法スキル係数 - 敵キャラのmdf) × (1 + 乱数変動係数)
* 能力名 = HP、攻撃、防御、魔攻、魔防、素早さ、運
* 属性名 = なし、炎、氷、水、電気、風、土、光、闇
* 良い状態 = 状態異常回復、戦闘不能回復、<能力名>アップ、<能力名>大アップ、HP再生、MP再生、TP再生、魔法反射、かばう、挑発、隠れる、反撃、状態異常防止、消費MP減、炎の力、氷の力、雷の力
* 状態異常 = 戦闘不能、毒、暗闇、沈黙、激昂、混乱、魅了、睡眠、麻痺、スタン、<能力名>ダウン、<能力名>大ダウン
[出力形式]
JSON形式の配列(JSONのキーは以下の通り、必ずすべてのキーを付けてください)
* name:スキル名
* enemy:スキルを覚える敵キャラ名
* 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のどれか)
以下に、ゴブリンのスキルを2つ作成しました。
[
{
"name": "クラッシュアタック",
"enemy": "ゴブリン",
"description": "ゴブリンが強力な一撃を放ち、敵単体に大きな物理ダメージを与える。",
"mp": 5,
"tp": 0,
"type": "物理",
"scope": "敵単体",
"effect_type": "HPダメージ",
"effect_rate": 2.5,
"variance": 10,
"repeats": 1,
"formula": "user.atk * 2.5 - target.def * 2",
"element": "なし",
"target_add_state": [],
"target_add_state_rate": 0,
"special_effect": "",
"icon_index": 97,
"animation": "SlashPhysical"
},
{
"name": "火炎の矢",
"enemy": "ゴブリン",
"description": "炎の力を込めた矢を放ち、敵単体に魔法ダメージを与える。",
"mp": 7,
"tp": 0,
"type": "魔法",
"scope": "敵単体",
"effect_type": "HPダメージ",
"effect_rate": 2.0,
"variance": 10,
"repeats": 1,
"formula": "user.mat * 2.0 - target.mdf",
"element": "炎",
"target_add_state": [],
"target_add_state_rate": 0,
"special_effect": "",
"icon_index": 64,
"animation": "FireOne2"
}
]
これらのスキルは、ゴブリンの攻撃力や魔法力を活かし、戦略的なバトルを楽しめるように設計されています。
プロンプトを作成するRPGに合わせてカスタマイズしてください。
第1段落では前の会話で作成した敵キャラの名前を入力しています。
第2段落(前提)ではスキルを作成するのに必要なダメージ計算式、属性の種類、追加効果の種類などを書いています。
第3段落(出力形式)では出力するJSONの形式を指定しています。RPGツクールMZのデフォルトに合わせているのでお使いの環境に合わせてカスタマイズしてください。
複数名のスキルを作成する場合は、複数回ChatGPTとやり取りをしてgpt_enemy_skills.jsonを作成してください。
[
{
"name": "クラッシュアタック",
"enemy": "ゴブリン",
"description": "ゴブリンが強力な一撃を放ち、敵単体に大きな物理ダメージを与える。",
"mp": 5,
"tp": 0,
"type": "物理",
"scope": "敵単体",
"effect_type": "HPダメージ",
"effect_rate": 2.5,
"variance": 10,
"repeats": 1,
"formula": "user.atk * 2.5 - target.def * 2",
"element": "なし",
"target_add_state": [],
"target_add_state_rate": 0,
"special_effect": "",
"icon_index": 97,
"animation": "SlashPhysical"
},
{
"name": "火炎の矢",
"enemy": "ゴブリン",
"description": "炎の力を込めた矢を放ち、敵単体に魔法ダメージを与える。",
"mp": 7,
"tp": 0,
"type": "魔法",
"scope": "敵単体",
"effect_type": "HPダメージ",
"effect_rate": 2.0,
"variance": 10,
"repeats": 1,
"formula": "user.mat * 2.0 - target.mdf",
"element": "炎",
"target_add_state": [],
"target_add_state_rate": 0,
"special_effect": "",
"icon_index": 64,
"animation": "FireOne2"
}
]
RPGツクールMZ形式に変換
上で作成したgpt_enemies.json,gpt_enemy_skills.jsonをRPGツクールMZで扱える形に変換します。
前提としてRPGツクールMZのアクターやスキルなどのデータは「<RPGツクールプロジェクトフォルダ>/data」にJSON形式で入っています。今回扱うのは、敵キャラの基本情報が入っているEnemies.json、スキル情報が入っているSkills.jsonです。
RPGツクールMZアクター変換ツール
変換ツールを作成しましたので、こちらをお使いください。
gpt_enemies.json、gpt_enemy_skills.jsonで定義した敵キャラとスキルをRPGツクールMZのEnemies.jsonとClasses.jsonに末尾に追加します。
以下の点線エリアに
・上で作成したgpt_enemies.json
・上で作成したgpt_enemy_skills.json
・<RPGツクールプロジェクトフォルダ>/data/Enemies.json
・<RPGツクールプロジェクトフォルダ>/data/Skills.json
をそのままドラッグアンドドロップしてください。
または
変換に成功すると、新しく生成されたEnemies.jsonとSkills.jsonのリンクが表示されます。それぞれダウンロードして、お使いのRPGツクールMZのプロジェクトフォルダのdataフォルダに上書きコピーしてください。
RPGツクールMZのエディターから追加された敵キャラとスキルを確認することができれば変換成功です。
まとめ
敵キャラの基本情報(名前・ステータス・スキル)を自動作成する方法を説明しました。画像系は次に説明します。