AI実装 一覧

DQ6 AI処理の解析2

多少間があいてしまいましたが、徐々に通常モードに復帰します。今回はまだリハビリ中ということで軽めに。

  • SR: $025BA3 AI行動決定
025BA3LDX $2555X=$2555
025BA6STX $258B$258B=X
025BA9JSL $C2C197SR: $02C197行動主体がAI行動決定の必要があるか(ないc=on)
025BADBCS #$5Bif(c==on) goto $025C0A
025BAFPEA #$2515Push #$2515
025BB2PEA #$0080Push #$0080
025BB5PEA #$7E00Push #$7E00まねまね発動中
025BB8JSL $C92965SR: $092965
025BBCBNE #$4Cif(z==off) goto $025C0A
025BBEPEA #$2516Push #$2516
025BC1PEA #$0001Push #$0001
025BC4PEA #$7E00Push #$7E00腕輪発動中
025BC7JSL $C92965SR: $092965
025BCBBNE #$3Dif(z==off) goto $025C0A
025BCDJSL $C2590FSR: $02590FAI対象外戦闘行動か(該当c=on)
025BD1BCS #$A3if(c==on) goto $025B76
025BD3JSL $C2EFA7SR: $02EFA7 引数:1#$204F 引数:2#$01FF
025BDBAND #$00FFA&=#$00FF
025BDECMP #$0001A==#$0001?主人公ならAI対象外
025BE1BEQ #$27if(z==on) goto $025C0A
025BE3JSL $C43488SR: $043488 引数:1#$FF作戦取得
025BE8CMP #$0005A==#$0005?めいれいさせろならスキップ
025BEBBEQ #$1Dif(z==on) goto $025C0A
025BEDJSL $C2EFA7SR: $02EFA7 引数:1#$2054 引数:2#$000F
025BF5CMP #$0000A==#$0000?受け身中ならスキップ
025BF8BNE #$10if(z==off) goto $025C0A
025BFAJSL $C2CF63SR: $02CF63AI行動決定コア
025BFELDA $258DA=$258D
025C01STA $255F$255F=A
025C04LDA $2591A=$2591
025C07STA $2557$2557=A
025C0ARTSreturn

続きを読む


DQ6 AI処理の解析1

AI処理の流れが大体わかったのでエントリとして投下していくことにします。一般的に知られていることですが、AIを設定している場合、何を行動するかは「ターン内で自分の順番が回ってきた時点」で判断されます。いわゆる後出しジャンケンというやつでその時点で瀕死のキャラクターがいれば回復行動を選択します。モンスターの思考レベルで言う「神」に相当します。ずいぶんずるい感じもしますが、ターン開始時に行動を決定しようとするとより多くのメモリ領域を必要とするため(例えば回復行動は誰がやるのが一番効率的か、複数のキャラクターにまたがった試算を行って最適な行動を選択する必要があったり、敵の行動の先読みも必要になったりするかも)、やむを得ないといったところでしょう。「自分の行動直前に何を行動するかを判断できる」ということはこれから取る行動を誰かに妨害されることを想定する必要がなく、その時点で最適な行動を選択すればいいということで実装としてはかなり楽になります。

続きを読む


スポンサーリンク
1 2 3