记上周末的HTML5 Code Jam活动

本文摘自 勾三股四 更早时期的 不老歌 博客。

如题,就是这个活动:http://www.mhtml5.com/events/code-jam
另外也秀一下我们的研发成果——网页版的大富翁:http://jinjiang.github.com/rich-game
源码:https://github.com/jinjiang/rich-game
2天时间做不了太多东西,所有很简单,只能两个人玩,而且只能在特定的浏览器下运行(傲游3浏览器、谷歌浏览器、Safari for Mac/Safari for iPad等webkit内核浏览器)

这是我第一次接触比较正式的游戏开发,也是第一次玩code jam,而且我们的团队同心协力,最终拿到了最佳团队和技术两个奖项,感觉很美妙。
回顾这次活动,有一些感触,也有一些“成功秘诀”愿意分享给大家

IT'S COOL!!!

Jam is COOL!

Yes! Jam is COOL! 这种为期两天的Jam正是我们这些 Web Game 爱好者尝鲜和圆梦的好舞台,没有特别高的门槛,也不需要长年累月的精力,我们只要有梦想,有激情,有志同道合的几个伙伴,就足够了。我相信参加过Jam的朋友们一定感同身受!

Game is COOL!

同样的,开发游戏和开发一款传统软件或是网站是完全两个层次的工作,游戏需要的是创意,是打破常规,是逻辑思维、流程规则、界面展现、用户心理、甚至物理引擎、几何计算等很多智慧的结晶。如果没有广泛而系统的知识体系,很难完成一款游戏。而且一般的软件和网页做到“能用”和“用得舒服”就已经很好了,而游戏则必须需要做到“好玩”、“玩的时候让人过瘾”、“玩过还意犹未尽”。质量上的差别可想而知。作为一个传统应用软件的开发者,能够有机会开发游戏,真的是一个宝贵的经历!

HTML5 is COOL!

这里的html5当然是指广义的Web App开发模式了。Web开发要考量的东西,除了美观程度、交互效果这些东西之外,还加入了越来越多的数据处理和更加酷炫同时开发起来也也更复杂的界面,Web可以搞定越来越多的事情了,这一点我之前就深有体会。如果你是一位多年的前端工程师,那么html5一定会让你豁然开朗!

关于我们的团队

说完活动的感受,然后再说些我们团队在整个活动过程中的小故事吧

成功秘诀之 有备而来

话说这次活动开始之前,我其实提前做了一些功课,先是看了一些WebGame的微型开发教程,然后也看了一些demo,还有一些开发框架和函数库,对WebGame有了一个概念上的深入和开发模式的了解,这里我还是想再推荐一次这篇教程:《Build your First Game with HTML5》。这让我在活动当天的策划和开发中有了更多的底气。

成功秘诀之 知识管理(wiki)

我在活动的前一天,在我的电脑里搭了一个简单的wiki,并了个字号较大,布局较简洁的皮肤。时候证明这个wiki在第二天派上了大用场!
wiki可以做很多事情,首先,我们没有足够大的黑板把我们整个活动过程中需要记录的所有内容都写下来,一定需要有两外一个平台展示我们所有的协作过程,供大家随时查阅,这样我们没有漏掉整个团队2天之内的任何想法、讨论过程、内容细节和结论
我把这部分的wiki内容已经贴到了github的源码wiki上:https://github.com/Jinjiang/rich-game/wiki
第二,大家的开发习惯都不一样——这里也包括代码的版本控制,我首先提议用github,但是一些组员不太熟悉,更倾向于googlecode,后来发现wiki可以以文件为单位记录和展示代码,并且wiki本身就有历史记录和权限控制(同时只能有一个人提交代码),正好用来做代码的版本控制。于是大家就以文件为单位,纷纷提交各自负责的代码,最后由雷毅从wiki上把所有的代码拿下来,合并在一起。

成功秘诀之 QQ群

对于一些文件传输、代码讨论的东西,难免需要即时通讯,这个时候wiki也会显得比较笨重,所以我们果断选择了QQ群。这也让我们的团队效率提速不少。

成功秘诀之 动手之前先经过充分的讨论和沟通

在开发中,返工和需求变更是最令人恐怖的事情,尤其是在这么短的开发时间内,我们是不能出任何大的差错的,否则将没有任何可以弥补的余地。我的做法是充分的讨论和沟通,让每一个细节都不再有争议、对于游戏的描述和理解也都没有二义性,才下手写代码。这一点开起来没什么,但是对于工程化的软件开发控制真的非常重要。所以我们都是到下午2~3点才开始编码的,但很快就把代码写好了

成功秘诀之 分工明确 模块化开发

我们的团队一共6人,我把工作内容大概分成了5部分:游戏策划和美工、游戏规则和逻辑、界面上的地图、界面上的人物和路障、界面上的各种提示信息和各种操作界面,大家根据每个人的特长和兴趣自由认领工作。我划分这5个部分的时候,把每个部分之间的耦合度降到了最低——甚至不惜牺牲了一些性能和代码量,因为这样大家可以完全并行工作。这也是我们在开发上得意顺利进行的原因之一吧。

成功秘诀之 接口一定要定仔细 包括参数格式和返回值

呵呵,这里尤其强调参数格式和返回值。因为我们定js接口的时候,经常会图省事,只约定一个函数名,导致的结果就是接口联调的成本巨大。这方面其实我们在开发的时候也走了一些弯路。索性出现的问题并没有涉及核心代码的修改,不过还是让我们第二天的代码合并工作有惊无险。

成功秘诀之 互帮互助

6个人分别完成5个难易程度略有不同的模块,最后开发所用的时间还是有长有短的,但做得快的组员也没有闲着,他们都很积极热心的立刻去帮助其他人,包括review代码、做测试、写文档等等。这也一定程度上保证了代码质量。

恩,差不多就是这些了。

最后介绍一下我们的团队成员吧

我们团队的名字就叫Rich,职位名称是根据《盗梦空间》里的角色起的。团队除了我之外,还有:
张绍珑:筑梦师,游戏策划和美工设计
张超:筑梦师,游戏底层逻辑和规则的实现者之一
王潇:盗梦人,游戏地图和房屋的界面实现者
雷毅:盗梦人,游戏任务和道具的界面实现者
黄雅哲:药剂师,游戏中的功能界面和提示信息的实现者


对于我们的团队,我要由衷的说些感恩的话,非常荣幸有机会和诸位一起共事,我们的合作很愉快,沟通也很顺畅,每个人也都表现出了高度的专业和尽责!只可惜活动总是会结束的,现在我们的组员已经都各奔前程了,呵呵。相信他们各自的事业也一定会非常的成功!

以上

向本文提出修改或勘误建议