mcpField
B
bevy-a11y

bevy-a11y

github.com/chrisgliddonデザイン・UI2659 回インストール9 週間前に更新
リポジトリ

bevy-a11y について

Bevy のゲーム開発者向けに、入力、UI、音声、カメラ、テストのアクセシビリティ設計を扱うスキルです。ゲーム向け指針、WCAG、プラットフォーム要件を参照し、障害のあるプレイヤーによるテストと証拠の記録を重視します。

主な機能

  1. 01入力の再割り当てと複数デバイス対応
  2. 02ポインター不要のUI操作とセマンティクス
  3. 03字幕、音声解説、視覚的な合図
  4. 04動き、点滅、カメラ効果の調整
  5. 05入力、コントラスト、字幕の監査スクリプト
  6. 06障害のあるプレイヤーによるテストと修正記録

活用シーン

  1. 01設計段階でゲームのアクセシビリティ要件を確認
  2. 02カスタム Bevy UI のフォーカスとスクリーンリーダー対応を計画
  3. 03リリース前に入力設定、コントラスト、字幕を確認
  4. 04プラットフォーム審査向けにテスト結果と修正証拠を整理

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/chrisgliddon/bevy-skills --skill bevy-a11y

インストール後、Claude Code で/bevy-a11yを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
captions-audio-communication.md
input-and-adaptive-controllers.md
requirements.md
screen-readers-and-navigation.md
testing-and-evidence.md
tooling.md
visual-cognitive-motion.md
scripts/
audit_input_map.py
check_contrast.py
validate_captions.py
tests/
test_scripts.py
tests/fixtures/
contrast.json
en-US.vtt
fr-FR.vtt
input-map.json

詳細

Bevy 0.19 — ゲームアクセシビリティ

アクセシビリティは、製品全体に関わる要件です。入力、UI、オーディオ、カメラ、ナラティブ、マルチプレイヤー、セーブシステムの設計段階から取り組みましょう。ラベルや字幕だけを後付けしても、アクセシブルでないゲームメカニクスは解決できません。

作業の基準

次の4つの層すべてを活用してください。

  1. ゲーム固有のエンジニアリング基準として、公開されている Xbox Accessibility Guidelinesを使用します。
  2. ゲームのUI/コンテンツに意味のある形で適用できる範囲でAAAを目指し、 WCAG 2.2の達成基準を使用します。
  3. 出荷するすべての対象プラットフォームについて、プラットフォームホルダーの要件と認定ガイダンスを確認します。
  4. 障害のあるプレイヤーが自身の支援技術を使って行うユーザビリティテストを実施します。

WCAG AAAは、ネイティブゲームに一律に適用される認定基準ではなく、自動チェックだけでは適合性を立証できません。対象範囲、例外、デバイス、テストビルド、調査結果、修正の証拠を記録してください。要件を参照してください。

まず出荷する基盤

  • ゲームプレイとUIのすべての操作はデバイスに依存せず、再割り当て可能で、競合をチェックでき、保存可能であり、ポインターなしでメニューから利用できます。
  • 入力は、ホットプラグ、複数デバイスの同時使用、プレイヤー1人あたり複数のコントローラー、未知のコントロール、調整可能なデッドゾーン/感度、デジタルによるアナログ操作の代替をサポートします。
  • 長押し、連打、同時押し、素早いタイミング入力、精密な入力には、切り替え、タイミング調整、またはアシストによる代替手段があります。
  • UIは、予測可能なフォーカス順序、視認できるフォーカス、セマンティックな役割/名前/状態、拡大可能なテキスト/レイアウト、十分なコントラストを備え、色だけで情報を伝えることはありません。
  • ダイアログと意味のあるオーディオには同期した字幕を付けます。意味のある視覚イベントには、ナレーション/音声解説または同等の手がかりを用意します。
  • カメラシェイク、モーションブラー、点滅、自動モーションなど、前庭系や光過敏症に影響する効果には、安全な初期設定または個別の調整機能を用意します。
  • アクセシビリティ設定は最初のゲームプレイ前から利用でき、キー割り当ての変更、言語の変更、接続解除、セーブデータの移行後も使用可能な状態を保ちます。

Bevy UIのセマンティクスとフォーカス

DefaultPluginsにはInputFocusPluginが含まれています。ナビゲーションプラグインは明示的に追加し、アクセシブルな名前はインタラクティブなコントロールと同じエンティティに設定してください。

use bevy::{
    input_focus::{
        directional_navigation::DirectionalNavigationPlugin,
        tab_navigation::TabNavigationPlugin,
    },
    prelude::*,
    ui::auto_directional_navigation::AutoDirectionalNavigation,
};

fn main() {
    App::new()
        .add_plugins((
            DefaultPlugins,
            TabNavigationPlugin,
            DirectionalNavigationPlugin,
        ))
        .add_systems(Startup, setup)
        .run();
}

fn setup(mut commands: Commands) {
    commands.spawn(Camera2d);
    commands.spawn((
        Button,
        AccessibleLabel::new("Start game"),
        AutoDirectionalNavigation::default(),
        children![Text::new("Start game")],
    ));
}

フォーカス、ホバー、ポインターキャプチャ、スクリーンリーダーのフォーカスは、関連していますが同じものではありません。キーボード、D-pad/スティック、スイッチ式スキャン、タッチ、ポインター、実際のスクリーンリーダーを使ってテストしてください。カスタムウィジェットにはAccessKitノードを使用し、静的なラベルだけでなく、変化する値/状態も公開してください。スクリーンリーダーとナビゲーションを参照してください。

アダプティブコントローラーとアクセシビリティコントローラー

アダプティブコントローラーは通常、標準的なゲームパッド/HIDマッピングを通じて認識されます。ブランド、ベンダーID、特定のデバイス名を機能の利用条件にしないでください。すべてのGamepadエンティティを、能力とバインディングとして扱います。

use bevy::prelude::*;

fn read_gamepads(gamepads: Query<(Entity, &Gamepad)>) {
    for (entity, gamepad) in &gamepads {
        let move_axis = gamepad.left_stick();
        let activate = gamepad.just_pressed(GamepadButton::South);
        let extra = gamepad.just_pressed(GamepadButton::Other(0));
        let _sample = (entity, move_axis, activate, extra);
    }
}

default-features = falseの場合、ネイティブの検出にはgamepadだけでなく、Bevyのbevy_gilrs機能が必要です。leafwing-input-manager 0.21は互換性のある任意のアクションレイヤーですが、アクセシブルな設定、UI、永続化、メカニクスの代替手段を用意するものではありません。入力とアダプティブコントローラーを参照してください。

アクセス上のニーズ別要件

領域必須の実装
視覚障害・弱視セマンティックな UI、ポインターを使わない完全な操作、読み上げ/音声解説、文字サイズ調整、明確なフォーカス表示と高いコントラスト、色以外による手がかり
聴覚障害・難聴話者と意味のある効果音を含むクローズドキャプション、視覚/触覚による代替手段、個別のミックス制御
運動障害完全な入力再割り当て、複数デバイスの同時使用、長押し/連打/複合入力を必須にしないこと、タイミング/照準/移動の補助、可能な場合は一時停止可能にすること
認知・学習一貫したナビゲーション、平易な言葉、目標の履歴、チュートリアル、調整可能なペース/難易度、気が散りにくいモード
発話・コミュニケーション音声のみの操作を必須にしないこと、利用しやすいテキストチャット、コミュニケーションが中心となる場合は音声テキスト変換/テキスト音声変換
光過敏・前庭障害光の点滅への安全対策、モーション低減、揺れ/FOV/ぼかしの制御、重要な視差効果/自動モーションを使用しないこと

視覚、認知、モーションと キャプション、音声、コミュニケーションをお読みください。

実装ゲート

  • 入力を確定する前に、アクションマニフェストに対して scripts/audit_input_map.py を実行してください。
  • すべてのテーマ/状態の組み合わせに対して scripts/check_contrast.py を実行してください。画像/動画の背景は個別にサンプリングしてください。
  • ソースとローカライズ済みの VTT/SRT ファイルに対して scripts/validate_captions.py を実行してください。
  • テストとエビデンスの手動テスト項目を実施してください。
  • 製品版ビルドとサポート対象の入力/プラットフォームの組み合わせを検証するまでは、アクセシビリティ機能のタグを掲載しないでください。

スクリプトの形式と CI の例はツールをご覧ください。

関連項目

  • bevy-input-actions — 論理アクション、再割り当て、デバイスのホットプラグ、Steam Deck、アダプティブコントローラーの統合。
  • bevy-audio — キャプションと効果音の境界、カテゴリ別ミックス、空間音響の制限、ブラウザーでの音声開始。
  • bevy-ui — レイアウト、テキスト、インタラクション、フォーカスの API。
  • bevy-cargo-features — コントローラーと UI のバックエンド。
  • bevy-fluent — ローカライズされたテキストとキャプション。
  • bevy-cameras — 揺れ、FOV、ビューポートの制御。
  • bevy-physics — 物理演算を基盤とした、利用しやすいキャラクターの移動、照準、タイミングの仕組み。
  • bevy-testing — 再現性のあるチェックとキャプチャエビデンス。
  • bevy-core-concepts — スケジュールのアーキテクチャ。

コメント