LeoYuan / leoyuan.github.io

This is my blog repo.
http://leoyuan.github.io
17 stars 2 forks source link

我们的极客松之旅 - 《文明轨迹》 #24

Open LeoYuan opened 9 years ago

LeoYuan commented 9 years ago

注:原文发于公司内部的atatech,转载过来~

一件事情,不管有多美好,终究抵御不住时光的侵蚀,唯一让记忆永存的方式就是记录它,用文字抑或影像~

第一次,遇上一位如 @亭决 这般充满干劲,积极主动,坚定的策划兼视觉小伙儿, 第一次,遇上像 @余佳 这样视觉设计完美,又敢拼肯拼的视觉设计小妹儿, 第一次,遇上 @东明 这样兢兢业业,为了整体的进度,加班至半夜,而翌日早晨在时间间隙还会来问代码是否有bug的程序员, 第一次,让我在36个小时内有如此多的感悟与收获,而这一切,都来自于我们的第一次极客松之旅 - 《文明轨迹》~

极客松(Geekthon):是1688 前端 & UED 共同举办的一届展示设计创意和极致开发的盛会,查看更多

组队背后的故事

本届极客松是第一届,对于前端和设计师来说,当然是一次难得的福利,因为设计师可以尽情地设计,无拘无束,只为最佳、最有创意的设计,而前端更是有了独自完成整个项目的机会,同时肩负起页面仔 + 后端仔 + H5炫酷接口的糅合作业,快哉!~

可是,最伤感的事情莫过于没时间,正在参与的1688 wap2.0项目release在即,根本抽不出时间,不想答应别人又让人失望,帮不上忙反而拖累,故还推却了某组同学的邀请,哎~

但是,现在回想起来总是让人觉得有那么点神奇,真正开赛的时间竟然比预想的晚一个礼拜,我擦,这不是天意?别闹了。。。

偶然看到了三体文明的策划案,浩淼星际,貌似是很多男人都会存那么一份情怀的地方,也看到了熟悉的设计师小余同学,遂决定进一步了解一下,跟余佳简单聊了几句后,亭决紧跟着就来电话了,“你好,我是亭决,你是袁力皓吧,我跟你简单介绍一下三体文明,blah blah blah”,积极主动,没有废话,讲故事也很动人,有情怀,这就是我对这位设计助理的第一印象,于是决定加入小分队来开发情怀,哦,不对,是游戏~

前期的准备工作

动作策略类游戏永远逃不开的知识就是数学和物理,数学,我还以为只要懂得算买条鱼,5块5,给10块,找回3块5就够了,物理,不就是XX三十六式么?

结果上网一查三体问题,原来是这样的 QQ20140922_1_2x

3个二阶的常微分方程,或6个一阶的常微分方程。因此,一般三体问题的运动方程为十八阶方程,必须得到18个积分才能得到完全解,看完这个,我反正是醉了~

从看到到决定抛弃真正的物理公式,大概只花了10s。

那如何做简化呢?哈哈,难不倒我,万有引力公式不就是 F = G * M * m / r ^ 2 么,设定几个球体的质量,以及游戏区域的大小,G是常量,计算F妥妥的~而伟大的牛顿运动第二定律告诉我们 F = ma,已知F、m,计算出加速度a,按照运动时间分片,(1000ms / 60)~= 17ms,改变的速度可以计算出来,分别投射到x、y轴,配合行星的初始速度,x、y轴的速度不就都出来了么?依次类推,三颗恒星对行星的轨迹影响都按照上述方法计算,轨迹函数不就出来了么?

想法很美好,但是一直没有得到实现,一是我觉得上述各个M/m/r的值都很难设定,极有可能最后行星跑出了屏幕,调试时间长,第二点,也是最重要的一点,假设我是游戏玩家,我TM才不关心恒星/行星运行轨迹是否够科学,我要的是好玩~

好玩?how?跟东明讨论后,得出一组新点子,即用户可以各自拿着自己的手机打开游戏,各自的屏幕的内容完全相同,并且还可以弄一台电脑作为观赏屏,用吹或者shake的方式来控制游戏,窃喜,多屏互动 + 有趣的交互方式,尼玛,这简直是天作啊,有木有!

兴高采烈的跟亭决讨论,结论是NO,因为虽然点子有创意,但是跟之前的策划案三体文明,以及游戏背后的故事已经没有半毛钱关系了,好吧,还是继续原来的吧~

比赛正式开始

我们已经定下大方向,使用看似随机,但其实是有规律的公式来计算轨迹~比如恒星,看似随机,其实都是做相同角速度的圆周运动,轨迹与轨迹之前常会出现快要相撞的错觉,以此来避免被识破的尴尬,哈哈,想想真是好笑啊~

大约半天,恒星的“随机”运动已经出来了,行星则在游戏区域内做直线运动,方向和距离都是随机的,看似还不错,再陷自我欣赏状态,不可自拔~可亭决一句话让我觉得都有点难为情,“这行星老是拐超过90°的弯是不是有点。。。不太美观啊,能改成弧线不?”,呵呵,好吧,继续改~

不久,弧线效果出来了,果然好了很多,自然多了,瞬间感觉地球好美好~

核心运动算法搞定后,接着就是开始套那美轮美奂的素材了,恒星和行星换上了新装,畅游在深邃带着星河的夜空中,美哉!

哦,忘了一个另外一个苦逼的程序员东明,正在苦逼的实现由亭决同学策划的人口数值模型,简单来说,就是下面这张图 QQ20140922_2_2x

人口的自然增长率,有概率性的发生战争、资源匮乏、瘟疫等灾难改变增长率,提升科学技术、政治文化以及资源经济来降低灾难的发生率,看的眼花缭乱有木有,隐约看到了东明眼角滑过了泪珠,还有,刚刚他去WC那么久,应该是哭晕在厕所了吧~

接着就是不断的套素材以及优化效果了,比如游戏开始页面的背景页的呼吸效果, QQ20140922_3_2x

恒星的耀斑效果 QQ20140922_4_2x QQ20140922_10_2x

行星那俏皮的小尾巴 QQ20140922_6_2x

晚上吃饭的时候,大家还看了几集《万万没想到》、《报告老板》和《暴走大事件》,好好笑,东明又喜笑颜开了~

吃饭后,依然是各种调bug,调页面效果,做新页面,所有事情感觉都under control,不过东明一句话让我重回现实,明天你们就自己干哈,我明天要去参加婚礼,我擦擦擦擦擦,尼玛,东明你那朋友能晚几天结婚不?

又是一阵忙,本来大家都决定要回家的,至此也只能选择在小黑度安睡了,最让我感动的是余佳同学竟然也说通宵,为了项目,不顾自己家的小猫咪了,太残忍了~(此处应该有掌声)

东明也坚持把自己的模块搞完,已经十二点多了,开车回家,第二天早上八点还来问是否有bug,感动(此处也应该有掌声,来来来,刚刚拍掌的都来领五毛)

可能是红牛喝的太多,也可能是行军椅太坑爹,感觉一个小时都没睡着,翻来覆去,辗转难眠~

终究还是睡着了,不过第二天六点就起来了,去WC洗了把脸,回来就开始coding了(此处也应该有掌声吧,这次可以领六毛,因为太难为你们了)

各种收尾工作,各种试玩,各种bug fix,最后已经有点意识模糊,跑到一个文件复制了一段代码,竟然不知道接下来要干嘛,这种状态已经不能再往下写了,于是最后还剩一个页面未完成也就算了~

亭决提出去捡肥皂,我毅然拒绝,我怎么可能去嘛。。。

到了公司浴室,洗完澡,捡完肥皂,出来,洗去了疲惫,吹了一阵迎面来的风,瞬间幸福感真是爆棚,我们不约而同的说,还有比这爽的感觉么?

开发结束,至此,我觉得已经很幸福了,因为我们整组人为了一个目标,奋斗了36个小时,成品也已经出来了,至于能不能拿名次都已经不重要了~

附上几张最终效果图: QQ20140922_8_2x

QQ20140922_9_2x

QQ20140922_7_2x

“意外”的获奖

真的没想到,最后竟然获得了奖,感谢评委们的赏识~ 273f72d4af8f827700f6b0528f42f957

后续应该优化的点

毕竟只有36个小时(一定要找个理由么?),总有些地方感觉还是不够完美,审视一番,发现至少有以下几点应该继续优化:

  1. 人口演变算法有bug;
  2. 加上大事件功能;
  3. html css写的较随意,refactor;
  4. 电脑玩久了会有发烫的感觉; position? translate?
  5. 偶现的双行星bug;
  6. js部分逻辑重构;
  7. 图片大小压缩;

    游戏玩法

行星随机运动,点击恒星就可以使行星靠近该恒星,从而躲避撞击其他恒星,游戏过程中收集星际尘埃可以提升点数,点击【行星能力】可以升级,从而降低发生灾难概率,保证人口增长率~

游戏地址:点击开始

后记 - 亭决的幸福

亭决刚来实习的就说了想去三体的世界看看,离开的时候完成了三体的游戏,并且获得了不错的名次,或许这是最美满的实习期了吧,祝福他在以后的道路上越走越牛X~(也终于明白他之前为什么那么坚持)

一个团队的所有成员,为着实现一个共同目标,不屑的努力着,发挥着各自最大的能量,力求把每个细节做好,谨守着心中的那份工匠精神,最后达成目标,恐怕天下再也没有比这更让人欣喜的事情了~