← ソースコード説明書

Switch 準備状況(ビルド不可)

作成日: 2026-06-10 / 更新日: 2026-06-10

本書はビルド手順ではない。Nintendo Switch のネイティブビルドは公開していない(Nintendo の開発者契約 + NDA 配下の SDK / devkit が必要なため、ツールチェーンもヘッダも公開リポジトリには含まれない)。本書は**抽象境界の整備状況(何が準備済みで何が残っているか)**だけを記す。共通設計は ビルドガイド共通 を参照。

位置づけ

Switch はノベルゲーム路線の primary target だが、移植は抽象境界の裏に閉じる方針(Godot と同型)。OSS 公開部には Switch 固有の SDK / コードは含めず、コンソール移植は承認された開発環境での別サービスとして扱う。したがって本書に cmake / build コマンドは存在しない。

準備済み(リポジトリに実在するもの)

項目実体状態
スクリプト VMpackages/ksc-vm-cpp(KscVM)プラットフォーム非依存。CMake コメント上「Switch port にも同じ subdirectory include で載る」前提で設計済み
課金抽象src/platform/billing_switch.cppSwitchBilling : IBillingPhase 1 は no-op-DKAEDEVN_BILLING_BACKEND=switchKAEDEVN_BILLING_SWITCH=1)指定時のみ採用
課金モデルplatform()Platform::Switch"switch")を返すSwitch は eShop / AOC(Add-On Content)モデル。consumable は存在しない → KSC は if (platform() !== "switch") で consumable UI をガードする
IPCIpcMainLoopBridge#elif defined(__SWITCH__))/ CMakeSwitch retail では HTTP IPC を強制 OFFKAEDEVN_ENABLE_IPC=OFF 相当の no-op)
プラットフォーム抽象IInput / IAudio / IStoragepackages/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 スタブまで)。

関連

Ad: stickyBottom (728x90)
kaedevn - ノベルゲームを作れるプラットフォーム