ランタイムプロファイルは、ランタイムが提供するもの、つまり実装している std アイテムと、デコードできるアセットの種類・ファイル形式を表す名前です。プロジェクトは動作させたいプロファイルを kagari.toml に列挙し、kagari build はプログラムが使うすべてのアセットをそれぞれのプロファイルに照らして検査します。
[build]runtime-compatibility = ["native_v0"]runtime-compatibility の既定値は ["native_v0"] です。リストは空であってはならず、未知の名前はマニフェストのエラーです。プロジェクト を参照してください。
プロファイル
| プロファイル | ランタイム |
|---|---|
native_v0 | デスクトップランタイム(kagari-desktop-runtime)、バージョン 0 |
現在のプロファイルは native_v0 だけです。
native_v0 の対応表
モジュール別
| モジュール | native_v0 での対応 |
|---|---|
std(型、トレイト、asset、system_font) | 対応。ただし VideoAsset のファイルは使えません(後述) |
std::time | 対応 |
std::narrative | 対応:Say、無効なアームを含む Choice、rng_choose、Meta、Narrative のすべてのメソッド。時間付き入力は予定で、どのプロファイルにもありません |
std::narrative::text | 対応:ルビとモノルビ、すべてのテキスト効果(スタイル、圏点、表示速度、ポーズ、マーク)、hanging_indent と vertical を含む TextStyle のすべてのフィールド |
std::screen | 対応。ただしムービーレイヤー(Entity::movie、MovieLayer)は、動画アセットが必要なため使えません |
std::screen::shader、std::shaders | 対応。すべてのシェーダーは kagari build で検証されます。ストレージバッファを持たない GPU(モーションのロールではコンピュートを持たない GPU)では、ランタイムは効果をかけずに内容を描きます |
std::screen::anim | 対応 |
std::screen::audio | 対応 |
std::stage | 対応 |
std::system、std::system::nav、std::system::saves | 対応 |
std::ui、std::ui::style | 対応 |
アセットの種類と形式
形式は拡張子ではなく、ファイルの内容から判定します。
| アセット型 | 対応する形式 | 対応しない形式 |
|---|---|---|
ImageAsset | PNG、ベースラインおよびプログレッシブ JPEG、非可逆・可逆・拡張(アルファまたはメタデータ付き)WebP | 算術・可逆・階層・12 ビット符号化の JPEG、アニメーション WebP、GIF、BMP、AVIF、JPEG XL |
AudioAsset、VoiceAsset | Ogg Vorbis、FLAC、WAV(PCM)、WAV(IEEE 浮動小数点)、MP3 | Ogg Opus、Ogg FLAC、その他の Ogg コーデック、圧縮 WAV、AAC/M4A |
FontAsset | TrueType、OpenType(CFF)、TrueType/OpenType コレクション(.ttc) | WOFF、WOFF2 |
VideoAsset | — | すべての形式:動画アセットには対応していません |
ColorShader、MixShader、TextureShader、MaskShader、LocalMotionShader、TransitionalMotionShader | そのロールとして検証を通る WGSL ソース(UTF-8 テキスト) | テキストでないデータ、誤りのある WGSL |
対応していないアイテムを使った場合
対応していないアセットはビルドを失敗させます。 プログラムが使うアセットのうち、列挙されたプロファイルがデコードできないものごとに、kagari build はエラーを 1 行出力し、何も出力ファイルを書きません。
error: asset `movie/intro.webm` (video): video assets are not supported by runtime profile `native_v0`error: asset `music/theme.ogg` (audio): Ogg Opus is not supported by runtime profile `native_v0`error: asset `bgimage/bad.jxl` (image): JPEG XL is not supported by runtime profile `native_v0`したがって、native_v0 を対象とするゲームは VideoAsset の定数をどこにも使えません。その他のアセットは対応する形式に変換してください。動画アセットを受け取るアイテムについては次のとおりです。
| アイテム | kagari build 時 | native_v0 の実行時 |
|---|---|---|
MovieLayer::change(…)(Movie は VideoAsset を保持します) | 拒否(動画アセット) | — |
system::watched(VIDEO) | 拒否(動画アセット) | — |
Entity::movie()、MovieLayer::clear(…) | 受理 | 論理画面(セーブ、等価性、一貫性)には保持されますが、描画はされません。描くものがないためです |
デスクトップランタイムのレンダラーは動画を再生しません。そのため native_v0 ではムービーレイヤーがピクセルを生むことはなく、watched の集合が埋まることもありません。
不正なシェーダーはビルドを失敗させます。 kagari build はプログラムが使うすべてのシェーダーを、std::shaders のものも含め、その型が示すロールとしてコンパイルし、不正なシェーダーとロールの組ごとにエラーを 1 行出力します。誤りが .wgsl ファイル内にあればその行を示します。
error: shader `shader/broken.wgsl` (color): line 4: no definition in scope for identifier: `undefined_name`native_v0 は唯一のプロファイルで、runtime-compatibility は空にできないため、すべての kagari build は native_v0 に照らして検査します。現在、プロジェクトがこの検査を外すことはできません。
存在しない std アイテムは起動時に失敗します。 より新しい std でビルドした .kagari ファイルは、インストールされたランタイムが提供しないビルトインを呼ぶことがあります。その場合ランタイムは「the bytecode imports …, which this runtime does not provide」としてゲームの起動を拒否します。ランタイムが知らないエンジン機能を必要とする .kagari ファイルも同様に拒否されます。出荷するランタイムに合ったツールチェーンでゲームをビルドしてください。
最終更新日 2026年10月29日