终于,我去,这个小桌宠被做出来了,真的废了我半条命
首先看看我给AI的提示词吧,这次我写的非常非常多,为什么呢? 因为我发现无论给AI提醒多少遍,如果代码只是全部浓缩到单个pug文件的话就会导致一个问题——低效性和不可控性,如果所有功能全部集中到一个脚本,我想让它改什么功能非常非常麻烦,所以我放弃了单个脚本实现所有功能这种方式,让AI给我模块化处理单个功能,这样更有可控性,可以第一时间发现问题出现在哪个脚本,所以这次我花了一下午时间写提示词和反复调试
相关文件的目录树如下:
themes/magzine/
├─ layout/
│ └─ _partial/
│ └─ pet/
│ └─ pet.pug
└─ source/
└─ images/
└─ pet/
└─ js/
├─ pet-sprite.js
├─ pet-state.js
├─ pet-hair.js
├─ pet-layers.js
├─ pet-outline.js
├─ pet-sound.js
├─ pet-chat.js
└─ pet-music.js
提示词如下:
1 | 我希望将这个桌宠转换为Hexo的内置的插件,我希望将桌宠的每一个功能解耦分成模块化的多个代码文件,并且将桌宠相关的所有文件都放到一个文件夹,比如在hexo的themes文件夹里的layout文件夹里的_partial文件夹里新建一个pet文件夹,这里面就是代码文件,然后桌宠相关的所有图片文件都放到themes文件夹里的source文件夹里的images文件夹里的pet文件夹里,代码最好加上中文注释方便我看懂 |
1 | 非常好,接下来你只需要改这几个地方,第一个就是将角色和光环的比例缩放到0.3倍,角色的移动速度也是降低到原来的0.3倍,头发相关的代码不要动,将sweat.png和sweat_L.png的透明度改为原来的40%,将影子的图层改为最底层,粒子的大小控制在16*16大小左右,最大不超过16×16,最小可以是2×2,然后粒子之间的间隔拉大,粒子随着移动过的轨迹排列,对于声音的话,鼠标右键点击桌宠会弹出两个小按钮“静音”和音量控制 |
当然肯定不是纯文字的描述,我反编译了桌宠原本的代码,最开始的时候我是直接把代码扔给AI,然后就说了句“把这个转换为Hexo主题的桌宠插件,放到pet.pug文件里”,结果效果非常差劲,于是后来又陆陆续续给了几百行提示词给了AI,结果还是不尽如人意,还浪费了我70%的额度,于是我觉得不能就这样把AI高级请求额度霍霍完了,必须认真对待了,于是今天上午我在Godot游戏引擎中仔细研究了编辑器中设置的参数,还有作者写的代码,这个是AI绝对不可能做到的,脚本里写的很多参数都是在编辑器里设置的,于是我站在制作游戏的角度认真分析了每一个模块的作用,对于一些角色的行为用自己的想法描述,总之,说多了都是泪啊~~
最终还是做出来了,将一个游戏角色硬生生变成了hexo插件
未来可能会把这个PR给Magzine主题,现阶段我先用用看看有没有问题
代码如下:
首先就是在layout.pug里启用桌宠模块
1 | != partial('_partial/pet/pet') |
pet.pug
1 | //- ======================================== |
pet-chat.js
1 | /** |
pet-hair.js
1 | /** |
pet-layers.js
1 | /** |
pet-music.js
1 | /** |
pet-outline.js
1 | /** |
pet-sound.js
1 | /** |
pet-sprite.js
1 | /** |
pet-state.js
1 | /** |
最后
目前没什么问题,就是歌曲的话我怕侵权,让AI找的两首免费的纯音乐,总之,桌宠+音乐播放器大功告成了,虽然和哔站大佬的有很多区别,但是我觉得现在的版本毫不逊色大佬制作的桌宠,毕竟——这是由游戏引擎转变成网页前端的实现,但是二者天差地别,虽然也有以JavaScript为脚本语言的游戏引擎比如开心消消乐的游戏引擎Cocos 2d,但是JavaScript不适合做游戏,尤其是大型游戏,这就是为什么大型游戏使用的语言一般是C#和C++,JavaScript只适合微信小游戏和竖屏游戏还有网页游戏比如4399
未来再看看有没有更好的实现吧,果然模块化是最正确的,模块化可以保证删掉某个文件之后只会造成某个功能的缺失但不影响全局
比如我之前提交的lang-switch.js脚本本质上不会影响任何脚本,删除后也只是会造成翻译功能的消失,不会影响其他功能
这个归功于forever218大佬的自定义模块设计,我可以自由添加界面落叶效果和鼠标点击效果还有数学公式
以及文件命名见名知义,这个真的很重要,因为代码是看不懂的,但是看代码文件的名字就知道这个是负责什么的,这样让AI来改轻松的多,虽然很多人觉得AI写的是垃圾代码,但是吧,AI再垃圾也比我强,更何况我使用的是Claude的最顶级的模型
这就像拼积木一样,将各个功能组合到一起,而彼此之间可以说是弱联系,这就是“解耦合”,不会出现删掉一个报错千行这种情况
对了,目前主题测试几乎没有问题了,除了一个就是偶然发现文章可以嵌套,就是文章套文章套文章,不过我觉得问题不大,没必要改
对了,桌宠目前没有实现多语言化,因为这样又要改上面的文件,不想再改了我已经开始厌倦了,我变懒了

评论区