前言
上周末参加了今年的CGJ,收获还是挺多的。一方面,队友之间虽然都是第一次合作并且还是线上,然而相互之间却合作得非常愉快;另一方面,也去尝试实现了一些自己的想法。
虽然我工作部分受到了绝大部分测评反馈的否定(哭哭),但是我个人还是觉得这次参赛对自己十分有价值,不枉自己花了这么精力在这次比赛上。
队伍名:阿猫阿狗组一队
作品:《动物世界》
队员:
- 阿猫:领队/程序/数值
- 小强:程序/文案
- 阿棒:美术(主要负责人物)
- 小硕:美术(主要负责场景)
- 我:程序/玩法
由于我们组的美术十分优秀,反馈来的评价也很高,我在这先展示一下他们48小时内的画出来的部分素材:
比赛题目
在这个图片之前,主办方还播了一段视频。其实从视频中可以看出,不论是恶作剧、魔术,还是一些日常小技能,都算是“Trick”。可以说内容可选择范围非常广,个人觉得,比去年“拉火车”要好想很多。
我能够马上想到的游戏类型就有卡牌类trick的《千爵史诗》(Card Shark)、视觉类trick的《纪念碑谷》、恶作剧类trick的《西游梗传》......亦或者对“Trick”做一个扩词“Trick Or Treat”做万圣节主题的游戏。
但是,上述的想法要么没有新意,要么比较空洞,且不少对美术需求比较大,所以最后就没有选择往这方向去想。
最后我们组选择的是组合两种玩法来完成这次的作品。一种是探索地图的“真假话”玩法,另一种是战斗用的“元素骰子”玩法。
- “真假话”玩法:你需要分辨NPC提供信息的真假,从而探索地图。可以说不论是NPC的“假话”(Trick:诡计)还是去判断真假的过程(Trick:技巧)都可以说非常的贴题。
- “元素骰子”玩法:在掷骰子时,你不仅可以向自己一侧掷骰子,也可以投元素骰子去对手一侧破坏他场上的骰子,例如“火”骰子或被“水”骰子消灭。这种“投毒”的做法可以称作是一种“花招(Trick)”。
由于这两个玩法都是我提出来的,所以我这里就讲一下我的思考过程以及实现过程中遇到的问题。
玩法一:“真假话”玩法
其实在我之前写过的 《一种关于“魔法阵”的游戏玩法设计》中我就有提到过这个“真假话”的玩法,只不过没有细化。
实际上这个想法的最初念头是从很多历史故事中来的。由于古时信息传播效率低下,人们能获取到的多是流言蜚语,众多历史人物由于对繁杂的信息做出了各自的判断,从而影响了自身不一样的结局。
哪怕是现如今信息爆炸的时代,盲目偏听的人也不在少数。所以,去设计一款“情报分析”的游戏玩法,也是有着一定的现实意义。
对于这个玩法,我最开始脑中的画面就是“运筹帷幄之中”,是一个没有上帝视角的游戏体验。一方面,如果洞察了全局也就无所谓“分辨真假信息”;另一方面,整个流程在一个固定区域内,游戏所需要的素材就相对较少,体量就不会太大,也比较好实现。实际上,就有一个十分类似的游戏《Radio Commander》,其整个游戏流程就是指挥官坐在营帐中,通过无线电指挥小队作战。
那么这里的“情报分析”玩法是否就是做个“情报推演”呢?我认为既然我们是做游戏,就应该以趣味为主,而不是一味地去做一种“兵棋推演”的变种。
这里举个例子,《资治通鉴》中有这么个故事:有下属报告一头驴被割了一只耳朵。当众人都不解时,首领做出了判断“有奸细偷偷来打探动静,割了驴耳作为打探凭证。敌人马上要来袭,大家做好准备。”不一会敌人果然来袭。
司马楚之别将兵督军粮,镇北将军封沓亡降柔然,说柔然令击楚之以绝军食。俄而军中有告失驴耳者,诸将莫晓其故,楚之曰:“此必贼遣奸人入营觇伺,割驴耳以为信耳。贼至不久,宜急为之备。”乃伐柳为城,以水灌之令冻;城立而柔然至,冰坚滑,不可攻,乃散走。
这是一个很有趣的片段。但是现代的兵棋推演自然不会把“一只驴耳”作为情报。然而我们却可以将类似的有趣片段做入游戏中。(然而现代战争中还是有一些类似的片段,比如当下的俄乌战争中,有乌克兰士兵在情报匮乏的情况下,以摩托艇的轰鸣声作为俄军渡河的信号,最终效果非常的好。)
上述这些都比较空洞,所以我就尝试做过一个demo,以逻辑推理题中常见的“真假话”为“情报分析”的对象,也就是“多句假话中有一句真话”或者“多句真话中有一句假话”。
真假话demo截图
这个demo做下来的感受就是,如果要做一个“运筹帷幄”的游戏体验,那么一定是需要非常多的游戏内容,因为需要展示的内容就已经不少了,而这些内容背后的关系就更加的复杂。
所以,这个工作量不太适合48小时的Game Jam。
于是,这次Game Jam中“真假话”我只是提议,因为这非常符合这次的题目“Trick”。具体的细节实现是由队中的阿猫和小强去完成的。他们是以文案为基础,做了一个“真假话”玩法,类似于《隐形守护者》这类的AVG。
玩法二:骰子扑克
既然已经有了一个地图探索玩法,我就着手去做一个战斗玩法(事后想来,一个48小时的Game Jam去做两个玩法,不是什么好选择)。
由于我感觉我们的游戏非常像《Curious Expedition》,所以我便受到影响想去做一个“骰子”相关的玩法。
在网上搜寻了一圈之后,我发现了“骰子扑克”这个老玩法。《巫师1》中也有这个小游戏。
“骰子扑克”的玩法是5枚骰子,最后按组合价值比大小,组合价值从低到高依次是:
- 对子(同样的图案有两个)
- 两对(有两对同样的图案)
- 三条(同样的图案有三个)
- 低顺子(KQJ红黑)
- 高顺子(AKQJ红)
- 葫芦(一图案有三个,另一图案有两个)
- 四条(同样的图案有四个)
- 五条 (五个都是同样的图案)
这个规则对于国内来说,还是比较冷门的。以至于我在《巫师1》中第一次接触这种规则都十分懵,我一直以为骰子就是比大小。
在了解玩法之后,其实可以看出这个玩法十分简单,所以可拓展的地方也很多。由于我之前一直在思考类似《noita》里面元素反应相关的玩法,所以这里我一下子就想到了“元素骰子”这个概念。
在骰子掷出去之后,不同骰子会相互反应,形成新骰子,最后依据场上还存在着的骰子来评判输赢。又因为这次题目是“Trick”所以自然而然的就想到了“出千”的内容。一个“相互投毒”往对方场上投元素骰子来干扰的玩法就出现在我的脑中了。
在准备着手开始实现时,一个最基础的问题就出现了:骰子如何投出去,又如何碰撞?“掷骰子”实际上是个3D动作,如何反应在我们这个2D游戏里呢?
我一开始是想做个“3渲2”,但是我自己之前没有这样的制作经历,不确定能否在48小时内完成;然后的想法是做一个2D的骰子碰撞,因为我在itch.io上看到了相类似的实现例子,但是依旧是担心自己不能完成,所以也放弃了这种实现方式;最后选择了最简单的实现方式,就是把战斗的部分全做成UI,这样也尽可能少的与其他模块冲突,骰子相互碰撞就固定为按排列顺序依次相互碰撞。
由于事后反馈中,我做的这个战斗部分可以说是“差评如潮”,所以我这里就反思一下,回顾我在实现过程中遇到的一些问题:
1. 骰子数量与伤害计算
在“骰子扑克”中骰子的数量是5个,最后输赢的判断是5个骰子的组合类型。由于加入了“元素”概念,所以在对局结算是会出现同元素骰子组成的组合,这种“元素组合”的分数自然应该要比非同元素的要高。
- 骰子组合类型:是指骰子是对子还是顺子这类的组合,价值差异类似“骰子扑克”。
- 元素加成:是指该组合中全部骰子都是一种元素,则会有数值加成,类似于同花顺与普通顺子的差别。
- 弱点加成:是指如果该组合即使同元素又是敌人的弱点元素,则会有数值加成。
为了凸显这种元素组合,就需要在场上有更多的骰子,特别是还有往对方一侧掷骰子的机制在,那么场上的骰子数量就变得多了起来,远多于“骰子扑克”中的数量。
最后,我决定每次掷向一侧的骰子数量为8。又由于对局人数是2,所以一侧最多会结算16个骰子。
这样就带来了一个直接的问题,这么多骰子,如何对结果进行结算?
我确实没有想到特别好的方法。我这里的处理方式是,分别根据点数和元素种类进行桶排序,然后进行结算。为了方便实现,我也忽略了一部分重复计数的问题。
引入元素为参考的桶排序的原因是我要判断是否有“元素顺子”,只有先判断完是否有“元素顺子”,我才好去判断是否有“杂顺子”。这里为了实现方便,我判定至少5个才算是顺子。实际上,“骰子扑克”里3个骰子能连起来就算是顺子了。
2. 元素种类与元素骰子碰撞结果
最开始我只想了3种元素:火、草、水。元素骰子相互碰撞的结果也很简单,就是火骰子碰水骰子就消失,其他的类推。实现起来也很简单,就是如果火骰子碰水骰子就原地消失,不参与结算。至于是否有连锁反应,也就是往一堆火骰子里扔一个水骰子,是否所有火骰子都消失?我这里是否定的,只要与其他骰子碰过一次就静默。由于我这个是按顺序碰撞,所以也比较好实现(实现的时候我还放了个递归进去,事后发现其实也不是一个好做法,出了问题很难调试)。
我感觉元素有些少,然后跟组里其他人交流了一下,发现其实他们设计了很多角色,三种元素是远不够用的,所以我就又加了电、冰、毒、金四种元素。
金元素不与其他元素反应,也就放在一旁。主要是我在加入冰元素时,我的想法与我的实现出现了比较大的出入。
我的想法是:“火”碰到“冰”,“火”消失,“冰”变成水;“水”碰到“冰”,“水”变成“冰”。然而我原来的实现中是没有考虑到“会有新骰子在反应中出现”这一情况。虽然我最初的想法中有考虑过新骰子出现,但是在实现的过程中忘记了这个前提。
新出来的骰子位置放哪?又需不需要再跟别的骰子反应呢?在我实现到一半的时候出现这些问题总是比较头疼。
3. 重新投掷
这种单局内有选择的重投骰子,类似“叫牌”的行为,是对场上局面的再操作,也是从“骰子扑克”开始就有的老规则。而我也是在实现到一半,才发现需要加入这个功能。
这就导致我的一些界面显示逻辑受到了改变,一时间也改的手忙脚乱。
4. 其他内容
像是敌人AI,我都没有时间去做,也没想好要怎么做。最后两小时我为了优化一下选骰子的布局甚至还造成了一个“无法回退选择”的BUG遗留在48小时上传的版本中。
界面优化前 → 界面优化后
事后想来,实际上这个玩法有很多可以拓展的形式,因为其有趣的点就在于“如何触发元素反应”和“触发反应的结果”。这里我就列举几种我想到的更有趣的形式:
- 2D骰盅
2D骰盅
- 骰子列阵冲锋
有点像《作战模拟器 (Totally Accurate Battle Simulator )》。
- 弹骰子
总结
首先感谢同队伙伴们的理解与支持。对于大部分人不太满意我实现的这个玩法,我也十分抱歉。
不过我自己还是认为这两个玩法的可塑性非常强,如果设计得当,应该能被做一种很有趣的玩法。