Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ドラクエ3(HD-2D)の戦闘システム をモデリングしてみよう

Avatar for しゅういちろ しゅういちろ
October 16, 2025
38

ドラクエ3(HD-2D)の戦闘システム をモデリングしてみよう

Avatar for しゅういちろ

しゅういちろ

October 16, 2025
Tweet

Transcript

  1. 自己紹介 しゅういちろ 2004.4 2024.7 中堅SIerに入社 SESで顧客先で常駐しつつ、実装から要件定義、 PMOなど を経験する。大障害の中の青い銀行の中の人だったこともあ ります。 パッケージソフトのSaaS化プロジェクトにて開発組織の立ち

    上げ、スケールを実践し、自分の可能性を感じて転職を決意 ビットキーへjoin 2025.10 全てのエンジニアが幸せに、開発に集中できるようにするこ と(技術広報/採用/組織開発/EM育成) shucho0103 ・データベーススペシャリスト
  2. ドラクエ3(HD-2D)の仕様(戦闘編) ※想像です 1. 戦闘の仕様(ver 1.00) a. 概要 i. 戦闘は味方パーティvs敵対パーティで行われる ii.

    基本は多対多で行われ、ターン制で戦闘は行われる iii. ターンの最初にコマンドを入力し、全てのコマンドを入力し終わった後に戦闘参加者がコマンドに応じた行動を行う b. 戦闘参加者 i. 戦闘参加者は敵味方どちらかに所属するユニットで行われる c. 行動順序 i. 行動順序は各ユニットの素早さにランダムで(0.8〜1.2)の数字をかけて、高い順に行動を行う d. ダメージ計算 i. ダメージ計算は行動を行うアクションユニットのステータス、被アクションユニットのステータスに応じて計算を行う 1. 物理攻撃の場合の計算式 a. ((アクションユニットの攻撃力+装備アイテムの攻撃力) - 被アクションユニットの防御力) × ランダムな数字(13〜25) b. 会心の一撃の場合は被アクションユニットの防御力は0として計算する 2. 魔法攻撃の場合の計算式 a. (アクションユニットの魔力 - 被アクションユニットの属性ごとの魔法耐性) × ランダムな数字(38〜72) i. 魔法耐性は魔法の属性ごとに使用する耐性が異なる e. HPの減少 i. 各ユニットの行動後、被アクションユニットはダメージ計算で算出されたダメージを現在のHPからマイナスをする。HPの最小値は0とする。 f. 死亡判定 i. 各ユニットの行動後にHPが0となったユニットは戦闘不能となり、このターンの全ての行動がキャンセルされ、次ターンのコマンド入力は受け付けない
  3. モデリングしてみよう 1. 戦闘の仕様(ver 1.00) a. 概要 i. 戦闘は味方パーティ vs敵対パーティで行われる ii.

    基本は多対多で行われ、ターン制で戦闘は行われる iii. ターンの最初にコマンドを入力し、全ての コマンドを入力し終わった後に戦闘参加者 がコマンドに応じた行動を行う b. 戦闘参加者 i. 戦闘参加者は敵味方どちらかに所属するユニットで行われる c. 行動順序 i. 行動順序は各ユニットの素早さにランダムで( 0.8〜1.2)の数字をかけて、高い順に行 動を行う d. ダメージ計算 i. ダメージ計算は行動を行うアクションユニットのステータス、被アクションユニットのス テータスに応じて計算を行う 1. 物理攻撃の場合の計算式 a. ((アクションユニットの攻撃力+装備アイテムの攻撃力) - 被アクションユニッ トの防御力) × ランダムな数字(13〜25) b. 会心の一撃の場合は被アクションユニットの防御力は 0として計算する 2. 魔法攻撃の場合の計算式 a. (アクションユニットの魔力 - 被アクションユニットの属性ごとの魔法耐性) × ラ ンダムな数字(38〜72) i. 魔法耐性は魔法の属性ごとに使用する耐性が異なる e. HPの減少 i. 各ユニットの行動後、被アクションユニットはダメージ計算で算出されたダメージを現在 のHPからマイナスをする。 HPの最小値は0とする。 f. 死亡判定 i. 各ユニットの行動後に HPが0となったユニットは戦闘不能となり、このターンの全ての 行動がキャンセルされ、次ターンのコマンド入力は受け付けない 戦闘エンジン -入力コマンド[] +コマンド入力 +ターン開始 -行動順序決定 -ダメージ計算 -HP増減 -死亡判定
  4. モデリングしてみよう 1. 戦闘の仕様(ver 1.00) a. 概要 i. 戦闘は味方パーティ vs敵対パーティで行われる ii.

    基本は多対多で行われ、ターン制で戦闘は行われる iii. ターンの最初にコマンドを入力し、全てのコマンドを入力し終わった後に戦闘参加者が コマンドに応じた行動を行う b. 戦闘参加者 i. 戦闘参加者は敵味方どちらかに所属するユニットで行われる c. 行動順序 i. 行動順序は各ユニットの素早さにランダムで( 0.8〜1.2)の数字をかけて、高い順に行 動を行う d. ダメージ計算 i. ダメージ計算は行動を行うアクションユニットのステータス、被アクションユニットのス テータスに応じて計算を行う 1. 物理攻撃の場合の計算式 a. ((アクションユニットの攻撃力+装備アイテムの攻撃力) - 被アクションユ ニットの防御力) × ランダムな数字(13〜25) b. 会心の一撃の場合は被アクションユニットの防御力は 0として計算する 2. 魔法攻撃の場合の計算式 a. (アクションユニットの魔力 - 被アクションユニットの属性ごとの 魔法耐性) × ランダムな数字(38〜72) i. 魔法耐性は魔法の属性ごとに使用する耐性が異なる e. HPの減少 i. 各ユニットの行動後、被アクションユニットはダメージ計算で算出されたダメージを現在 のHPからマイナスをする。 HPの最小値は0とする。 f. 死亡判定 i. 各ユニットの行動後に HPが0となったユニットは戦闘不能となり、このターンの全ての 行動がキャンセルされ、次ターンのコマンド入力は受け付けない 戦闘エンジン -入力コマンド[] : コマンド +コマンド入力(コマンド) +ターン開始 -行動順序決定 -ダメージ計算 -HP増減 -死亡判定 コマンド -行動 -ユニット攻撃力 -装備品攻撃力 -魔力 -防御力 -魔法耐性[]
  5. モデリングしてみよう 1. 戦闘の仕様(ver 1.00) a. 概要 i. 戦闘は味方パーティ vs敵対パーティで行われる ii.

    基本は多対多で行われ、ターン制で戦闘は行われる iii. ターンの最初にコマンドを入力し、全てのコマンドを入力し終わった後に戦闘参加者が コマンドに応じた行動を行う b. 戦闘参加者 i. 戦闘参加者は敵味方どちらかに所属するユニットで行われる c. 行動順序 i. 行動順序は各ユニットの素早さにランダムで( 0.8〜1.2)の数字をかけて、高い順に行 動を行う d. ダメージ計算 i. ダメージ計算は行動を行うアクションユニットのステータス、被アクションユニットのス テータスに応じて計算を行う 1. 物理攻撃の場合の計算式 a. ((アクションユニットの攻撃力+装備アイテムの攻撃力) - 被アクションユニッ トの防御力) × ランダムな数字(13〜25) b. 会心の一撃の場合は被アクションユニットの防御力は 0として計算する 2. 魔法攻撃の場合の計算式 a. (アクションユニットの魔力 - 被アクションユニットの属性ごとの魔法耐性) × ラ ンダムな数字(38〜72) i. 魔法耐性は魔法の属性ごとに使用する耐性が異なる e. HPの減少 i. 各ユニットの行動後、被アクションユニットはダメージ計算で算出されたダメージを現在 のHPからマイナスをする。 HPの最小値は0とする。 f. 死亡判定 i. 各ユニットの行動後に HPが0となったユニットは戦闘不能となり、このターンの全ての 行動がキャンセルされ、次ターンのコマンド入力は受け付けない 戦闘エンジン -入力コマンド[] : {コマンド, ユニット} -戦闘参加ユニット []:ユニット +コマンド入力(コマンド,ターゲットユニット ) +ターン開始 -行動順序決定 -ダメージ計算 -HP増減 -死亡判定 コマンド -行動 -ユニット攻撃力 -装備品攻撃力 -魔力 -防御力 -魔法耐性[] ユニット -HP -攻撃力 -装備品攻撃力 -魔力 -防御力 -魔法耐性[] +HP減少
  6. ドラクエ3(HD-2D)の仕様(戦闘編) ※想像です 1. 戦闘の仕様(ver 2.00) a. 概要 i. 戦闘は味方パーティ vs敵対パーティで行われる

    ii. 基本は多対多で行われ、ターン制で戦闘は行われる iii. ターンの最初にコマンドを入力し、全てのコマンドを入力し終わった後に戦闘参加者がコマンドに応じた行動を行う b. 戦闘参加者 i. 戦闘参加者は敵味方どちらかに所属するユニットで行われる c. 行動順序 i. 行動順序は各ユニットの素早さにランダムで( 0.8〜1.2)の数字をかけて、高い順に行動を行う d. ダメージ計算 i. ダメージ計算は行動を行うアクションユニットのステータス、被アクションユニットのステータスに応じて計算を行う 1. 物理攻撃の場合の計算式 a. ((アクションユニットの攻撃力+装備アイテムの攻撃力) - 被アクションユニットの防御力) × ランダムな数字( 13〜25) b. 会心の一撃の場合は被アクションユニットの防御力は 0として計算する 2. 魔法攻撃の場合の計算式 a. (アクションユニットの魔力 - 被アクションユニットの属性ごとの魔法耐性) × ランダムな数字( 38〜72) i. 魔法耐性は魔法の属性ごとに使用する耐性が異なる 3. ユニット属性 a. 各ユニットには種族の属性があり、ユニットのコマンドには種族特攻が付与されるものがある 4. 全体攻撃 a. 武器や魔法によってはパーティを対象とするものがある。その場合は対象となる各ユニット毎にそれぞれダメージ計算を行い、 HPの減少をさせる e. HPの減少 i. 各ユニットの行動後、被アクションユニットはダメージ計算で算出されたダメージを現在の HPからマイナスをする。 HPの最小値は0とする。 f. 死亡判定 i. 各ユニットの行動後に HPが0となったユニットは戦闘不能となり、このターンの全ての行動がキャンセルされ、次ターンのコマンド入力は受け付けない
  7. モデリングしてみよう 1. 戦闘の仕様(ver 2.00) a. 概要 i. 戦闘は味方パーティvs敵対パーティで行われる ii. 基本は多対多で行われ、ターン制で戦闘は行われる

    iii. ターンの最初にコマンドを入力し、全てのコマンドを入力し終わった後に戦闘参加者がコマンド に応じた行動を行う b. 戦闘参加者 i. 戦闘参加者は敵味方どちらかに所属するユニットで行われる c. 行動順序 i. 行動順序は各ユニットの素早さにランダムで( 0.8〜1.2)の数字をかけて、高い順に行動を行う d. ダメージ計算 i. ダメージ計算は行動を行うアクションユニットのステータス、被アクションユニットのステータスに 応じて計算を行う 1. 物理攻撃の場合の計算式 a. ((アクションユニットの攻撃力+装備アイテムの攻撃力) - 被アクションユニットの防御 力) × ランダムな数字(13〜25) b. 会心の一撃の場合は被アクションユニットの防御力は 0として計算する 2. 魔法攻撃の場合の計算式 a. (アクションユニットの魔力 - 被アクションユニットの属性ごとの魔法耐性) × ランダムな 数字(38〜72) i. 魔法耐性は魔法の属性ごとに使用する耐性が異なる 3. ユニット属性 a. 各ユニットには種族の属性があり、ユニットのコマンドには種族特攻が付与されるものが ある 4. 全体攻撃 a. 武器や魔法によってはパーティを対象とするものがある。その場合は対象となる各ユニッ ト毎にそれぞれダメージ計算を行い、 HPの減少をさせる e. HPの減少 i. 各ユニットの行動後、被アクションユニットはダメージ計算で算出されたダメージを現在の HPか らマイナスをする。HPの最小値は0とする。 f. 死亡判定 i. 各ユニットの行動後にHPが0となったユニットは戦闘不能となり、このターンの全ての行動が キャンセルされ、次ターンのコマンド入力は受け付けない 戦闘エンジン -入力コマンド[] : {コマンド, ユニット} -戦闘参加ユニット[]:ユニット +コマンド入力(コマンド,ターゲットユニット) +ターン開始 -行動順序決定 -ダメージ計算 -HP増減 -死亡判定 コマンド -行動 -ユニット攻撃力 -装備品攻撃力 -魔力 -防御力 -魔法耐性[] -属性 ユニット -HP -攻撃力 -装備品攻撃力 -魔力 -防御力 -魔法耐性[] -属性 +HP減少
  8. モデリングしてみよう 1. 戦闘の仕様(ver 2.00) a. 概要 i. 戦闘は味方パーティvs敵対パーティで行われる ii. 基本は多対多で行われ、ターン制で戦闘は行われる

    iii. ターンの最初にコマンドを入力し、全てのコマンドを入力し終わった後に戦闘参加者がコマンド に応じた行動を行う b. 戦闘参加者 i. 戦闘参加者は敵味方どちらかに所属するユニットで行われる c. 行動順序 i. 行動順序は各ユニットの素早さにランダムで( 0.8〜1.2)の数字をかけて、高い順に行動を行う d. ダメージ計算 i. ダメージ計算は行動を行うアクションユニットのステータス、被アクションユニットのステータスに 応じて計算を行う 1. 物理攻撃の場合の計算式 a. ((アクションユニットの攻撃力+装備アイテムの攻撃力) - 被アクションユニットの防御 力) × ランダムな数字(13〜25) b. 会心の一撃の場合は被アクションユニットの防御力は 0として計算する 2. 魔法攻撃の場合の計算式 a. (アクションユニットの魔力 - 被アクションユニットの属性ごとの魔法耐性) × ランダムな 数字(38〜72) i. 魔法耐性は魔法の属性ごとに使用する耐性が異なる 3. ユニット属性 a. 各ユニットには種族の属性があり、ユニットのコマンドには種族特攻が付与されるものが ある 4. 全体攻撃 a. 武器や魔法によってはパーティを対象とするものがある 。その場合は対象となる各ユ ニット毎にそれぞれダメージ計算を行い、 HPの減少をさせる e. HPの減少 i. 各ユニットの行動後、被アクションユニットはダメージ計算で算出されたダメージを現在の HPか らマイナスをする。HPの最小値は0とする。 f. 死亡判定 i. 各ユニットの行動後にHPが0となったユニットは戦闘不能となり、このターンの全ての行動が キャンセルされ、次ターンのコマンド入力は受け付けない 戦闘エンジン -入力コマンド[] : {コマンド, ユニット} -戦闘参加ユニット[]:ユニット +コマンド入力(コマンド,ターゲットユニット ) +ターン開始 -行動順序決定 -ダメージ計算 -HP増減 -死亡判定 コマンド -行動 -行動ユニット :ユニット -ターゲットユニット [] :ユニット ユニット -HP -攻撃力 -装備品攻撃力 -魔力 -防御力 -魔法耐性[] -属性 +HP減少