『Factorio』にて、Modを使わずにゲーム内で“音楽”を奏でられるようにしたユーザーがあらわれ、話題となっている。本来、決まった効果音しか鳴らせないスピーカーを大量に組み合わせ、一つの曲を再現できるようにしたという。曲を読み込んで自動で建設計画(ブループリント)を出力するサイトも公開されており、自由に利用可能だ。
『Factorio』はWube Softwareが手がける工場自動化シミュレーションゲームだ。入手した資源をもとに技術開発をおこない、資源の収集や運搬、製品の生産などを自動化。巨大な産業プラントを構築していく。2024年10月には大型拡張DLC「Space Age」が登場し、2026年10月には「最後の大型アップデート」が配信された。

そんな『Factorio』には、プログラマブルスピーカーというアイテムが存在する。このスピーカーは条件を満たした際に音を鳴らすことが可能な設備だ。通常の用途としては、倉庫の資源残量が一定値を下回った際にアラート音を発するなどの目的で使われる。
スピーカーは鳴らす音の音色と音程を自由に選べることから、無数のスピーカーを組み合わせて、ゲーム内で曲を奏でることも理論上は可能。実際に、著名な曲をゲーム内で演奏したり、またMIDIファイルを読み込むことで楽譜を認識し、その曲を『Factorio』で奏でるブループリントを出力するサイト「Miditorio」が公開されたりと、スピーカーを活用した音楽活動もおこなわれてきた。
しかしこうした音楽は、あくまでゲーム内の音源で原曲を再現したものであり、文字通りの意味で原曲を再生しているわけではなかった。そうしたなかで、「『Factorio』に“mp3プレーヤー”を実装した」と報告したのは、RedditユーザーのNablanaut氏だ。同氏は11月8日、Redditにて動画を公開。Modは使わずにゲーム内の音源のみでDarude氏の「Sandstorm」を再現したという演奏を披露した。実際に聞いてみると多少のノイズはあるが、確かに原曲がほぼ完璧にそのまま再現されている。動画の曲の再生には2499個のプログラマブルスピーカーを使用しているとのこと。
そしてNablanaut氏は、ユーザーが手持ちの音楽ファイルを『Factorio』向けのブループリントに変換できるWebページ「FactoTune」を公開した。このツールはブラウザ内で動作し、『Factorio』にそのままペーストできる建設計画のコードが出力される。またコードだけでなく、『Factorio』内で聞いたときに音声がどうなるか視聴することも可能だ。実際に『Factorio』内に建設する際にModは必要ないが、本体バージョンは2.1で、DLC「Space Age」を導入している必要がある。
Nablanaut氏によると、このプロジェクトにはおよそ3年間取り組んできており、『Factorio』2.1のアップデートを受けて調整を加えつつもようやく完成させることができたという。また同氏は技術的な詳細について、YouTubeに動画をアップし、詳しく解説している。
曲を再現する方法については、プログラマブルスピーカーで鳴らせる効果音の音色と音量を調整し、無数の音を同時に鳴らして音を合成。原曲の音の波形を数学的に再現し、演奏しているとのこと。しかしこの技術の実現までには多くの困難があったそうだ。まず効果音は一瞬で鳴り終わってしまうため、そのままでは曲全体を演奏できる長さにならない。そのため曲の波形を分析する際には、曲をできる限り小さなブロックに分割。フレーム単位で鳴らす音を指示することで、一曲を演奏できるようにしている。
しかしこの技術を用いても、開発初期はノイズだらけで聞くに堪えなかったそうだ。というのもデフォルトの『Factorio』には同時に鳴らせる音の数に制限があり、192個のサウンドまでしか一度に鳴らすことができない。しかし192個の音の組み合わせ程度では、元の音の波形を再現するには至らず。結果としてノイズだらけの音声に聞こえるのだという。
Image Credit: Nablanaut on YouTube
ところが、実は『Factorio』には隠された機能があり、Ctrl+Altを押しながら設定ボタンをクリックすることで、拡張された設定画面にアクセスできる。そしてその拡張設定画面では、一度に鳴らせる音の数の最大値を変更できるのだ。Nablanaut氏は、開発を始めてしばらくしてからこの機能に気がついたそうだ。そして設定を65535まで拡大したことで、利用できるスピーカーの数が大幅に上昇。ノイズを大きく減らすことができたという。
また利用できるスピーカーの数が増えたのは、嬉しい副作用も生んだ。プログラマブルスピーカーの音量設定は0から100まで1刻みで設定できるが、100段階というのは音の合成には大雑把すぎる単位だった。これもノイズを生む原因になっていた。しかしスピーカーは同じ音を同時に鳴らすと、音量が合体して倍になる性質があった。一度に鳴らせる音の数の制限が緩和されたことで、事実上の最大音量も大幅に上げることができ、細かな音の合成に役立つことにもなった。
こうして高い精度で原曲の音の波形を再現できるようになったが、無際限にスピーカーを増やし、それら全てを単純に制御するのでは、『Factorio』内で実装する際にブループリントが大きくなりすぎてしまう。そこで最後にNablanaut氏はコードの圧縮に取り組んだとのこと。情報理論技術のrANS(range variant of Asymmetric Numeral Systems)を使い、スピーカーの演奏情報の管理方法を見直すことで、最終的な出力音量はそのまま、ブループリントの文字列を3分の1以下まで減らすことができたそうだ。

ところで、『Factorio』と言えば、多彩で活発なModコミュニティの存在も特徴だ。しかし本機能はあえて“Modなし”での挑戦だったことも興味深い。Nablanaut氏は「『Factorio』の最適化技術は素晴らしい」と語っており、2000個以上のスピーカーをフレーム単位で制御して問題なく動かせるのは、ゲーム本体の設計が優れているからだとした。Nablanaut氏の技術もさることながら、これを実現できる『Factorio』の自由度も印象深いとして、SNSで注目が集まったかたちだ。“音楽ファイルのブループリント化”および試聴は「FactoTune」にておこなうことができるため、興味のある方は試してみるとよいだろう。
『Factorio』は、PC(Steam/GOG.com/公式サイト)/Nintendo Switch向けに配信中だ。
