rpynx v0.1.0pre-release

Reference

manifest.json

The file the importer writes next to each game, and the fields the loader reads from it.

Source docs/IMPORTER.md
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

FieldTypeMeaning
format, versionstring, intAlways renpy-switch-loader/manifest and 1
idstringThe folder name, also used for saves and logs
titlestringconfig.name, or the folder or archive name
sourceobjecttype (directory or archive) and name, the source folder or archive name. Used by Compare with folder…
renpy_versionstringDetected Ren’Py version
pythonstring"3" or "2"
runtimestring or nullThe runtime that starts it, e.g. renpy-8.5.3; null when none can
statusstringexperimental or unsupported; never verified from the importer
reasonslistWhy a game is unsupported
warningslistEverything the report warned about
filesobjectFile count, total bytes, and counts of .rpa, .rpy, .rpyc, .rpym
mediaobjectAudio and video files by extension
recompilebooltrue for a --recompile export
decompiledlist.rpy files that --decompile rebuilt, relative to game/
suggested_optionsobjectImporter options that would fix something found (optimize, recompile, decompile), each with why. Empty once the option is on
performance.issueslistSwitch performance findings
performance.convertedobjectVideos --optimize re-encoded, with their codec
performance.coverageobjectLoose and archived media checked, and locked archives
sha256objectSHA-256 of every .rpa and .rpyc, relative to game/
cover, backdropstringPictures, relative to the game’s folder; absent without one
cover_custom, backdrop_custombooltrue 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.3 falls back to runtimes/renpy-runtime.nro.
  • It refuses unsupported games, 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.

↑↓ move↵ openesc close