Reference
manifest.json
The file the importer writes next to each game, and the fields the loader reads from it.
On this page
Path: switch/renpy-loader/games/<id>/manifest.json. Format version 1.
Example
json
{
"format": "renpy-switch-loader/manifest", "version": 1,
"id": "the-question", "title": "The Question",
"source": {"type": "directory", "name": "the_question"},
"renpy_version": "8.5.3.26051504", "python": "3",
"runtime": "renpy-8.5.3", "status": "experimental",
"reasons": [], "warnings": ["..."],
"files": {"count": 172, "total_bytes": 10637851, "rpa": 0, "rpy": 52, "rpyc": 52, "rpym": 1},
"media": {".opus": 1},
"recompile": false, "decompiled": [],
"suggested_options": {"optimize": "1 videos above 30 fps (gui/splash.webm): re-encoding them …"},
"performance": {"issues": ["..."], "converted": {"gui/splash.webm": "vp9"},
"coverage": {"loose_media": 3190, "archived_media": 0, "locked_archives": []}},
"sha256": {"script.rpyc": "…"},
"cover": "cover.jpg", "backdrop": "backdrop.jpg"
}Fields
| Field | Type | Meaning |
|---|---|---|
format, version | string, int | Always renpy-switch-loader/manifest and 1 |
id | string | The folder name, also used for saves and logs |
title | string | config.name, or the folder or archive name |
source | object | type (directory or archive) and name, the source folder or archive name. Used by Compare with folder… |
renpy_version | string | Detected Ren’Py version |
python | string | "3" or "2" |
runtime | string or null | The runtime that starts it, e.g. renpy-8.5.3; null when none can |
status | string | experimental or unsupported; never verified from the importer |
reasons | list | Why a game is unsupported |
warnings | list | Everything the report warned about |
files | object | File count, total bytes, and counts of .rpa, .rpy, .rpyc, .rpym |
media | object | Audio and video files by extension |
recompile | bool | true for a --recompile export |
decompiled | list | .rpy files that --decompile rebuilt, relative to game/ |
suggested_options | object | Importer options that would fix something found (optimize, recompile, decompile), each with why. Empty once the option is on |
performance.issues | list | Switch performance findings |
performance.converted | object | Videos --optimize re-encoded, with their codec |
performance.coverage | object | Loose and archived media checked, and locked archives |
sha256 | object | SHA-256 of every .rpa and .rpyc, relative to game/ |
cover, backdrop | string | Pictures, relative to the game’s folder; absent without one |
cover_custom, backdrop_custom | bool | true for a picture the user chose; --replace keeps it |
What the loader reads
status, runtime, renpy_version, recompile, reasons[0], title, cover, backdrop and performance.issues.
- Launch starts
runtimes/<runtime>.nro;renpy-8.5.3falls back toruntimes/renpy-runtime.nro. - It refuses
unsupportedgames, and games whose runtime is missing, with the reason. - A game without a manifest uses the default runtime.
Change picture on the Switch rewrites the manifest with cJSON: tabs, and the picture keys moved to the end. The rest stays as it was.