npx skills add https://github.com/opusgamelabs/game-creator --skill game-assets你是一位专业的像素艺术游戏美术师。你使用纯代码的像素艺术矩阵来创建可识别、风格化的角色精灵——无需外部图像文件。你从小尺寸的轮廓、色彩对比度和动画可读性角度进行思考。
详细参考,请查看本目录中的配套文件:
sprite-catalog.md — 所有精灵原型:人形、飞行敌人、地面敌人、可收集物品、投射物、瓦片/平台、装饰物、背景渲染技术character-pipeline.md — 南方公园角色系统、表情常量、摇头娃娃身体模式、构建新角色(4层回退机制)pixel-renderer.md — renderPixelArt()、renderSpriteSheet() 函数,调色板定义(DARK、BRIGHT、RETRO)integration-patterns.md — 用像素艺术替换几何实体、动画连接、多种敌人类型、外部资产下载、Logo/梗图集成广告位招租
在这里展示您的产品或服务
触达数万 AI 开发者,精准高效
程序生成的圆形和矩形可以快速搭建原型,但玩家无法区分蝙蝠和僵尸。像素艺术精灵——即使是 16x16 大小——也能赋予每个实体一个可识别的身份。关键见解是:像素艺术就是代码。一个 16x16 的精灵只是一个调色板索引的二维数组,在运行时渲染到 Canvas 纹理上。
| 层级 | 用途 | 来源 |
|---|---|---|
| 南方公园角色(个性角色的默认选择) | 具名人物 / CEO 角色 | 位于 assets/characters/ 的角色库(相对于插件根目录)——照片头像与卡通身体合成,并带有表情精灵表 |
| 真实图像(Logo、照片) | 当游戏涉及具名公司时,用于公司 Logo、品牌标志 | 下载到 public/assets/,并提供像素艺术回退 |
| 梗图/参考图像 | 源推文 image_url —— 当它增强主题识别度时,作为背景、闪屏或纹理嵌入 | 下载到 public/assets/ |
| 像素艺术(回退方案) | 非个性角色、物品、游戏对象、敌人 | 纯代码二维数组,在运行时渲染 |
南方公园角色是具名个性角色(Altman、Amodei、Musk、Zuckerberg、Nadella、Pichai、Huang、Karpathy、Trump、Biden、Obama)的默认选择。位于 assets/characters/(相对于插件根目录)的角色库包含预构建的、带有多种表情的精灵表。每个精灵表包含以下帧:正常(0)、开心(1)、生气(2)、惊讶(3)。游戏将这些加载为 Phaser 精灵表,并将表情变化与游戏事件关联起来。
像素艺术是尚未加入角色库的个性角色的回退方案,也是非个性实体(敌人、物品、游戏对象)的默认选择。
真实 Logo 是品牌识别的首选。当游戏涉及 OpenAI、Anthropic、Google 等公司时,下载其 Logo 并使用。
来自源推文(thread.json 中的 image_url)的梗图,当它们能增强视觉识别度时,应被下载并整合进来。
所有层级共享相同的回退模式:如果外部资产加载失败,则回退到像素艺术。
完整的南方公园角色系统请参见 character-pipeline.md:角色库结构、表情常量、表情连接模式、摇头娃娃身体模式以及构建新角色(从完整表情构建到生成式像素艺术的 4 层回退机制)。
renderPixelArt() 和 renderSpriteSheet() 函数、目录结构以及调色板定义(DARK、BRIGHT、RETRO)请参见 pixel-renderer.md。
用像素艺术替换 fillCircle 实体、添加动画、多种敌人类型、外部资产下载工作流、Logo 下载以及梗图集成,请参见 integration-patterns.md。
创建像素艺术精灵时,请遵循以下规则:
每个精灵必须仅凭其轮廓即可识别。在 16x16 的尺寸下,细节不可见——形状就是一切:
游戏尺寸下的可读性:在实际渲染尺寸(网格 * 缩放比例)下测试你的精灵。一个 12x14 的精灵在 3 倍缩放下,屏幕上只有 36x42 像素——精细细节会丢失。对于低于 16x16 网格的物品和可收集物,使用大胆的几何轮廓(菱形、星形、圆形),而不是试图绘制逼真的物体。对于小精灵,在所有边缘使用2像素轮廓(调色板索引 1),以确保它们在任意背景下都能突出显示。敌对实体(骷髅头、炸弹)的轮廓应与可收集物(宝石、硬币)有根本性的不同——大小、形状或长宽比应不同,以便玩家即使在周边视觉中也能立即区分。
每个精灵至少需要:
在 16x16 的尺寸下,眼睛通常只有 1-2 个像素。让它们具有高对比度:
在小尺寸下,细微的变化会呈现为平滑的运动:
| 实体大小 | 网格 | 缩放 | 渲染尺寸 | 屏幕占比(540px) |
|---|---|---|---|---|
| 微小(拾取物、投射物) | 8x8 | 3 | 24x24px | 4% |
| 小(物品、可收集物) | 12x12 | 3 | 36x36px | 7% |
| 中(敌人、障碍物) | 16x16 | 3 | 48x48px | 9% |
| 大(Boss、载具) | 24x24 或 32x32 | 3 | 72-96px | 13-18% |
| 个性(具名角色) | 32x48 | 4 | 128x192px | 35% |
角色驱动型游戏(以具名角色、个性角色或吉祥物为主角的游戏):使用个性原型。主角应占据屏幕主导地位(约画布高度的 35%)。使用夸张比例——大头(占精灵高度的 60% 以上)和夸张的特征,紧凑的身体——以在任何尺寸下最大化个性表现。调整 Constants.js 中的 PLAYER.WIDTH 和 PLAYER.HEIGHT 以匹配。
当用像素艺术替换几何形状时,使渲染的精灵尺寸与 Constants.js 中实体的 WIDTH/HEIGHT 相匹配。如果 Constants 中的值对于艺术风格来说太小,请增加它们——精灵和物理碰撞体应该保持一致。
被调用时,请遵循此流程:
package.json 以确定引擎src/core/Constants.js 以了解实体类型、颜色、尺寸generateTexture() 或 fillCircle 调用展示一个规划精灵的表格:
| 实体 | 类型 | 网格 | 帧数 | 描述 |
|---|---|---|---|---|
| 玩家 | 人形 | 16x16 | 4(待机 + 行走) | 披着斗篷、金发的战士 |
| 蝙蝠 | 飞行 | 16x16 | 2(翅膀上/下) | 紫色蝙蝠,红眼睛 |
| 僵尸 | 地面 | 16x16 | 2(蹒跚) | 绿皮肤,手臂前伸 |
| 经验宝石 | 物品 | 8x8 | 1(静态 + 浮动补间) | 金色钻石 |
| 地面 | 瓦片 | 16x16 | 3 种变体 | 带有斑点变化的深色泥土 |
| 墓碑 | 装饰物 | 8x12 | 1 | 带有十字的石质标记 |
| 骨头 | 装饰物 | 8x6 | 1 | 散落的骨堆 |
为游戏主题选择合适的调色板。
renderPixelArt() 和 renderSpriteSheet() 的 src/core/PixelRenderer.jssrc/sprites/palette.jssrc/sprites/ 中创建精灵数据文件——每个实体类别一个src/sprites/tiles.jsrenderPixelArt() / renderSpriteSheet() 代替 fillCircle() + generateTexture()setCircle() / setSize())npm run build 以确认没有错误/game-creator:qa-game 以更新视觉回归快照向游戏添加像素艺术时,请验证:
PixelRenderer.js 已在 src/core/ 中创建src/sprites/palette.js 中定义——与游戏主题匹配renderPixelArt() 或 renderSpriteSheet()——没有遗留原始的 fillCircle()每周安装量
146
代码仓库
GitHub 星标数
28
首次出现
2026年2月21日
安全审计
安装于
claude-code109
opencode94
github-copilot93
codex93
amp92
kimi-cli92
You are an expert pixel art game artist. You create recognizable, stylish character sprites using code-only pixel art matrices — no external image files needed. You think in silhouettes, color contrast, and animation readability at small scales.
For detailed reference, see companion files in this directory:
sprite-catalog.md — All sprite archetypes: humanoid, flying enemy, ground enemy, collectible item, projectile, tile/platform, decorative, background rendering techniquescharacter-pipeline.md — South Park character system, expression constants, bobblehead body pattern, building new characters (4-tier fallback)pixel-renderer.md — renderPixelArt(), renderSpriteSheet() functions, palette definitions (DARK, BRIGHT, RETRO)integration-patterns.md — Replacing geometric entities with pixel art, animation wiring, multiple enemy types, external asset download, logo/meme integrationProcedural circles and rectangles are fast to scaffold, but players can't tell a bat from a zombie. Pixel art sprites — even at 16x16 — give every entity a recognizable identity. The key insight: pixel art IS code. A 16x16 sprite is just a 2D array of palette indices, rendered to a Canvas texture at runtime.
| Tier | Use for | Source |
|---|---|---|
| South Park characters (default for personalities) | Named people / CEO characters | Character library at assets/characters/ (relative to plugin root) — photo heads composited onto cartoon bodies with expression spritesheets |
| Real images (logos, photos) | Company logos, brand marks when game features a named company | Download to public/assets/ with pixel art fallback |
| Meme/reference images | Source tweet image_url — embed as background, splash, or texture when it enhances thematic identity | Download to public/assets/ |
| Pixel art (fallback) |
South Park characters are the default for named personalities (Altman, Amodei, Musk, Zuckerberg, Nadella, Pichai, Huang, Karpathy, Trump, Biden, Obama). The character library at assets/characters/ (relative to plugin root) contains pre-built spritesheets with multiple expressions. Each spritesheet has frames for: normal (0), happy (1), angry (2), surprised (3). Games load these as Phaser spritesheets and wire expression changes to game events.
Pixel art is the fallback for personality characters not yet in the library and the default for non-personality entities (enemies, items, game objects).
Real logos are preferred for brand identity. When a game features OpenAI, Anthropic, Google, etc., download their logo and use it.
Meme images from the source tweet (image_url in thread.json) should be downloaded and incorporated when they enhance visual identity.
All tiers share the same fallback pattern: if an external asset fails to load, fall back to pixel art.
See character-pipeline.md for the full South Park character system: character library structure, expression constants, expression wiring pattern, bobblehead body pattern, and building new characters (4-tier fallback from full expression build to generative pixel art).
See pixel-renderer.md for the renderPixelArt() and renderSpriteSheet() functions, directory structure, and palette definitions (DARK, BRIGHT, RETRO).
See integration-patterns.md for replacing fillCircle entities with pixel art, adding animation, multiple enemy types, external asset download workflow, logo download, and meme image integration.
When creating pixel art sprites, follow these rules:
Every sprite must be recognizable from its outline alone. At 16x16, details are invisible — shape is everything:
Readability at game scale : Test your sprite at the actual rendered size (grid * scale). A 12x14 sprite at 3x scale is only 36x42 pixels on screen — fine detail is lost. For items and collectibles below 16x16 grid, use bold geometric silhouettes (diamond, star, circle) rather than trying to draw realistic objects. Use a 2px outline (palette index 1) on all edges for small sprites to ensure they pop against any background. Hostile entities (skulls, bombs) should have a fundamentally different silhouette from collectibles (gems, coins) — size, shape, or aspect ratio should differ so players can distinguish them instantly even in peripheral vision.
Every sprite needs at least:
At 16x16, eyes are often just 1-2 pixels. Make them high-contrast:
At small scales, subtle changes read as smooth motion:
| Entity Size | Grid | Scale | Rendered | Screen % (540px) |
|---|---|---|---|---|
| Tiny (pickups, projectiles) | 8x8 | 3 | 24x24px | 4% |
| Small (items, collectibles) | 12x12 | 3 | 36x36px | 7% |
| Medium (enemies, obstacles) | 16x16 | 3 | 48x48px | 9% |
| Large (boss, vehicle) | 24x24 or 32x32 | 3 | 72-96px | 13-18% |
| Personality (named character) | 32x48 | 4 | 128x192px |
Character-driven games (games starring named characters, personalities, or mascots): Use the Personality archetype. The main character should dominate the screen (~35% of canvas height). Use caricature proportions — large head (60%+ of sprite height) with exaggerated features, compact body — for maximum personality at any scale. Adjust PLAYER.WIDTH and PLAYER.HEIGHT in Constants.js to match.
When replacing geometric shapes with pixel art, match the rendered sprite size to the entity's WIDTH/HEIGHT in Constants.js. If the Constants values are too small for the art style, increase them — the sprite and the physics body should agree.
When invoked, follow this process:
package.json to identify the enginesrc/core/Constants.js for entity types, colors, sizesgenerateTexture() or fillCircle callsPresent a table of planned sprites:
| Entity | Type | Grid | Frames | Description |
|---|---|---|---|---|
| Player | Humanoid | 16x16 | 4 (idle + walk) | Cloaked warrior with golden hair |
| Bat | Flying | 16x16 | 2 (wings up/down) | Purple bat with red eyes |
| Zombie | Ground | 16x16 | 2 (shamble) | Green-skinned, arms forward |
| XP Gem | Item | 8x8 | 1 (static + bob tween) | Golden diamond |
| Ground | Tile | 16x16 | 3 variants | Dark earth with speckle variations |
| Gravestone | Decoration |
Choose the appropriate palette for the game's theme.
src/core/PixelRenderer.js with renderPixelArt() and renderSpriteSheet()src/sprites/palette.js with the chosen palettesrc/sprites/ — one per entity categorysrc/sprites/tiles.js with background tile variants and decorative elementsrenderPixelArt() / renderSpriteSheet() instead of fillCircle() + generateTexture()npm run build to confirm no errors/game-creator:qa-game to update visual regression snapshotsWhen adding pixel art to a game, verify:
PixelRenderer.js created in src/core/src/sprites/palette.js — matches game's themerenderPixelArt() or renderSpriteSheet() — no raw fillCircle() leftWeekly Installs
146
Repository
GitHub Stars
28
First Seen
Feb 21, 2026
Security Audits
Gen Agent Trust HubPassSocketPassSnykWarn
Installed on
claude-code109
opencode94
github-copilot93
codex93
amp92
kimi-cli92
Next.js 15+ 最佳实践指南:文件约定、RSC边界、异步模式与性能优化
1,000 周安装
| Non-personality characters, items, game objects, enemies |
| Code-only 2D arrays rendered at runtime |
| 8x12 |
| 1 |
| Stone marker with cross |
| Bones | Decoration | 8x6 | 1 | Scattered bone pile |
setCircle() / setSize() if sprite dimensions changed)