今日速览

  1. AI 出图最大的问题不是”不好看”,是”不像一套”。单张图都挺美,摆进同一个场景就露馅:这张光从左上,那张光从右下;这张 3 头身,那张 6 头身;这张 12 色,那张 200 色。玩家的第一反应是”素材商店拼的”。
  2. 解决办法不是更强的模型,是一份「风格圣经」(Style Bible)。把像素密度、调色板、光源方向、轮廓规则、视角这 5 件事写死,之后每次出图只换主体,不换参数。
  3. 别指望 AI 直接吐出标准 32×32 像素画。当前模型对”精确到像素”的控制力很弱,实用路线是:AI 出 512~1024 的概念小图 → 收色 → 最近邻缩到目标尺寸 → Aseprite 手修 10 分钟。省的是创意和试错时间,不是省掉手。
  4. Godot 侧必须配三件事:默认纹理过滤改 Nearest(否则像素被拉成糊)、导入用 Lossless 且关 Mipmaps、拉伸模式用整数缩放。少一件,前面所有美术努力都会在屏幕上变成马赛克汤。
  5. 一致性可以用 checklist 量化。把 30 张图拼成一张 contact sheet,按”调色板重合率 / 光源方向 / 像素密度 / 轮廓宽度 / 留白比例”五项各打 1~5 分,低于 3 分的重做——比”我感觉不太对”高效得多。

核心学习内容

一、先写风格圣经:5 个必须锁死的参数

风格圣经不是散文,是一份能直接喂给 AI 的参数表。一个人做游戏,写 20 行就够:

参数锁定值(示例)为什么必须锁
像素密度角色 32×32、地块 16×16、道具 16×16密度不一致=视觉上”大小错乱”,这是最刺眼的破绽
画布/构图正侧视、脚下居中、四周留 2px 透明边留白统一,摆进场景才不会忽大忽小
调色板16 色固定 hex,如 #1a1a2e #16213e #0f3460 #e94560 #f5f5f5色数是像素画”像像素画”的根本,也是最快的一致性锚点
光源左上 45°,高光在最上/最左边缘,阴影落在右下一张图反光就整场景崩
轮廓1px 深色描边(用调色板里最深的色,不用纯黑),内部无描边描边宽度统一=物体”同材质”

关键认知:风格 = 约束的集合,不是形容词的集合。你写”可爱、复古、温馨”,AI 每次理解都不同;你写”16 色、左上 45° 光、1px #1a1a2e 描边、32×32 画布、无抗锯齿”,它每次理解都一样。

二、调色板收拢:把 200 色压到 16 色

这是性价比最高的一步。流程:

  1. 先生成 3~5 张”风格样张”,挑出你最满意的一张当 reference(风格锚)。
  2. 从这张图里抽 16 色(Aseprite 的 Sprite → Color Mode → Indexed,或 Python + Pillow 做中位切分量化)。
  3. 之后所有图都量化到同一份调色板。这一步会把”AI 味”(脏渐变、半透明噪点)直接抹掉,同时强制统一。

调色板量化用 20 行 Python 就能跑完整个文件夹,不用装 Photoshop:

# quantize_to_palette.py — 把目录内 PNG 统一量化到固定 16 色
from PIL import Image
import sys, pathlib

PALETTE = [(26,26,46),(22,33,62),(15,52,96),(233,69,96),
           (245,245,245),(255,209,102),(6,214,160),(17,138,178)]  # 补到 16 色
PAL_IMG = Image.new("P", (1, 1))
flat = [c for rgb in PALETTE for c in rgb] + [0]*(768 - len(PALETTE)*3)
PAL_IMG.putpalette(flat)

def convert(p: pathlib.Path):
    im = Image.open(p).convert("RGBA")
    alpha = im.getchannel("A")
    q = im.convert("RGB").quantize(palette=PAL_IMG, dither=Image.Dither.NONE)
    q = q.convert("RGBA"); q.putalpha(alpha)
    q.save(p)

for f in pathlib.Path(sys.argv[1]).glob("*.png"):
    convert(f); print("done", f.name)

注意 dither=NONE:像素画不要抖动,抖动会产生”假色”,破坏了 16 色的干净感。

三、尺寸与 Godot 侧:让像素真的”是像素”

AI 出的图通常 1024×1024。不要直接缩到 32×32——细节会糊成一坨。正确做法是:先缩到 128×128(LANCZOS),再缩到 32×32(NEAREST),最后手修。或者反过来,让 AI 出”看起来像低分辨率”的图,再由你重画形状。

Godot 4 的三处设置,缺一不可:

  • 项目设置 → Rendering → Textures → Canvas Textures → Default Texture Filter = Nearest(或单个节点把 texture_filter 设为 Nearest)。
  • 导入面板:Compress Mode = Lossless,Mipmaps = 关(勾上会让远处的像素画变糊)。
  • 项目设置 → Display → Window → Stretch:Mode = canvas_items,Aspect = keep,Scale Mode = integer(1080p 下按 2 倍、3 倍整放,避免像素被非整数缩放撕裂)。

再加一条:项目设置里开 2D 的像素对齐(snap 2D transforms to pixel / snap 2D vertices to pixel),否则带小数的 position 会让角色边缘每帧抖动,像在”呼吸”。

Godot 的导入文档说得很清楚:PNG 是 8 位每通道、支持透明——对像素画够用;SVG 会在导入时栅格化,不适合像素画(会得到抗锯齿边缘)。所以统一用 PNG,禁止 SVG,也写进风格圣经。

🎯 DeepSeek 提示词

用法:先跑第 1 条拿到风格圣经,存成 assets/style-bible.md;之后每次做新素材,把风格圣经原文粘贴进第 2 条。第 3 条用来做批量自检。

提示词 1|风格圣经生成器(一次性,产出可复用资产)

你是资深像素美术总监,带过 3 人小队完成过 Steam 上架的 2D 游戏。

我的项目:{一句话描述,如"俯视角 2D 农场+战斗,像素风,温暖但不幼稚"}。
目标平台:PC / Steam Deck,基准分辨率 1920×1080。

请输出一份《像素风格圣经》,严格按以下结构,全部用可量化的参数,不要写"可爱""复古"这类形容词:

1. 尺寸规范:角色/地块/道具/UI 图标各自的画布像素尺寸,以及它们在游戏世界中的 1x 缩放关系。
2. 调色板:16 个 hex 色值,按"深→浅"排列,并标注每个色的用途(描边阴影/主体暗部/主体中间调/高光/强调色/危险提示等)。必须给出完整 16 个,不要省略。
3. 光照:光源方向(用"几点钟方向"表述)、高光落在哪条边、阴影落在哪条边、是否允许双光源。
4. 轮廓:描边宽度(px)、描边颜色取调色板第几号、内部是否需要线条、是否允许纯黑。
5. 视角与构图:正侧视/俯视 45°/正交,角色脚下对齐方式,四周透明留白 px 数。
6. 材质语言:金属/木头/石头/布料在 16 色内各自的明暗层数(如各 3 层)。

最后附一段 40 词以内的英文出图 prompt 骨架(pixel art, ..., no antialiasing, no gradients, no blur),我之后每次只替换主体描述。

提示词 2|批量素材生成器(保证同一套风格)

你是像素美术,严格遵循我给的风格圣经,不允许自由发挥。

【风格圣经】
{把提示词 1 的输出原样粘贴}

【今日素材清单】
{如:木箱、铁箱、药水箱、上锁的宝箱、破损的木箱}

任务:为清单中每一个物品,输出一条可粘贴到文生图工具里的英文 prompt。要求:
- 每条 prompt 必须包含:主体描述 + 视角 + 画布尺寸 + 光源方向 + 调色板色值(列 hex)+ "1px dark outline + no antialiasing + no gradients + transparent background + centered + 2px margin"。
- 所有 prompt 的"风格段"必须逐字相同,只允许"主体段"不同——这样才是一套。
- 每条 prompt 后附一行中文说明:这个物品的重点辨识特征是什么(玩家在 32×32 下靠什么认出它)。
- 同时给出 5 个必须避开的负面词(如 busy detail, gradient shading, photorealism)。

输出格式:按物品逐条列出,用 ``` 代码块包住 prompt,方便我复制。不要额外解释。

提示词 3|一致性审查员(把”感觉不对”变成待办清单)

你是像素美术质检员。我会给你每张素材的描述数据(不是图片),你要按 checklist 打分并给出修正动作。

【风格圣经摘要】像素密度 32×32;16 色调色板(主色 #1a1a2e 描边、#e94560 强调);光源左上 45°;1px 描边;正侧视;四周留白 2px。

【素材数据】
{逐条粘贴,如:
1. 木箱:48×48,用了 22 色,光源左上,描边 2px,留白 0px
2. 铁箱:32×32,用了 14 色,光源右上,描边 1px,留白 2px
3. 药水箱:32×32,16 色,光源左上,描边 1px,留白 2px
...}

请输出三部分:
A. 打分表:每张图在"尺寸/色数/光源/描边/留白"五项各打 1~5 分,并写一行理由。
B. 不合格清单:只列总分低于 20 的,按"改动成本从低到高"排序(先改参数能解决的,再改重画的)。
C. 重做 prompt:给每张不合格素材一条修正后的英文 prompt,明确指出要修哪个参数。

约束:不要建议"整体重画",除非五项里有 3 项以上不合格;不要输出我给的原始数据。

学习心得

今天最有用的一句话是:风格统一是工程问题,不是审美问题。审美靠眼睛,统一靠参数。AI 出图的能力已经足够做出能上架的画面,但它没有”记忆”,每次调用都是重新开始——所以记忆必须由你提供,形式就是那份 20 行的风格圣经。

对”用 DeepSeek 做一款 Steam 游戏”这个目标来说,这条流水线的意义在于把美术从”无限期拖延项”变成”每天 30 分钟的可交付项”:写完圣经(1 小时,一次性),之后每批素材就是”列清单 → 出 prompt → 量化 → 缩图 → 手修”。DeepSeek 在这里的角色不是画师,是规格书的撰写者和质检员——它最擅长的恰恰是把模糊要求翻译成可执行参数,这正好是独立开发者最缺的那一环。

顺便提醒自己:Steam 商店页的胶囊图(capsule)不属于像素风范畴,别拿 32×32 素材硬放大,那是另一套规范,改天单独学。

明日关注

  • 用提示词 1 真的产出 style-bible.md,锁死 16 色,并在 Godot 里建一个 Assets/Palette 目录存下 .png 色板参考图。
  • 跑一次 Python 量化脚本,把已有素材全部压到同一调色板,对比前后截图(这一步最容易看出”AI 味”消失)。
  • 查 Steamworks 文档里的 capsule 图尺寸规范(Header 460×215、Small 231×87 等),为商店页素材另建一份规范,别和游戏内像素风混用。

本文由自动化学习流水线每日生成,坚持即学即记。