Kagari
キーワードを入力してドキュメントを検索します。

付録

ランタイムプロファイル

ランタイムプロファイルは、ランタイムが提供するもの、つまり実装している std アイテムと、デコードできるアセットの種類・ファイル形式を表す名前です。プロジェクトは動作させたいプロファイルを kagari.toml に列挙し、kagari build はプログラムが使うすべてのアセットをそれぞれのプロファイルに照らして検査します。

toml
[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対応

アセットの種類と形式

形式は拡張子ではなく、ファイルの内容から判定します。

アセット型対応する形式対応しない形式
ImageAssetPNG、ベースラインおよびプログレッシブ JPEG、非可逆・可逆・拡張(アルファまたはメタデータ付き)WebP算術・可逆・階層・12 ビット符号化の JPEG、アニメーション WebP、GIF、BMP、AVIF、JPEG XL
AudioAsset、VoiceAssetOgg Vorbis、FLAC、WAV(PCM)、WAV(IEEE 浮動小数点)、MP3Ogg Opus、Ogg FLAC、その他の Ogg コーデック、圧縮 WAV、AAC/M4A
FontAssetTrueType、OpenType(CFF)、TrueType/OpenType コレクション(.ttc)WOFF、WOFF2
VideoAsset—すべての形式:動画アセットには対応していません
ColorShader、MixShader、TextureShader、MaskShader、LocalMotionShader、TransitionalMotionShaderそのロールとして検証を通る WGSL ソース(UTF-8 テキスト)テキストでないデータ、誤りのある WGSL

対応していないアイテムを使った場合

対応していないアセットはビルドを失敗させます。 プログラムが使うアセットのうち、列挙されたプロファイルがデコードできないものごとに、kagari build はエラーを 1 行出力し、何も出力ファイルを書きません。

text
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 ファイル内にあればその行を示します。

text
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日