桌面宠物框架DyberPet上手指南:从跑通Demo到自制角色的完整路径

📅 2026/8/14 2:11:57
桌面宠物框架DyberPet上手指南:从跑通Demo到自制角色的完整路径
桌面宠物框架DyberPet上手指南从跑通Demo到自制角色的完整路径【免费下载链接】DyberPetDesktop Cyber Pet Framework based on PySide6项目地址: https://gitcode.com/GitHub_Trending/dy/DyberPet你是否曾经想过让喜欢的动漫角色住在桌面上陪你写代码、陪你吃外卖、在你摸鱼时提醒你该专注了想动手实现却发现透明窗口、无边框置顶、帧动画这些词每个都够研究一整天。DyberPet就是为此而生的开源项目一套基于 PySide6 的桌面宠物框架把动画、养成、任务、商店、迷你宠物统统封装好你只需下载代码、跑起来、再往文件夹里放一套素材一个活的桌宠就诞生了。这篇文章会带你走完从环境搭建、看懂核心机制到做出自己专属角色的全过程无论你是想自娱自乐还是二次开发都能从中找到抓手。先解决一个真实的痛点桌宠为什么难做很多人第一次想做桌宠时第一个念头是不就是一个会动的 GIF 吗。可真动手就会发现事情远没那么简单。你可以回想一下桌面宠物的几个基本需求窗口必须是透明、无边框、始终置顶的否则宠物会带着一个方框盒子出现动画要按帧播放还要区分待机、行走、拖拽、下落等不同状态状态之间要能平滑切换宠物要有物理感——被鼠标拎起来甩出去松手后会下落碰到屏幕边缘会反弹更进一步还要有饱食度、好感度这类养成数值数值变化要反过来影响宠物的行为。每一个需求单独拎出来都有现成解法但把它们缝合成一个完整应用工作量立刻膨胀。DyberPet 的价值恰恰在于它把上述这些地基全部打好并且用JSON 配置把美术资源和程序逻辑彻底解耦。你不需要理解 Qt 的底层细节只要按约定放图片、填参数就能得到一只行为正常的桌宠。十分钟跑通环境准备与一键启动DyberPet 要求 Python 3.9 及以上核心依赖只有四个PySide6、PySide6-Fluent-Widgets、apscheduler 和 pynput。我建议先创建一个干净的 conda 环境避免污染其他项目conda create --name Dyber_pyside python3.9.18 conda activate Dyber_pyside # 定时任务调度饱食度下降、专注计时都靠它 conda install -c conda-forge apscheduler # 全局鼠标监听让宠物感知你的点击与拖拽 conda install -c conda-forge pynput pip install PySide6-Fluent-Widgets1.5.4 pip install pyside66.5.2 pip install tendo # 用于禁止多开防止存档写坏依赖装好后把仓库克隆到本地git clone https://gitcode.com/GitHub_Trending/dy/DyberPet cd DyberPet python run_DyberPet.py首次运行会看到一只小猫出现在屏幕角落右键单击它就能呼出菜单。Windows 用户也可以直接下载打包好的 EXE双击即用。这里有个小提醒如果显示器缩放比例不是 100%动画位置可能会偏移可以进系统设置里手动调整每个角色的缩放参数项目已经为多屏幕和缩放场景做了处理。核心机制拆解配置文件如何喂出一只活宠物跑通之后很多人会好奇这只小猫的行为到底是谁在控制答案在res/role/目录里。每个角色一个文件夹里面只有两类东西——图片和 JSON。程序启动时settings.py会扫描res/role/下所有子目录把每个文件夹名当作一个可选角色接着读取该角色的两个核心配置pet_conf.json定义角色的基本属性和行为清单act_conf.json定义每个动作的图片序列、播放速度、移动方向我们以自带的小猫 Kitty 为例它的待机动画是这样声明的// res/role/Kitty/act_conf.json { default: { images: stand, act_num: 1 }, left_walk: { images: leftwalk, // 使用 leftwalk_0.png ~ leftwalk_4.png act_num: 5, // 共 5 帧 need_move: true, // 播放时角色本身要移动 direction: left, // 向左走 frame_refresh: 0.2 // 每 0.2 秒切一帧 } }程序读取后会把action/目录下的stand_0.png、stand_1.png… 依次加载成 QPixmap按frame_refresh指定的间隔循环播放。图片帧的编号从 0 开始任意连续即可程序会自动扫描不强制要求统一命名长度。换句话说做动画素材的本质就是按动作名放一组序号连续的 PNG。而 pet_conf.json 里真正有意思的是random_act字段它把单一动作组合成动画并配置了触发概率与状态门槛{ random_act: [ {name: 左右行走, act_list: [left_walk, right_walk, default], act_prob: 0.1, act_type: [3, 1]}, {name: 睡觉, act_list: [fall_asleep, sleep], act_prob: 0.05, act_type: [0, 0]} ] }act_type的第一个数字代表饱食度等级0 是饿昏、3 是活力满满第二个数字是解锁所需的好感度等级。也就是说当角色吃饱喝足时更容易活蹦乱跳饿到不行时大概率只会趴着睡觉——养成数值和动画行为就这样被一条 JSON 串起来了。信号与槽模块之间如何说话桌宠不是孤立的小动画。喂食要涨饱食度、涨了好感度要弹出通知、通知要写进日志、数值变了背包和商店界面要刷新……这些跨模块的联动在run_DyberPet.py里集中完成。启动入口会创建五个核心对象桌宠本体PetWidget、通知系统DPNote、附件系统DPAccessory、系统面板和仪表盘Dashboard然后用 Qt 的信号槽机制把它们的接口两两接起来。# run_DyberPet.py 中的部分接线代码 self.p.setup_notification.connect(self.note.setup_notification) # 桌宠→通知 self.board.backpackInterface.use_item_inven.connect(self.p.use_item) # 背包→桌宠 self.p.addItem_toInven.connect(self.board.backpackInterface.add_items) # 桌宠→背包 self.p.fvlvl_changed_main_inve.connect(self.board.shopInterface.fvchange) # 好感度→商店你可以把信号槽想象成一条条消息管道某处状态一变就向管道里喊一声所有感兴趣的模块自动响应。这种设计的好处是模块之间彼此不需要知道对方存在新增一个界面组件时只要补几条 connect完全不用改动业务逻辑。想要理解全貌的同学直接通读这个文件里的__connectSignalToSlot()等于看了一遍系统架构图。从吃到玩物品、Buff 与迷你宠物数值系统是桌宠的生命线。饱食度HP每两分钟下降一点好感度FV则通过互动累积等级上限高达 200 级从星星、月亮一路升到皇冠。为了让养成更有策略性物品系统引入了Buff 机制见DyberPet/Dashboard/buffModule.py物品配置里加一段buff字段就能定义持续生效的效果// res/items/Default/items_config.json 中的薯条 { effect_HP: 8, effect_FV: 2, drop_rate: 0.5, buff: { effect: coin, // 效果类型掉金币 interval: 30, // 每 30 秒触发一次 value: 5, // 每次 5 金币 expiration: 120, // 持续 2 分钟 description: 使用后每30秒获得5金币持续2分钟 } }Buff 分为两类一类是定时结算型每隔 N 秒增减 HP/FV/金币一类是状态变更型比如5 分钟内饱食度不再下降。系统会用 QThread 在后台跑一个循环每秒刷新所有生效中的 Buff到期后自动移除。这种设计让道具不再是一次性数值而变成了有时间维度的策略选择。迷你宠物是另一个亮点。你可以把res/pet/下的角色比如派蒙召唤出来它会自动排队跟随主宠移动被拖走也会自己跑回来。物品、宠物、动作全部遵循同一套文件夹 JSON约定这也是整个框架扩展性最好的地方。三招让桌宠变成生产力工具桌宠不只是卖萌。项目内置的任务系统可以把宠物变成监督你的伙伴番茄钟开始一个 25 分钟的番茄钟宠物会切换到focus专注动画倒计时结束自动结算奖励金币自定义专注时长在任务面板设置任意时长结束后按已专注时间结算中途取消也会按比例给奖励不留挫败感待办与提醒备忘录支持到时提醒和间隔提醒宠物会在你桌面弹出气泡通知——比系统弹窗可爱得多也更容易被注意到。更有趣的是对话气泡系统摸摸头、喂食、饿肚子、频繁点击1 秒内点 7 次都会触发对应的气泡和语音角色的性格感一下就出来了。这些气泡文案和图标都支持按角色独立配置是低成本做出人格化效果的好途径。进阶玩法给角色加一套自定义动作理解了配置体系后扩展角色就变成了一件有章可循的事。以给现有角色新增一个动作为例完整步骤是准备帧图在res/role/[角色名]/action/下放入myact_0.png、myact_1.png…前缀即动作名声明动作在act_conf.json中新增myact: {images: myact, act_num: 3, frame_refresh: 0.1}挂进行为列表在pet_conf.json的random_act中加入包含myact的组合并设定act_prob与act_type导入验证打开系统面板的角色管理使用模组自动添加功能程序会检查文件夹结构并给出错误提示比手动排查高效得多。如果只想调试不想动文件Dashboard 里的动画面板还支持运行时添加、删除动作并立即播放预览。素材开发的具体规范文件清单、每个字段的含义、可选的note/个性化通知、info/作者信息都在docs/art_dev.md里有完整说明官方社区也在持续收集第三方角色和物品模组可以参考docs/collection.md里的合集。常见问题与避坑建议Q动画位置对不上或者角色掉到屏幕外A多半是显示器缩放比例导致。先确认系统缩放是否为 100%再到设置里调整该角色的scale参数多屏幕用户建议把主屏设为第一块屏幕程序会按主屏坐标初始化。Q为什么我加了图片但角色报错A检查三点文件是否用了英文命名繁体中文在某些解压环境下会乱码导致崩溃act_conf.json里声明的images前缀是否和文件名一致图片是否都是同尺寸的 PNG。素材开发文档里列了程序会自动校验的项目先在系统面板里跑一次自动导入。Q鼠标拖拽手感怪宠物飞太快Apet_conf.json里的interact_speed和全局的fixdragspeedx/fixdragspeedy分别控制交互响应和拖拽速度先小幅调后两项试试。Q任务系统的专注功能不触发A专注动画是可选的如果角色没有定义focus动作程序会自动回退到默认动画这不影响计时与结算。总结下一步可以怎么玩DyberPet 把桌面宠物这个看似小而美的需求做成了一套相当完整的工程JSON 驱动的配置体系让美术与代码彻底解耦信号槽架构保证了模块间的高内聚低耦合而 Buff、任务、气泡、迷你宠物等子系统则为二次创作留足了空间。对于想学 PySide6 桌面开发的初学者它是绝佳的解剖样本对于想自娱自乐的玩家它是一台角色创造机。目前项目正在开发大模型接入能力未来你甚至可以和桌宠自由对话让 TA 从会卖萌进化成会帮你管理待办的生活助手。如果你也有一只一直想养在桌面的角色不妨从克隆仓库、跑起 Demo 开始然后照着素材开发文档给它配一套专属动作。动手的那一刻你会发现桌宠并不难难的是有人替你踩完了那些坑。【免费下载链接】DyberPetDesktop Cyber Pet Framework based on PySide6项目地址: https://gitcode.com/GitHub_Trending/dy/DyberPet创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考