前言 #
大家好,这里明琪。不知不觉就到了10月中旬了呢……
这段时间,我也做了许多的事情。比如重装了下电脑系统、重构了项目的档案、做完了一个Godot插件、尝试了许多新的技术、又画了几幅新的画。
我已经迫不及待地想把这段时间的经历一一分享出来了。
游戏测试进展 #
这段时间,我们就九号灰盒做了许多的原型测试,建立了许多个关卡,每个关卡都有一个特定的目标,有些关卡测试得很有意思,有些则感觉没什么感觉。
经过这些测试,我第一次发现,似乎游戏的乐趣来源于限制,只有给角色能力适当的限制,才能让关卡运作起来,为了让关卡运作起来,我就不再迷茫了,果断将原本想的恶作剧让守卫滑倒后守卫不动的设定,换成守卫被改造过的地毯滑倒后暂时不动,但还是会站起来继续追玩家的设定。
经过这样的变动,才终于让游戏的整个关卡成功动了起来,变得有一定的策略和可玩空间了。
之后做的测试,陆续引入了几个新的机关、关卡、胜利条件等内容,这些新加入的东西虽然都带来了一定的扩展,但随着深入测试,我也是越来越感觉到整个游戏的设计思路,似乎越来越趋于一个固化的设计思路,感觉再怎么规划,也只能这么规划AI,想不出更有意思的想法了。
于是我决定做个BOSS战测试下,但就是在制作BOSS战的过程中,我意识到了目前的许多不足之处。
之前的设计制作上都非常顺利,但到了BOSS战,设计上就一直卡壳了,因为我低估了BOSS战的复杂性,试图在每个BOSS战引入新的机制和AI更改,但其实引入一个新的机制,就像是引入一个新的玩法一样,难度其实不亚于制作一个新的游戏了,于是在反复跟BOSS战的设定扯皮的过程中,我的热情也逐渐消退,最终就不太想设计这个BOSS战了。
至此,从8月底开始,一个新的低谷期又来了。
Guix系统的新发现 #
在这段低谷的期间,我也没闲着,一直在fediverse逛来逛去的,折腾东西,还认识了个有趣的Emacs兼Guix Hacker,他给我推荐了Guix系统。
正好我也闲着没事,于是就决定试试看新的操作系统,也就是Guix系统,于是9月份这段时间,我一直都在弄Guix系统的折腾。
经过一段时间的折腾,我成功在自己新买的云服务器上装好了guix系统,我意外地发现,Guix强大的可重复性和函数式构建语法,让维护服务器变得特别轻松,再也不用繁琐地反复进行切换文件和寻找代码的操作了,于是我就计划着,将家里的所有电脑都换成Guix。
虽然Guix生态并不是很全,但我想着顺便补一补生态中缺失的包构建,于是就进行了折腾,经过了近半个月的折腾,我终于完整地迁移并习惯了Guix系统的使用,现在家里的所有电脑和Nas云服务器,开始使用Guix系统了。
完美,学会了guix后,再也不用担心重装电脑要重新配置了,许多构建都变得轻松了许多,虽然维护guix配置文件和guix频道确实也挺麻烦,但Guix的强可控性给我的安全感太好了。
我那位Guix的朋友,最近也开始提供了guix萌这个guix构建二进制镜像服务器的运营,并开始寻求赞助。
生活方式的重组 #
正是在折腾Guix系统的这段时间和缓冲期,我也开始反思了自己的生活方式。
我发现自己似乎平时留给自己的空余时间实在是太少了,每天都给自己太多的高强度工作,制作游戏也许最难考虑到的就是精力成本,总是有一种要费尽全部心思去做的自毁心态。
但这样的生活,从来都是不提倡的,没日没夜的,等于是没有生活……
据说当年著名的漫画家手冢治虫就是因为给自己太大的创作压力,一心想要追求做出心目中的完美,被这样的执念所趋使,最终英年早逝……
而藤子F不二雄,则秉持着终生持续创作的理念,懂得适时候休息,安排规范的生活节律和作息,最终也实现了终生创作,活到了80多岁。
基于上述这样的反思,我给自己重新做了一套时间规划表,这套规划表开始重视规划每日必须的出门活动时间,同时给个人规定了4小时的工时制来防止过劳。
虽然目前的安排依然无法完全避免有时候什么都没做也很劳累的情况,但也比为了赶快完成什么压抑自己好多了。
也许,不执迷于未完成之事,其实是一个非常必要且健康的心态吧。
新的灵感 #
这段时间,在创作方面,因为看完了《小鬼Q太郎》,又看了鲁邦三世,于是心里也浮现出了许多新的怪盗灵感。
为了这套新的灵感,我推翻了原来的角色设定,将小琪塑造成了笨蛋捣蛋鬼怪盗的形象,小梦则塑造成了俏皮浪漫的怪盗形象,并用比原设定案更为简洁的写法,写了新的角色设定案,同时也计划重新设计游戏的灵感和玩法。
我想,设定案这类东西,因为要方便归档记忆,随时复盘,所以反而不是越丰富越好,而是越简单越好,其实可读性才是最重要的,个人感觉这点远胜设定上的复杂性。
好在这时候有最好的朋友梦暮陪伴,所以我和梦暮一起想了许多新的玩法思路,同时我也终于认识到了自己其实了解的东西和知识面还是太少了,决定多看点怪盗题材的作品,多了解这些知识。
于是我当时就和梦暮设计了一套新的灰盒,准备使用新的方法进行迭代,这就是灰盒10,不过这时候我该叫迭代10了,因为灰盒我感觉还是更偏向具体的,微观地设计单个测试和玩法,迭代就更宏观点。
这次新的玩法,因为我们都觉得之前基于物件的恶作剧思路其实总体上还是有那么点无聊的,不够有趣,所以我们改成了基于反应和状态驱动的玩法,这套玩法的设计方案可能会更偏向大鹅模拟器的思路,玩家的目标不再是简单地盗窃,而是通过恶搞守卫等方式克服障碍,然后才达成盗窃的目的。
正好这段时间,我们又开始看鲁邦三世,于是我们想到了一个点子,就是将怪盗动漫和电影里面的这些怪盗的恶作剧手段逐一记录下来,再一个个思考这些手段如果做成游戏会怎么玩。
于是我们一边看一边记录了许多不同的手段在灵感笔记里。
在完成上面的策划案的设计后,我们也决定开始新的灵感的实现。
不过这一次,我思来想去,一方面是我想试着用Lisp在godot中写游戏,正好有个godot-s7-scheme可以满足这点。
另一方面则是我们的游戏确实需要一个通用演出系统,于是我就想出了一个基于godot-s7-scheme的演出系统的灵感,将演员作为抽象层,通过用“剧本”,一组Scheme宏包裹的演出脚本,定义演出的各个事件和各个演员的动作的方式,来调度整个游戏的演出机制和事件链。
这个灵感我可以说同时结合了RPG Maker的事件系统还有Scheme那优雅的语法构造,于我就立下了新的godot插件项目,也就是NekoWright。
最近我也开始反思了自己的游戏设计的规划反感,其实也许我也没必要执着于做好难以完成的大项目,像藤子F不二雄写许多实验性SF小短篇练笔一样,也许我们也可以试着先做点实验性的小游戏,这样会不会更好呢?
许多游戏的设计灵感和构想都停留在脑海中,虽然也有部分小游戏已经笨拙地实现了部分,比如之前RM创作大赛做的《迷宫物语》。
但还有许多停留在脑海中的灵感,像学院与都市怪谈探探秘、之前弃坑的风雨旅记,又或者露营、探险队和救援队的游戏等。
于是,我脑海中也浮现出了一个新的游戏的灵感,我正好也认真展开想了下,那就是《星之巡礼者》,两位小小的繁星之子踏上巡礼旅途的故事,感觉是很适合做成文字驱动,悠闲地看两个小可爱在宇宙中漂流,路过许多时空和不同星球,触发有趣的文字探险事件的桌宠游戏。
于是最后我就有了一个想法,就是如果当前不想做目前的项目了,等做完这个NekoWright之后,也可以先做别的实验性小短篇游戏试试看,当然现在我依然在做着夜之城传说,而且是更想把这个项目完成好了。
NekoWright的完工 #
后来,经过了近一个月左右的工作,终于做完了NekoWright系统,这套系统包括演员节点、剧本、地图事件与变量、导演节点等功能,算是可以做许多基本的事件系统构造。
对我而言这套系统其实最难部分还是宏,因为godot-s7的兼容太实验性,竟然并没有等待godot的异步函数执行完成的功能,于是我只能接着它提供的有限的信号支持,硬生生手写了一套步进器函数,写这个剧本宏的工作量个人感觉几乎不亚于写一个小型scheme解释器了,虽然我之前就用Rust写过一个Lisp解释器,所以对解释器的基本构造略有了解。
值得庆幸的还是,这套系统目前终于能完美运行了,我顺便还加了个DSL本地化,允许你在这套系统中,手动给DSL方言添加本地化翻译。
目前这个插件已经开源,地址是:https://codeberg.org/minkieyume/NekoWright
AI技术的使用 #
折腾完Guix和完成了NekoWright项目后,我又开始折腾了一个新的东西,那就是AI技术。
于是我开始摸索将Copilot接入Emacs的折腾方法,为了折腾AI,我顺便又给自己的guix频道添加了不少新的构建包,全是构建AI相关的软件的,包括大量Emacs的AI插件以及部分AI程序,虽然还是有部分AI程序包没做好就是了。
折腾Copilot本身倒是没费多少功夫,然后我又折腾了Copilotchat,这两个都在Emacs有现成的插件。
最费功夫的还是Ollama,为了解决Ollama识别不到显卡的程序兼容问题,我调试了一整天,最后才发现,竟然是构建的时候忘了带Cuda的库一起构建,导致ollama只能识别到CPU,无法识别显卡。
然后我也开始研究了MCP服务,也是费了几天时间不停地debug折腾,然后花了些功夫用了个比较间接的方式装上了最新版本的uv,才终于折腾好了MCP服务。
有趣的是之所以折腾MCP服务,也正是透过copilot-chat这个项目发现AI最近竟然新出了个MCP协议,透过这个协议可以很方便地实现AI的人机交互,于是我就想实验下,才装上的MCP,实验效果个人也是感觉非常满意,有了MCP协议,也许靠AI做许多工作都能很方便了吧,正好Emacs的CopilotChat插件有比较实验性的MCP支持。
靠自己装的这套MCP插件和MCP服务的帮助,同时又有Copilot强大的补全助力,我最近新写代码也写得特别轻松了,虽然使用体验还是有点别扭,不过接下来我就打算重新试试看Aider接入Copilot,这样对我而言就能做出一套更方便审计的AI编码系统了。
新的画和新的打算 #
最后,近期有了许多新的灵感,也画了几张有趣的新的画。比如说这张,星夜巡礼:
https://www.yumieko.com/galleries/starnight-xunli/
就是基于最近新游戏的灵感画出来的想象。
因为这次做的是基于反应的游戏,所以我考虑到也许美术也是测试原型的必须,所以前天也刚好也画完了怪盗夜莺(小梦)的设定图,补全了下主角设定最后的空缺: https://www.yumieko.com/galleries/moon-night-yumi/
顺带一提,这张画,是之前画的怪盗夜猫——小琪设定图:
https://www.yumieko.com/galleries/%E6%B0%B8%E5%A4%9C%E9%83%BD%E5%B8%82%E7%9A%84%E4%BC%A0%E8%AF%B4/
还有这张,也是之前画的,小梦便装时候休憩的图: https://www.yumieko.com/galleries/yumi-miwu/
虽然设定上夜之城其实是永夜的,所以时间不太对劲,不过也可以解释为小梦家的院子里有人造太阳。
正好,最近我也打算,画完设定图之后,去找个感兴趣的美术外包下,讨论讨论游戏的美术设计和美术风格,请他帮忙做一组角色的动作和恶作剧反应的图。