一键导入
game-asset-generation
Skill for coding agents to dynamically generate, style, and compose 2D game assets (sprites, audio, UI) tailored to any game specification.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Skill for coding agents to dynamically generate, style, and compose 2D game assets (sprites, audio, UI) tailored to any game specification.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
How to instrument features on www.gamedev.pl so product health stays measurable — the telemetry architecture, its privacy invariants, the event vocabulary, and the questions the data must always be able to answer. Use whenever you add or change a user-facing flow (play, creation, sign-in, sharing, party mode), touch telemetry code on either side, or add a metric or aggregate.
How to manage closed beta participants, approve waitlisted users, add pre-approved entries, inspect waitlist status, and manage access lists in Firestore or environment variables. Use whenever you need to grant, check, or revoke closed beta access for users on www.gamedev.pl.
Delegate work to GitHub Copilot's remote coding agent by creating an issue and assigning it to the Copilot bot, then verify and merge the PR it opens. Use when offloading well-specified, self-contained coding tasks to run remotely instead of doing them locally — including choosing what is and isn't suitable to delegate.
Safely verify code produced by any autonomous coding agent (Copilot, agy, Codex, a subagent, or a containerized CLI) before trusting or merging it. Use whenever you are about to accept, review, or merge work you did not write yourself, or when running agents in parallel against a shared repo.
| name | game-asset-generation |
| description | Skill for coding agents to dynamically generate, style, and compose 2D game assets (sprites, audio, UI) tailored to any game specification. |
Guidance for coding agents (Claude Code, GitHub Copilot, Codex, Antigravity) generating HTML5 games for gamedev.pl.
Instead of hardcoding fixed workflows or static asset files, use this skill to dynamically analyze a game spec, determine required visual and audio assets, and synthesize them on-the-fly.
When given a game spec (e.g., "A retro space shooter with laser beams and asteroid fields"):
Break down the spec into core game entities:
shoot, collect, hit, explosion).| Requirement | Best Technique | Implementation |
|---|---|---|
| Pixel Art / Retro Sprites | Procedural Canvas Rendering | Pre-render onto an offscreen canvas at boot. |
| Vector / Smooth Graphics | SVG / Canvas Paths | Render clean geometric paths with gradients & glows. |
| Rich Textures / Illustrations | generate_image Tool / AI Art | Generate raster images & embed as data URLs or local files. |
| Sound Effects | Web Audio API Synthesizer | Synthesize in-memory audio without network calls. |
When generating sprites via Canvas code, pre-render animation frames onto offscreen canvases at boot for 60fps performance:
// Pre-render sprite frames in-memory
function createShipSprite() {
const canvas = document.createElement('canvas');
canvas.width = 32;
canvas.height = 32;
const ctx = canvas.getContext('2d');
// Draw vibrant ship
ctx.fillStyle = '#29ADFF';
ctx.beginPath();
ctx.moveTo(16, 2);
ctx.lineTo(30, 28);
ctx.lineTo(16, 22);
ctx.lineTo(2, 28);
ctx.closePath();
ctx.fill();
ctx.fillStyle = '#FFA300';
ctx.fillRect(12, 22, 8, 8); // Thruster glow
return canvas;
}
Always generate sound effects in-memory using the Web Audio API. Never require external .wav/.mp3 downloads.
const audioCtx = new (window.AudioContext || window.webkitAudioContext)();
function playSound(type) {
if (audioCtx.state === 'suspended') audioCtx.resume();
const osc = audioCtx.createOscillator();
const gain = audioCtx.createGain();
osc.connect(gain);
gain.connect(audioCtx.destination);
const now = audioCtx.currentTime;
if (type === 'coin') {
osc.frequency.setValueAtTime(987, now);
osc.frequency.setValueAtTime(1318, now + 0.08);
gain.gain.setValueAtTime(0.3, now);
gain.gain.exponentialRampToValueAtTime(0.01, now + 0.2);
osc.start(now);
osc.stop(now + 0.2);
} else if (type === 'laser') {
osc.frequency.setValueAtTime(800, now);
osc.frequency.exponentialRampToValueAtTime(100, now + 0.15);
gain.gain.setValueAtTime(0.3, now);
gain.gain.exponentialRampToValueAtTime(0.01, now + 0.15);
osc.start(now);
osc.stop(now + 0.15);
}
}
object-fit: contain and image-rendering: pixelated.camera.shake()), particle bursts on destruction, and floating score popups for satisfying player feedback.