picopilot 0.1.3 → 0.1.4
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/engine/scaffold/scaffold.d.ts.map +1 -1
- package/dist/engine/scaffold/scaffold.js +15 -0
- package/dist/engine/scaffold/scaffold.js.map +1 -1
- package/package.json +1 -1
- package/src/commands/init.test.ts +10 -0
- package/src/engine/scaffold/scaffold.ts +15 -0
- package/src/engine/skills/skills.test.ts +6 -0
- package/src/skills/game-design-reference/SKILL.md +2 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scaffold.d.ts","sourceRoot":"","sources":["../../../src/engine/scaffold/scaffold.ts"],"names":[],"mappings":"AAiBA;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,sBAAsB,CAAC;AAEpD;;;;GAIG;AACH,wBAAgB,MAAM,IAAI,MAAM,CAM/B;AAED;;;;;GAKG;AACH,wBAAgB,OAAO,IAAI,MAAM,CAehC;AAED,2FAA2F;AAC3F,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED;;;;;;;;GAQG;AACH,wBAAgB,QAAQ,IAAI,MAAM,
|
|
1
|
+
{"version":3,"file":"scaffold.d.ts","sourceRoot":"","sources":["../../../src/engine/scaffold/scaffold.ts"],"names":[],"mappings":"AAiBA;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,sBAAsB,CAAC;AAEpD;;;;GAIG;AACH,wBAAgB,MAAM,IAAI,MAAM,CAM/B;AAED;;;;;GAKG;AACH,wBAAgB,OAAO,IAAI,MAAM,CAehC;AAED,2FAA2F;AAC3F,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED;;;;;;;;GAQG;AACH,wBAAgB,QAAQ,IAAI,MAAM,CAkOjC;AAED;;;;GAIG;AACH,MAAM,WAAW,YAAY;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CACzB;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,IAAI,YAAY,EAAE,CAO9C"}
|
|
@@ -141,6 +141,21 @@ Two checks that catch the bugs models ship most:
|
|
|
141
141
|
losing, meaning it is too easy)? does it escalate? is it fair (no unavoidable
|
|
142
142
|
loss)? If you drove a full round and nothing threatened you, tune it before
|
|
143
143
|
calling it done. (The \`game-design-reference\` skill carries these self-checks.)
|
|
144
|
+
- **JUDGE the frame, do not just confirm it drew.** When you look at a gameplay
|
|
145
|
+
screenshot, actively hunt for what is WRONG, do not narrate that it rendered.
|
|
146
|
+
"It renders" is NOT "it is good". Ask concretely:
|
|
147
|
+
- **Readability / contrast:** can you tell EVERY entity apart, from the
|
|
148
|
+
background AND from each other, at a glance? If a hazard or pickup blends
|
|
149
|
+
into the scenery (same or near colour), that is a bug, recolour it. Every
|
|
150
|
+
thing the player must react to has to be instantly distinguishable.
|
|
151
|
+
- **Layout fairness:** are hazards spaced and placed so a HUMAN can actually
|
|
152
|
+
clear them (react in ~250ms, not frame-perfect)? Gaps too tight to pass, or
|
|
153
|
+
an obstacle you cannot see coming, are fairness defects, not difficulty.
|
|
154
|
+
- **Honest quality:** does it look intentional, or just non-broken? If a
|
|
155
|
+
player saw this, would the visuals read as deliberate?
|
|
156
|
+
These are the \`game-design-reference\` readability + fairness lenses applied to
|
|
157
|
+
the IMAGE you are looking at, not only to the logic. Apply them to the actual
|
|
158
|
+
frame; fix what fails before calling it done.
|
|
144
159
|
|
|
145
160
|
A green \`verify\`, a bare \`timeout\`, or a nice-looking title is NOT done.
|
|
146
161
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scaffold.js","sourceRoot":"","sources":["../../../src/engine/scaffold/scaffold.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAC,MAAM,kBAAkB,CAAC;AACtC,OAAO,EAAC,iBAAiB,EAAC,MAAM,oBAAoB,CAAC;AAErD;;;;;;;;;GASG;AAEH,0FAA0F;AAC1F,MAAM,YAAY,GAAG,EAAE,CAAC;AAExB;;;;GAIG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,mBAAmB,CAAC;AAEpD;;;;GAIG;AACH,MAAM,UAAU,MAAM;IACrB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CACtB,sDAAsD,YAAY,aAAa,CAC/E,CAAC;IACF,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,GAAG,gBAAgB,IAAI,CAAC,CAAC;IAChD,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC;AACzB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,OAAO;IACtB,OAAO;;;;;;;;;;;;;CAaP,CAAC;AACF,CAAC;AAED,2FAA2F;AAC3F,MAAM,UAAU,aAAa;IAC5B,OAAO,iBAAiB,EAAE,CAAC;AAC5B,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,QAAQ;IACvB,OAAO
|
|
1
|
+
{"version":3,"file":"scaffold.js","sourceRoot":"","sources":["../../../src/engine/scaffold/scaffold.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAC,MAAM,kBAAkB,CAAC;AACtC,OAAO,EAAC,iBAAiB,EAAC,MAAM,oBAAoB,CAAC;AAErD;;;;;;;;;GASG;AAEH,0FAA0F;AAC1F,MAAM,YAAY,GAAG,EAAE,CAAC;AAExB;;;;GAIG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,mBAAmB,CAAC;AAEpD;;;;GAIG;AACH,MAAM,UAAU,MAAM;IACrB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CACtB,sDAAsD,YAAY,aAAa,CAC/E,CAAC;IACF,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,GAAG,gBAAgB,IAAI,CAAC,CAAC;IAChD,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC;AACzB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,OAAO;IACtB,OAAO;;;;;;;;;;;;;CAaP,CAAC;AACF,CAAC;AAED,2FAA2F;AAC3F,MAAM,UAAU,aAAa;IAC5B,OAAO,iBAAiB,EAAE,CAAC;AAC5B,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,QAAQ;IACvB,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgOP,CAAC;AACF,CAAC;AAYD;;;;;;GAMG;AACH,MAAM,UAAU,aAAa;IAC5B,OAAO;QACN,EAAC,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,EAAC;QACpC,EAAC,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,EAAC;QACtC,EAAC,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAC;QACxC,EAAC,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,aAAa,EAAE,EAAC;KAClD,CAAC;AACH,CAAC"}
|
package/package.json
CHANGED
|
@@ -143,6 +143,16 @@ describe('picopilot init: AGENTS.md carries the curated PICO-8 reference', () =>
|
|
|
143
143
|
expect(lower).toMatch(/sign|direction/);
|
|
144
144
|
expect(lower).toMatch(/can the player lose|player.*(lose|fail)/);
|
|
145
145
|
expect(lower).toContain('too easy');
|
|
146
|
+
// Judge the FRAME, not just confirm it drew: readability/contrast, layout
|
|
147
|
+
// fairness (spacing), and honest quality. These catch the tree-contrast /
|
|
148
|
+
// too-tight-gap / weak-graphics issues a large model still shipped.
|
|
149
|
+
expect(lower).toMatch(/judge the frame|judge the rendered/);
|
|
150
|
+
expect(lower).toContain('contrast');
|
|
151
|
+
expect(lower).toMatch(/distinguish/);
|
|
152
|
+
expect(lower).toMatch(/spaced|spacing|gap/);
|
|
153
|
+
// Framed as hunting for what is WRONG, and "renders" is not "good".
|
|
154
|
+
expect(lower).toContain('wrong');
|
|
155
|
+
expect(agents).toContain('"It renders" is NOT "it is good"');
|
|
146
156
|
});
|
|
147
157
|
|
|
148
158
|
it('warns against guessing the API and points at the shipped pico8-api reference', () => {
|
|
@@ -150,6 +150,21 @@ Two checks that catch the bugs models ship most:
|
|
|
150
150
|
losing, meaning it is too easy)? does it escalate? is it fair (no unavoidable
|
|
151
151
|
loss)? If you drove a full round and nothing threatened you, tune it before
|
|
152
152
|
calling it done. (The \`game-design-reference\` skill carries these self-checks.)
|
|
153
|
+
- **JUDGE the frame, do not just confirm it drew.** When you look at a gameplay
|
|
154
|
+
screenshot, actively hunt for what is WRONG, do not narrate that it rendered.
|
|
155
|
+
"It renders" is NOT "it is good". Ask concretely:
|
|
156
|
+
- **Readability / contrast:** can you tell EVERY entity apart, from the
|
|
157
|
+
background AND from each other, at a glance? If a hazard or pickup blends
|
|
158
|
+
into the scenery (same or near colour), that is a bug, recolour it. Every
|
|
159
|
+
thing the player must react to has to be instantly distinguishable.
|
|
160
|
+
- **Layout fairness:** are hazards spaced and placed so a HUMAN can actually
|
|
161
|
+
clear them (react in ~250ms, not frame-perfect)? Gaps too tight to pass, or
|
|
162
|
+
an obstacle you cannot see coming, are fairness defects, not difficulty.
|
|
163
|
+
- **Honest quality:** does it look intentional, or just non-broken? If a
|
|
164
|
+
player saw this, would the visuals read as deliberate?
|
|
165
|
+
These are the \`game-design-reference\` readability + fairness lenses applied to
|
|
166
|
+
the IMAGE you are looking at, not only to the logic. Apply them to the actual
|
|
167
|
+
frame; fix what fails before calling it done.
|
|
153
168
|
|
|
154
169
|
A green \`verify\`, a bare \`timeout\`, or a nice-looking title is NOT done.
|
|
155
170
|
|
|
@@ -68,6 +68,12 @@ describe('picopilot skills: generation output (the authored discipline skills)',
|
|
|
68
68
|
expect(md).toContain('frame-perfect');
|
|
69
69
|
// Visibility (draw what you spr()).
|
|
70
70
|
expect(md).toContain('spr(');
|
|
71
|
+
// Readability judged on the RENDERED FRAME, not just the code: the
|
|
72
|
+
// contrast/spacing lens a large model skipped (it confirmed "renders" but
|
|
73
|
+
// never asked if entities were distinguishable or gaps clearable).
|
|
74
|
+
expect(md.toLowerCase()).toContain('rendered frame');
|
|
75
|
+
expect(md.toLowerCase()).toContain('contrast');
|
|
76
|
+
expect(md.toLowerCase()).toMatch(/distinguish|tell every entity apart/);
|
|
71
77
|
// Originality is a METHOD with a self-check, and lists NO concrete
|
|
72
78
|
// mechanics (the answer-menu trap). Assert the caveat that guards it.
|
|
73
79
|
expect(md.toLowerCase()).toContain('self-check');
|
|
@@ -41,6 +41,8 @@ If you `spr(n)` an entity, sprite n must actually be DRAWN (a non-empty sprite),
|
|
|
41
41
|
|
|
42
42
|
The player must be able to READ the game state at a glance and get FEEDBACK for every action: what am I, what is a hazard, what is a goal, did my input register, did I score or get hit. Motion trails, colour contrast, a HUD, particles/shake/sfx on events, these are not polish for its own sake, they are how the player perceives the state they must act on.
|
|
43
43
|
|
|
44
|
+
**The self-check (apply it to the RENDERED FRAME, not just the code).** When you look at a gameplay screenshot, judge it, do not just confirm it drew. Looking for what is WRONG: can you tell EVERY entity apart from the background and from each other at a glance (a hazard the same colour as the scenery is a readability bug, recolour it)? is every hazard telegraphed and spaced so a human can react in ~250ms rather than by frame-perfect timing (a gap too tight to pass, or an off-screen hazard, is a fairness defect, not difficulty)? does it look intentional, or merely non-broken? "It renders" is not "it is readable and fair". Apply these lenses to the actual image and fix what fails before calling the game done.
|
|
45
|
+
|
|
44
46
|
## Difficulty curve and progression
|
|
45
47
|
|
|
46
48
|
A good game GOES SOMEWHERE: it escalates. Ramp difficulty by introducing or combining MECHANICS (a new hazard type, a new interaction) over the playthrough, not merely by piling more of the same obstacle. More-of-the-same reads as samey and does not deepen; a new wrinkle does. Aim for a difficulty ARC with a satisfying peak, not a flat loop. Keep the first contact with each new mechanic gentle enough to learn it before it is tested under pressure.
|