DyberPet 完整指南:从安装到自定义模组,30 分钟养一只开源桌宠
【免费下载链接】DyberPetDesktop Cyber Pet Framework based on PySide6项目地址: https://gitcode.com/GitHub_Trending/dy/DyberPet
你以为的桌宠,多半是贴在桌面上的 GIF 播放器——循环播放、毫无记忆、不需要你做任何事。DyberPet(呆啵宠物)基于 PySide6 构建,是一个开源桌面宠物框架:饱食度、好感度、专注任务、商店和 JSON 模组系统全部实装,让喜欢的角色真正住进你的桌面,而不是只当一张会动的贴图。
它和"图片播放器"差在哪
普通 GIF 贴图的反馈链是断的:你点它,它继续播下一帧。DyberPet 把交互接成了一条闭环——
- 它会饿:饱食度随时间持续下降,饿了会改变行为动画池,甚至会主动找你讨食
- 它记得你:好感度 200 级长线养成,每级 120 点,从星星、月亮、太阳到皇冠徽章逐级解锁
- 它陪你干活:番茄钟、专注时间、待办与每日目标,完成结算物品奖励喂它
- 它听得懂"配置":角色、迷你宠物、物品、音效全部 JSON 化,不写一行代码就能扩展
- 它不占地方:QPixmap 加载加懒加载策略,日常内存占用克制;单进程锁防止多开写坏数据
一句话:GIF 播放器是展示,DyberPet 是关系。
两条安装路径,按你的身份选一条
想马上看到效果(普通用户):Windows 用户直接去 Release 下载 EXE(当前版本 v0.8.5),双击运行即可,不需要装 Python。
想跑源码、改代码(开发者):用 conda 隔离环境,一条命令序列装好:
conda create --name dyber python=3.9.18 conda activate dyber conda install -c conda-forge apscheduler pynput pip install PySide6-Fluent-Widgets==1.5.4 pyside6==6.5.2 tendo git clone https://gitcode.com/GitHub_Trending/dy/DyberPet cd DyberPet python run_DyberPet.pymacOS 用户注意一处差异:pynput改用pip install pynput==1.7.6(项目对 Mac 有专门适配)。入口文件是 run_DyberPet.py,它用tendo做了单实例保护——重复启动会直接退出,避免双进程抢写存档。
启动后右键桌宠,菜单里的「角色面板」「选择动作」「召唤伙伴」「更换角色」就是你日常操作的全部入口。
场景一:当陪伴——它会饿、会撒娇、会记仇
为什么需要这层:如果宠物永远满血满状态,三天后你就会忘了它存在。"需要你"是桌宠留存率的命门。
怎么运作:定时任务持续扣减饱食度;饱食度分为四个档位(活力 / 正常 / 饥饿 / 饿昏),档位直接决定角色播放哪些动画——状态差时它大概率趴着睡觉,饿昏时只剩一个"躺平"动作循环。好感度靠互动积累,升到对应等级解锁新动画、新物品,等级徽章(1 级星星、4 级月亮、16 级太阳、64 级皇冠)会显示在右键菜单和角色面板上。数值面板的实现在 DyberPet/Dashboard/statusUI.py。
对你意味着什么:你喂的不是食物,是养成进度。喂食策略也有深度——一份汉堡附带HP_stopBuff(5 分钟内饱食度不再下降),一份薯条变成金币小金库(每 30 秒掉 5 枚啵币,持续 2 分钟),这两份默认物品的配置就写在 res/items/Default/items_config.json 里,打开看看就知道一个"物品"能有多复杂。
反馈颗粒度细到有点"过分":单击冒"摸摸"气泡和爱心、心情好时随机飘心、喂食升级各有专属气泡,专注期间拍它会提醒你"该干活了",1 秒内狂点超过 7 次会触发吐槽气泡。项目一共内置了 9 种可配置气泡类型,全部支持换图、换文案、换语音。屏幕锁定时开启自动锁定选项,HP 与好感度会暂停变化——你下班锁屏,它不会"饿死"在工位上。
场景二:当效率工具——把工作时长喂给宠物
番茄钟这类工具你大概率用过,痛点是"奖励缺席"。DyberPet 把结算做成了实物:倒计时挂在宠物上方,开启专注后角色切入focus专属动画安静陪跑;无论正常结束还是中途取消,都按已投入时长结算啵币和物品奖励。
配合待办事项(完成有奖励)和每日目标,整条链条是:专注 → 掉落物品 → 喂宠物 → 好感上涨 → 解锁更多动画和物品。自我管理的坚持动力,从"意志力"换成了"给它赚口粮"。任务、番茄钟、每日目标、待办的界面逻辑集中在 DyberPet/Dashboard/taskUI.py,商店(买卖、按标签筛选、按好感度解锁)在 DyberPet/Dashboard/shopUI.py,背包(可拖拽换位格子、自动喂食)在 DyberPet/Dashboard/inventoryUI.py。
场景三:当画布——不写代码做一个新角色
角色就是一个文件夹。在res/role/下建一个目录,放两样东西:
action/里的透明背景 PNG 帧,按"前缀_序号"命名(stand_0.png、stand_1.png……)- 两个 JSON:
pet_conf.json定义大小、默认动作、随机行为概率、物品喜好度;act_conf.json定义每套动画用哪些帧、单帧时长、是否移动及移动速度
物品模组同理:一张图加一段 JSON 就是一件新物品,核心参数只有几个——
{ "汉堡": { "effect_HP": 10, "effect_FV": 3, "buff": { "effect": "HP_stop", "expiration": 300 } } }进阶玩法(docs/art_dev.md 有完整参数表):
- 迷你宠物:物品
subpet类型召唤跟随宠,多只跟随时自动排队补位,主宠跑哪它跟哪 - 对话物品:
msg_conf.json用text/option节点和relationship映射就能搭出任意分支的对话树,多分支剧情、问答互动、教育小游戏都能做 - 昼夜作息:给动画打上
"phase": "night"标记再配一个day_night块,角色夜晚自动切换睡眠动画池 - 可穿戴物品(Equip):翅膀、披风这类持续显示在角色身上的外观
- 个性化通知:每个角色可替换通知图标与全套语音(问候、喂食、随机闲聊)
社区已经积累了一批现成素材:小呆、流萤、像素猫meme、派蒙等,完整清单见 docs/collection.md,下载后在 App 内按面板指南导入即可。文件名记得用英文——中文命名在部分系统解压后会乱码甚至导致崩溃。
开发者视角:改功能前先看这份地图
想动手改代码,模块划分是清晰的:
| 模块 | 路径 | 职责 |
|---|---|---|
| 主控入口 | DyberPet/DyberPet.py | 全局调度、信号连接、数值驱动 |
| 动画引擎 | DyberPet/Accessory.py | 帧动画、重力、拖拽、附件与迷你宠物 |
| 养成数值 | DyberPet/Dashboard/statusUI.py | 饱食度/好感度/Buff UI |
| 任务系统 | DyberPet/Dashboard/taskUI.py | 番茄钟、专注、待办、每日目标 |
| 商店/背包 | DyberPet/Dashboard/shopUI.py / inventoryUI.py | 商品、格子背包 |
| 系统面板 | DyberPet/DyberSettings/ | 角色/物品/迷你宠物卡片、存档管理、基本设置 |
做新角色素材前通读一遍 素材开发文档,里面有动画播放原理、Anchor 定位、饱食度档位与播放概率的对照表。另外项目正在开发大模型接入——桌宠未来能陪你聊天、管待办,但 AI 是加分项而非前置条件,现在不接它也完全可玩。
你可能在动手前想确认的三件事
内存会不会越用越大?框架在 v0.3.5 前后做了一轮专项优化:几乎所有QImage替换成QPixmap,图片按需懒加载,物品数据集中到 settings 避免多模块重复载入。日常挂着运行,占用是克制的。
多显示器能用吗?能。宠物支持跨屏移动,拖拽、掉落、屏幕边界都有处理;迷你宠物跟随时会自动排队,某只被收回后队列自动补位,多屏边界的情况在 v0.5.4 就专门修过。
关掉软件存档会丢吗?存档按角色独立保存,支持导出、导入和快速存档;退出前会主动写盘一次并冻结数据,屏幕锁定状态下数值变化也会暂停。task_data.json在导出/快速存档时会被备份。
回到那个问题:它还是 GIF 吗?
开头说 GIF 播放器的反馈链是断的。装完 DyberPet 你会发现链条的另一头接在你的手上:它饿了你会想起来喂,它升级了你会想换个徽章,你专注 25 分钟是为了给它赚一份薯条。
三个最低门槛的行动,选一个今天就能做:下载 Release 的 EXE 双击运行;git clone源码跑起来改一行文案;或者照着 素材开发文档 画几张 PNG 帧,给自己的角色做一个"汉堡"。总有一款适合此刻的你。
【免费下载链接】DyberPetDesktop Cyber Pet Framework based on PySide6项目地址: https://gitcode.com/GitHub_Trending/dy/DyberPet
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考