Glenelg開発メモ/項目追加作業メモ
2015-02-04 (水) 22:55:48
Glenelgの機能についてのメモ。 自分のための覚書でもあり、利用者のための豆知識でもあり、他AI開発者のための参考情報でもあり。
Glenelg のコア機能として挙げられるのは、『学習』と『操作』の2系統。
で、これらを拡張したくなることはしばしばありますが、同時に頻繁でもなく。
やろうとして自分で忘れて苦戦、なんてことがあるので、そのための作業項目メモ。
Glenelgを改造したいなんていう酔狂な人はそんなにいないとは思いますが、そういう参考に。
敵学習項目の追加†
『その敵にアクティブ』『その敵にスキル使用するレベルxx』など。
この例における『その敵に対してxxxする条件』になる部分は、拡張の余地がある。
[+]→続きを読む。
- enemy.lua
- global variable
- 新しい学習項目の管理名作成
- VS_ENEMY_LIMITに、上記の値域 max/min を定義
- function CreateLearnTable()
- 新規学習時の初期値登録
- function ShowLearnInfo()
- それの学習時に Watchに表示する文字列作成
- SaveEnemy()
- 保存用の変換式記載
- DecodeEnemyData()
- 読出し用の変換式記載
- global variable
- command.lua
- 学習操作用のコマンド作成
- 自分ルール:関数名は CMD_xxxx。
- メニュー操作前提で、トグルだったり±1動作だったり。
- コマンド置き換えとの共用を考える場合、引数前半は固定ルールあり。
「対象ID」「攻撃モード」。
- 学習操作用のコマンド作成
- GlenelgWatch
- こっちが割と大改造(笑)
- cEnemy.vb:データテーブルのソース。
- New()、新しい項目の列定義追加
- SetRow()、新しい項目の設定処理追加。
値域チェック・是正処置。
これは結構あちこちから呼ばれているので、呼び出し側もあわせて変更。 - LoadOpt()。ファイル読み込み・テーブルへの設定処理。
- SaveOpt()。テーブルの値是正処置、書き込み処理。
- EnemyEdit.vb。画面処理。
- 列表示幅調整。これが地味に面倒(笑)
- 列タイトル追加。
- 列ヘルプ文章追加。
- 列入力エラーチェック処理追加。
上記までは必須。
以下、Watchでの A+S+R設定に加える場合の手間。
- GlenelgWatch用定義ファイル
- master\cmdlist.lua
- A+S+R設定用の表示文字列
- command.lua に定義したCMD_xxxx と呼び出しパラメータを指定。
- master\cmdlist.lua
スキル置換対象行動の追加†
『カプリスLv1は、通常攻撃に割り当て』の類。
この例における『通常攻撃』に当たる部分は、拡張の余地がある。
[+]→続きを読む。
- command.lua
- 置き換え対象のコマンド作成
- 自分ルール:関数名は CMD_xxxx。
- ID指定可能。それを考慮して。
- 置き換え対象のコマンド作成
- usersetting.lua
- function LoadSetting()
- 置換IDと、それに対応する登録対象行動(対応コマンド)を定型で。
REPLACE_LIST[nn] = {func = CMD_xxxx ,prm=0 } - 上記nnは任意値。
- 置換IDと、それに対応する登録対象行動(対応コマンド)を定型で。
- function LoadSetting()
- GlenelgWatch本体
- SettingWin.vb
- SettingWin_Load()。
置換IDと選択用文字列とをテーブルに登録。 - 例:sk_rep(0, 13) = "101" : sk_rep(1, 13) = "全員友達モード設定/解除"
上記 "101" 部分を、usersetting.lua で定義した置換ID nnに。
"全員友達・・・"部分を、利用者に見せたい名称に。
sk_rep(x, y) のy部分は連番。 - Load()
REPLACE_MODEx を定義するForループの終端値を、上記y に。 - Save()
REPLACE_MODEx を定義するForループの終端値を、上記y に。 - ListBoxA93_MouseDown()。
対応するsk_rep(1, y)のCASE文追加し、ヘルプ文章を記載。
- SettingWin_Load()。
- SettingWin.vb
ここまで必須。
以下、置き換えに特殊なパラメータが必要な場合。
- AI, command.lua
- function OnMSG_CLICK_OBJ_SKL() 内、REPLACE_CMD を処理するforループ内。
- v.mode(上記置換ID)の値によって、パラメータの追加加工
- function OnMSG_CLICK_OBJ_SKL() 内、REPLACE_CMD を処理するforループ内。
ホム個体/共通の動作設定項目の追加†
例えば『アクティブ索敵距離』とか『強化スキルの使用条件』とか。
[+]→続きを読む。
- ai_option.ini / ai_option_xx.ini
- オプション名の定義。
- ai_option.ini は全ホム共通、ai_option_xxはホム種別ごと。
- 自分のためにも、設定項目の趣旨とヘルプテキスト。
- オプション名の定義。
- いろいろ。参照実体。
- こればかりは、場所を特定できない(笑)
- GlenelgWatch本体
- SettingWin の画面。
- それを表示するコントロール配置。
- SettingWin.vb。iniファイル編集はここががんばる。
- Load()
読み込み処理。読みこんで、適切なコントロールに割り当て。 - Save()
書き込み処理。適切なコントロールからデータ取り出し&書き込み。 - xxxx_MouseDown()。
新機能の、ヘルプ文章を記載。
- Load()
- SettingWin の画面。

