Developer Publishing
From working mod to Workshop release. (Oxide equivalent: “Plugin Guidelines” release half + “Server lifecycle”.)
1. Pre-release checklist
Section titled “1. Pre-release checklist”- Unique mod ID;
mod.json(id / name / version / entry / min_framework_version) or[GregMod]+[GregDependsOn]filled. - Developer Best Practices §6 diagnostics green (doctor, patcher log, contracts, version, tests, Codacy local).
- Save round-trip tested: save → load → remove mod → vanilla still loads.
- Co-op scope documented (SP-only vs co-op-tested, identical-set requirement).
- README documents: install, settings, events emitted (
<modId>.*), hotkeys, troubleshooting. -
CHANGELOG.md(Unreleased) entry; Conventional Commits on the branch (feat/…,fix/…,docs/…off currentmain); docs (README.md+docs/) synced.
2. Versioning
Section titled “2. Versioning”- Framework truth:
VERSIONfile (BuildInfostamps-dev.0). Mods: SemVer in manifest/attribute; gate withmin_framework_version/GregDependsOn. - Never reuse shop/item IDs or GUIDs across versions (see Developer Shop Items); never rename a shipped custom event — add a new one (Developer Events Hooks Guide).
3. Packaging
Section titled “3. Packaging”- Lua: zip the mod folder (
mod.json+main.lua+ modules +data/defaults, no absolute paths). Players extract toUserData/gregCore/Mods/Lua/<modId>/. - C#: ship the DLL (+ declared deps); soft-dep on
gregCore.dllunless you consciously went hard-dep (seedocs/modding/hard-dependency.md). - Custom items: meshes/textures/icons as files in the mod folder or pack folder (
GregCustomItemsmesh pre-check, traversal guard). - Mod packs: optional
Mods/manifest.json(Name+Mods/Library/Pluginspaths relative toMods/) for curated sets; entries are validated andLibraryfolders feed dependency probing. Never list anything under.deactivated. - Repo scripts:
scripts/Package-SdkAssets.ps1,Create-SDK-Packs.ps1,Publish-LocalRelease.ps1,Deploy-Release-ToDataCenter.ps1(local test) andDeploy-Release-ToWorkshop.ps1/Copy-WorkshopUploaderToGame.ps1/Update-ReleaseMetadata.ps1+steamdesc.mdfor Workshop copy.
4. Release flow (framework convention, recommended for mods)
Section titled “4. Release flow (framework convention, recommended for mods)”dev → pre-release → main; GitHub Releases carry the downloads (dev builds are never presented as stable). Workshop releases join the GregCore Collection on Steam so players can subscribe instead of handling files. Mirror/CI (.forgejo = source, GitHub = passive mirror via gregMirror.Sync.sh) and branch protection (docs/maintainers/branch-protection.md) apply to gregCore itself — mirror the discipline: small reviewable PRs, screenshots/logs for UI/behavior changes, security reports via SECURITY.md (never public issues).
5. Post-release
Section titled “5. Post-release”- Watch loader logs for
[DynamicPatcher]failures after each game update, then follow Developer Harmony IL2CPP “After a game update” (re-copy interop, regenerateGameApi+ hooks, validate, vanilla-first test). - Keep
min_framework_versionaccurate when you adopt new APIs; announce dependency changes in the changelog.