← ソースコード説明書
Switch 準備状況(ビルド不可)
作成日: 2026-06-10 / 更新日: 2026-06-10
本書はビルド手順ではない。Nintendo Switch のネイティブビルドは公開していない(Nintendo の開発者契約 + NDA 配下の SDK / devkit が必要なため、ツールチェーンもヘッダも公開リポジトリには含まれない)。本書は**抽象境界の整備状況(何が準備済みで何が残っているか)**だけを記す。共通設計は ビルドガイド共通 を参照。
位置づけ
Switch はノベルゲーム路線の primary target だが、移植は抽象境界の裏に閉じる方針(Godot と同型)。OSS 公開部には Switch 固有の SDK / コードは含めず、コンソール移植は承認された開発環境での別サービスとして扱う。したがって本書に cmake / build コマンドは存在しない。
準備済み(リポジトリに実在するもの)
| 項目 | 実体 | 状態 |
|---|---|---|
| スクリプト VM | packages/ksc-vm-cpp(KscVM) | プラットフォーム非依存。CMake コメント上「Switch port にも同じ subdirectory include で載る」前提で設計済み |
| 課金抽象 | src/platform/billing_switch.cpp(SwitchBilling : IBilling) | Phase 1 は no-op。-DKAEDEVN_BILLING_BACKEND=switch(KAEDEVN_BILLING_SWITCH=1)指定時のみ採用 |
| 課金モデル | platform() が Platform::Switch("switch")を返す | Switch は eShop / AOC(Add-On Content)モデル。consumable は存在しない → KSC は if (platform() !== "switch") で consumable UI をガードする |
| IPC | IpcMainLoopBridge(#elif defined(__SWITCH__))/ CMake | Switch retail では HTTP IPC を強制 OFF(KAEDEVN_ENABLE_IPC=OFF 相当の no-op) |
| プラットフォーム抽象 | IInput / IAudio / IStorage(packages/core) | 入力・音声・保存は抽象境界経由。移植時の書き換えを境界の裏に閉じる設計 |
残作業(Phase 5 TODO ほか)
billing_switch.cpp のコメントに記載のとおり、課金は Phase 5 で devkit 統合後に実装する:
purchase()… eShop のアイテムページを起動(nn::oe/nn::aocsrv系 API。実装は devkit 環境でのみ)isEntitled(id)… アカウントの AOC リストを参照restore()… AOC リストから自動導出(明示操作不要)- レンダリング / ウィンドウ / 入力 … デスクトップ・モバイルは SDL2 +
GLRenderer。Switch 版の GL / 入力経路は devkit 側で別途配線が必要(公開部には含めない) - セーブ …
IStorageの Switch 実装(mount / アカウント連携)
ビルドできない理由(明記)
Nintendo SDK は NDA 配下で、公開リポジトリにツールチェーン・ヘッダ・実装を含めない。よって本書に configure / build 手順は無い。実ビルドは承認された開発環境で、コンソール移植サービスとして対応する。エンジン側は上記の抽象境界(IBilling / IInput / IAudio / IStorage + KscVM)により、Switch 固有実装を差し込むだけで動く状態を目指している(現状は no-op スタブまで)。
関連
- 23-build-guide-common.md — ビルド共通(他プラットフォーム)
- 21-ksc-billing-api.md — 課金 API(
platform()ゲートの書き方) - 13-pkg-native-engine.md — C++ ネイティブエンジン
- 22-ksc-pipeline-overview.md — KscVM 実行パイプライン
Ad: stickyBottom (728x90)