GGJ2025 游记

GGJ 2025

之前参加过两次几次校级 GJ, GGJ 这样全球规模的 jam 还是第一次参加。比赛是提前一个月报名的,队伍大概是两星期前组好的。刚组好队的时候和队长大哥激烈地讨论了一下想要做什么游戏,讨论了两个小时之后,他居然想要做一个 “类幸存者+卡牌+策略+半回合制游戏” ,为了防止事情冲着奇怪的方向发展,我决定提前搓一个 demo 验证可玩性,结果一搓就搓到了比赛前一天。

demo 是基于 mix and jam 频道复刻的蔚蓝做的,我的想法大概就是做一个横板的最终幻想 7re ,可以即时战斗,也可以时停放技能,由于之前搓卡牌搓的比较猛,我决定用手牌来代表玩家的技能资源,这样相比类似的游戏资源更加可视化,玩家应该会更加倾向于利用这些资源,不过由于缺乏动作设计经验以及这个游戏品类太依赖堆量,最后我对游戏的定位逐渐向平台跳跃倾斜,最后变成了 “以丰富的道具为特色的银河城” 的一个定位。最后因为手感调不对以及不会关卡设计而告终。

在搓这个 demo 的时候,顺便学习了 shader graph 的知识以及完整地复刻了小丑牌的卡片效果,这两者倒是在 GGJ 上都用到了。

DAY 1

比赛当天我成功因为健身拉伤了腿,一瘸一拐地差点错过开题。本次比赛题目是 “Bubble” ,拿到题目后,我们首先列举了泡泡的性质,有 “体积变化,有弹性,融合分裂和可生成性” 这几类。一开始我们决定做一个平台跳跃游戏,以吹泡泡为核心机制来构建关卡。具体来说有四种泡泡:悬停泡泡,弹性泡泡和粘性泡泡。悬停泡泡启动之后会有两秒滞空时间,在此期间玩家不能控制,但是会因为惯性能够划出去一段距离。弹性泡泡就是类似于弹簧的经典道具,能够让玩家完成大跳。粘性泡泡则可以黏在墙壁上,跳到上面就可以重置跳跃次数。

设计好核心机制之后,队友也是很快想到了几个关卡设计,其中我最喜欢的是一个狭窄的通道,地面上是刺,先将粘性泡泡发射到天花板上,再通过悬停够到那个粘性泡泡,最后利用重置的一次跳跃再跳上平台。不过等晚上组队的程序老哥来了之后他表示,平台跳跃太难调整手感,而且大概率会有很多人制作平台跳跃,于是秉持着 “打就要赢” 的原则,我们放弃了平台跳跃,不过事后老实说,这么想人似乎也很多,所以并没有几个人做平台跳跃游戏,即使是做了,由于我有存货,手感和机制也远不如我们,所以也许这也是可惜的一个点。

放弃平台跳跃之后,想起来了之前刷 “汗先生” 集游册想到的一个点子,这个点子一开始的版本是用钩爪进行合并的 2048 。我重拾了这个点子,又联想到 GDC 里面看到的,一款太空探索的桌游————在那个桌游里面,玩家一回合可以选择新建资源建筑或立刻收获资源,想到了一个基于 2048 的策略三消游戏。与原版 2048 不同的是,我将结算规则改成了需要将合成好的方块放到结算栏,这样就会根据方块的数值产生相应的收益。

在确定了核心规则之候,我就开始思考 ui 的实现。其他队友则在继续讨论游戏的肉鸽玩法,最后又确定了类似于小丑牌的卡片机制和优惠券机制。之后我又和程序老哥进行了激烈和搞笑的程序接口规定。这个时候就已经十一点半了,于是我赶紧回了学校睡觉,准备次日的奋战。

DAY2

第二天我尽力早起,不过还是九点钟才到了会场,可能我来的比较早,正好被记者拍到,并成功进入推文的第一幅照片。我先 ctrlcv 了之前写的小丑牌卡片效果,快速搭建了三消的按键相应效果和实现将泡泡拖拽至结算槽的效果。接着就要等待老哥写的后台结算程序,我先搓了一点卡片视觉效果来等待。半小时之后老哥发来了程序,结果另一个程序小哥在 Unity 一打开一运行,发现并不是很兼容,一问才知道老哥是直接用 \(Csharp\) 写的程序,结果又免不了一番调试。

这样一来就没法立刻做 ui 和后台结算的连接了,程序老哥说他下午来调试代码,于是我慢悠悠地把手牌和泡泡的视觉逻辑和交互逻辑都写了一通,其中笑点在于手牌的代码完全从之前的代码复制黏贴。我们等待了一个早上都没有等到程序老哥和技美大哥,所以我们显得都有一些悠闲。

中午的时候小吃了一顿金拱门,没有想到美团神券加持之后外卖和线下是一样的价格。

下午一点技美大哥来到会场,三点程序老哥来到会场。技美老哥来了之后速度做了一组特效,之后就开始摸鱼待命。程序老哥来了之后我们就开始进行对接,结果一对接又发现,昨天我们关于接口的约束执行的不是特别到位,于是我又把他的代码修改了一番。

这个时候看起来程序已经实现了很大一部分,美术小哥非常高兴。但是众所周知,每个 gamejam 都会有一个小时觉得优势在我,我当时就觉得还有很大一部分棘手的代码没有实现,不过我也对进度比较乐观。

于是爆点终于要出现了,我们的开发工作稳步进行到晚上十点,这个时候我们已经实现了整个框架, inspector 里面也能看到游戏已经能够正确结算。技美大哥由于不幸感冒,决定提前离开,临走时说结算动画和提示动画他明天会完成。我感觉手头没啥事了,进入摸鱼状态。程序老哥和小哥那边 git 分支合并似乎出了一些问题,正在紧急修改,我点了杯奶茶,慢悠悠的继续找点事做(我的 git 也出了问题,在摸鱼时间也在和 git 进行激烈的搏斗)。到了三点的时候我就撑不住了,去小睡了一小时。醒来的时候他们终于修好了 git ,只是可惜丢失了一些东西,我跟着他们笑了一会,继续写了一些小东西,准备跳回主分支和他们会和。结果按下 change branch 的一刻,赛博踩踏事故发生了,我新加的几个代码全部消失,没有消失的代码里面也多出来了很多乱码。我立刻红温了,开始反复执行 avert commit 结果一直失败,一想到写了好几个小时的功能(没错在这之间没有 commit )全部消失就只能摆出一副 “那种事情不要啊” 的表情。这下程序老哥没得睡觉了,立刻加班加点又与 git 搏斗了一个小时没能成功,最后还是撑不住进入了睡眠区。我继续复读 avert commit 指令,但是真的无法成功。

半个小时之后程序老哥醒了,继续搏斗了半个小时无果,我只得重新写代码。此时已经四点多了,第二天我们还需要实现各种视觉效果和实现关卡、肉鸽等要素。这样一看时间就十分紧张了,我赶紧加班加点重写了代码,这样一来时间就来到了五点半,我再次撑不住趴桌子睡了过去。

DAY 3

干了一个月都忘记继续写了。经过凌晨的浪费时间,我们必须赶紧做出关卡系统了,但是怎么做好关卡内、商店、剧情三个阶段的转换,还要保证一定的隔离性,是个问题。考虑到这些性质,我们自然的想到了状态机。由于我还在修 bug ,写状态机的任务交给了我的队友。然而这样一直写到了早上十点,队友并写不出来,僵在了电脑前面,我们的压力都开始增大。如果状态机再写不出来就必须赶快写一个暴力程序顶上去。原本我打算让队友写暴力关卡程序,我来写商店页面,但队友不想放弃他的状态机。于是我只好顶这压力包揽两个任务。所幸,在聚精会神地写了五个小时之后,这两个任务成功完成了。到下午三点钟,虽然游戏能跑了,但剧情系统还有 bug 。由于我挺喜欢那个剧情的,所以我希望把剧情系统搓出来,其他人也同意,结果我们干了一个小时半都搞不定,只好匆忙展开试玩。

我们是最后一批展开试玩的队伍,由于实现的太暴力,核心玩法是 “滑动泡泡合并” ,我们却连滑动都没有做,原本包揽了升级合并效果的技美由于感冒最后一小时才来,没有做明显的反馈效果,导致很多玩家完全搞不懂游戏该怎么玩。不过令人高兴的是仍然有两个玩家盛赞了我们的设计。

到了晚上的路演环节,原定为队长的技美提前离开,于是我直接顶了上去,尬讲了两分钟,大谈设计理念,不知道是不是由于过于学院派导致反响不是很好。

虽然感觉 GGJ 发挥的不是很对劲,但是故事还没有结束。

posted @ 2025-01-20 17:33  蒟蒻丁  阅读(42)  评论(0)    收藏  举报