mirror of
https://github.com/NanmiCoder/claude-code-haha.git
synced 2026-10-10 11:53:10 +08:00
feat(desktop): let a nine-row action sheet become a pet instead of demanding an exact atlas
Importing an animated pet required a file that was exactly 1536x2288, laid out as 88 seamless cells, with the last two rows holding sixteen distinct gaze angles. No image model emits that. Whatever a user got back from Jimeng or ChatGPT was some fixed size like 1024x1536, so the path ended at "the animation atlas must be exactly 1536x2288 pixels" every time. The third card was worse: "AI-generate full animation" was hardcoded `disabled`, so the one entry point named after what people actually wanted to do was dead. The fix was already in the tree. `scripts/assemble-generated-pet-atlas.py` landed in the same commit as the four built-in pets, which is to say the built-ins were produced this way — it takes an action sheet at any size, slices it on an 8x9 grid, fits each cell to 192x208, mirrors the run row to make run-left, and reuses rows to reach eleven. That capability was never wired to anything a user could reach. `petAtlasNormalize.ts` reimplements it on a canvas in the renderer, so an author draws nine rows and the app derives the rest. Verified against the reference assembler by reversing dada-code's atlas into a nine-row sheet and re-normalizing it: every difference lands on semi-transparent antialiased edges (2314 pixels, max channel delta 14/255) and opaque regions are identical. That residue is canvas premultiplied-alpha round-tripping, not a slicing bug. Three contract details worth stating. Row frame counts are now derived from `PET_ANIMATION_DEFINITIONS` rather than typed out a fourth time; they come out equal to the assembler's `(6,8,8,4,5,8,6,6,6,8,8)`. A sheet already at 1536x2288 passes through byte-for-byte instead of being resliced, because resampling finished artwork buys nothing. And since the validator never inspects the alpha channel, a flattened white background used to import happily and render as a rectangle on the desktop — the renderer now rejects sheets whose atlas is under 5% transparent (the built-ins sit near 78%) with a message that names the actual problem. The copy stops describing the implementation. "Animate one image" and "Import professional animation atlas / exact 1536x2288 v2 PNG" become "use a picture you already have" and "I already have an action sheet"; the dead AI card becomes a three-step walkthrough carrying a copyable prompt, a labelled 8x9 reference grid that can be saved locally, and the checks that catch the common failures. Reference images are generated by a script rather than hand- placed, in both languages. All five locales move together. Caught while reviewing the real dialog in Electron: after finishing the walkthrough the form heading fell through to the atlas branch and announced "I already have an action sheet" to someone who had just been walked through drawing one. Covered by a test now. Not done: docs/images/desktop_ui/15_pet_create_methods.png still shows the old dialog and needs a fresh capture from a running app to match the styling of the shots around it.
This commit is contained in:
@@ -155,7 +155,7 @@
|
||||
|
||||
任务面板只显示正在工作、等待处理或失败的活跃任务;没有活跃任务时会自动隐藏。右键关闭宠物不会停止正在执行的任务,下次可以回到「设置 → 宠物」重新开启。
|
||||
|
||||
还可以通过「添加宠物」导入透明 PNG / WebP 单图,或导入符合规格的 v2 动画图集。导入在本地完成,不会调用当前聊天模型;AI 生成完整动画目前不可用。图片要求、创建步骤、存储位置和故障排查见[桌面宠物使用指南](./pets.md)。
|
||||
还可以通过「添加宠物」做一只自己的:用一张透明 PNG / WebP 现成图,或按弹窗里的提示词让任意画图 AI 生成一张动作表再选进来(尺寸会自动对齐)。全程在本地完成,不会调用当前聊天模型,也不消耗对话额度。提示词、动作表模板、图片要求和故障排查见[桌面宠物使用指南](./pets.md)。
|
||||
|
||||
宠物仅在 Electron 桌面端运行,不会出现在 H5 页面中。窗口置顶、拖动与多显示器行为仍受操作系统窗口管理影响。
|
||||
|
||||
|
||||
@@ -182,13 +182,15 @@
|
||||
|
||||
### 添加自己的宠物
|
||||
|
||||

|
||||

|
||||
|
||||
点击「添加宠物」,填写宠物 ID、显示名称和描述,再选择创建方式;前两种当前可用:
|
||||
点击「添加宠物」,填写宠物 ID、显示名称和描述,再选择做法;三种都可用:
|
||||
|
||||
- **一张图片制作轻动画**:导入透明 PNG / WebP,由应用在本地添加呼吸、漂浮和任务状态等轻动画。
|
||||
- **专业动画图集**:导入已经制作好的 `1536 × 2288` v2 图集,使用完整逐帧动作。
|
||||
- **AI 生成完整动画**:当前不可用,需要独立的图片生成服务,不会调用当前聊天模型。
|
||||
- **用一张现成的图**:导入透明 PNG / WebP,由应用在本地添加呼吸、漂浮和任务状态等轻动画。这种宠物不会跑动,也不会跟随鼠标。
|
||||
- **用 AI 画一只会跑会跳的**:弹窗内给出可复制的提示词、对照模板和检查清单,用任意能画图的 AI 产出一张 8 列 × 9 行的动作表,再选进来。
|
||||
- **我已经有动作图了**:跳过教程,直接导入已经画好的动作表或成品图集。
|
||||
|
||||
后两种路径导入时会在本地自动切格、缩放对齐、镜像补出向左跑的一帧,因此源图尺寸不必精确;已经是 `1536 × 2288` 的成品图集会原样保留。
|
||||
|
||||
创建成功后,新宠物会自动被选中。自定义宠物保存在本机 `~/.claude/cc-haha/pets`(设置 `CLAUDE_CONFIG_DIR` 时跟随该目录);当前没有界面内删除按钮,需要通过「打开文件夹」移除对应宠物包后再刷新。
|
||||
|
||||
|
||||
@@ -199,7 +199,7 @@ Windows 签名不是当前 Release 的强制发布条件。确认安装包来自
|
||||
|
||||
### 单张图片能生成完整宠物动画吗?
|
||||
|
||||
不能。透明 PNG / WebP 单图只会在本地添加呼吸、漂浮和状态等轻动画。完整逐帧动作需要符合规格的 v2 动画图集;AI 生成路径需要单独的图片生成服务,不会调用当前聊天模型。
|
||||
不能。透明 PNG / WebP 单图只会在本地添加呼吸、漂浮和状态等轻动画。完整逐帧动作需要一张 8 列 × 9 行的动作表——可以用「用 AI 画一只会跑会跳的」路径,按弹窗里的提示词让任意画图 AI 生成,再选进来;导入时会自动切格对齐。
|
||||
|
||||
宠物只运行在 Electron 桌面端,不显示在 H5。
|
||||
|
||||
@@ -220,7 +220,8 @@ Windows 签名不是当前 Release 的强制发布条件。确认安装包来自
|
||||
逐项检查:
|
||||
|
||||
- 单图必须是 PNG 或 WebP,单边为 32–4096 像素,文件不超过 8 MB,总像素不超过 16,777,216。
|
||||
- v2 动画图集必须恰好为 1536×2288 像素,并符合 8 列 × 11 行的帧布局。
|
||||
- 动作表必须是 8 列 × 9 行的布局;尺寸不必精确,导入时会自动切格缩放。已经是 1536×2288 的成品图集会原样保留。
|
||||
- 动作表必须有透明背景。白底或彩底会被拒绝,因为宠物会在桌面上显示成一个方块。
|
||||
- 宠物 ID 最多 73 个字符,只能包含小写字母、数字和单个连字符,且不能与已有 ID 重复。
|
||||
- 显示名称与描述不能为空。
|
||||
|
||||
@@ -238,11 +239,9 @@ Windows 签名不是当前 Release 的强制发布条件。确认安装包来自
|
||||
|
||||
只删除 `${CLAUDE_CONFIG_DIR:-~/.claude}/cc-haha/pets` 下确认属于该宠物的目录,不要删除整个 `~/.claude`。内置宠物随应用提供,不在这里删除。
|
||||
|
||||
### 为什么“AI 生成完整动画”不可用?
|
||||
### 「用 AI 画一只会跑会跳的」会消耗我的对话额度吗?
|
||||
|
||||
该入口需要单独配置图片生成服务,当前聊天模型不会被拿来生成宠物图片或动作帧。未配置对应服务时,入口会明确显示不可用。
|
||||
|
||||
现在可以使用推荐的单图轻动画,或导入已经制作好的 v2 动画图集。
|
||||
不会。这条路径不调用当前会话选择的聊天模型,应用也不会替你请求任何图片生成服务。它给你的是一段提示词和一张对照模板,图由你自己在任意画图工具里生成,再把文件选进来;整理和导入都在本机完成。
|
||||
|
||||
### 能在宠物窗口里批准权限或直接回复吗?
|
||||
|
||||
|
||||
+99
-19
@@ -55,9 +55,9 @@
|
||||
|
||||
## 添加自定义宠物
|
||||
|
||||
在「你的宠物」右侧点击「添加宠物」,可以选择两条本地导入路径。
|
||||
在「你的宠物」右侧点击「添加宠物」,可以选择三种做法。图片全程在你自己的电脑上处理,不会上传,也不会消耗对话额度。
|
||||
|
||||

|
||||

|
||||
|
||||
无论选择哪种方式,都需要填写:
|
||||
|
||||
@@ -69,9 +69,9 @@
|
||||
|
||||

|
||||
|
||||
### 用一张图片制作轻动画
|
||||
### 做法一:用一张现成的图
|
||||
|
||||
这是普通用户最容易使用的方式。选择一张透明背景的静态 PNG 或 WebP,应用会在本地添加呼吸、漂浮和任务状态等轻动画。
|
||||
最省事,大约一分钟。选一张背景透明的静态 PNG 或 WebP,应用会在本地加上呼吸、漂浮和任务状态等轻动画。
|
||||
|
||||
图片需要满足:
|
||||
|
||||
@@ -80,29 +80,109 @@
|
||||
- 总像素数不超过 `16,777,216`。
|
||||
- 文件大小不超过 `8 MB`。
|
||||
|
||||
单图轻动画不是 AI 生成的逐帧动画,也不会调用当前聊天模型。
|
||||
这种宠物只会轻轻晃动,**不会真的跑起来,也不会跟着鼠标转头**。想要完整动作,用下面的做法二。
|
||||
|
||||
### 导入 v2 动画图集
|
||||
### 做法二:用 AI 画一只会跑会跳的
|
||||
|
||||
已经制作好完整动作帧时,可以导入 v2 动画图集。图片必须满足:
|
||||
大约十分钟,需要一个能画图的 AI。弹窗里会把提示词、对照模板和检查清单都列出来,跟着走即可。
|
||||
|
||||
| 项目 | 规格 |
|
||||
|------|------|
|
||||
| 格式 | 静态、透明背景的 PNG 或 WebP |
|
||||
| 总尺寸 | 精确为 `1536 × 2288` |
|
||||
| 网格 | `8` 列 × `11` 行,无单元格间距 |
|
||||
| 单格尺寸 | `192 × 208` |
|
||||
#### 第一步:让 AI 画一张动作表
|
||||
|
||||
动作行的顺序依次是:待机、向右跑、向左跑、挥手、跳跃、失败、等待、工作、复核,以及最后两行的 16 个视线方向。
|
||||
打开任意能画图的 AI(即梦、Nano Banana、ChatGPT 画图、Midjourney、Stable Diffusion 都可以;这里只是举例,不构成推荐),把下面这段整个发给它,并把「角色」两行换成你想要的样子:
|
||||
|
||||
「复核」行属于图集格式的预留动作,不代表当前运行时会自动显示一个独立的复核状态。
|
||||
```text
|
||||
帮我画一张游戏角色动作表(sprite sheet)。
|
||||
|
||||
【角色】
|
||||
一只圆头圆脑的橘色小猫,戴着蓝色小围巾,Q 版三头身,
|
||||
3D 卡通渲染,表面柔和有光泽,颜色明快。
|
||||
(把这两行换成你想要的角色,写得越具体越好)
|
||||
|
||||
【整张图的要求】
|
||||
· 背景完全透明,不要背景色、不要格子线、不要文字、不要投影
|
||||
· 整张图平均分成 8 列 × 9 行,一共 72 个一样大的方格
|
||||
· 每格放一个动作帧,角色在格子里居中,四周留一点空隙
|
||||
· 所有格子里必须是同一只角色,体型、配色、画风完全一致
|
||||
· 用不到的格子保持完全透明
|
||||
|
||||
【每一行画什么】
|
||||
第 1 行 前 6 格:站着不动,轻微呼吸起伏
|
||||
第 2 行 全 8 格:向右跑的完整循环,角色始终朝右
|
||||
第 3 行 前 4 格:抬起手挥手打招呼
|
||||
第 4 行 前 5 格:下蹲、起跳、落地
|
||||
第 5 行 全 8 格:失落沮丧,垂头叹气
|
||||
第 6 行 前 6 格:原地等待,东张西望
|
||||
第 7 行 前 6 格:低头忙碌工作
|
||||
第 8 行 全 8 格:头和视线从正上方开始向右慢慢转,经过右上、右边、右下,转到接近正下方
|
||||
第 9 行 全 8 格:接着上一行,从正下方继续向左转,经过左下、左边、左上,转回接近正上方
|
||||
```
|
||||
|
||||
一次画不好很正常。可以让它重画,或者说「角色保持不变,只重画第 2 行」。
|
||||
|
||||
#### 第二步:对照模板检查
|
||||
|
||||

|
||||
|
||||
图出来以后,先看三件事,不对就让 AI 重画:
|
||||
|
||||
1. **背景是透空的,不是白底。** 白底会在桌面上变成一个方块,这是最常见的问题。
|
||||
2. **横着 8 格、竖着 9 行**,每格一个动作。
|
||||
3. **九行里从头到尾是同一只**,没有中途换脸、换配色、换体型。
|
||||
|
||||
弹窗里点「把模板存下来」可以把这张模板保存到本地,方便对照排图。
|
||||
|
||||
#### 第三步:选进来
|
||||
|
||||
填好 ID、名称和描述,选中刚才那张图即可。**尺寸不用自己调**,详见下面的「尺寸会自动对齐」。
|
||||
|
||||
### 做法三:我已经有动作图了
|
||||
|
||||
已经画好动作表、或者手里有做好的成品图集时,用这条路径可以跳过教程,直接填表选图。校验规则和做法二完全一致。
|
||||
|
||||
### 动作表要画什么
|
||||
|
||||
作者只需要画 **9 行**,其余两行由应用补齐:
|
||||
|
||||
| 行 | 内容 | 需要的帧数 |
|
||||
|----|------|-----------|
|
||||
| 1 | 待机:站着不动,轻微呼吸起伏 | 6 |
|
||||
| 2 | 向右跑:完整跑步循环,始终朝右 | 8 |
|
||||
| 3 | 挥手:抬手打招呼 | 4 |
|
||||
| 4 | 跳跃:下蹲 → 起跳 → 落地 | 5 |
|
||||
| 5 | 失败:沮丧、垂头、叹气 | 8 |
|
||||
| 6 | 等待:东张西望、原地踱步 | 6 |
|
||||
| 7 | 工作:低头忙碌 | 6 |
|
||||
| 8 | 视线上半圈:从正上方顺时针转到接近正下方 | 8 |
|
||||
| 9 | 视线下半圈:从正下方继续转回接近正上方 | 8 |
|
||||
|
||||
几点说明:
|
||||
|
||||
- **「向左跑」不用画。** 应用会把第 2 行水平镜像,自动生成向左跑的帧。
|
||||
- **最后两行懒得画也行。** 直接重复待机的第一帧即可,宠物只是不会跟着鼠标转头,其他动作照常。
|
||||
- 每行右侧用不到的格子保持完全透明。
|
||||
|
||||
### 尺寸会自动对齐
|
||||
|
||||
选图之后,应用会在本地把动作表整理成运行时需要的 `1536 × 2288` 图集:按 8 列 × 9 行切格、等比缩放到每格 `192 × 208`、把角色在格子里居中、镜像补出向左跑的一行,并补齐运行时用到的其余行。
|
||||
|
||||
因此:
|
||||
|
||||
- **长宽不必精确。** AI 出的常见尺寸(如 `1024 × 1152`)都可以,比例接近 8:9 时效果最好。参考尺寸是 `1536 × 1872`。
|
||||
- **已经是 `1536 × 2288` 的成品图集会原样保留**,不会被重新缩放。
|
||||
- 整理后的文件不超过 `8 MB`;超出时会自动改用 WebP 编码。
|
||||
|
||||
### 常见问题
|
||||
|
||||
| 提示 | 原因和处理 |
|
||||
|------|-----------|
|
||||
| 这张图没有透明背景…… | 图是白底或彩底导出的。让 AI 重新导出透明背景的 PNG,或用抠图工具去掉背景。 |
|
||||
| 这张图没法按 8 列 × 9 行切开 | 行列数对不上。确认横着 8 格、竖着 9 行,或改用 `1536 × 2288` 的成品图集。 |
|
||||
| 读不出这张图 | 选到了动图(APNG / 动态 WebP)或损坏文件。换一张静态 PNG 或 WebP。 |
|
||||
| 图片太大了 | 原图超过 8 MB。先压缩再选,或让 AI 输出小一点的尺寸。 |
|
||||
| 已经有一只用这个 ID 的宠物了 | 换一个宠物 ID,或先删掉原来那只(见下面的「存储与删除」)。 |
|
||||
|
||||
尺寸、格式或图像内容不符合要求时,应用会拒绝创建并显示对应错误,不会把无效图片加入宠物列表。
|
||||
|
||||
### AI 生成为什么不可选
|
||||
|
||||
「AI 生成完整动画」目前只是预留入口,需要单独配置图片生成服务,当前版本还不能在这里直接使用。它不会自动调用当前会话选择的 Claude、ChatGPT、Grok 或其他聊天模型。
|
||||
|
||||
## 存储与删除
|
||||
|
||||
自定义宠物包默认保存在:
|
||||
|
||||
@@ -123,7 +123,7 @@ Open **Settings → Pets** and enable **Show desktop pet**.
|
||||
3. Enable the active-task panel if you want it to open automatically while a task is running. The panel remains hidden when no task is active.
|
||||
4. Hover for a small reaction, click the pet to focus the main window, or drag it to another position. Right-click the pet to close it; return to **Settings → Pets** to show it again.
|
||||
|
||||
Select **Add pet** to make a lightweight local animation from a transparent PNG or WebP, or import a supported `1536×2288` v2 animation atlas. The AI full-animation option is currently unavailable. Pets run only in the Electron desktop app and are not supported in H5.
|
||||
Select **Add pet** to make one of your own: use a transparent PNG or WebP you already have, or follow the in-dialog prompt to have any drawing AI produce an action sheet and pick that (sizes are aligned for you). Everything happens locally, without calling the current chat model or using chat quota. Pets run only in the Electron desktop app and are not supported in H5.
|
||||
|
||||
Follow the complete [Desktop Pet Guide](./pets.md) for custom-image requirements, task states, and interaction details.
|
||||
|
||||
|
||||
@@ -110,11 +110,13 @@ The window also supports direct interaction:
|
||||
|
||||
Select **Add pet** to choose a local creation path.
|
||||
|
||||

|
||||

|
||||
|
||||
- **Animate one image** turns a static transparent PNG or WebP into a lightweight locally animated pet.
|
||||
- **Import professional animation atlas** accepts the supported `1536×2288` v2 sprite-sheet format.
|
||||
- **Generate full animation with AI** is visible for context but is currently unavailable.
|
||||
- **Use a picture you already have** turns a static transparent PNG or WebP into a lightweight locally animated pet. It will not run or track the cursor.
|
||||
- **Draw one with AI that runs and jumps** supplies a copyable prompt, a reference template and a checklist, so any drawing AI can produce an 8-column × 9-row action sheet you then pick.
|
||||
- **I already have an action sheet** skips the walkthrough and imports a sheet or finished atlas directly.
|
||||
|
||||
The last two paths slice, rescale and mirror the sheet locally on import, so exact source dimensions are not required; a finished `1536×2288` atlas is kept as-is.
|
||||
|
||||
Imports stay local and do not call the selected chat model. After a successful import, the custom companion appears under **Your pets** and becomes the selected pet.
|
||||
|
||||
|
||||
@@ -92,7 +92,8 @@ A custom pet made from one image receives lightweight breathing, floating, and t
|
||||
Check each requirement:
|
||||
|
||||
- A single image must be PNG or WebP, 32–4096 pixels on each side, no larger than 8 MB, and no more than 16,777,216 total pixels.
|
||||
- A v2 animation atlas must be exactly 1536×2288 pixels and use the documented 8-column × 11-row frame layout.
|
||||
- An action sheet must use an 8-column × 9-row layout. Exact pixel dimensions are not required — it is sliced and rescaled on import. A finished 1536×2288 atlas is kept as-is.
|
||||
- An action sheet must have a transparent background. White or coloured backdrops are rejected because the pet would render as a square on the desktop.
|
||||
- The pet ID may be at most 73 characters, contain only lowercase letters, numbers, and single hyphens, and must not duplicate an existing ID.
|
||||
- Display name and description are required.
|
||||
|
||||
@@ -110,11 +111,9 @@ There is no in-app delete button in the current version. Select a built-in pet f
|
||||
|
||||
Delete only the confirmed pet directory under `${CLAUDE_CONFIG_DIR:-~/.claude}/cc-haha/pets`. Do not delete the entire `~/.claude` directory. Built-in pets ship with the app and are not removed here.
|
||||
|
||||
### Why is “Generate full animation with AI” unavailable?
|
||||
### Does “Draw one with AI that runs and jumps” use my chat quota?
|
||||
|
||||
That path requires a separately configured image-generation service. The current chat model is not used to generate pet artwork or action frames, so the option is explicitly unavailable when no suitable service is configured.
|
||||
|
||||
You can use the recommended single-image animation path now, or import a prepared v2 animation atlas.
|
||||
No. That path never calls the chat model selected for the session, and the app does not request any image-generation service on your behalf. It gives you a prompt and a reference template; you generate the picture in whichever drawing tool you like and then pick the file. Assembly and import both happen on your own machine.
|
||||
|
||||
### Can the pet approve permissions or send replies?
|
||||
|
||||
|
||||
+101
-22
@@ -40,9 +40,9 @@ The animation switch affects the pet only. Turning it off does not stop sessions
|
||||
|
||||
## Create a custom pet
|
||||
|
||||
Select **Add pet** under **Your pets**. The creation dialog offers two working local import paths and shows a third, currently unavailable AI path.
|
||||
Select **Add pet** under **Your pets**. The dialog offers three ways to make one. Images are processed entirely on your own computer: nothing is uploaded, and no chat quota is used.
|
||||
|
||||

|
||||

|
||||
|
||||
Before choosing a file, enter:
|
||||
|
||||
@@ -52,41 +52,120 @@ Before choosing a file, enter:
|
||||
|
||||
The ID must be unique among your custom pets.
|
||||
|
||||
### Option 1: animate one image
|
||||
### Option 1: use a picture you already have
|
||||
|
||||
This is the recommended path for most users.
|
||||
The quickest route, about a minute. Pick a static image with a transparent background and the app adds breathing, floating and status motion locally.
|
||||
|
||||
Use a static image with:
|
||||
The image must have:
|
||||
|
||||
- PNG or WebP format;
|
||||
- a transparent background for the cleanest floating-window result;
|
||||
- PNG or WebP format (APNG and animated WebP are rejected);
|
||||
- width and height between `32px` and `4096px`;
|
||||
- no more than `16,777,216` total pixels;
|
||||
- a file size no larger than `8MB`.
|
||||
|
||||
Claude Code Haha copies and validates the image locally, then adds lightweight breathing, floating, and status motion. It does not invent new action frames, and it does not call the model selected for chat.
|
||||
This kind of pet only sways gently. It **will not run, and it will not track your cursor**. For full motion, use option 2.
|
||||
|
||||
### Option 2: import a v2 animation atlas
|
||||
### Option 2: draw one with AI that runs and jumps
|
||||
|
||||
Use this path only when you already have a correctly prepared frame atlas.
|
||||
About ten minutes, and you need an AI that can draw. The dialog walks you through the prompt, the reference template and the checks.
|
||||
|
||||
The atlas must be a static PNG or WebP with:
|
||||
#### Step 1: have an AI draw an action sheet
|
||||
|
||||
| Property | Required value |
|
||||
|---|---|
|
||||
| Full size | Exactly `1536×2288` |
|
||||
| Grid | `8` columns × `11` rows |
|
||||
| Cell size | `192×208` |
|
||||
| Spacing | No padding or gaps between cells |
|
||||
| Background | Transparent |
|
||||
Open any AI that can draw (Nano Banana, ChatGPT image generation, Midjourney, Stable Diffusion and Jimeng all work — these are examples, not endorsements) and send it the whole block below, replacing the two "Character" lines with what you want:
|
||||
|
||||
Rows are assigned to idle, run right, run left, wave, jump, failed, waiting, working, review, and two rows containing 16 gaze directions. The review row is part of the asset format; its presence does not guarantee that the current runtime will surface a separate review state.
|
||||
```text
|
||||
Draw me a game character action sheet (sprite sheet).
|
||||
|
||||
Every row may use fewer than eight visible action frames, but the grid dimensions and row positions must remain unchanged.
|
||||
[Character]
|
||||
A round-headed orange kitten wearing a small blue scarf, chibi
|
||||
three-heads-tall proportions, 3D cartoon render, soft glossy
|
||||
surface, bright cheerful colours.
|
||||
(Replace these lines with your own character - the more specific the better)
|
||||
|
||||
### AI animation is not available
|
||||
[Whole image]
|
||||
- Fully transparent background: no backdrop colour, no grid lines, no text, no drop shadow
|
||||
- Divide the image evenly into 8 columns x 9 rows, 72 equally sized cells
|
||||
- One action frame per cell, character centred with a little margin around it
|
||||
- Every cell must show the same character with identical proportions, colours and art style
|
||||
- Leave unused cells fully transparent
|
||||
|
||||
**AI-generate full animation** is displayed as an unavailable future path. It requires a separate image-generation service and does not fall back to the current chat model. A disabled card in this dialog is therefore expected behavior, not a provider configuration error.
|
||||
[What to draw in each row]
|
||||
Row 1, first 6 cells: standing still with a gentle breathing bob
|
||||
Row 2, all 8 cells: a full run cycle facing right, always facing right
|
||||
Row 3, first 4 cells: raising a hand and waving hello
|
||||
Row 4, first 5 cells: crouch, leap, land
|
||||
Row 5, all 8 cells: dejected and downcast, head lowered, sighing
|
||||
Row 6, first 6 cells: waiting in place, glancing around
|
||||
Row 7, first 6 cells: head down, busy working
|
||||
Row 8, all 8 cells: head and gaze starting straight up, turning slowly to the right through upper-right, right and lower-right, ending near straight down
|
||||
Row 9, all 8 cells: continuing from straight down, turning left through lower-left, left and upper-left, back to near straight up
|
||||
```
|
||||
|
||||
Getting it wrong on the first try is normal. Ask for a redraw, or say "keep the character, redraw row 2 only".
|
||||
|
||||
#### Step 2: check it against the template
|
||||
|
||||

|
||||
|
||||
When the picture is ready, check three things before importing:
|
||||
|
||||
1. **The background is see-through, not white.** A white backdrop becomes a square on your desktop; this is the most common mistake.
|
||||
2. **8 cells across, 9 rows down**, one action per cell.
|
||||
3. **The same character throughout**, with no change of face, colours or proportions.
|
||||
|
||||
**Save the template** in the dialog writes this reference image to disk so you can lay out frames against it.
|
||||
|
||||
#### Step 3: pick the file
|
||||
|
||||
Fill in the ID, name and description, then select the picture. **You do not need to resize anything** — see "Sizes are aligned for you" below.
|
||||
|
||||
### Option 3: I already have an action sheet
|
||||
|
||||
If you have drawn a sheet already, or hold a finished atlas, this path skips the walkthrough and goes straight to the form. Validation is identical to option 2.
|
||||
|
||||
### What to draw in each row
|
||||
|
||||
You only draw **nine rows**; the app derives the rest:
|
||||
|
||||
| Row | Content | Frames needed |
|
||||
|-----|---------|---------------|
|
||||
| 1 | Idle: standing still with a gentle breathing bob | 6 |
|
||||
| 2 | Run right: full run cycle, always facing right | 8 |
|
||||
| 3 | Wave: raise a hand and greet | 4 |
|
||||
| 4 | Jump: crouch, leap, land | 5 |
|
||||
| 5 | Fail: discouraged, head down, sighing | 8 |
|
||||
| 6 | Wait: looking around, shifting in place | 6 |
|
||||
| 7 | Work: head down, busy | 6 |
|
||||
| 8 | Gaze, upper half: straight up turning clockwise to near straight down | 8 |
|
||||
| 9 | Gaze, lower half: continuing from straight down back to near straight up | 8 |
|
||||
|
||||
Notes:
|
||||
|
||||
- **You do not draw "run left".** The app mirrors row 2 horizontally to produce it.
|
||||
- **The last two rows are optional in practice.** Repeat the first idle frame and the pet simply will not track your cursor; everything else still works.
|
||||
- Leave unused cells at the right of each row fully transparent.
|
||||
|
||||
### Sizes are aligned for you
|
||||
|
||||
After you pick the file, the app assembles the runtime atlas locally: it slices the sheet on an 8 × 9 grid, rescales each cell to `192 × 208`, centres the character, mirrors the run row, and fills in the remaining runtime rows to reach `1536 × 2288`.
|
||||
|
||||
That means:
|
||||
|
||||
- **Exact dimensions are not required.** Common AI output sizes such as `1024 × 1152` work; a ratio close to 8:9 gives the best result. The reference size is `1536 × 1872`.
|
||||
- **A finished `1536 × 2288` atlas is kept byte-for-byte** and is never resampled.
|
||||
- The assembled file stays under `8MB`; WebP encoding is used automatically if a lossless PNG would exceed it.
|
||||
|
||||
### Common problems
|
||||
|
||||
| Message | Cause and fix |
|
||||
|---------|---------------|
|
||||
| This image has no transparent background… | The sheet was exported on a white or coloured backdrop. Ask for a transparent PNG, or remove the background with an editor. |
|
||||
| This image cannot be sliced into 8 columns by 9 rows | The row or column count is off. Confirm 8 across and 9 down, or use a finished `1536 × 2288` atlas. |
|
||||
| That image could not be read | An animated file (APNG / animated WebP) or a corrupt one. Use a static PNG or WebP. |
|
||||
| That image is too big | The source exceeds 8 MB. Compress it, or ask for smaller output. |
|
||||
| A pet with this ID already exists | Choose a different Pet ID, or remove the existing one (see "Storage and removal"). |
|
||||
|
||||
When the size, format, or image content does not meet these rules, the app refuses to create the pet and shows the matching error instead of adding an invalid entry.
|
||||
|
||||
After a successful import, the new pet is selected automatically and appears under **Your pets**.
|
||||
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 204 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 242 KiB |
Reference in New Issue
Block a user