create-debuff 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/official.d.ts +1 -1
- package/dist/official.d.ts.map +1 -1
- package/dist/official.js +6 -0
- package/dist/official.js.map +1 -1
- package/dist/scaffold.d.ts +2 -0
- package/dist/scaffold.d.ts.map +1 -1
- package/dist/scaffold.js +5 -1
- package/dist/scaffold.js.map +1 -1
- package/package.json +10 -3
- package/templates/basic/AGENTS.md +38 -0
- package/templates/basic/CLAUDE.md +1 -0
- package/templates/basic/package.json +6 -6
- package/templates/basic/src/main.ts +6 -4
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { amber, badge, banner, buff, LIME, lime, type Mood, PALETTE, type PaletteColor, paint, pink, sky, violet } from "./brand.js";
|
|
2
2
|
export { type CreateOptions, runCreate } from "./interactive.js";
|
|
3
3
|
export { OFFICIAL_TEMPLATES, type OfficialTemplate } from "./official.js";
|
|
4
|
-
export { create, detectPackageManager, isEmptyDir, isRemoteTemplate, listTemplates, ownVersion, packageName, resolveTemplate, type ScaffoldOptions, scaffold, scaffoldRemote, type TemplateInfo, templatesDir, } from "./scaffold.js";
|
|
4
|
+
export { create, detectPackageManager, isEmptyDir, isRemoteTemplate, listTemplates, ownVersion, packageName, pinnedSource, resolveTemplate, type ScaffoldOptions, scaffold, scaffoldRemote, type TemplateInfo, templatesDir, } from "./scaffold.js";
|
|
5
5
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,IAAI,EAAE,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AACrI,OAAO,EAAE,KAAK,aAAa,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,KAAK,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAC1E,OAAO,EACL,MAAM,EACN,oBAAoB,EACpB,UAAU,EACV,gBAAgB,EAChB,aAAa,EACb,UAAU,EACV,WAAW,EACX,eAAe,EACf,KAAK,eAAe,EACpB,QAAQ,EACR,cAAc,EACd,KAAK,YAAY,EACjB,YAAY,GACb,MAAM,eAAe,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,IAAI,EAAE,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AACrI,OAAO,EAAE,KAAK,aAAa,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,KAAK,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAC1E,OAAO,EACL,MAAM,EACN,oBAAoB,EACpB,UAAU,EACV,gBAAgB,EAChB,aAAa,EACb,UAAU,EACV,WAAW,EACX,YAAY,EACZ,eAAe,EACf,KAAK,eAAe,EACpB,QAAQ,EACR,cAAc,EACd,KAAK,YAAY,EACjB,YAAY,GACb,MAAM,eAAe,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { amber, badge, banner, buff, LIME, lime, PALETTE, paint, pink, sky, violet } from "./brand.js";
|
|
2
2
|
export { runCreate } from "./interactive.js";
|
|
3
3
|
export { OFFICIAL_TEMPLATES } from "./official.js";
|
|
4
|
-
export { create, detectPackageManager, isEmptyDir, isRemoteTemplate, listTemplates, ownVersion, packageName, resolveTemplate, scaffold, scaffoldRemote, templatesDir, } from "./scaffold.js";
|
|
4
|
+
export { create, detectPackageManager, isEmptyDir, isRemoteTemplate, listTemplates, ownVersion, packageName, pinnedSource, resolveTemplate, scaffold, scaffoldRemote, templatesDir, } from "./scaffold.js";
|
|
5
5
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAa,OAAO,EAAqB,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AACrI,OAAO,EAAsB,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAyB,MAAM,eAAe,CAAC;AAC1E,OAAO,EACL,MAAM,EACN,oBAAoB,EACpB,UAAU,EACV,gBAAgB,EAChB,aAAa,EACb,UAAU,EACV,WAAW,EACX,eAAe,EAEf,QAAQ,EACR,cAAc,EAEd,YAAY,GACb,MAAM,eAAe,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAa,OAAO,EAAqB,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AACrI,OAAO,EAAsB,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAyB,MAAM,eAAe,CAAC;AAC1E,OAAO,EACL,MAAM,EACN,oBAAoB,EACpB,UAAU,EACV,gBAAgB,EAChB,aAAa,EACb,UAAU,EACV,WAAW,EACX,YAAY,EACZ,eAAe,EAEf,QAAQ,EACR,cAAc,EAEd,YAAY,GACb,MAAM,eAAe,CAAC"}
|
package/dist/official.d.ts
CHANGED
|
@@ -6,7 +6,7 @@ export interface OfficialTemplate {
|
|
|
6
6
|
id: string;
|
|
7
7
|
title: string;
|
|
8
8
|
description: string;
|
|
9
|
-
/** giget source: where the template lives in the debuff repo. */
|
|
9
|
+
/** giget source: where the template lives in the debuff repo. `create()` pins it to this release's tag. */
|
|
10
10
|
source: string;
|
|
11
11
|
}
|
|
12
12
|
export declare const OFFICIAL_TEMPLATES: readonly OfficialTemplate[];
|
package/dist/official.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"official.d.ts","sourceRoot":"","sources":["../src/official.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,
|
|
1
|
+
{"version":3,"file":"official.d.ts","sourceRoot":"","sources":["../src/official.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,2GAA2G;IAC3G,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,eAAO,MAAM,kBAAkB,EAAE,SAAS,gBAAgB,EAczD,CAAC"}
|
package/dist/official.js
CHANGED
|
@@ -5,5 +5,11 @@ export const OFFICIAL_TEMPLATES = [
|
|
|
5
5
|
description: "buff runs and jumps through a Tiled level: tilemap, collision, atlas, tunable movement, coins",
|
|
6
6
|
source: "github:debuffjp/debuff/templates/platformer",
|
|
7
7
|
},
|
|
8
|
+
{
|
|
9
|
+
id: "mossfell",
|
|
10
|
+
title: "Mossfell",
|
|
11
|
+
description: "Top-down action-adventure: screen-by-screen scrolling, sword combat, hearts, enemies, a key and locked door, a small dungeon",
|
|
12
|
+
source: "github:debuffjp/debuff/templates/mossfell",
|
|
13
|
+
},
|
|
8
14
|
];
|
|
9
15
|
//# sourceMappingURL=official.js.map
|
package/dist/official.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"official.js","sourceRoot":"","sources":["../src/official.ts"],"names":[],"mappings":"AAYA,MAAM,CAAC,MAAM,kBAAkB,GAAgC;IAC7D;QACE,EAAE,EAAE,YAAY;QAChB,KAAK,EAAE,YAAY;QACnB,WAAW,EAAE,+FAA+F;QAC5G,MAAM,EAAE,6CAA6C;KACtD;CACF,CAAC"}
|
|
1
|
+
{"version":3,"file":"official.js","sourceRoot":"","sources":["../src/official.ts"],"names":[],"mappings":"AAYA,MAAM,CAAC,MAAM,kBAAkB,GAAgC;IAC7D;QACE,EAAE,EAAE,YAAY;QAChB,KAAK,EAAE,YAAY;QACnB,WAAW,EAAE,+FAA+F;QAC5G,MAAM,EAAE,6CAA6C;KACtD;IACD;QACE,EAAE,EAAE,UAAU;QACd,KAAK,EAAE,UAAU;QACjB,WAAW,EACT,8HAA8H;QAChI,MAAM,EAAE,2CAA2C;KACpD;CACF,CAAC"}
|
package/dist/scaffold.d.ts
CHANGED
|
@@ -38,6 +38,8 @@ export declare function scaffoldRemote(options: ScaffoldOptions & {
|
|
|
38
38
|
export declare function scaffold(options: ScaffoldOptions): string;
|
|
39
39
|
/** Scaffold from any template: local, official (downloaded on demand) or a git source. */
|
|
40
40
|
export declare function create(options: ScaffoldOptions): Promise<string>;
|
|
41
|
+
/** Pin an official template to the git tag of this create-debuff release, so it matches the published CLI. */
|
|
42
|
+
export declare function pinnedSource(source: string, version: string): string;
|
|
41
43
|
export declare function ownVersion(): string;
|
|
42
44
|
export declare function detectPackageManager(): "npm" | "pnpm" | "yarn" | "bun";
|
|
43
45
|
//# sourceMappingURL=scaffold.d.ts.map
|
package/dist/scaffold.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scaffold.d.ts","sourceRoot":"","sources":["../src/scaffold.ts"],"names":[],"mappings":"AAQA;+BAC+B;AAC/B,wBAAgB,YAAY,IAAI,MAAM,CAUrC;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;CACrB;AAcD,kFAAkF;AAClF,wBAAgB,aAAa,IAAI,YAAY,EAAE,CAQ9C;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAWrH;AAED,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,oDAAoD;IACpD,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAO/C;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAE/C;AAED,2FAA2F;AAC3F,mHAAmH;AACnH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAE1D;AAED,6FAA6F;AAC7F,wBAAsB,cAAc,CAAC,OAAO,EAAE,eAAe,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAYrG;AAED,uGAAuG;AACvG,wBAAgB,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,MAAM,CAOzD;AAED,0FAA0F;AAC1F,wBAAsB,MAAM,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CAItE;AAuBD,wBAAgB,UAAU,IAAI,MAAM,CAEnC;AAED,wBAAgB,oBAAoB,IAAI,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,CAMtE"}
|
|
1
|
+
{"version":3,"file":"scaffold.d.ts","sourceRoot":"","sources":["../src/scaffold.ts"],"names":[],"mappings":"AAQA;+BAC+B;AAC/B,wBAAgB,YAAY,IAAI,MAAM,CAUrC;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;CACrB;AAcD,kFAAkF;AAClF,wBAAgB,aAAa,IAAI,YAAY,EAAE,CAQ9C;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAWrH;AAED,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,oDAAoD;IACpD,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAO/C;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAE/C;AAED,2FAA2F;AAC3F,mHAAmH;AACnH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAE1D;AAED,6FAA6F;AAC7F,wBAAsB,cAAc,CAAC,OAAO,EAAE,eAAe,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAYrG;AAED,uGAAuG;AACvG,wBAAgB,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,MAAM,CAOzD;AAED,0FAA0F;AAC1F,wBAAsB,MAAM,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CAItE;AAuBD,8GAA8G;AAC9G,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAEpE;AAED,wBAAgB,UAAU,IAAI,MAAM,CAEnC;AAED,wBAAgB,oBAAoB,IAAI,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,CAMtE"}
|
package/dist/scaffold.js
CHANGED
|
@@ -51,7 +51,7 @@ export function resolveTemplate(template) {
|
|
|
51
51
|
return { kind: "local", dir };
|
|
52
52
|
const official = OFFICIAL_TEMPLATES.find((t) => t.id === template);
|
|
53
53
|
if (official)
|
|
54
|
-
return { kind: "remote", source: official.source };
|
|
54
|
+
return { kind: "remote", source: pinnedSource(official.source, ownVersion()) };
|
|
55
55
|
throw new Error(`Unknown template "${template}". Available: ${listTemplates()
|
|
56
56
|
.map((t) => t.id)
|
|
57
57
|
.join(", ")}, or a git source like github:user/repo`);
|
|
@@ -127,6 +127,10 @@ function copyTemplate(src, dest, name) {
|
|
|
127
127
|
writeFileSync(pkgPath, `${JSON.stringify(pkg, null, 2)}\n`);
|
|
128
128
|
return dest;
|
|
129
129
|
}
|
|
130
|
+
/** Pin an official template to the git tag of this create-debuff release, so it matches the published CLI. */
|
|
131
|
+
export function pinnedSource(source, version) {
|
|
132
|
+
return version === "0.0.0" || source.includes("#") ? source : `${source}#create-debuff@${version}`;
|
|
133
|
+
}
|
|
130
134
|
export function ownVersion() {
|
|
131
135
|
return JSON.parse(readFileSync(join(here, "..", "package.json"), "utf8")).version;
|
|
132
136
|
}
|
package/dist/scaffold.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scaffold.js","sourceRoot":"","sources":["../src/scaffold.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"scaffold.js","sourceRoot":"","sources":["../src/scaffold.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,13 +1,20 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "create-debuff",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"description": "Scaffold a new debuff game: npm create debuff",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"game",
|
|
7
|
+
"gamedev",
|
|
8
|
+
"game-engine",
|
|
9
|
+
"2d",
|
|
10
|
+
"html5-game",
|
|
11
|
+
"browser-game",
|
|
12
|
+
"debuff",
|
|
7
13
|
"create",
|
|
8
14
|
"scaffold",
|
|
9
15
|
"template",
|
|
10
|
-
"
|
|
16
|
+
"starter",
|
|
17
|
+
"game-jam"
|
|
11
18
|
],
|
|
12
19
|
"license": "MIT",
|
|
13
20
|
"homepage": "https://debuff.jp",
|
|
@@ -45,7 +52,7 @@
|
|
|
45
52
|
"picocolors": "^1.1.1"
|
|
46
53
|
},
|
|
47
54
|
"devDependencies": {
|
|
48
|
-
"@types/node": "^
|
|
55
|
+
"@types/node": "^26.6.5"
|
|
49
56
|
},
|
|
50
57
|
"engines": {
|
|
51
58
|
"node": ">=22"
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# Agent guide
|
|
2
|
+
|
|
3
|
+
This is a 2D browser game made with **debuff** (https://debuff.jp). These notes are for AI coding agents working on it. The human you're working with makes the creative calls; you do the implementation, testing and chores.
|
|
4
|
+
|
|
5
|
+
## Commands
|
|
6
|
+
|
|
7
|
+
| Command | What it does |
|
|
8
|
+
| --- | --- |
|
|
9
|
+
| `npm run dev` | Dev server with hot reload. Press <kbd>`</kbd> in the game for the dev panel |
|
|
10
|
+
| `npm test` | Runs `scenarios/*.json` in a headless browser and compares screenshots |
|
|
11
|
+
| `npx debuff fuzz` | Plays the game with random input for a few minutes. Each crash, stuck state or back-and-forth loop is saved as a scenario in `.debuff/fuzz/` that replays it exactly |
|
|
12
|
+
| `npm run build` | Type-checks, builds to `dist/` and prints a size report. Fails if dev-only code leaks |
|
|
13
|
+
| `npm run assets` | Regenerates the asset manifest and lists unused assets |
|
|
14
|
+
| `npx debuff inspect` | Project summary as JSON: packages, plugins, assets, last build size |
|
|
15
|
+
| `npx debuff scenario --update` | Accept new screenshot baselines. **Only after the human has approved the visual change** |
|
|
16
|
+
|
|
17
|
+
## Layout
|
|
18
|
+
|
|
19
|
+
- `src/main.ts`: the game, which creates `new Game(...)`, scenes (`update`, `render`, `inspect`) and params.
|
|
20
|
+
- `assets/`: source art, audio and data. The manifest and atlases are generated from it, and only files the game references ship. Don't edit generated files.
|
|
21
|
+
- `scenarios/`: JSON test scripts (steps, inputs, expectations, captures). Add one for each mechanic you build.
|
|
22
|
+
- `.mcp.json`: connects the debuff MCP server, so you can play and inspect the running game.
|
|
23
|
+
|
|
24
|
+
## Work loop
|
|
25
|
+
|
|
26
|
+
1. **Look before you change.** With the MCP server, call `game_start`. If the human has the game open under `npm run dev`, you attach to it live, so read `game_notes` first: they're moments the human flagged, and `game_replay` with a note's tick saves a scenario that reproduces it. Then use `game_state`, `game_capture` and `game_errors`.
|
|
27
|
+
2. **Tune before you rewrite.** Feel values (speed, gravity, timings) live in `game.params.define(...)`. Change them with `game_set_param` and show the human before editing code. The human can undo your changes in the dev panel.
|
|
28
|
+
3. **Make the smallest change that works.** Keep dev-only code inside `if (import.meta.env.DEV)`.
|
|
29
|
+
4. **Verify.** Run `npm test` and `npm run build`, and check `game_errors` is empty. Before calling a feature done, run `npx debuff fuzz`: to fix a finding, replay its file with `npx debuff scenario <file>`, fix, and replay again until it passes. Errors come back explained: `kind` says whose bug it is (`your-code`, `debuff-usage`, `debuff-bug`, `outside`) and `where` gives the source line.
|
|
30
|
+
5. **Report** what changed, what you verified, and anything you couldn't check.
|
|
31
|
+
|
|
32
|
+
## Rules
|
|
33
|
+
|
|
34
|
+
- **Creative direction belongs to the human:** art, feel, difficulty, story and names. Propose two or three options; don't decide.
|
|
35
|
+
- Don't update screenshot baselines (`--update`) without the human's say-so.
|
|
36
|
+
- If `game_errors` reports `debuff-bug`, it's a bug in debuff, not this game. Tell the human and share its `reportUrl`; don't work around debuff internals.
|
|
37
|
+
- Prefer debuff's APIs (`draw`, `input`, `assets`, `params`, `juice`) over adding new runtime dependencies. The game should stay small.
|
|
38
|
+
- API reference: https://debuff.jp/api/ · Guides: https://debuff.jp/docs/getting-started
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@AGENTS.md
|
|
@@ -10,14 +10,14 @@
|
|
|
10
10
|
"test": "debuff scenario"
|
|
11
11
|
},
|
|
12
12
|
"dependencies": {
|
|
13
|
-
"@debuffjp/audio": "0.
|
|
14
|
-
"@debuffjp/core": "0.
|
|
15
|
-
"@debuffjp/input": "0.
|
|
16
|
-
"@debuffjp/juice": "0.
|
|
13
|
+
"@debuffjp/audio": "0.2.0",
|
|
14
|
+
"@debuffjp/core": "0.2.0",
|
|
15
|
+
"@debuffjp/input": "0.2.0",
|
|
16
|
+
"@debuffjp/juice": "0.2.0"
|
|
17
17
|
},
|
|
18
18
|
"devDependencies": {
|
|
19
|
-
"@debuffjp/cli": "0.
|
|
19
|
+
"@debuffjp/cli": "0.2.0",
|
|
20
20
|
"typescript": "^7.0.2",
|
|
21
|
-
"@debuffjp/dev": "0.
|
|
21
|
+
"@debuffjp/dev": "0.2.0"
|
|
22
22
|
}
|
|
23
23
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Audio } from "@debuffjp/audio";
|
|
2
|
-
import { approach, clamp, Game, type Scene, Storage } from "@debuffjp/core";
|
|
2
|
+
import { approach, clamp, Game, lerp, type Scene, Storage } from "@debuffjp/core";
|
|
3
3
|
import { devOverlay, devTools } from "@debuffjp/dev";
|
|
4
4
|
import { Input } from "@debuffjp/input";
|
|
5
5
|
import { Particles, squash, Tweens } from "@debuffjp/juice";
|
|
@@ -27,12 +27,14 @@ const tuning = game.params.define("player", {
|
|
|
27
27
|
accel: { type: "number", default: 1200, min: 0, max: 5000, units: "px/s²" },
|
|
28
28
|
});
|
|
29
29
|
|
|
30
|
-
|
|
30
|
+
// prevX is where buff was a step ago: render blends toward x so motion stays smooth on fast displays.
|
|
31
|
+
const player = { x: 160, prevX: 160, y: 120, vx: 0, scaleX: 1, scaleY: 1 };
|
|
31
32
|
|
|
32
33
|
const play: Scene = {
|
|
33
34
|
id: "play",
|
|
34
35
|
|
|
35
36
|
update(dt) {
|
|
37
|
+
player.prevX = player.x;
|
|
36
38
|
let dir = input.axis("left", "right");
|
|
37
39
|
if (input.pointer.down) dir = Math.sign(input.pointer.x - player.x);
|
|
38
40
|
player.vx = approach(player.vx, dir * tuning.values.speed, tuning.values.accel * dt);
|
|
@@ -49,11 +51,11 @@ const play: Scene = {
|
|
|
49
51
|
particles.update(dt);
|
|
50
52
|
},
|
|
51
53
|
|
|
52
|
-
render(draw) {
|
|
54
|
+
render(draw, alpha) {
|
|
53
55
|
draw.withCamera(game.camera, () => {
|
|
54
56
|
// buff, the debuff mascot: a lime block with eyes, squashing from its feet.
|
|
55
57
|
draw.push();
|
|
56
|
-
draw.translate(player.x, player.y);
|
|
58
|
+
draw.translate(lerp(player.prevX, player.x, alpha), player.y);
|
|
57
59
|
draw.scale(player.scaleX, player.scaleY);
|
|
58
60
|
draw.rect(-8, -16, 16, 16, "#cffb2d");
|
|
59
61
|
draw.rect(-5, -12, 3, 4, "#11140d");
|