




















我这次参赛的目标很简单:想要验证我之前总结的方法论在实际项目中的表现(详见我上一篇文章),实践证明这一套理论还是很可行的(至少我成功完赛)。整体比赛的体验下来,在敲定了核心机制框架后,我没有对核心机制进行大幅改动,没有在核心机制上反复横跳,开发流畅度超乎我的预期,还是比较欣慰的。
我在这次比赛之前也有尝试过单人项目或者参加团队gamejam,单人项目的战斗原型完成度不高,个人感觉只能算个跟着教程的demo。上次团队GJ因为刚开始准备策划方向,能力有限没发挥出太大作用我说实话。这次比赛倒是受益匪浅,处理美术素材速通了PS,第一次在引擎内拼UI和搭关卡白盒,进一步理解程序思维等等。
这次比赛的主题是“与世界共舞”,个人解读如下:玩家与敌友的双向交互;发挥玩家特殊能力;前者的联动效果。最后做了一个FPS类大战场玩法的小型地图演示(我有点不好意思说这是游戏hh)。玩家协同友方单位,利用核心机制攻击/保护友方单位,最后占领目标点并坚守一段时间后获得胜利。整体流程在3分钟左右,在友方最大生命数量有限下难度偏高,自己玩的时候也容易翻车(捂脸)
我就按照我方法论的顺序简单介绍一下游戏吧,实际开发情况也是按照这个顺序进行的。首先就是3C,我的初期判断出现了失误。怎么说呢,当时没有选择成熟的框架,而是选择自己搓了个基础的3C。当时想的是,我只想突出我三个核心机制之间的关系以及框架的可拓展性,觉得学习一个新的框架的时间成本有点高。但在FPS游戏里3C是一个很重要的部分,关乎到后续关卡设计,这也是导致我这次关卡做的不堪入目的原因之一。我选择了最简单的射线检测攻击,指哪打哪没有扩散和射程的概念;机动性挺好,有奔跑滑和滑铲没有蹲姿和卧姿,单次固定高度跳跃;第一人称视角有点贴近CSGO,第三人称居中显示,垂直方向锁定视角移动,服务于核心机制方便拉人时观察四周的。
接下来就是重头戏,核心机制部分,分别是“CD系统”,“交叉火力”,“救助系统”,每个系统通过特定参数紧密结合,具体联系如下方关系图。
其中“CD系统”和“交叉火力”的灵感来源来自寄生前夜第三次生日,“CD系统”对应游戏中的“OD系统”,交叉火力引用了原名。我自己在玩寄生前夜时,我的人机队友总是会神不知鬼不觉地死掉,导致我没有可以控制的角色,于是我便想能否引入把死去的角色原地救起来的方案。同时我又苦于大战场模式医疗兵救助时被围尸打援的无力感,想到了APEX纽卡斯特拉人时的护盾。综上所述,大战场的规则,纽卡的拉人机制,寄生前夜的OD系统与交叉火力,这三者相结合就成为了我demo的核心框架。诶,有人就会说了,你这不是“超级拼装”吗,完全就是“literally nothing”。这点我不敢苟同,首先我在“CD”的累计值上下功夫,让它变为一个可消耗性资源,在对敌CD上(造成高额伤害),CD值累计与敌方单位解绑,CD满后玩家可随意选择释放目标,增强了灵活性;在对友CD中(控制友方单位),进入子弹时间同时消耗CD值。除此之外我区分了寄生前夜PSP手柄控制器与键鼠的区别,简化了交叉火力触发条件,鼠标移入目标即可开始累计,累计过程中可以自由开火,在救助过程也可以触发。这些都是我在体验寄生前夜总结的负面体验从而做出的优化。
外围系统我选择专注于UI交互这一块,其他技能/局外养成都不在我的计划范围内,因为我认为该框架能搭配的养成方案十分之多,一时半会也搞不出什么亮点来。在UI上,我希望玩家能轻松的获得友方相关的信息。为了避免玩家错过局内的关键信息,每个功能都有2个信息区域提示,如果再加上音效形成3个能更好地提示玩家现在的境况(这次没加音效),当然了案子里写的是这样,最终落地有部分还是没能做到。例如在救助系统中,友方单位倒地后,玩家只知道谁倒地了却不知道她在地图中的确切位置,本来想给倒地的角色添加一个高亮透视效果,但是要用到shader,拼尽全力无法战胜;在对友CD的子弹时间中,准星吸附到即将传送的单位上时没有显示该角色的基础信息;还有就是交叉火力的提示,想要给触发交叉火力的友方的简略信息位置添加一个icon,但是在引擎里的效果不理想被我暂时隐藏掉了。上述就是我个人能力不足导致的问题了,有点小遗憾,后续找机会恶补一下相关知识。
1 / 2
关卡设计上迭代了两版,本来需要进行一次重做,但是由于开发后期杂事繁多就放弃了,整体的完整程度也不高,没有放置装饰物,最多只能算到L2阶段。我第一次画关卡2Dlayout用的是Axure,可算是吃尽苦头了,修改起来比较头疼。由于是第一次搭关卡,对尺规没什么概念,在画2Dlayout选择了30*30尺寸,作图时没发现有什么问题,在引擎中搭完后发现地图过于紧凑,这时想重构关卡发现时间紧张,最终只是把左右两侧的掩体进行了优化,用“L”和“C”形状组合掩体替代原来单一的矩形掩体,完善一下通路和枪线设计。整体关卡分为两个区域,三条主要通路。玩家出生的安全区域为高地,能很好的俯瞰目标点。目标点略微高于地平面,由五处入口的围墙和一个四面透风的凉亭构成,并且有平坦的二楼结构。动线上设计了三条差异化体验的路线
左侧:安全的低洼,突破单一敌人防线后绕后进攻
中间:抵达目标点的最短距离,强攻正门无掩体且处于低洼,可转移至两侧道路
右侧:多掩体,但是进入房区的入口贴近敌人复活点
1 / 2
整体关卡结构借鉴了战地6曼哈顿大桥突袭模式第一阶段A点和进攻方的出生点(图中左侧的建筑)。但是我个人感觉,我很好的保留了该地图中腹背受敌的体验而非改善这一体验。最主要的问题就是敌友双方的AI逻辑,由于时间关系我只匆忙的写了个定点巡逻,尤其是友方的AI效果让我哭笑不得。现在游戏的AI就像你的野排对友,打正面时转头发现他怎么就倒地了,苦苦哀求你快去救他...最次的办法我只能增加了一个手动控制友方AI巡逻启动与否的开关让玩家选择,这就会导致友方单位变成死板的传送锚点,体验感大幅下降了。还有一个问题就是敌人重生点抵达中心区域的距离远远小于友方单位到达的距离,导致容错率非常低。下面是关卡的理想数值,但是在实际体验中效果并不理想,初步判断的原因是没有把玩家反应的时间加入计算,给的容错时间太少了。
到这里写一下自己的感悟吧。
代码习惯和美术资产命名习惯
由于是个人开发,部分美术资产自己得放到PS里处理,但当时没吧资产命名当回事,到后面资产多起来,查找起来就是一件比较头疼的事情,我这辈子都不会忘记命名规范这件事了。
代码命名我倒是遵循驼峰命名法查找起来方便,但是后期赶进度时忽视功能解耦了,特别是这个AI逻辑没用行为树和状态机,只用了一个几千行的代码搞定了,现在维护起来特别头疼,肯定是得重写的。
AI辅助的效果
因为我是策划然后没有程序嘛,代码我让AI辅助我进行编写,在跟AI沟通过程中会发现许多问题,(当然首先我会完善我的描述方法,这点还是能让我发现我案子里描述不清晰的地方的) AIcoding就像一个天赋小孩哥,时不时喜欢耍点小脾气,“故意”曲解我的意思(当然不排除),再耍帅多加些奇奇怪怪的功能。经过这次比赛更发的让我感受到程序叠的重要性,反正我敢说AI肯定是没办法取代程序的位置的。
Playtest的重要性
在提交之前我把demo给我同学试玩了一下,还是能发现许多问题的,比如按键提示不明显,我在UI上增加了按键提示;玩家想要卡墙上二楼,索性直接开放二楼区域增加直接前往二楼的通路...也能很快的发现bug,而且有人玩你做的游戏还能和你吐槽各种奇奇怪怪的问题,真的很感动。
开发进度上的取舍
计划赶不上变化。计划是死的,人是活的。有时候花了好久没做出来的功能可以先放一放,先做后续的功能,这也要求在设计计划时前后任务不能有太强关联。我当时做核心机制时,出现了一个重现性的Bug一直难以解决,我索性先去做UI了,在比赛结束前几天再重新审视时,很快的解决了。AI一直用也会有小脾气,那扮演程序的人更是如此,不如准备多条方案,让程序有更多的选择空间。(诶呦我可不敢压力程序啊)
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。