我与Ludum Dare的48小时

从上次获得GitHub Game Off Winner以来,就有了参加一次大型Game Jam的想法。最终,我参加了上周末的Ludum Dare 33 Compo。我在48小时内独自做出了游戏《Birdy Bridge》(PC HTML5 游戏链接),完成度连我自己都吓了一跳(也许是因为我两天只睡了10小时的缘故吧);相对于制作时间而言,游戏本身的综合效果也相当理想。先上图吧。

8月27日更新:很多玩家反映游戏本身太难,于是我做了一个简单模式。但我建议仅在尝试非常多次仍无法通关的时候切换简单模式。进入简单模式请点这里

从玩法上说,这是一个比较独特的解谜游戏。灵感来源于鹊桥相会的故事,至于结局嘛……(反正我没过七夕节。)欢迎大家玩玩试试,下面评论对游戏玩法的评价还是很不错的!另外,给游戏做了3段音乐,我也是拼了(FLAC版本的OST在这里)。至于画面嘛……是不是有点眼熟的风格呢?

那么,来分享一下我是如何利用48小时做出这个游戏的吧~

赛前准备

我决定参加这次Ludum Dare的时候,大约是赛前10天左右,于是14号的时候,我发了一篇宣言,计划参赛,并罗列了计划使用的技术。HTML5/JavaScript是我的惯例了,我最后确定使用的框架是CreateJS,原因是熟悉,可以为我减少编码所需要的时间。在比赛开始前的几个晚上,我重新阅读了框架的API,试着写点小东西。

我决定参加的是Compo组,这是最传统的Ludum Dare,要求单人制作整个游戏、公布源文件、时限48小时。说实话这真的是个挑战,在尝试之前真的想不出自己能做成怎样。

Ludum Dare每届比赛都有一个主题(theme),游戏需要根据主题构思制作。Ludum Dare比赛开始前,有六天时间举行五轮主题投票,我也都参加了。前四轮的初选入围了20个主题,第五轮从二十个中投票选一个,每人对每个候选主题都可以投+1、0或者-1。第五轮开始的时候,前四轮的投票结果也会公布,我也稍稍考虑了一下,然而……

公布主题

北京时间周六早上9点,48小时倒计时开始、主题公布了——几乎是我最没主意的主题。

“You are the Monster”,你是怪物。首先,我不太想让玩家扮演怪物;其次,如果单纯的扮演怪物消灭人类就显得太没创意了;再次,怪物该怎么画>.<

一个人在房间里面咒骂几句之后,我开始考虑一个“最后才发现自己是怪物”的游戏。那么,一开始应该就是个很可爱的女孩纸吧——找到帅气的男孩纸之后吃了他什么的……

这样,又想到了刚刚过去的七夕虐狗节,然后又想到了牛郎织女鹊桥相会的故事,然后这个游戏的想法就出炉了。玩家既不扮演男孩,也不扮演女孩,而是扮演从中牵线搭桥(?)的鸟儿们。之后的故事就请大家玩游戏吧。

当然,最终还是为了游戏的玩法而牺牲了一些扣题度。我相信游戏本身的质量相对更重要一些。

开始制作

这时比赛已经开始了40分钟。我觉得对于初次参赛的我而言,应该抓紧时间开始了。我计划的顺序大致是:图片、程序、关卡设计、文本、音乐、最终修正。

于是我先开始做图片。这时我做了一个决定:使用简单快速的矢量图形。这样可以迎合整个游戏的童话色彩,更重要的是可以为后面的流程节省相当多的时间!事实证明这个决定相当英明,我几乎没有在绘图上消耗太多时间,从而提升了游戏整体的质量和完成度。

一开始我只花了1小时来绘制初始的小女孩和静止不动的鸟,它们在后期都被改掉了。其中,女孩长这样。

然后,我又花了一个小时的时间来组织初始的代码。午饭前,我可以看到女孩站在一只鸟上。

游戏编码

被午饭占用了一个半小时的时间(嗯,餐馆坑了)之后,我开始编写主要的游戏代码。得益于之前温习过API,编码工作非常顺利,只是被路径检测部分的代码bug坑了一小段时间。

在这段时间内,我也最终确定了游戏的一些玩法细节,比如星星的作用、流星雨等。星星的图片是在这期间完成的,之后也再没有修改过。到北京时间下午6点半的时候,主体编码完毕,游戏其中的三关几乎可以玩了!

之后先快速制作了一个简单的首页,晚饭只是草草吃过,洗了个澡。

关卡设计

晚上的主要工作是关卡设计、文本等。事实上,关卡设计和游戏编码的关系比较密切,在游戏编码的时候,就已经有了大概的关卡设计思路,而关卡设计也会带来一些代码上的调整。边设计、边试玩、边修bug,时间过得还是挺快的。

到晚上十一点半(比赛开始14小时30分钟)之后,我可以看到:

  • 所有七个可玩的关卡,包括boss战(虽然和最终版的boss战有区别);
  • 游戏故事文本;
  • 可以顺利通关游戏,没什么bug;
  • 画面上有鸟、女孩、星星,但没有背景;
  • 有标题、关卡选择、说明性文本、我的logo的标题页,游戏进度可以自动保存。

我计划第二天主要要做的事情是:

  • 绘制背景图片,就是夜空中的星星月亮之类的;
  • 制作音乐;
  • 进行最后的修正。

可以预见的是,制作音乐需要很长的时间,至少会占满下午。

之后,我做了不少视觉方面的调整之后,睡得很晚。这包括把鸟变成“会飞”的动画,加入图像处理库和特效等。

第二天起床之后,按已有的想法把背景图画好、嵌入到游戏中、加入特效代码,便已到了午饭时间。

制作音乐

音乐对我的游戏来说非常重要,因为这是我渲染游戏气氛的主要途径。吃午饭的时候我决定使用一段主旋律来制作两段音乐,并把主旋律想好了。然而,我最终制作了三段,仅编曲就用了将近六个小时——这确实很疯狂!

第一段音乐相当重要,因为要用于标题画面,对游戏的影响是基础性的。因而大部分时间花在了第一段音乐上。这段音乐还要用于前几关,所以音乐的风格大约是带有童话幻想色彩、需要一定的抒情效果,略带忧伤但又能给予勇气。我在非常多次的尝试之后,决定使用吉他的高音作为主旋律来表现这些特征。

因为积累了一些经验,第二段和第三段音乐用时短了许多。这两段音乐的主旋律是对第一段音乐的变奏,但风格区别很大。前者使用急促的钢琴来表现中间几个关卡的紧张气氛;后者则依靠沉重的大提琴来渲染boss战。

由于音乐制作的时候,我可以同时玩对应的关卡来检查音乐的实际效果,所以最终音乐与关卡的组合非常顺利。这个过程中也设计了少量的代码变更。

晚餐之后,我决定为每次跳跃制作音效。根据鸟所在高度的不同,音效的音调也会有些许差别。这些音效就像现在游戏里展现的那样。

最终修正

北京时间的深夜,我在做最后的修正——包括对各种元素的。这些修正包括但远不仅限于这些:

  • 重新制作了女孩的图片,看起来可爱了很多;
  • 修订了文本;
  • 加入了一些小功能;
  • 修复了代码里面的已知bug;
  • 重做了标题文本图片;
  • 提交到Ludum Dare,并修正iframe嵌入的bug;
  • ……

然后,游戏几乎和大家现在玩到的版本没有区别啦!

赛后工作

48小时过去并不意味着结束……

事实上很快我就更新了代码,修复了少量未发现的bug(这在规则范围内是被允许的)。另外,我还要关注评论区里的各种意见反馈。

还有一个更重要的工作,Vote!

Ludum Dare需要参赛者之间互相评分。简单来说,为别人的游戏评分,可以提升自己的Coolness值,这个值越高,自己的游戏就越容易被其他人玩到。这个过程持续三周……嗯,所以,我要玩别人的游戏去了……

再次感谢所有支持我的玩家们,希望得到大家的反馈~