三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

从零上手 DyberPet:用 PySide6 快速打造你的专属桌面宠物

从零上手 DyberPet:用 PySide6 快速打造你的专属桌面宠物

从零上手 DyberPet:用 PySide6 快速打造你的专属桌面宠物

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

桌面宠物框架 DyberPet(呆啵宠物)或许正是你缺的那块拼图——它把动画、养成、任务、商店整套玩法打包进一个基于 PySide6 的开源项目里,让你既能直接"养"一只会跑会跳的角色,也能像搭积木一样往里加自己的角色和道具。这篇文章会带你从零开始,把第一只宠物放进桌面,再一步步解锁换角色、做模组、二次开发的完整链路。

一、先别急着敲代码:DyberPet 到底是什么

有人会觉得,桌面宠物不就是个会动的贴图吗?DyberPet 最反直觉的地方,就是它远不止"贴图"这么简单。

它是一套完整的桌宠应用,核心玩法至少包含这几层:

  • 桌宠本体:能站立、行走、被拖拽、会下落,甚至带重力模拟的小家伙;
  • 养成系统:饱食度、好感度、金币、背包、商店一应俱全,像在养一个迷你伙伴;
  • 任务模块:番茄钟、专注计时、备忘录、每日目标,让它从"玩具"变成"生产力搭子";
  • 模组生态:角色、动作、物品、音效、迷你宠物,全部可以通过 JSON 配置自由扩展。

从代码结构上看,整个框架大致分三块。启动入口在run_DyberPet.py,它负责把桌面宠物(DyberPet/DyberPet.py中的PetWidget)、通知气泡(DyberPet/Notification.py)、附件动画(DyberPet/Accessory.py),以及两个控制台——系统面板DyberSettings/和功能面板Dashboard/——拼装在一起。你在run_DyberPet.py里会看到大量信号连接代码,各个模块正是靠着它们"喊话"协作的。

下面这张动图是它跑起来之后的真实样子:宠物在桌面上走动,右键呼出菜单,喂食、互动都会弹出对话气泡给出即时反馈。

二、五步把第一只宠物请进桌面

新手最怕"教程第一步就卡住"。这里我把启动过程拆成五个小步,每一步都告诉你为什么要这么做。

第一步:准备一个干净的 Python 环境。项目要求 Python 3.9 以上,推荐用 conda 单独建一个环境,避免污染系统里的其他项目:

conda create --name Dyber_pyside python=3.9.18 conda activate Dyber_pyside

第二步:按清单安装依赖。核心依赖就五个,各自负责一件事:

依赖作用版本提示
apscheduler定时任务调度(饱食度下降、到时提醒等)conda-forge 安装
pynput监听鼠标键盘,实现点击、拖拽交互macOS 需固定pynput==1.7.6
PySide6-Fluent-Widgets提供 Fluent 风格的现代 UI 控件建议固定==1.5.4
pyside6Qt 的 Python 绑定,桌面应用的底座建议==6.5.2
tendo单实例锁,防止程序被重复启动常规安装即可

对应的安装命令:

conda install -c conda-forge apscheduler conda install -c conda-forge pynput pip install PySide6-Fluent-Widgets==1.5.4 pip install pyside6==6.5.2 pip install tendo

第三步:拉取代码。

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

第四步:运行。

python run_DyberPet.py

如果一切顺利,一只小猫就会出现在你的桌面上。注意:程序带单实例锁,想同时养多只?用"召唤同伴"功能,而不是再开一个进程。

第五步:提前认识两个最常见的报错。

  • Qt platform plugin错误:多半是 PySide6 装到了别的解释器里,检查conda activate是否真的生效;
  • macOS 上鼠标没反应:一般是 pynput 版本问题,卸载后重装pynput==1.7.6就能解决。

三、和宠物过日子:喂食、摸头、攒好感

跑起来只是开始,真正让人上头的是后面的养成循环。

宠物有"胃"也有"心"。饱食度会随时间慢慢下降,你得用背包里的食物喂它;好感度则靠互动一点点积累。好感度系统很有讲究:等级上限从最初的 7 级一路扩展到了200 级,每一级需要 120 点好感度,对应的徽章从星星、月亮、太阳一直到皇冠,养成深不见底。

DyberPet/Dashboard/statusUI.py里能找到这套数值系统的实现:饱食度、好感度、Buff 状态、事件日志都会在这里汇总展示。下面的截图就是"角色管理 + 状态面板"的界面——左侧选择要启动的角色,右侧查看当前宠物的各项数值和最近的互动记录。

互动是双向的。单击角色会冒出一颗心,拍拍它有几率触发物品掉落,物品会以抛物线轨迹掉进屏幕下方的任务栏;拖拽它会被"拽走",松手后还会下落并触发落地动画。每种反馈都来自res/role/[角色名]/pet_conf.json里定义的动作映射——拍拍、睡觉、生气,全是可配置的。

经济与增益系统也没落下。金币(项目里叫"啵币")可以在商店消费;背包支持整理、使用、喂食;物品还能携带 Buff——比如吃了汉堡后 5 分钟内饱食度不再下降,或者吃薯条后每 30 秒自动赚 5 金币、持续 2 分钟。这些配置都写在res/items/Default/items_config.json里,一个物品回多少血、掉率多高、几级解锁,一目了然。

最实用的是任务模块。DyberPet/Dashboard/taskUI.py提供番茄钟和自定义专注时间两种模式,倒计时会直接显示在宠物头顶。专注期间拍拍宠物,它还会弹出气泡"监督"你。任务完成、时间结算时都有物品或金币掉落作为奖励——把"专注"变成一件有即时反馈的事,是这套设计最打动人的地方。

四、换角色、加模组:给宠物换皮肤也换性格

养久了想换一只?项目自带多种角色,你也能从社区下载新模组导入。理解这一节,你就抓住了整个框架"可扩展性"的命门。

每个角色就是一个文件夹。打开res/role/目录,你会发现每个角色独占一个文件夹,比如KittyChrisKitty,里面通常放着:

  • pet_conf.json:角色的"性格卡"——尺寸、缩放、各种动作对应哪套动画、随机行为有哪些;
  • act_conf.json:动作配置,定义每套动画的帧序列、播放速度与锚点;
  • action/文件夹:动画帧图片,站立、行走、睡觉各一沓;
  • items_config.json(可选):角色专属的物品配置。

pet_conf.json就是角色的大脑。res/role/Kitty/pet_conf.json来说,它告诉程序:这只猫默认做什么动作、往左走/往右走/被拖拽/下落时分别播放哪套动画,以及闲置时按什么概率随机发呆、散步、睡觉甚至生气。想让角色更活泼,就把随机走动的概率调高;想让它安静,就让"站立"成为绝对主角——改的是配置,动的却是整个性格。

物品同样可以"模组化"。res/items/Default/是默认物品仓库,汉堡、薯条、果酱、炸鸡都定义在这里。想加一个新道具?照葫芦画瓢写一个 JSON 条目,指定图片、效果、掉落率和描述即可,不需要碰任何 Python 代码。

还有"宠物的宠物"。角色可以附带迷你宠物(比如派蒙),它们会排队跟随主角色,也能单独设置是否跟随、是否掉落、缩放大小。想深挖这块,可以顺着DyberPet/Dashboard/下的宠物卡片相关模块翻一翻。

五、进阶玩法:亲手"做"一只宠物

到这里,你已经是个熟练的"养宠人"了。接下来是更酷的部分——从零造一只自己的宠物,或者往框架里加新功能。

第一步是准备动画素材。你需要一组按命名规则排好的 PNG 帧图片(stand_0.pngstand_1.png……),放进角色的action/文件夹,再在act_conf.json里声明这些动作。项目在DyberPet/Dashboard/下提供了animationUI.py(动作管理)和animDesignUI.py(动作设计)两个界面工具,你可以直接在面板里查看、预览甚至组合动作,不必手敲每个配置。

接着是设计对话。对话不是写死的弹窗,而是一棵可以分叉的"对话树"——每个节点可以是一条文本、一个选项,选项又继续指向更多分支。下面这张图展示的就是一个真实的对话流程设计:从"晚安"开始,根据用户的选择走向不同的后续节点。

再往深走,就是信号与槽的世界。打开run_DyberPet.py,你会看到几十行connect调用——宠物的动作、数值、气泡、面板之间全靠信号传递消息。比如宠物吃到食物会发出信号,通知气泡和状态面板各自订阅、各自更新。看懂这条"消息总线",你就明白了为什么新功能可以像插头一样直接插进现有系统,而不必大改别的模块。

最后一道脚手架,是官方文档。仓库里的docs/art_dev.md是素材开发指南,从角色动作到附件、迷你宠物都有说明;res/language/下的翻译文件结构也值得一看——整个项目的中英文切换就是这么实现的。想做更深入的功能开发,从这两个入口开始,比到处翻代码高效得多。

六、看完这篇,你现在就可以动手做三件事

路径已经清晰了,送你一张"下一步行动清单":

  1. 今天就能做:按第二节的步骤装好环境,运行python run_DyberPet.py,先和默认猫咪玩十分钟——右键菜单、喂食、拖拽全试一遍;
  2. 这个周末做:给现有角色改一次pet_conf.json,调高随机动作概率,观察"性格"变化;再照着物品配置,给自己加一个"私房菜"道具;
  3. 长期可以做:动手画一套自己的角色动作帧,或者围绕对话树做一个多分支互动剧情,把你的角色真正做成"独一无二"。

桌面宠物这件事,技术门槛其实没有想象中高。DyberPet 把复杂的动画状态、数值养成和 UI 交互都封装成了一个个可配置、可替换的积木,你要做的只是从"会玩"到"会改",再到"会造"。现在就打开终端,把第一只宠物放进你的桌面吧——它正在等你。😺

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

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

← 返回列表