自作ゲームをプレイするときだけヘッドフォンからブーンという音がする原因を究明

ゲーム開発者が、自作のクォータービューゲームを遊んでいるときだけヘッドホンがブーンと鳴る奇妙な現象に遭遇。その原因を突き止めたという話を共有しています。
Why are my headphones buzzing whenever I run my game? | Alexandru Ene blog
https://alexene.dev/2025/12/03/Why-do-my-headphones-buzz-when-i-run-my-game.html

Amazonでエンジニアとして働き、Gnomoria、RimWorld、Dwarf Fortressなどに着想を得たクォータービューゲームを開発しているというアレクサンドル・エネ氏は、自作中のクォータービューゲームをプレイしているときだけヘッドホンから音が鳴るという現象に悩まされていました。
エネ氏のPC環境は「CPUはそこそこ高性能、グラフィックカードはRTX 3090、メモリは32GB、オーディオ機器はMODI 2 DAC経由のUSB接続」で、特別高性能ではないものの、平均的なスペックは十分あるレベル。また、フォートナイトやオーバーウォッチといったなど他のゲームでは鳴らず、クォータービューゲームだけ鳴るというのが特徴だったそうです。
エネ氏は当初、電源関連のトラブルかと疑いました。電源ユニットが古くなっていたか、何らかの問題を抱えているのではと考えたそうです。しかし、これだとオーバーウォッチのようなゲームよりもずっと負荷の少ないゲームでなぜ問題が発生するのか説明がつきませんでした。
エネ氏が気づいたのは、「何もレンダリングしていない状態ではブーンという音は鳴らない」という点でした。これによりCPU処理が原因である可能性は排除されました。

原因はGPUと自作ゲームとの相性にありました。エネ氏はゲーム制作にRustプログラミング言語とRust専用のグラフィックAPI「WGPU-RS」を使用していました。このツールでエネ氏が採用した処理が、レンダリングパイプラインで画面に表示されるバッファとピッキングテクスチャを出力するものでした。
ピッキングテクスチャはゲーム内のピッキング処理に使用されるものです。画面上のどこかをクリックしたとき、このテクスチャを使ってクリック対象を特定します。色ではなく、各オブジェクトインスタンスがピッキングテクスチャに自身のEntityIDを書き込みます。その後、マウスをクリックした際に、マウス位置下のピクセルにどのIDが書き込まれているかを確認します。フレーム終了時に、このピッキングテクスチャをGPUメモリからRAMへコピーし、クリック発生時にマウスの位置と照合します。
エネ氏レンダリングパイプラインの処理を1つ1つ無効化して確かめたところ、ピッキングテクスチャ転送を無効化したタイミングでブーンという音が完全に消えたことが判明。転送頻度を250msごとにするとノイズがほぼ消失し、頻度を増やすと音が増大しました。

エネ氏が他のグラフィックエンジニアと議論を重ねる中で、「GPUに大量の処理を集中させた後、ピッキングテクスチャ転送を待つためにGPUを一時停止し、次のフレームで再び100%稼働させる動作が原因かもしれない」という仮説が浮上。つまり、一時的にGPUが電力を大量消費するため、同じ電源につないでいるオーディオ機器に不具合が生じるのではないかと考えられたのです。実際に、PC以外の別の電源からオーディオ機器に電力を供給したところ、ブーンという音は消えたそうです。
エネ氏は、フレームごとにテクスチャ全体を転送する処理をやめ、マウス位置下の必要な部分のみを転送するという変更を実装し、ノイズを完全に消すことに成功しました。
ソーシャルサイトのHacker Newsでは、「特に負荷の高いゲームを開いているときにスピーカーからブーンという音が鳴っていたが、PCと同じ電源から電力を供給するのをやめたら直った」という声や、「多くのゲーム開発者がFPS上限値を設けないなど問題をほったらかしにしている」という声などが寄せられました。
・関連記事
BOSEの顧客に対する誠実さがわかる「ノイズキャンセリング機能」の不具合報告に対する行動とは? - GIGAZINE
「オフィスがうるさくて作業に集中できない問題」をヘッドフォンなしで解決するためのデベロッパー的解決策 - GIGAZINE
インディーゲーム開発者が最初のゲームを1か月で60万本以上販売できた理由とは? - GIGAZINE
・関連コンテンツ
in メモ, ゲーム, Posted by log1p_kr
You can read the machine translated English article Investigating the cause of a buzzing sou….







