AIを使ってoUFフレームワークを利用したWorld of Warcraftのユニットフレームアドオンを作ってみました。
Visual Studio Code にGemini Code Assist拡張を組み込みました。実装を確かめながら機能を追加できます。Geminiは混雑時にレスポンスが悪くなる場合がありますが、無料であるにも関わらずコンパクトで間違いの無いコードを生成するような気がします。追加機能を提案してくれるので了承するだけで機能が追加されていきます。

2026-01-18

  • oUF 13.0.0 リリース
    エラーが発生するのでoUF 12.1.0を埋め込み型にしました。

スクリーンショット

  • 左からPlayer、Pet、Targetフレーム

  • 左からFocus, Player, Pet, Target, Target-targetフレーム、右下はRaidフレーム

  • Partyフレーム

  • 設定画面
    スラッシュコマンド(/mylayout config)で開きます。

  • 設定画面 (Profile)
    いろいろなアドオンで見かけるインタフェースです。

使い方

インストール

  1. 前提アドオンをインストール

    前提のアドオンを有効にしておきます。

  2. oUF_MyLayoutアドオンのZipをダウンロード
    https://github.com/ktkr3d/oUF_MyLayout/archive/refs/heads/main.zip

  3. Zipを解凍して以下のフォルダに格納

    C:\Program Files (x86)\World of Warcraft\_retail_\Interface\AddOns\oUF_MyLayout\

設定変更

  1. ゲーム内で設定画面を表示
    • スラッシュコマンドの場合
      /mylayout config
    • メニューの場合
      Esc > Options > Addons > oUF_MyLayout

設定のリセット

  1. ゲーム内でリセットを実行
    • スラッシュコマンドの場合
      /mylayout reset
    • 設定画面の場合
      Profiles > Reset Profile

アンインストール

  • 本体
    C:\Program Files (x86)\World of Warcraft\_retail_\Interface\AddOns\oUF_MyLayout\
  • セーブデータ
    C:\Program Files (x86)\World of Warcraft\_retail_\WTF\Account\アカウント名\SavedVariables\oUF_MyLayout.lua
    C:\Program Files (x86)\World of Warcraft\_retail_\WTF\Account\アカウント名\SavedVariables\oUF_MyLayout.lua.bak
  • 前提アドオン(不要な場合のみ)
    C:\Program Files (x86)\World of Warcraft\_retail_\Interface\AddOns\Ace3\
    C:\Program Files (x86)\World of Warcraft\_retail_\Interface\AddOns\LibSharedMedia-3.0\
    C:\Program Files (x86)\World of Warcraft\_retail_\Interface\AddOns\oUF\

開発環境

開発環境

  • Visual Studio Code
    • Gemini Code Assist
    • Activitus Bar

開発環境の構築

VS CodeにGemini Code Assistを導入

  1. VS CodeにGemini Code Assistを導入
  2. Activitus Barを利用している場合は以下の設定で「Gemini Code Assist」アイコンを登録
    settings.json
    {
    "activitusbar.views": [
    {
    "name": "command.workbench.view.extension.geminiChat",
    "codicon": "chat-sparkle",
    "tooltip": "Gemini Code Assist"
    }
    ]
    }

    vscodeで利用できるcodiconは以下で検索できます。
    https://microsoft.github.io/vscode-codicons/dist/codicon.html

WoWに前提アドオンをインストール

WoWにデバッグ用アドオンをインストール

oUF_MyLayoutリポジトリの取得

  • Gitクローンで取得する場合
    git clone https://github.com/ktkr3d/oUF_MyLayout.git
    oUF_MyLayout/
    ├── media/
    │   ├── fonts/
    │   │ └── Prototype.ttf
    │   └── textures/
    │       ├── Gradient.tga
    │      └── Minimalist.tga
    ├── Config.lua
    ├── Options.lua
    ├── oUF_MyLayout.lua
    ├── oUF_MyLayout.toc
    └── README.md

WoWにoUF_MyLayoutアドオンを登録

  • Power Shellで配置/更新する場合
    Power Shell
    Copy-Item -Path "oUF_MyLayout" -Destination "C:\Program Files (x86)\World of Warcraft\_retail_\Interface\AddOns\" -Recurse -Force

マクロ登録

  • アドオン全体をリロードするマクロ
    /reload gui
  • 設定画面を表示するマクロ(スラッシュコマンド)
    /mylayout config
  • 設定をリセットするマクロ(スラッシュコマンド)
    /mylayout reset

    設定画面のProfileからReset Profileでもリセット可能です。

テスト

動画撮影

  • Windowの機能(Super+Alt+R)で録画
    保存先
    キャプチャフォルダ
    録画バーは邪魔にならない位置に配置しておきます。
  • nVidiaアプリの機能(Alt+F9)で録画
    保存先
    C:\Users\ユーザ名\Videos\NVIDIA\World Of Warcraft\
    録画中を示すアイコンは右下にあります。

Health Barのテスト

  • WarlockのBurning Rush

Partyユニットフレーム

  • Follower Dungeon
    PartyフレームのキャストバーはWarlockのBurning Rush後のヒールスペルで確認できる。

Raid/Boss/MainTankユニットフレーム

  • LFR

座標確認

  • Edit Modeの補助線

漢字(UTF8 3バイト)名表示

  • TWサーバ

TODO

ユニットフレーム

  • ユニットフレームの追加

    • player, pet, target, target-target, focus,
      party, party-target,
      raid, boss, maintank, maintank-target,

    • arena,
    • 未(不要かも)
      pet-target, focus-target,
      party-pets,
      maintank-target-target, boss-target,
  • Raidフレームスタイル
    • 25(8グループまで表示させることは可): 済
    • 40(8グループ専用スタイル): 未
  • クラス関連
    • Class Power (コンボポイント等):済
    • Runes (デスナイトのルーン):済
    • Additional Power (Druid Mana):済
  • アイコン: 済
    • Marker
    • Leader
    • Assist
    • Resting
    • Combat
    • Role

調整

  • 名前テキスト
    • クラスカラー: 済
    • レベル: 済
    • 短縮表示(動的に自動切り詰め):済
      Config.luaで各ユニットフレームの基準値を変更可能
  • ヘルステキスト
    • HPパーセント表示: 済
    • HP数値表示(human readable): 済
    • 非表示: 済
    • HP 0%/100% で非表示オプション: 済
  • 状態表示(AFK/Dead/Ghost/Offline): 済
  • 3Dポートレイト: 済
  • Cast bar: 済
  • Buff, DeBuff: 済
  • 設定変更時の再描画の最適化(非表示のユニットを描画しない): 未
  • Blizzard標準のEdit Modeとの連動: 途中
  • 位置指定はペアレントアンカーを使う: 途中
  • ヘルスバーカラー
    • Gradient: 済
    • Class Color: 未
    • Indipendent Color: 未
  • InRange情報をスタイルに反映: 済
  • raidフレーム
    • soloでも表示: 済
    • partyの他メンバを表示: 済
    • partyの自分を表示: 未
  • パフォーマンスチューニング
    • raid時にportraitを無効にするオプション: 済
    • タグの更新頻度制限: 未

コードの見直し

所感

  • コードの精度が高い。世界中のアドオン開発者のナレッジやコードを吸収しているのだろう。
  • 不具合があってもBugSackで収集したエラーメッセージやスタックトレースを伝えると的確に修正する。
  • 機能を追加後に2つの新機能を提案してくれる。承諾するだけで機能がどんどん追加される。正しく機能している旨を伝えると、機能追加の修正の承諾を能動的に求めてくるようになる。
  • 大規模なリファクタリングは失敗する場合がある。コードを少し戻してから適用すればよいのだが、構造の修正は早めに済ませた方が良さそう。
  • Geminiからの想定外の提案の数々
    • 設定をリセットするスラッシュコマンドの追加
    • Ace3ライブラリを利用した設定画面の実装。スラッシュコマンド「/mylayout config」の実装。README.mdにそのまま転載できそうな使い方の提示。
    • 設定を変更した際、Reloadなしで即時に更新するライブアップデート機能
    • リソースパスのハードコードをコンフィグファイルでの指定に変更
    • プロファイル管理画面
  • 不要なコードは削除しておいた方がよい。古いコメントも削除した方がよい。
  • 該当するファイルをContext itemsとして選択した状態でプロンプトを作成するとよい。
  • 何度も修正案を考えさせるよりも自分で修正した方がコード量も少なくて早い場合がある。