这里是 狗见了英语都摇头 ,很开心三周内真的把游戏肝出来了,游戏的名字叫《黑墙之下》因为这后半程比前半程的涉及密度和开发密度高得多,没有留下很多图片,看着全是字可能会比较枯燥不好意思。
取名字真的是这个过程中第二难的事,之前本来叫《黑墙清洁工》的,被朋友狠狠吐槽像家政服务,最后取了《黑墙之下》这名字,按设定来说是符合的,但是一点都没体现出玩法,还是不太满意,欢迎大家在能试玩后在评论区竞标,我就挑一个好听的改掉。
设计思路在上一篇其实说了不少,这篇创作笔记的目的是记录Solo过程中的游戏设计思路的迭代和一些快速查错和快速掌握新领域基础技能的方法。能帮助到下一届想参加Booom,或者找到有兴趣想和我把这个项目发展成长期项目的美术和程序就更好了(想借此宣传一下骗骗关注 点击跳转 这个目的是可以说吗|・ω・`))。 打算分享的迭代相关的内容主要分三部分:敌人AI系统,商店系统,Meta系统,其中敌人AI是主要迭代对象。
商店系统的迭代其实比较自然,最开始是为了让每局战斗的收益有地方花费,所以是把所有强力插件和一些增益一股脑放到商店里。
霰弹国王里自我增益和敌人增益绑定的设计确实很棒,我的游戏里本来是打算在每局战斗结束后选择增益,但后来把这个时间段留给了Meta因素,这是后话。我的游戏里有警戒值这个设定,为了把这个设定利用起来,我设置了跟随警戒值解锁的商店系统,并把敌人增益和购买功能绑定在一起,提高游戏的策略度。
完成第2步的迭代后自己试玩了一把,说实话感觉2方案一点策略度都没。于是我将商店系统进一步锁死,每个强力插件和增益都与唯一的警戒值绑定。并从数值上设置了一个小谜题,进一步提高游戏的策略性。
不考虑增益的情况下是无法买到警戒度为2的“出九宫”插件的,需要结合其他警戒度来达成这个目的。相应的拿到“出九宫”插件这游戏里地方棋子对主机的威胁会小非常多,就当做是一个逃课插件吧。
这个系统起初是完全不打算做的,取而代之的是一套和商店联动的升级系统,但说实话Booom时间有限,我Solo开发的规模也有限,每局游戏都结算升级在我的设计里不太方便,我又叛逆,很排斥做成三选一的升级形式,审美疲劳了说实话。所以打算找其他系统来填充这部分。
当时距离活动结束大概还有六天,那天晚上室友之间在做那个MBTI人格测试,我注意到一个很有意思的现象,几个很没兴趣的室友看到其他人在讨论自己的测试后自己主动去找网站测了。我觉得这是一种寻求心理认同的体现,我搜资料初步判断了一下实现难度,决定在战斗结束后增加这个问卷系统,它负责填充剧情的同时,增加一点点Meta元素,你可以在完成对话后查看其他人的选择结果,提供一些些游戏外的乐趣,也许还能起到拉新作用。
我担心的是数据库技术我之前完全没接触过,周围人也没有做过的经历,更别说数据库上云了。在经历一天的教程搜索后,我在csdn上找到了基础可用的DatabaseManager,把代码改一遍后成功与本机的Mysql连接,其实这个Meta/问卷系统的数据吞吐量很小,实现起来也不难,接下来的一天我结合GPT的胡诌大致掌握了基础的查询语句和连接规范,完成了基础功能的编写和本地Mysql数据传递的实验。第三天我跟着B站上的上云教程将数据库搬到了阿里云上,修完bug,结合临时的剧情文案,这个系统算顺利落地了。
前一篇半程实录里提到了游戏重点参考陷阵之志和霰弹国王,起初是完全模仿陷阵之志的提前预告系统类设计敌人AI,敌人会完全按照提示来攻击目标位置。这样的结果是Player只要同向移动一格就能避免车的威胁,是在是太傻了。
回看了一下《陷阵之志》GDC的演讲,想起来了他这套预示系统之所以能顺利运行,是因为建筑是不能动的,这个谜题对于《陷阵之志》的玩家来说是必须解的。
对于一个类似的机制,你可以模仿,但你不能不带脑子的模仿,我的游戏虽然主机被限定在九宫范围移动,但还能移动,Player完全可以逃避谜题,所以在我的游戏里套用这套预示系统是不合适的。
另一方面是敌人的行动顺序:我将敌人的状态机分为五个部分,其中最重要的是“思考”和“执行”部分。陷阵之志里是先全部攻击一遍再移动,这对于象棋来说是不可能的,因为象棋攻击行为本身就伴随着移动(也不绝对,之后的版本确实可以把这个方向作为一种敌人强化的思路)。
它的预告系统和行动顺序都不适用于我的游戏,所以接下来的AI迭代思路我完全放弃参考陷阵之志。AI的行动顺序也不再是全部攻击一遍再全部行动,而是每个棋子进行完思考和执行后再轮到下一个棋子完思考和执行。
前一篇半程实录也提到了我玩霰弹国王中的一个痛点,我对完全没有吃子提示深恶痛绝(他并不是没有提示系统,但是他的提示系统太不透明了)。尽管第一次迭代否定了陷阵之志的攻击预告方案,但攻击预告本身我是不可能放弃的。在试错过程中我有想过棋子保持陷阵之志的攻击预告方案不变,如果能一步吃子就实时改变攻击者的目标位置。但我很快否定了这个方案,该方案对于象棋来说既混乱又笨重。
最后我决定完全隐藏棋子的攻击意图,但如果你有移动倾向,鼠标每指向一个网格都会遍历一遍敌人来模拟是否能被攻击(其实有bug,有时候不能显示全部有威胁的棋子,但只要有威胁肯定会显示)。这样能让棋盘上信息不会对玩家产生过多外在认知负荷的同时,也能保证基本信息传达的需求。
中国象棋中有种棋子是国际象棋以及陷阵之志敌人都没有涉及的,就是“炮”。炮架子这个事真的蛮麻烦的,传统的象棋游戏程序是双方回合交替的,所以不存在“自己人把炮架子撤了”的现象,但我的游戏中敌方棋子全部行动完成后才会轮到我方Player行动,就经常出现“自己人把炮架子撤了”的拆台现象。
为了解决这个问题,我尝试过“固定炮架子”,但代码层面会对其他棋子的行为产生恶劣影响,Booom活动的时间确实不够,思考后我选择直接在状态机中增加一个调整行动顺序的步骤,在执行中把“炮”的执行优先级放到最高,这个问题得到一定程度改善,但没有根除。
最后是“将”,这是在临近结束的试玩过程中发现的问题,“将”和其他棋子一样,都是以攻击Player为目标做行动的。但游戏的目的是“将”被击杀则这局游戏结束,这就导致“将”出现一种很傻的“往枪口上撞”的现象,这太不正常了,我初期的解决方法是偷懒增加血量,基本完成游戏后我回过头来思考这个现象的解决方法。
最后我把“将”的AI部分剥离出来,如果将能够一步吃子,就执行吃子行为,如果不能就遍历九宫的所有格子,向离Player最远的格子移动。但是这个改动又让朋友抱怨改得太难了,所以又调整了关卡敌人配置,现在回过头来想这些调整让一些关卡过于简单了,调平衡真难啊。
查bug是程序不得不品的一部分,注释写清楚命名别乱写这些老生常谈的就不提了。这里推荐QFramework里的模块化架构,它将游戏清晰分成四个不耦合的模块,有效避免了屎山出现的可能性,同时它又通过接口实现了很方便的模块扩展以满足你偶尔的特殊调用需求。它提供的一些开箱即用的小工具这里就不一一举例了,除开音效系统比较简陋外其他系统都很推荐,总之就是非常好用。
我不知道生成式人工智能未来会不会完全替代程序员,总之我觉得还是得等上一段较长的时间,目前顶多是一个高级搜索工具。这就意味着Unity里的报错和警告你问GPT它能分析得很好,一定程度上你把你有问题的代码给它它能分析出很基础的错误,但你要他手把手给你写功能或者改高级错误就痴人说梦了。
举个例子,我在实现霰弹枪开枪获取受伤目标功能的时候,让GPT生成经过ABC三点的贝塞尔曲线,在我跟GPT搏斗的一个半小时里,GPT每次都把B点当做控制点,让他改正它立马道歉,然后再把错误答案发一遍,给我都整麻了,最后我用插值实现的这个功能。总结了一下如果你对GPT的错误纠正三次后它还是没给出可行方案,甚至开始复读,就不用继续在他身上浪费时间了。
对于怎么快速了解完全未知领域的法子,我的建议是别一开始就去问GPT,GPT是能给出很多建议,但全是废话的可能性很大。最好还是去论坛里找别人写的指南,心里有一个大致思路后再使用GPT才能保证不被带歪,效率也会快很多 。
单人Solo实现功能我个人是能使用插件就使用插件,但要注意的是尽量选择主流插件购买使用,一些小插件的文档和功能写得真的不敢恭维。比如我的游戏里的对话系统,起初是现买的ZT dialogue,因为看他是国人开发的插件,文档能看得比较快,但他文档的对话事件系统我真的完全没看明白,一番思想斗争后滚回经典Dialogue system的怀抱了。
但也是我插件用的太多,一个普通的2D游戏最终包体达到了100多mb,肯定是有很大优化空间的,孰轻孰重您得自己权衡
对于Solo人来说,音效和美术资源是比较头疼的事情,itch上有大把的CC0资源可供使用,如果还不满意,可以去耳聆网找找,还不满意可以打开你的Ipad里的库乐队,很多自带乐器里有一档“自动演奏”,你手稍微瞎搓几下,能出一段还能听的音乐,如果你是像素游戏,可以尝试专门生产数位音乐的小工具sfxr。 这里列出我的游戏中使用到的外部CC0免费可商用资源:
狙杀爆炸特效,霰弹枪动画(找不到了不好意思,只记得这个包是个挺出名的cc0包),部分音效均来自itch免费CC0资源,霰弹枪开枪、弹壳音效来自耳聆网cc0的免费资源,部分音效使用sfxr生成,剩下的简单音效自己用ipad库乐队搓的。 是的,Solo很酷,但我还是想给觉得Solo很酷,想单人开发的朋友泼冷水:如果你有合作过值得信赖的团队,尽量别Solo。
如果是因为不习惯组队选择Solo,本Solo人还是强烈建议组队参加:Solo人必须要有充足的时间和精力,单人要兼顾程序、美术、文案、策划、测试,你没法把这些部分都做得一样好,真的很累;策划案写着写着经常怀疑做出来不好玩导致开发热情低落;最重要的是游戏开发是个团体项目,如果你想走游戏行业这条路,Solo里的很多经验并不适用于你的实际工作,你对团队合作的不适应终有一天是要克服的。
再次,我在后半程里泡泡面不小心手烫伤了,起了个小水泡,打代码有点小疼。尽管涂药很快好了,但游戏开发过程中的意外非常多,单人Solo可供回旋的余地太小,稍稍出现差错(比如导师突然push你开组会)就可能导致项目计划不顺,得重新安排计划。
最后,不管你是打算Solo下届Booom,还是在继续为你的游戏打拼,都祝你项目卡死前都有自动保存,别人写的注释都无比详细,每个模块都高内聚低耦合,开发顺顺利利。
评论区
共 1 条评论热门最新