今日速览

  • 独立游戏首选 2D 像素风,AI 生成素材门槛低、产出快,但风格统一是最大难点
  • 风格统一的三大法宝:固定调色板 + 固定角色设定卡 + 固定分辨率/网格
  • Lospec(lospec.com)是像素画调色板宝库,选一套 16-32 色的调色板锁死,全游戏共用
  • Godot 里素材落地靠三件套:Sprite2D(单图)、AnimatedSprite2D/SpriteFrames(动画)、TileMapLayer(关卡地形)
  • AI 图 ≠ 游戏素材:必须经过缩图 + 调色板量化 + 去背景三道后处理

核心学习内容

1. 像素画的基础参数:先定”格子”再画图

像素画不是”小图”,是有明确网格规则的图。开工前定死三件事:

  • 分辨率:主角 16×16 或 32×32 像素;瓦片(tile)16×16;物体 32×32。全项目统一,放大 4-8 倍使用
  • 调色板:从 Lospec 调色板库选一套(如 Sweetie-16、PICO-8 内置 16 色),全游戏只用这套颜色。颜色越少越统一
  • 轮廓与光影:统一描边色(通常是最深色)、统一光源方向(如左上 45°)

2. 用 AI 批量生成:即梦 / Stable Diffusion 的提示词套路

AI 生像素画的提示词黄金公式:

像素画风格描述 + 具体主体 + 视角/动作 + 分辨率与画布 + 调色板指定 + 负面词

示例:“16-bit pixel art of a small forest witch character, full body, idle pose, front view, 32x32 canvas, limited palette, flat shading, no anti-aliasing, no text, white background”。关键技巧:每张图都贴同一个风格前缀(角色名+画风+调色板),这是风格统一的根。

3. 后处理三件套:AI 图变游戏素材

AI 出的图通常带杂质、颜色溢出,直接进游戏会”脏”。标准流程:

  1. 缩图:等比缩到目标分辨率(如 512→32px),用最近邻采样(nearest neighbor),别用平滑缩放
  2. 调色板量化:把颜色强制映射到选定调色板(可用 Aseprite 的调色板功能,或 Python/PIL 脚本)
  3. 抠背景/修边:白底图在 Godot 里用透明度导入设置处理,或交给 AI 修图

4. Godot 落地:TileMapLayer 铺关卡

Godot 4.x 用 TileSet + TileMapLayer 管理瓦片:把 AI 生成的瓦片图切成 TileSet,就能在编辑器里像刷墙一样画关卡,还能直接给瓦片加碰撞形状、导航区域(角色走不到墙里、怪物能寻路)。多关卡复用同一 TileSet 时,记得把它存成外部资源(Save As),改一次全关卡生效——这也倒逼你保持素材统一。

🎯 DeepSeek 提示词

提示词 1:AI 绘图提示词生成器(输入游戏风格,输出即梦/SD 可直接用的提示词)

你是一位像素画美术总监。请根据下面的游戏风格描述,生成 5 条可用于即梦/Stable Diffusion 的像素画绘图提示词,分别对应:主角待机、敌人、地面瓦片、树木装饰、UI 图标。

要求:
1. 每条提示词都要包含:16-bit pixel art 画风、32x32 画布(瓦片为 16x16)、指定调色板色值(用十六进制列出主色、辅色、描边色)、正面描述在前、负面提示词在后(负面词必须包含 anti-aliasing, blur, text, watermark, messy outline)
2. 5 条提示词共用完全相同的风格前缀与调色板,确保素材风格统一
3. 输出格式:每条提示词单独成段,先写"用途:xxx",再写提示词原文,最后空一行

游戏风格描述:{在这里粘贴你的游戏风格,如"治愈系森林探险,主角是小女巫,暖色调"}

用法:把 {游戏风格描述} 换成你的设定,一次性拿到全套提示词;以后每次生成新素材都套用输出里的风格前缀。

提示词 2:Godot 像素画角色动画脚本(SpriteFrames 播放)

你是资深 Godot 4 游戏程序员。请用 GDScript 为 2D 像素风主角写一个动画控制器脚本,挂在 CharacterBody2D 上,节点结构为 AnimatedSprite2D 子节点。

需求:
1. 动画名与帧安排:idle(待机 4 帧)、walk(走路 4 帧,循环)、jump(跳跃 2 帧,不循环)
2. 用 Input.get_axis("move_left","move_right") 读取水平输入,站立播 idle,移动播 walk 并根据方向用 flip_h 翻转
3. 检测 is_on_floor() 与垂直速度判断跳跃/下落,播 jump
4. 注释写清楚每个 block 的作用;GDScript 语法必须与 Godot 4.x 兼容(如 @onready、extends CharacterBody2D)
5. 输出完整可运行的脚本代码,不要省略,不要用伪代码

用法:把这段给 DeepSeek,拿到脚本后贴在角色脚本里;AnimatedSprite2D 的 SpriteFrames 资源记得在编辑器里把 AI 生成的帧图拖进去。

提示词 3:调色板量化工具(把 AI 大图批量转成统一的像素素材)

你是一位工具开发工程师。请用 Python 写一个命令行脚本 batch_quantize.py,实现把一批 AI 生成的图片批量转成指定调色板的像素画素材。

需求:
1. 输入:文件夹路径、目标调色板(十六进制色值列表,如 "#1a1c2c,#5d275d,#b13e53,#ef7d57")、目标分辨率(如 32)
2. 处理流程:读取文件夹内所有 PNG → 最近邻缩放(PIL 的 Image.NEAREST)到目标分辨率 → 把每个像素颜色映射到调色板中最近的颜色(用 RGB 欧氏距离)→ 覆盖原图或输出到 out/ 目录
3. 依赖只用 Pillow;命令行参数用 argparse;每个文件处理完打印文件名和耗时
4. 输出完整可运行代码 + 3 行使用示例命令

用法:AI 素材一多,手动一张张改色不现实;这个脚本一键批量统一,之后用 Aseprite 微调即可。

学习心得

对「用 DeepSeek 做一款 Steam 游戏」来说,美术是零基础最容易卡壳的环节,但也是 AI 加成最大的环节:DeepSeek 负责”想”(生成提示词、写处理脚本),即梦/SD 负责”画”,Godot 负责”拼”。只要把调色板和风格前缀锁死,几十张素材也能保持同一画风,商店页面截图才拿得出手。今天这套管线(提示词→生成→量化→Godot 集成)可以直接照搬进第一个 Demo。

明日关注

  • Godot 输入系统详解:InputMap、键盘/手柄映射,让角色真正”动起来”
  • 用 DeepSeek 写一个完整的角色移动 + 重力 + 跳跃脚本,跑通第一个可玩 Demo
  • 整理 3 张 AI 生成素材,实际跑一遍量化脚本,验证风格统一效果

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