Clone
6
Package format
あかニャン edited this page 2025-04-23 22:53:04 +00:00

Package format

Overview

Standard package

├───app
│   └───BepInEx
│       └───*
├───option
│   └───Axyz
│       └───*
├───icon.png
├───README.md
├───manifest.json
└───(additional nonfunctional files, such as CHANGELOG.md)

More file overrides may be supported in the future. You can help.

Arbitrary scripts are not supported by design and that will probably never change. Notably, packages with post_load.ps1 will always be marked as unsupported.

segatools package

├───segatools
│   └───(mu3hook|chusanhook|mu3io|chuniio|aimeio).dll
├───icon.png
├───README.md
└───manifest.json

With a manifest.json looking like:

{
    "name": "mu3hook",
    "version_number": "0.0.20241225",
    "website_url": "https://gitea.tendokyu.moe/TeamTofuShop/segatools",
    "description": "Loader for O.N.G.E.K.I.",
    "dependencies": [],
    "installers": [{ "identifier": "segatools", "module": "mu3hook" }]
}

Valid modules are: mu3hook, chusanhook, mu3io, chuniio, amnet, aimeio. amnet implies aimeio and an aimeio.dll. module can be an array, implying multiple DLLs:

{
    ...
    "installers": [{ "identifier": "segatools", "module": [ "aimeio", "chuniio" ] }]
}

Native mod

├───foo.dll
├───bar.dll
├───icon.png
├───README.md
└───manifest.json

With a manifest.json pointing at the filename like:

{
    "name": "SomeNativeMod",
    "version_number": "1.0.0",
    "website_url": "https://example.com",
    "description": "Loads a DLL",
    "dependencies": [],
    "installers": [
        {
            "identifier": "native_mod",
            "dll-game": "foo.dll",
            "dll-amdaemon": "bar.dll",
            "dll-game32": "baz32.dll",
            "dll-game64": "baz64.dll"
        }
    ]
}

These packages are supposed to be hooked into the game, and into amdaemon. All DLL fields are optional, therefore it's fine to only provide a DLL for the game, or only for amdaemon. game32 and game64 can be used by packages that target both CHUNITHM (32-bit) and O.N.G.E.K.I. (64-bit).

Local packages

In %LOCALAPPDATA%/STARTLINER/data/pkg, create a local-PackageName directory, and create a manifest.json with an additional games entry:

{
    "name": "PackageName",
    "version_number": "1.0.0",
    "website_url": "",
    "description": "Example custom aimeio",
    "dependencies": [],
    "installers": [{ "identifier": "segatools", "module": "aimeio" }],
    "games": ["ongeki", "chunithm"]
}

name must match the name of the directory after the hyphen.

You can optionally add an icon.png (256x256).