WolfChen1996 / DesktopPet

我的梦想,是让每个人都可以轻松地制作属于自己的桌宠!
102 stars 14 forks source link
cat desktoppet

《刀刀的猫猫》

作者:狗头人 www.wolfchen.top
QQ群:980897840

项目简介

我的好朋友大菜刀很想养一只猫,可是她太菜了,不能养猫,于是我决定做一只给她。
第一阶段,完成一个能走能跳能睡觉,可抓鼠标会吃图标,点一点它还能在地上打滚的猫猫,现在进度大概80%了。
第二阶段,希望能做出一个,每个人都可以随便涂涂画画,就能生成自己的专属猫猫的软件。
第三阶段,是加上一点点社区功能,好友之间可以分享宠物,或者去串门。
“我的梦想,是让每个人都可以轻松地制作属于自己的桌宠!”
如果有人想一起监工,或者想帮忙画一点东西,抑或是想做一个自己的宠物,欢迎加qq群讨论

计划、进度和开发记录

接下来 制作设置面板
优化猫猫动画,增加爬墙动作 添加2~3个宠物
创意工坊和模型生成器

日期 完成事项 新知识
2023.06.06 修bug由于B站绘画UP主【Maxwell_Who】画了一只猫猫,导致大量mac用户发现了这个项目,进而发现了一堆bug,于是本着【没发现就是不存在,发现了一定得修】的精神,我被迫修复了这些bug。啊,好烦,不想工作,想专心做桌宠,然后再弄个鼠标皮肤的商店,类似wallpaper engine,就叫mousepaper engine吧,然后画个拿宝剑的波吉逗猫,嗯……挺好。
2023.02.16 寻求帮助找远在美国的灰灰买了chatgpt的plus会员,让chatgpt4看看我的代码怎么优化,他果真看不懂。这下地球上没人看得懂我的代码了,不瞒你们说我自己都看不懂了。但是我问了问他这个项目逻辑,他说我的逻辑没什么问题,吃cpu和硬盘也是正常的,我觉得他在扯淡。
2023.01.31 探索吃CPU和硬盘的问题,问了zzt,他说:“在get_pet_image 维护两个 dict,一个是 path Image 另一个是 path Timeout,过期 移出path 跟 image,热点图片就缓存下去了,还要记着加锁。” 我听不懂,所以假装没听见。
2022.10.07 思考思考了半年哦,想了很多东西,包括这个项目现有的不足,未来要实现的功能,以及俄乌冲突,中美贸易战,房价,就业率,生育率,结婚率,离婚率,人口老龄化之类的东西……嗯,都很值得思考。关键部分基本想通了:首先,为了日后兼容一些半透明的部位,肯定是不能用gif,得用png才行;其次,不能一直切换图片路径,应该先把所有图片载入内存,然后再显示。目前的图片轮播实现方式,占用CPU过高,且一直读取图片,对机械硬盘也不太友好,需要重构。
2022.04.14 修bug 学会了在不同class之间调用function以及config.write的时候设置编码(其实很简单,凭直觉写了一下就对了,连文档都没查)
2022.03.09 开工一个月纪念日!今天看了一下shimeji……嗯,不瞒你们说,因为不喜欢java,这是我第一次看shimeji,之前是有些闭门造车,挺多shimeji现有功能都没考虑到;不过有一个很巧的事情,就是我的桌宠可以兼容shimeji的模型……嗯,那如果要兼容shimeji模型的话,目录结构就不能修改了。那就按这个结构做下去吧!之后或许会加入一些自动识别动作个数的功能。 拓展了见识,以后做项目,一定要先充分了解市面上现有产品再开始做,不可做闭门造车的井底之蛙。
2022.03.08 用翻转左走图片,做了临时的右走动画 学会了如何翻转图片
2022.03.07 修复bug 不要忘记初始化self.is_follow_mouse
2022.03.02 制作了【设置面板】,这样就不用修改配置文件了,方便了许多。 "学习了qt designer的使用,以及如何导出ui文件,如何添加qrc 学习了emit和QtCore.pyqtSignal,理解了connect的逻辑。了解了如何把ui文件和qrc文件转成py并导入到项目中去"
2022.03.01 修复bug
2022.02.28 休息一天
2022.02.27 休息一天
2022.02.26 项目结构改动会影响加载速度,需要重新考虑一下,暂时调整回原来的样子 学会了configparser的读写
2022.02.20 "这几天吃不好也睡不好,每天都在想这个猫猫。有很多问题,现有结构是没法实现的,比如mac的适配,开始菜单的置顶,切换宠物之类的功能,因为多套了一层窗口,很多东西想优化却无从下手,所以决定进行一次重构。 经过这几天的努力,完全重构了猫猫,彻底理解了pyqt5的逻辑关系,并确定了今后的项目数据结构。顺手解决了mac的兼容性问题,添加了几个功能和参数,并修复了切换宠物、放大缩小等功能里的bug。" "python中遍历目录下的文件并排序 pyqt5在mac中的使用 "
2022.02.19 休息一天
2022.02.18 画了一个走路的猫脑袋。更新了歪脑袋的动作,以及很多你们感觉不到但是我真的做了的细节优化,提升了运行效率和内存占用量 画画的水平得到了轻微的提升
2022.02.17 完成了拎起来和掉落的动画,优化了动画播放逻辑 在CC的帮助下,添加了一个类,实现了lambda传参的问题
2022.02.16 试图制作快速选择宠物的菜单 学习了qt二级菜单和lambda,但是lambda没啥卵用,不知是有bug还是机制问题,后续将用QButtonGroup尝试
2022.02.16 完成了猫猫眨眼的动画,并添加了把猫猫丢来丢去的功能,同时完善了配置文件的使用逻辑,修复了许多bug 写了一个小小的物理引擎,复习了等比数列的相关公式,意识到我的数学是挺菜的。
2022.02.15 把猫猫站立姿态的素材处理完了,并绑定了骨骼 复习了AN的骨骼操作
2022.02.14 吸附底端、自由掉落以及左右移动的功能完成了。开始制作动画以及画猫猫。 QDesktopWidget().screenGeometry()以及QDesktopWidget().availableGeometry(),可以分别获取屏幕尺寸和桌面尺寸(去掉开始菜单)
2022.02.13 Demo制作完成 原来俺真的可以做一个桌宠
2022.02.13 可以正常显示了! pyqt5全屏显示、背景透明、label以及Qpixmap
2022.02.10 决定将制作工具从unity改为python,虽然做起来更难了,但是后续可以增加更多功能,比如吃桌面上的图标。 pyqt5的安装与基础使用
2022.02.09 《刀刀的猫猫》正式立项,决定使用Unity制作 Unity里给camera增加代码制作背景透明的效果

使用说明

运行:

windows用户直接双击【pet.exe】就可以运行啦,如果需要多只,多点几次即可。
辣鸡苹果的用户请查看【mac运行指南.txt】,自己下个python,装2个包,改一行代码,编译运行。后期应该会打包辣鸡mac的dmg,反正现在是有点bug,还在研究中。

修改宠物:

可直接进入对应文件夹修改图片;如需增减图片,需要修改文件夹中petconfig.ini文件(双击用文本文档打开即可),配置文件内有注释,对着修改每个状态对应的文件名即可。

添加宠物:

需要在config.ini文件中(右键》编辑,用文本文档打开即可),添加一个宠物的id,并前往data文件夹中添加一个和id对应的文件夹,并添加参数文件(从其他宠物的文件夹复制一个petconfig.ini过来)和图片。
后期计划制作模型生成器和共享宠物的平台,希望日后可以很方便地创建或下载自己想要的宠物。

不过设置面板很快就好了,之后就不用去改文件啦。
设置面板做好了,修改宠物的话直接在设置面板修改即可。不过添加宠物可能还是要改改配置文件。

参数说明

【config.ini】

这是配置文件,如果添加宠物,需要修改下面的petids数组;

可以通过修改petid更改默认宠物。

可以通过修改traypath修改托盘图标

[config]

宠物id,可以是字母或者汉字,用英文逗号隔开

petids=1,2,cat1

默认宠物的id

petid=cat1

托盘图标路径

traypath=./data/tray.png

【petconfig.ini】

[config]

宠物名字

petname=Black Cat

宠物缩放等级,1就是原尺寸,0.5就是一半,2就是2倍

petscale=0.15

底部偏移距离,可以用来制作一部分爪子露在开始菜单外面的样子。正数往下

bottomfix=0

丢来丢去的速度(水平)

dragspeedx=0.5

丢来丢去的速度(竖直)

dragspeedy=0.3

是否可以往两边扔出去(yes/no)

throwout=yes

是否可以往开始菜单里走(yes/no)

intotray=no

重力加速度,影响掉落速度

gravity=4

刷新速度

gamespeed=10

可修改默认动作的图片数量和触发概率。

默认动作类型,其中stand,walkleft,walkright,drag,falling,分别对应站立,向左走,向右走和提起,为必备参数,别改。

petaction=stand,walk,walkright,drag,falling

走路速度

petspeed=5

默认动作的图片个数,文件名为stand1.png,stand2.png~standX.png,到几就写几,到100就写100。分别对应站立,向左走,向右走,提起,掉落

petactionnum=1,26,1,5,1

站立和左右走动的占比,0.5代表50%,三个数加起来等于100%;自定义动作包含在站立里

petactionrate=0.95,0.05,0

拖拽时坐标偏移,用于改变拖拽时宠物和鼠标的相对位置,比如要拎起脖子之类的。x正数往右,y正数往下。

dragingfixx=0
dragingfixy=1000

以下为自定义动作

自定义动作类型

standaction=stand,blink,shake

自定义动作的图片个数,文件名为stand1.png,stand2.png~standX.png,到几就写几,到100就写100。要加单引号

standactionnum=1,12,12

每种自定义动作播放的占比,0.5代表50%,加起来小等于100%,若不满100%,则显示第一个动作

standactionrate=0.9,0.05,0.05

写在最后

本项目由想养猫又养不了的大菜刀独家逼迫狗头人完成
早期参考了以下两个项目的框架
https://github.com/Laylar-sleep/DesktopPet
https://github.com/SpeedPromise/DesktopPet

特别感谢

xixi提供了切换宠物的代码思路
Maggie的鼓励
帮忙找bug的ZZP-DMU
建议在初始化中添加is_follow_mouse的F
B站绘画UP主【Maxwell_Who】的宣传!
以及大菜刀的逼迫!
还有各位小伙伴的支持!