DEV Community

Cover image for Brain cells meant to protect us may be fueling cognitive decline
Ashish
Ashish

Posted on

Brain cells meant to protect us may be fueling cognitive decline

VR × 両眼視トレーニング:AmblyoPunchのステージ制御と設定設計をどう組んだか

きっかけになった今日のニュース

ScienceDailyに「これまで有益とされてきた脳細胞が、機能不全になると過剰なミエリンを産生し、神経線維を乱して認知機能の低下に関与する可能性がある」という研究が載っていました。

分野は違いますが、この研究が前提にしているのは「神経系は入力と使い方に応じて振る舞いを変える」という考え方です。私たちがAmblyoPunchで扱っている両眼視トレーニングも、まさにこの前提の上にあります。入力の与え方——片目に何を、どの強度で、どのタイミングで見せるか——をどう設計するかで、体験の質が決まる。エンジニアリングとしては、これは「提示制御」と「進行制御」と「設定露出」の三層に分けて考えるのが素直でした。

何を作ったか

AmblyoPunchは、Meta Quest向けのVRビジョントレーニングゲームです。コアループは極めてシンプルです。

  • ガボールパターン(縞模様)のコインをパンチして得点
  • 赤いトゲをよける(ハート3、全損でリスタート)
  • ワールド進行:村 → 街 → 宇宙 → 月 → 火星 → 金星。対象は高速化・小型化、トゲは拡大

面白いのは、この「ゲームループ」と「トレーニングプロトコル」を分離したことです。ゲームとしては「コインを叩いて避ける」だけで成立させ、その裏で動く提示制御を差し替え可能にしました。こうしておくと、プロトコルを変えてもゲームの手触りが壊れません。

設計上の判断

1. 提示制御はモードで抽象化する

自動モードでは4段階のダイコプティック提示を順に実行します。

  1. 単眼ウォームアップ(対象を弱視眼にのみ提示)
  2. 抑制の解除(利き目を強く減光)
  3. リバランス(クリアさを段階的に復元)
  4. 融合トレーニング(パナム融像域内のわずかな不一致を提示し、単一の3D知覚に統合させる)

実装としては「左右の目に何を、どの強度で出すか」を宣言的に記述し、ゲームロジックから切り離すのが正解でした。ゲーム側は「対象がどこにあって、当たったかどうか」だけを知ればいい。提示側は「今どのステージで、左右に何を出すか」だけを知っていればいい。この境界を引いてから、両者の変更が互いを壊さなくなりました。

// 概念的な擬似コード
const stage = stages[currentStage];   // 提示仕様
const frame = stage.render(eye);      // eye: 'left' | 'right'
if (rollingWindow(10).accuracy >= stage.gate) {
  advanceStage();
}
Enter fullscreen mode Exit fullscreen mode

ポイントは、提示仕様がデータ(宣言)であって、命令の列ではないことです。ステージを足すとき、ゲーム側のコードには触りません。

2. 進行はパフォーマンスゲートにする

時間ベースではなく、成績ベースです。直近10回の結果で概ね70%以上を要求し、斜視プロファイルでは最終融合の前に80%以上を要求します。これにより、できていないのに先へ進む状態を構造的に防げます。

時間ベースにしなかった理由は単純で、「10分経ったから次へ」は進度の保証にならないからです。ローリングウィンドウで直近の正答率を見れば、その人の“今”を反映できます。窓幅を10にしたのは、短すぎると1回のミスで揺れ、長すぎると上達が反映されるまで遅れる、というトレードオフの帰結です。

function rollingWindow(n) { /* 直近n件の正誤を返す */ }
Enter fullscreen mode Exit fullscreen mode

ゲートは固定値ではなくプロファイルで上書きできるようにしました。同じプロトコルでも、症状によって要求水準は変わるべきだからです。

3. 設定は「間違えると逆効果になる」項目を最優先で露出する

  • 弱視眼の左右(誤ると効果が逆転するため、最初に確認させる)
  • 重症度:軽度/中等度/重度(対象サイズ、速度、ステージ長)
  • 斜視タイプ:内斜視/外斜視(ステージ4の視差・輻輳シフト)

自動モードを既定推奨とし、専門家向けに単眼/両眼提示と融合を手動制御できるカスタムモードを用意しています。

設定UIの設計原則は「逆効果になりうる項目を先頭に置く」でした。弱視眼の左右を間違えると、狙いと逆の目を訓練してしまう。だからこれはオンボーディングの最初に確認させます。逆に、あとから変えても影響が小さい項目は奥に置く。露出の順番そのものが安全性の一部、という感覚です。

実際に触ってみて分かったこと

抽象化のコストは、最初の設計でほぼ払い切れました。ステージを増やすとき、ゲーム側は無傷です。パフォーマンスゲートは、テストプレイで「進みすぎ」を防いでくれました。手応えとしては、地味ですが効いています。派手な機能より、境界の引き方が効くタイプのプロダクトです。

注意

これは医療機器ではなく、治療でも治癒でもありません。臨床判断は眼科専門家の領域です。あくまで「続けられる練習の入り口」としてのゲームです。今回触れた研究は速報段階の知見であり、本作の効果を示すものではありません。

▶ https://www.meta.com/en-gb/experiences/amblyopunch/1239507485902689/

Top comments (0)