Skip to content

Releases: fotlim/desktop-pet

v1.2.7

Choose a tag to compare

@fotlim fotlim released this 18 Oct 14:55

去掉「整理图标」

  • 随机事件(拖到图标上 / 溜达到图标上)不再重排整个桌面,只保留 吃掉 和 搬运,不动的图标一个都不碰
  • 菜单「桌面图标互动」里的「整理图标」一项已删除,现在是 吃掉 / 搬运 / 立即还回 / 恢复上次布局

完整历史见 README 更新日志。

v1.2.6 点击/拖动不再卡(帧按需解码)

Choose a tag to compare

@fotlim fotlim released this 18 Oct 06:50

桌面宠物 DesktopPet v1.2.6

1. 点击不再卡(帧改成按需解码)

以前点一下动作,要先把241 帧全部解成位图(解码 + 缩放 + 垫画布),这 1 秒左右窗口是定住的。
现在改成播放到哪一帧就解哪一帧,前后各留 10 帧在缓存里:

之前 现在
点动作到开始 约 1 秒(定住) 立即
内存(RSS) 330 MB 123 MB
实测帧率 24 fps 24.1 fps

2. 拖动不再卡

拖动和弹跳属于高速移动,原来「位置没变就不重画」的省事逻辑会漏掉中间的位移(表现就是一跳一跳)。
现在只要在拖动/弹跳中,每帧都重画。

3. 弹跳的拖影

  • 移动过程中把跟随宠物的信息面板收起来(它跟不上宠物,叠在画面上就像是拖影)
  • 配合上面「每帧都重画」,不再出现前后两帧位置差一截的观感

如果你那边还能看到拖影,截一段动图发我 —— 那说明是别的原因(比如素材自带的柔光边缘),我再针对性处理。

升级

解压覆盖,托盘退出再 start.bat。

v1.2.5 去掉淡入 + 吃掉只吃一个 + 竖向整理

Choose a tag to compare

@fotlim fotlim released this 18 Oct 06:40

桌面宠物 DesktopPet v1.2.5

按你的四点要求改的:

1. 彻底去掉淡入

切动作就是直接换帧,不再有「两副姿势叠着」的那一下。
「建帧时每 8 帧跑一次消息循环」保留 —— 载入动作帧时画面不会定住。

2. 吃掉图标只吃一个

已经有一个被吃掉的还没回原位时,不会再吃第二个(日志:已经吃掉一个图标了,等它回原位再吃下一个)。

3. 图标操作不一定触发

  • 拖到图标上:45% 概率(之前 100%)
  • 溜达到图标上:25% 概率(之前 60%)
  • 外加 45 秒冷却

4. 整理图标改成竖向排

先往下排满一列,再排右边一列(之前是横向一行一行铺)。
实测:第一列 11 个图标,x 都是 8,y 从 8 到 1028。

升级

解压覆盖,托盘退出再 start.bat。

v1.2.4 修动作开始前「缩一下」

Choose a tag to compare

@fotlim fotlim released this 18 Oct 06:32

桌面宠物 DesktopPet v1.2.4

修「动作开始前会缩一下」。

查到的原因

不是窗口缩放 —— 实测整段过渡里窗口尺寸一直是 398×250,纹丝不动。是交叉淡入的末尾:

待机剪影高 184
动作首帧剪影高 169~182   (源素材片头本来就是下蹲/前倾的预备姿)
混合帧剪影高 184~186     (两副姿势叠在一起,取并集)
淡入最后一帧 → 待机影像消失 → 剪影瞬间塌到 169

所以看到的是:先「胖」一下再「缩」回去。

改法

  • 淡入从 6 帧(250ms)缩到 3 帧(125ms)
  • 动作帧更快占主导:混合系数从 0.4 起步(而不是 0),两副姿势叠着的时间短到看不出
  • 动作片头本身那点预备姿势还在(那是源动画自带的),但不再有突兀的「缩」

升级

解压覆盖,托盘退出再 start.bat。

v1.2.3 修动作淡入的黑框

Choose a tag to compare

@fotlim fotlim released this 18 Oct 06:20

桌面宠物 DesktopPet v1.2.3

只修一个 bug:动作淡入时那块半透明黑框。

原因

淡入要把「上一帧」和「动作第一帧」混起来,这两张图原来都是从 HBITMAP 转的(Image.FromHbitmap),
而 GDI+ 这个转换会丢掉 alpha 通道——透明区域变成黑底。两张一混,50% 黑底铺满整块画布,就是那个黑框。

修法

两边都改成按当前缩放 / 配色 / 画布重新解码原 PNG(Get-PetFrameBitmap),拿到真正的 32bppArgb 透明位图再混:

  • 实测解码帧四角 A=0,中间 A=255
  • 混合帧四角仍然 A=0 —— 不再有黑底
  • 取不到起点帧时不混帧,照常播放(不会把画布画黑)

效果

点动作时:待机姿势 → 6 帧交叉淡入 → 动作,全程背景透明,没有黑框,动作连贯。

升级

解压覆盖(别动 settings.json),托盘退出再 start.bat。

v1.2.2 动作切换交叉淡入,不再生硬

Choose a tag to compare

@fotlim fotlim released this 18 Oct 06:09

桌面宠物 DesktopPet v1.2.2

这一版只改动起来的手感:点击动作 → 动画开始不再生硬。

1. 交叉淡入(250ms)

以前点一下就从待机的某帧「啪」一下跳到动作第一帧。现在切动作时,把「上一帧」和动作第一帧按 6 帧(约 250ms)比例混合过渡:

  • 动作开始:动作过渡:cat 交叉淡入 6 帧(250ms)
  • 动作播完:动作过渡:idle 交叉淡入 6 帧 —— 回待机也是淡入,不再突然换姿势
  • 淡入起点在建帧之前先拷一份(建帧会释放旧帧缓存,直接拿句柄会 GDI+ 报错)

2. 载入时不再定住画面

建帧(241 帧 PNG 解码 + 垫画布)原来是在点击处理里同步跑完的,期间窗口完全不动。现在每 8 帧跑一次消息循环,载入过程里宠物继续播待机动画,不会「卡一秒然后突然跳」。

代价:载入那 1 秒左右渲染帧率会掉到 13~16 fps(日志里能看到),载入完成后恢复 24 fps。

3. 其它

  • 上一版把帧缓存收紧到 2 个动作,释放帧时会清掉「上一帧」指针,避免淡入拿到已释放的位图
  • 素材没变(24fps / 241 帧 / 318×200 画布)

升级

解压覆盖(别动 settings.json),托盘退出再 start.bat。

v1.2.1 24fps 全帧率 + 桌面图标互动

Choose a tag to compare

@fotlim fotlim released this 18 Oct 05:51

桌面宠物 DesktopPet v1.2.1

v1.2.0 的两个大改动都在这(24fps 全帧率 + 桌面图标互动),这一版只补一个内存问题。

动作改成 24fps 全帧率

  • 每个动作 241 帧 / 24fps / 10.04 秒,13 个动作共 3133 帧,素材约 157 MB
  • 原生 24fps 播放,不插帧;画布统一 318×200

新功能:桌面图标互动

右键宠物(或托盘)→「桌面图标互动」,或者把宠物拖到图标上自动触发:

事件 行为
吃掉 图标挪到屏幕外,180 秒后自动回原位(队列存 icon-state.json,重启不丢,退出时立刻还回)
搬运 自动关掉「自动排列图标」,图标丢到随机网格位置
整理 随机从 名称/时间/大小 × 正序/倒序 里挑一种重排全部图标
  • 45 秒冷却;「溜达到图标上也触发」默认关(菜单可勾)
  • 每次动手前记布局(icon-layout.json),菜单可「恢复布局」「立即还回被吃掉的图标」
  • 自动排列只能走注册表 FFlags bit0 + 重启一次资源管理器;第一次会弹框确认一次,之后不再问

这一版修的

  • 24fps 素材一帧 250KB 上下,帧缓存从「最多 3 个动作」收紧到「当前动作 + idle」:
    RSS 397 MB → 239 MB

升级

解压覆盖(别动 settings.json / icon-state.json / icon-layout.json),托盘退出再 start.bat。

zip 158.3 MB,体积几乎全是 24fps 素材。想要小体积:用 tools/build-frames.py 把 FPS_OUT 改回 12 重抽(约 81 MB)。

v1.2.0 24fps 全帧率 + 桌面图标互动(吃掉/搬运/整理)

Choose a tag to compare

@fotlim fotlim released this 18 Oct 05:49

桌面宠物 DesktopPet v1.2.0

1. 动作改成 24fps 全帧率

  • 每个动作 241 帧 / 24fps / 10.04 秒(源 webm 就是 24fps,这次一张不丢)
  • 13 个动作共 3133 帧,素材约 157 MB(之前 12fps 是 81 MB)
  • 原生 24fps 播放,不再靠插帧补顺;idle/sleep/walk 也不插帧
  • 画布统一 318×200(所有动作共用,切动作不缩放)

2. 新功能:桌面图标互动

右键宠物(或托盘)→「桌面图标互动」,也可以让它自动触发:

事件 行为
吃掉一个图标 把图标挪到屏幕外,180 秒后自动回到原位;进程重启也不丢(队列在 icon-state.json),退出程序会立刻还回
搬运一个图标 自动关掉桌面「自动排列图标」,把图标丢到一个随机网格位置
整理图标 从 名称正序 / 名称倒序 / 时间正序 / 时间倒序 / 大小正序 / 大小倒序 里随机挑一种重排全部图标
  • 触发:把宠物拖到图标上就会随机来一个(默认开);「溜达到图标上也触发」默认关,菜单里可勾
  • 45 秒冷却,不会一直折腾桌面
  • 安全网:每次动手前把布局记进 icon-layout.json,菜单里有「恢复上次记下的图标布局」「立即还回被吃掉的图标」
  • 自动排列这块只能走注册表 HKCU\...\Shell\Bags\1\Desktop\FFlags 的 bit0 + 重启一次资源管理器才生效:
    第一次会弹框问一次(任务栏会闪一下),之后记住不再问
  • 实测(67 个图标):整理后 67/67 位置变化;吃掉后坐标跑到 (2444,1328) 屏幕外,还回精确回到 (584,512);搬运 (584,614) → 随机 (1700,818)

升级

解压覆盖(别动 settings.json / icon-state.json),托盘退出再 start.bat。

体积提醒:素材 157 MB,zip 158.3 MB。只是想要原来的小体积,可以自己用 tools/build-frames.py 把 FPS_OUT 改回 12 重抽。

v1.1.1 关掉控制台也不退出,托盘右键退出

Choose a tag to compare

@fotlim fotlim released this 18 Oct 05:26

桌面宠物 DesktopPet v1.1.1

关掉控制台不再退出程序 —— 这是这次唯一的改动。

以前

start.bat 把宠物直接跑在控制台进程里。点窗口右上角 ✕,Windows 直接杀进程,宠物和托盘一起没,
而且控制台关闭事件在进程里拦不住(控制台窗口归 conhost / Windows Terminal 所有,进程收不到可取消的通知)。

现在

  • start.bat 走新的 -Mode launch:先把本体拉成一个隐藏的后台进程(-Mode run -Background),控制台只负责显示提示
  • 直接运行 DesktopPet.ps1 也一样:检测到「可见控制台」就自己转后台,再退出控制台
  • 所以关掉控制台窗口不会退出,宠物继续待在托盘里
  • 右键「宠」托盘图标 → 退出(关掉托盘和桌宠) 才是退出;不会留孤儿进程

实测:

  • 后台进程 MainWindowHandle = 0(没挂在可见控制台上),关任何控制台窗口都杀不到它
  • 从控制台启动后,控制台进程 1 秒内结束,后台 -Mode run 进程继续跑,桌宠窗口和托盘图标都在
  • start.bat 无参数时:启动 → 打印提示 → 等你按任意键;按 ✕ 也只是关掉这个窗口

用法

start.bat                 正常启动(托盘 + 桌宠,控制台可关)
start.bat -Mode pet       只跑宠物并占着控制台(调试用,关窗口就退)
start.bat -Mode install   装开机自启
start.bat -Mode list      看有哪些模型

素材没变,还是 v1.1.0 的「整段 10 秒 + 统一画布 309×200」,zip 约 81.7 MB。

v1.1.0 动作播完整 10 秒 + 等大小不缩放

Choose a tag to compare

@fotlim fotlim released this 18 Oct 05:15

桌面宠物 DesktopPet v1.1.0

这次只解决两件事:动作播完整的一段(不再循环小片段)、切换动作时不突兀缩放。

1. 动作改成原片整段

源 webm 每个动作都是 241 帧 / 24fps / 10.04 秒。老抠图脚本每段只截了 34 帧(1.4 秒),
所以你看到的是「1.4 秒的小片段循环 7 遍」。

现在按整段重抽:

项目 以前 现在
每个动作帧数 34 帧(1.4 秒) 121 帧(10 秒,源 24fps → 采 12fps)
播放方式 1.4 秒循环 7 遍 一遍到底,播完回待机
13 个动作总帧数 468 1573
素材体积 ~45 MB ~81 MB

实测日志:

宠物动作:伸懒腰 12 秒(整段 10 秒)
宠物动作结束:伸懒腰 实际 10.2 秒

同一动作第 3 秒抱着魔方、第 8 秒已经收手 —— 姿势确实在变,不是重复。

2. 等大小:不再突兀缩放

每个动作按内容裁边的尺寸本来就不一样(156~309 px),以前换动作时窗口跟着变,看着就是
「突然放大/缩小 + 角色位置乱跳」。

现在 pet.json 里声明统一画布 canvas: { w: 309, h: 200 },每个动作带 ox/oy;
载入帧时按 只挪位置、不缩放 垫进同一块画布:

  • 待机窗口 (2153,803) 309x200 → 动作中 (2153,803) 309x200
  • 位置差 0,尺寸差 0(实测)

3. 顺带

  • 12fps 素材在载入时插帧到 24fps 观感(只混一次,播放零开销);idle/sleep/walk 是慢速循环,不插帧省内存
  • 老素材兼容:模型包 pet.json 里写了 ms 的短片段仍按 ms 循环,"pingpong": false 关往返
  • -Mode selftest 仍然全通过(模型列表 / 菜单勾选 / 配色矩阵 / 切换落盘)
  • 想自己重抽(比如 24fps 全帧率):tools/build-frames.py

升级

解压覆盖原目录(别动 settings.json),右键托盘退出再双击 start.bat(或重跑 -Mode install)。

体积说明:素材从 ~45 MB 涨到 ~81 MB,因为动作从 1.4 秒变成 10 秒。24fps 全帧率会是 ~170 MB,取舍见 README。