DyberPet 桌面宠物框架:如何用 30 分钟让喜欢的角色住进你的电脑桌面?

DyberPet 桌面宠物框架:如何用 30 分钟让喜欢的角色住进你的电脑桌面?

【免费下载链接】DyberPetDesktop Cyber Pet Framework based on PySide6项目地址: https://gitcode.com/GitHub_Trending/dy/DyberPet

你有没有想过让喜欢的角色在电脑桌面上真正"活"过来?不是一张静态壁纸,而是会走来走去、会饿肚子、会撒娇、还会在你工作时安静陪着你的那种"活的"桌宠。DyberPet 正是这样一套基于 PySide6 的开源桌面宠物框架:它把动画、养成、任务、商店、迷你宠物打包成一款开箱即用的完整桌宠 App,而且所有内容都支持通过 JSON 配置自由扩展——这意味着,从把它跑起来到做出自己的专属角色,你只需要一个下午。🐾

第一步:把桌宠"领回家"

DyberPet 的安装比想象中简单。Windows 用户可以直接下载打包好的 EXE 双击运行;想在本地跑源码也很直接,先建一个干净的 Python 环境:

conda create --name Dyber_pyside python=3.9.18 conda activate Dyber_pyside pip install PySide6-Fluent-Widgets==1.5.4 pip install pyside6==6.5.2

再把仓库克隆到本地,运行python run_DyberPet.py,一只小猫就出现在屏幕上了。右键点击它,会弹出一整套菜单:喂食、换装、背包、任务、系统设置……几乎和一个小型养成游戏没有区别,但它真的只是一只常驻桌面的小宠物。

这里有个小技巧:第一次启动后,可以在"系统"面板的角色管理里把内置的几只桌宠都试一遍,感受不同角色、不同动作的差异,顺便熟悉右键菜单的各个入口。

第二步:桌宠是怎么"活"起来的?

你可能会好奇,这些活蹦乱跳的小家伙背后到底是什么原理。答案简单得有点可爱:帧动画。每个动作就是一组按顺序播放的 PNG 图片,和童年时快速翻动的动画书一模一样。

关键在于,这套机制完全由配置驱动。以内置角色 Kitty 为例,它的行为定义在res/role/Kitty/pet_conf.jsonres/role/Kitty/act_conf.json里。前者描述角色的尺寸、默认动作、物理参数;后者则描述每个动作怎么播放。比如"随机动作"可以这样配置:

"random_act": [ {"name":"站立", "act_list":["default"], "act_prob":1.0, "act_type":[2,0]}, {"name":"睡觉", "act_list":["fall_asleep", "sleep"], "act_prob":0.05, "act_type":[1,1]} ]

意思是:平时主要播放"站立",偶尔(5% 概率)打个盹儿。改一改数字,角色的性格就变了。

再往深一层看,动画的实际播放被放进了一个独立的工作线程(DyberPet/modules.py里的Animation_worker)。为什么要"多此一举"?因为桌宠动画是常驻的,如果它和主界面挤在同一线程,加载图片一旦卡顿,整个程序都会"未响应"。拆出去之后,动画在后台安静地跑,用户的拖拽、点击永远优先响应。至于重力、拖拽、落地这些物理效果,则在交互模块里单独计算——你可以把桌宠拎起来再松开,它会真的"啪叽"摔到屏幕底部,那个手感就是物理模拟给的。

第三步:它为什么会饿、会开心、会升级?

有动画还不够,让桌宠"像活的一样"的关键,是背后那套数值系统。DyberPet 内置了完整的养成玩法:

  • 饱食度(HP):随时间缓慢下降,不喂食它就饿肚子,还会冒出"求投喂"的对话气泡
  • 好感度(FV):喂食、互动都会累积,等级上限高达 200 级,徽章从星星一路升级到皇冠
  • Buff 效果:使用物品获得临时加成,比如"5 分钟内饱食度不下降"或"每 30 秒获得金币"
  • 存档系统:每个角色独立存档,支持导出、导入与快速存档

这套数值不是靠人盯着维护的,而是由apscheduler定时任务引擎驱动——它像桌宠的"心跳",每隔固定时间就自动更新一次状态。你可以在DyberPet/conf.py里找到各种可调参数,比如饱食度下降间隔、拍拍掉物概率等,改完即可生效。

更妙的是,数值变化会"反向"影响动画:饱食度高时角色活泼好动,饿极了就蔫在桌上睡觉。状态与表现互相咬合,养成带来的沉浸感就是这么来的。

第四步:它还能陪你工作学习

别以为桌宠只会卖萌,DyberPet/Dashboard/taskUI.py里藏着一套完整的效率工具:

  • 番茄钟:25 分钟专注 + 5 分钟休息的标准循环
  • 专注时间:自定义时长,倒计时直接显示在桌宠头顶
  • 备忘录与间隔提醒:到点弹通知,桌宠会"开口"提醒你
  • 每日任务与成就奖励:完成任务获得金币和物品

这种"游戏化自律"是桌宠类应用最经典的玩法——把枯燥的番茄钟,变成和伙伴一起完成的冒险。另外,项目正在开发 AI 助手能力,未来可以接入大模型,让桌宠陪你聊天、帮你管理待办。但请放心:AI 是加分项而非前置条件,不接 AI,它依然是一套完整的桌宠系统。

第五步:30 分钟做出你的专属角色

这才是 DyberPet 最让人上瘾的地方——模组自由。想把自己画的角色放进来?按照docs/art_dev.md素材开发文档,一个角色只需要一个文件夹:

角色名/ ├── pet_conf.json # 角色属性配置 ├── act_conf.json # 动作播放配置 ├── action/ # 帧动画 PNG(stand_0.png, stand_1.png...) ├── note/ # 个性化通知图标与音效(可选) ├── info/ # 角色与作者信息(可选) └── items/ # 角色自带物品(可选)

把图片按"动作名_序号.png"的规则放进action/,再写好两个 JSON,重启程序就能在角色列表里看到新伙伴。物品模组同理:在res/items/Default/items_config.json里给食物配上effect_HP(饱食度恢复量)、effect_FV(好感度加成)和buff(临时状态),一份汉堡就诞生了。开发过程中,系统面板的"模组检查"功能还会自动帮你找出配置错误,非常贴心。

藏在背后的一根"电话线"

把这么多模块串成一个整体,靠的是 Qt 的信号槽机制。你可以把它想象成广播站:桌宠被喂食后发出"吃饱了"的信号,状态面板、通知栏、动画模块各自"订阅",收到信号后各干各的,彼此之间不需要知道对方存在。

run_DyberPet.py里的连接为例,几乎一行代码就完成了一次跨模块协作:

self.board.backpackInterface.use_item_inven.connect(self.p.use_item) self.p.hp_updated.connect(self.board.statusInterface.StatusCard._updateHP)

点击喂食按钮 → 信号发出 → 桌宠执行物品效果、状态卡刷新饱食度、通知栏弹出气泡,一气呵成。正因为模块之间只靠信号通信、互不直接依赖,新功能加进来就像插插座一样简单——这也是 DyberPet 能如此轻松支持模组扩展的底层原因。

现在就可以动手试试

从下载运行到喂饱小猫,再到亲手做一个角色放进桌面,整套流程不会超过一个下午。就算你完全没写过桌面应用,跟着 JSON 配置和文档也能做出像模像样的作品。

想上手的话,直接克隆仓库开跑即可:

git clone https://gitcode.com/GitHub_Trending/dy/DyberPet cd DyberPet python run_DyberPet.py

随着 AI 能力逐步开放、模组生态越来越丰富,DyberPet 正在从一个"桌面宠物玩具"成长为真正的"桌面伙伴框架"。如果你也想让喜欢的角色住进桌面,不妨今天就给它一个家。

【免费下载链接】DyberPetDesktop Cyber Pet Framework based on PySide6项目地址: https://gitcode.com/GitHub_Trending/dy/DyberPet

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考