意料之外的突发状况

上周六下午买了个山寨平板,白牌的im515 apad,想测试下现在的机器可以跑的极限是多少。周六下午检查机器状况,周日测试下看系统有无重大问题,同时也算熟悉下android的操作。同时在下载freescale的补丁,然后是android 2.2的代码,等小水管下完和所有工具准备完,已经是周一了。周二早上不小心摔到地上,然后触摸屏碎了。周二晚上编译系统到剩余内核部分,今天编译完成了。这两天就在整这些事情了。问淘宝上的商家,卖给我的人说要等到农历年后,自己找的店主总不在线,另外一个在线的呢,说没有现货,得要一周左右,所以只好等了。

android触摸屏坏掉的话,一个机器几乎坏掉了80%的功能,我尝试着用鼠标控制,没有显示鼠标指针,随便一动都不知道在什么地方。然后愣是摸索着,将系统给升级了(使用adb传输数据)。昨天整的我几乎想要下单子重买了。太郁闷了。

虽然今天终于得到自己初步弄的系统固件了,但却想看下调节下触摸屏说不定会有鼠标,于是,这下彻底悲剧了。调节触摸屏需要重启,然后没办法退出了,唯一的退出办法就是装上触摸屏在那个位置点一下。连关机都不能,关机的话,要么拆电池,要么等到电池耗光。下次在修改之时先要三思一番了。

一个免费开源的3D人模制作软件

还是emacs里写blog方便。

之前的网络项目一直卡在资源短缺这块,虽然找了一款开源的地图编辑器来解决了部分的地图问题,但精灵,人物之类的,实在是难找。但现在似乎3D的资源似乎非常多了,至少我看到了很多都是。但我实在弄不清楚那些内容的版权问题,这几天在学习blender,一个开源的3D软件,就像我对道路一样,我总分不清楚那些线线框框是短是长,我常在想,怎么不告诉我某个部分需要多少像素或者几份几毫啊。我曾经想用poser来制作人模,我在刚研究程序的时候研究过一段时间3dsmax,那时候没有自己的电脑,只能用盗版软件,poser非常不错,很简单的就弄出来人模了。在最近研究了一段时间blender,对于blender的方式,或许是习惯造成,我总习惯在右边找一些相关的按钮。对于一个没有美术基础的人,我不知道学习三维软件是否很难,现在暂时先学着吧。今天,突然想着,还是先解决眼前的问题吧,既然poser如此强大,伟大的开源界一定有想办法解决的。就被我找到了目前的makehuman(造人?),先用小水管下下来试试吧,我只希望制作出来的人模面数可以简单的就可以精简就可以了,毕竟,实时渲染讲究的是速度优先。

在看完了一整部的《孩子们都很好》之后,小水管终于完工了。

继续阅读一个免费开源的3D人模制作软件

项目完成时

事情的起源于昨天的一次对话。昨天有人问我,一个中等难度的手机网络游戏,支持大约2万人同时在线,项目周期需要多长时间?人员配置暂时可以按我预想的一样。我的回答是4个程序(客户端1主程1副程,服务器端一样),程序大概在一年完成,整个项目在两年之内运营。他说这个周期比较长了,业内大约是在8到10个月(我记得应该是这个时间)。

是的,周期是比较长。我想有一个核心的问题是,这个项目准备以一个什么样的目标和规模来做的。如果仅仅以完成契约为目标的话,完全不用这么长的周期,顶多两个主程,一个副程,即使这样,从零开始,6个月左右也可以完成。而我还知道有另外一个更快的途径,我知道网上有开源的服务器端的半成品,在此基础上进行定制的话,我想以我的能力的话,一个月即可完成服务器端,剩下两个月处理客户端也绰绰有余了,至于平台的扩展,我会在写代码中自动进行平台扩展,就像我的那个网游项目一样,公开的客户端代码其实是程序生成的。这样一个项目,一个程序在三个月之内完成了。

问题在于,这样的项目方式是一次性的,就像避孕套一样。对于大的公司来说,这样的方式可以作为对某个新的小行业的一个测试,但对于一个新成立,想要长远发展的公司来说,这样做的危险性几乎相当于自杀了。因此,我按照正常的方式做了一个非常安全的预估。

项目的起始以完成客户要求为第一准则,但实际的客户要求在项目刚开始时往往都非常简单的,而在项目进行中,会进行经常性的变更,甚至是反复式的,根据我的经验,这些后期的更改要求经常超过起始要求一倍之多,因此这个是必须考虑的要点。

项目组人员的配合度,一个合作项目,离不开团队内成员的支持和协作。对于游戏项目来说,几个团队的合作是经常的事情,比如程序,音效,美术,策划的互相配合,即使每个人都非常想完全与别的组合进行完美的配合,但在实际情况中,往往会出现一些意外,举个例子,比如程序进行到某个阶段的时候,突然发现某些美术资源是必须,而这些资源在前期的安排中并没有考虑优先,美术这边就必须进行临时的流程调整,策划甚至模块测试部分也可能要调整。还有就是一些辅助工具的制作,这些工具是一次性使用还是作为一个公共的资产反复使用,其难度和规模也是不一样的。因此,这些也必须要考虑的。

项目进行中还需要考虑的一个因素是人的因素,毕竟这些内容不是机器在做的事情。我们要考虑人为的错误,理解的错误,知识的欠缺,由于某件突发事件而导致人员不到位的情况。比如主程和副程,甚至极端到所有人集体离开的情况。这便是项目进行中的风险评估,而所进行的项目是否是项目进行人员所中意的项目,他们的心理因素也会影响项目的顺利进展的。

项目在上述磕磕碰碰的状况中,进行到后期,必须要考虑测试的影响,测试安排的时间,强度,周期,问题的发现,解决,调整这些都必须要考虑进去。而有些严重的问题,在测试的过程中发现了,而有些问题可能会严重到让制作人员欲哭无泪的感觉。比如预期安排是2万人在线,而制作过程中进行的测试是500人在线,同时,依据游戏逻辑的运算能力和硬件的预估支付价格等因素,考虑到1年之后硬件价格下降,运算能力提高,可以达到每台2万人在线的要求,而在测试的时候,发现并没有预估的那么理想,然后,服务器必须更改成模块化,分布式的,服务器程序员将会害怕这样的调整。

终于,项目可以运营了,这个项目运营的规模或许不如人意,或许非常的美满。毕竟,我们都是在做预测,我想,俄罗斯方块的初始作者也不会想到俄罗斯方块能如此流行。这个时候才是真正的挑战架构师水平了,虽然架构师的工作在刚开始进行,但挑战却是在最后出来,及项目扩展的灵活度和难易度。一个不好的架构,即使添加一个小的功能模块也可能导致整个项目完蛋,而好的架构,可以方便的进行模块话的测试,扩展。运营时还必须要考虑一些周边的元素,比如管理问题,在项目运营之前,所有的人员可以简单的认为在一块工作,一块吃饭,一块睡觉,其思路也是一块的,但到运营阶段,运营人员可能完全不明白那些复杂的事情,你不能告诉他们,负载是如何计算的,延时是如何产生的,而他们,也只会告诉你某某出错了,就是出错了。因此,必须要考虑对服务器进行管理及监控的程序制作,而且这些必须直观,就像twitter,服务器的状态和管理都在web中完成,简单明了,一眼便可关注全局。而这些内容,却又必须在前期规划中考虑到。

当然,还有一个不是很严重的问题是看待周期时间的标准。我的理解是,项目周期是一个项目从开始到结束的时间,这个和工作量的衡量是不一样的,如果按照工作量人月的方法,这个项目在程序部分大概是在48人月,但真实的情况却不是这样子的,真实的工作人月应该在24–36人月之间。在游戏公司进行的项目中(尤其是手机游戏),很难想象几个项目人员完全扑在了一个项目中,比如上述的人员安排,两个副程如果完全在这个项目中的话,实在是浪费,他们在大部分时间都在打酱油,他们的最初安排是替补人员,而在公司的项目安排中,他们大约有3/5–4/5在其他项目中,当然,极端的情况是,主程在项目刚开始的时候就闪人了,留下副程完成几乎所有的内容了。我自己进行的那个网游项目周期目前是从4月初到10月底,但人月计算下来总共最多一个人月,这中间还包括研究我不熟悉的javascript架构类库以及使用等等。

从表面看来,这个项目的风险是比较大的,但正是因为有这样的庖丁解牛(自嘲式),项目才真正的从预想落到了实际操作,才真正的可以制作执行,从这个角度来说,项目进行的可行性提高了,风险反而降低了,项目可以正式开始了。

我坚持着好的开始是成功的一半,也坚持着只有坚强的耐力,才能跑到终点。而处于对初始公司和大公司制作的角度不同,目的不同,因此,我预估了安全的项目周期是程序一年制作,运营两年之内完成,当然并非人人都赞同这点。

平凡的人们

以下主要内容为转贴内容,我对大人物一向无什么兴趣,我更关注那些平凡的人们。末尾版权声明为程序自动添加,对该篇无效。

台湾感人公益广告《母亲的勇气》,这个广告脚本来自于一个真实故事:一位台湾母亲(蔡莺妹)首次远离家乡到陌生的国度,一句英语与西班牙语都不会说,只希望能为在委内瑞拉刚生产完的女儿烹煮鸡汤。她不仅独自搭乘飞机三天,甚至还经过多次的转机,展现了坚韧、勇敢,以及伟大的母爱,这也正是平凡大众的不平凡写照。

继续阅读平凡的人们

【冷笑话】同村人

一个村子有两家人,姑且称为A家和B家。B家历史悠久,人多。在B家看来,A家就是个暴发户。

为了方便家人之间的记账等等,A家和B家都对内发布了一种交易的代表:货币。问题是,A家的货币和B家的货币是不一样的,不能直接拿A家的货币到B家买东西,反过来也一样,为了两家互相交易,于是又弄了一个汇率的中间词。A家有钱,信誉好,于是村里其他家,经常拿A家的货币直接交易。B家也一样。后来B家突然想到了一条搞跨A家的方法:

继续阅读【冷笑话】同村人