Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 13 additions & 0 deletions bun.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

30 changes: 30 additions & 0 deletions plugins/rpg-maker/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# @game-ci/rpg-maker (draft)

RPG Maker (MV/MZ) engine plugin. **Not functional yet** - structural skeleton
only. Not wired into core's default load list; loadable via
`--plugin @game-ci/rpg-maker` once it's real.

## Why RPG Maker

Large, passionate, completely unserved niche today - no official build CLI
exists (export is a manual Editor step), and the community currently
hand-rolls fragile packaging scripts around NW.js. Real automation pain,
genuinely underserved.

## What's real vs. TODO

- Plugin registration shape: real, follows the same pattern as
`godot-plugin.ts`.
- Project detection: stubbed, returns `false` unconditionally.
- Build command: throws immediately, pointing here.

## Remaining work before this is real

1. Verify MV vs MZ project detection (data/System.json plus MV's `www/` or
MZ's `js/` folder) against real project exports from both versions.
2. Work out the actual NW.js packaging steps per target platform - this is
the fiddliest part, since there's no official CLI to shell out to; the
plugin likely needs to assemble the NW.js runtime + game data itself.
3. Decide how platform-specific packaging (Windows/Mac/Linux NW.js
binaries) maps onto `targetPlatform`.
4. Tests once the above is real.
32 changes: 32 additions & 0 deletions plugins/rpg-maker/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
{
"name": "@game-ci/rpg-maker",
"version": "0.0.1",
"description": "RPG Maker engine plugin (draft). Wraps RPG Maker MV/MZ's NW.js export packaging.",
"license": "MIT",
"repository": "git@github.com:game-ci/cli.git",
"files": [
"dist"
],
"main": "dist/index.js",
"types": "dist/index.d.ts",
"exports": {
".": {
"bun": "./src/index.ts",
"types": "./dist/index.d.ts",
"default": "./dist/index.js"
}
},
"scripts": {
"build": "tsc",
"test": "vitest run",
"typecheck": "tsc --noEmit"
},
"devDependencies": {
"@types/node": "^17.0.23",
"typescript": "4.7.4",
"vitest": "^4"
},
"engines": {
"node": ">=18.x"
}
}
51 changes: 51 additions & 0 deletions plugins/rpg-maker/src/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
/**
* RPG Maker (MV/MZ) engine plugin - DRAFT.
*
* Plan: detect an RPG Maker project via its data folder structure
* (data/System.json plus a www/ or js/ folder, depending on MV vs MZ),
* and build by packaging the project through NW.js per-platform, since
* RPG Maker has no official build CLI of its own - export is normally a
* manual Editor step. This is the fiddliest of the new engine plugins and
* needs real verification against the actual NW.js packaging structure
* before it's functional.
*/

function isRpgMakerProject(_projectPath: string): boolean {
// TODO: check for data/System.json plus MV's www/ or MZ's js/ folder.
return false;
}

export const rpgMakerPlugin = {
name: "rpg-maker",
version: "0.0.1",

engineDetectors: [
{
name: "rpg-maker",
detect(projectPath: string) {
if (isRpgMakerProject(projectPath)) {
// TODO: distinguish MV vs MZ, and read the actual RPG Maker version.
return { engine: "rpg-maker", engineVersion: "unknown" };
}
return null;
},
},
],

commands: [
{
engine: "rpg-maker",
createCommand(command: string, _subCommands: string[]) {
if (command === "build") {
throw new Error(
"RPG Maker build support is not implemented yet (draft plugin). " +
"See plugins/rpg-maker/README.md for the planned NW.js packaging approach.",
);
}
return null;
},
},
],
};

export default rpgMakerPlugin;
19 changes: 19 additions & 0 deletions plugins/rpg-maker/tsconfig.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
{
"compilerOptions": {
"target": "es2022",
"lib": ["es2022"],
"module": "commonjs",
"moduleResolution": "node",
"declaration": true,
"outDir": "./dist",
"rootDir": "./src",
"strict": true,
"noImplicitAny": false,
"esModuleInterop": true,
"skipLibCheck": true,
"resolveJsonModule": true,
"types": ["node"]
},
"include": ["src/**/*"],
"exclude": ["node_modules", "**/*.test.ts", "dist"]
}