Orrery

2026-

Windows向けビジュアルノベルとMacの距離を縮める、互換・管理基盤の開発プロジェクト。

背景

多くのビジュアルノベルはWindows向けで、Macではそのまま扱えない。描画、動画、音声、起動手順はタイトルごとに異なり、同じengine名でも必要な互換経路を決められない。Orreryは実行ファイルと実行時の挙動から、どの層を扱うべきかを切り分ける。

全体像

役割分担

OrreryはKASANEとSwingbyを組み合わせて構成する。KASANE(カサネ)はWindows向けノベルゲームをMacで遊ぶためのランチャーで、インストール、起動、prefix管理、ライブラリUIなどのmacOS側を担う。Windowsゲーム互換レイヤーのSwingbyは、Windows API、描画、動画、音声などを担うSwingby Wine(リポジトリ名swingby-wine)と、DXVK経由の描画を担うSwingby DXVK(リポジトリ名swingby-dxvk)から構成される。共有runtimeには汎用修正を優先し、避けられないタイトル差分はprofile、prefix、DLL override、runtime overlayへ隔離する。

公開ソースの範囲

GitHubでは、KASANEのライブラリ画面と、ゲームの実行ファイルから使用エンジンの手がかりを調べる機能を公開しています。これはOrreryの仕組みの一部を閲覧・検証できるようにしたもので、製品版そのものではありません。ゲームを動かす互換レイヤー、インストールやアカウント連携、タイトル固有の設定・修正、配布用アプリは含まれません。

検証の方針

「ビルドできた」だけでは、修正がゲームの実行に使われたとは判断しません。実際に読み込まれたファイルと設定を確認し、対象の場面を実機で再生・操作できたところまでを記録します。解決しなかった問題や確認できていない範囲も残し、次の調査で同じ推測を繰り返さないようにしています。

特徴

  1. 01

    KASANEとSwingbyを組み合わせ、ランチャー開発と低レイヤー互換検証を分断しない

  2. 02

    タイトル固有の差分をprofile、prefix、DLL override、runtime overlayへ隔離し、共有runtimeの回帰面を狭める

  3. 03

    engine名だけで決めず、実バイナリ・実ロードDLL・実行時の経路から互換条件を切り分ける

  4. 04

    実ロードDLL、prefix override、title-local patch、md5 gateで、リビルドによる互換修正の巻き戻りを防ぐ

  5. 05

    解決済みの現象だけでなく、未解決の回帰もCase Notes と次の測定条件に落として保留する

用語

Wine
WindowsをインストールせずにmacOS・Linux上でWindowsアプリを動かすオープンソースの互換レイヤー。Windows APIの呼び出しをPOSIX / macOS APIに変換する。
POSIX
UnixベースのOS(macOS・Linuxなど)が共通して持つAPIの仕様。WineはWindowsのAPI呼び出しをこの仕様に変換することでWindowsアプリをmacOS上で動かす。
Orrery
macOSランチャーのKASANEと、Windowsゲーム互換レイヤーのSwingbyを組み合わせた互換・管理基盤。
KASANE
KASANE(カサネ)は、Windows向けノベルゲームをMacで遊ぶためのランチャー。ユーザーが触るmacOS側として、ゲームの登録、インストール、起動、prefix管理、タイトル別互換設定を担当する。開発中の内部名Melammuは、公開リポジトリ名melammu-vnに残る。
Swingby
OrreryでWindowsゲームを動かす互換レイヤー。Swingby WineとSwingby DXVKから構成される。
Swingby Wine
VN向けに調整しているWine fork。リポジトリ名はswingby-wine。Windows APIや描画・動画・音声まわりの互換修正を含む。
Swingby DXVK
DXVKをOrreryの検証に合わせて調整する派生実装。macOS・Apple Silicon上で確認した描画問題に必要な互換修正を加え、実機で検証する。リポジトリ名はswingby-dxvk。
Boot Camp
AppleがIntel Mac向けに提供していた、MacにWindowsを直接インストールして切り替える機能。Apple Silicon(M1以降)では廃止された。
Apple Silicon
AppleがMac向けに設計したARMベースのチップ(M1/M2/M3/M4系)。従来のIntelチップとはCPU命令セットが異なり、Windowsアプリをそのまま実行できない。
Rosetta 2
Apple SiliconのMacでIntel向けアプリを変換して動かすApple純正の技術。Windowsアプリには対応しない。
DirectX
MicrosoftのWindows向けグラフィックスAPI。多くのゲームがDirectXで描画処理を行うため、Mac上で動かすには変換が必要になる。
DirectDraw
Windowsの古い2D描画API。2000年代前後のゲームやVNで使われることがあり、Wine上ではDirect3DやGDIとは別の描画経路として問題を切り分ける必要がある。
wined3d
Wineに含まれるDirect3D実装。Direct3DやDirectDrawの描画をOpenGLなどのホスト側描画へ変換する経路で、DXVKとは別の層。
DXVK
DirectXのAPI呼び出しをVulkanに変換するオープンソースのライブラリ。Wine上でDirectXゲームを動かす際に使われる。
Vulkan
クロスプラットフォームのグラフィックスAPI。DXVK経由で受け取ったDirectX命令を、MoltenVKを介してMetalへ渡す中継役。
MoltenVK
VulkanのAPI呼び出しをAppleのMetalに変換するライブラリ。macOSでVulkanを動かすために使われる。
Metal
AppleのGPU向けAPI。macOSでは最終的にMetalを通じて描画処理が実行される。
DirectShow
Windowsの古い動画再生フレームワーク。VNのOPやロゴ動画で使われることがあり、Wine上ではquartzやwinegstreamerを経由する。
GStreamer
動画・音声のデコードや変換を担うマルチメディア基盤。Wineではwinegstreamerを通じてDirectShowやMedia Foundationの処理に関わる。
md5 gate
ビルド済みバイナリのmd5を期待値と照合し、修正済みDLLやランタイムがリビルドで巻き戻っていないか確認する仕組み。
runtime overlay
共有Wine全体を差し替えず、特定タイトルだけに必要なDLLセットを別runtimeとして重ねる運用。title-local patchの一種。
GDI
Windowsが古くから持つ標準の描画API。DirectXより古い仕組みで、2000〜2010年代のゲームエンジンに多く使われていた。Wine上ではDirectXとは別の経路で処理される。

Case Notes

まず全体像

起動・検証

描画・保存

動画再生