带着枷锁跳舞

  不好意思,最近比较忙,所以一直没有时间写Blog,周末抽一个晚上出来整理一下思路,写点本来想放在之后写的内容,希望大家看了之后有些启发吧。

 

  很久很久以前,我以为写程序,是件自由又浪漫的事情。很遗憾,现实教育了我,让我知道这个想法错的离谱。说实话,一点也不浪漫,至于自由,完全没有。所有的一切,皆是枷锁限制着你本来奔放的思绪。真的要写好代码,那必须承认这一点,然后静下心来,考虑如何用这带着枷锁的身躯跳出优美的舞蹈吧。

  关于内存,有一个阶段的我接受身边大部分人的一种说法:现在的内存如此廉价,我们又为何要花费宝贵的精力和时间去节约它呢?对此,我也想当然的以为,当我付出1周时间来优化几M大小的内存时,我的工资都够买上好几G的内存条了。于是各种奔放的内存使用,在我很长时间的代码中频频出现,最常见的就是为了性能和代码的简洁,直接使用静态的数组来做若干事情,往往分配的非常充裕,也许一个名字之类的东西,就直接给128个字节来使用。这样带来的,是代码异常的简洁,同时也不容易出现一些内存问题。当然更多的时候这样的代码风格是我在写服务器应用的时候常用的,但我在之后犯了一个很严重的错误:我把这种习惯贯穿了我写代码的所有角落,包括编写终端级的应用,也是一样。

  如果仅至于此,也许什么问题都没有,看起来只是一个良好的编码习惯,当很不幸,时间总会过去,人总会成长。在我一次和几个朋友沟通的时候,发现他们正在努力的把8192*8192规格的贴图塞进只有200M内存的一个系统中的时候,我瞬间有种回到了刚开始接触写dos代码的时代。是的,写多了PC应用的我被充裕的硬件环境惯坏了,忘记了其实内存是一个很奢侈的东西,在曾经的dos年代,64k的内存要死命的抠,才刚刚够用。虽然现在动不动就上G的内存,让我产生了内存其实无尽的一种错觉,但错觉也仅仅只是错觉,当跳出PC的环境,一切又回到了起点。

  我提到的200M内存的系统,也许有些曾经痛苦过的人一看就知道,对,是的,就是被大家吹嘘着很牛X的PS3。我没有忽悠你,真的是PS3,如果你做过主机游戏开发,你就知道PS3它丫的只给了你200M内存和256M的显存使用。而在PS4和XBOX ONE没有发行的时代里,你只有两个选择:和只有200M内存的PS3搏斗,或者去和边上那个没有硬盘却能有512M显存和内存混用的XBOX360搏斗。按照PC上开发的经验,200M内存够什么用,也就把华丽的UI和几个贴图什么的载入就没有剩多少了吧。但是一个很现实的问题摆在你眼前:大部分一流的厂商的贴图规格是2048*2048的,超一流的厂商能够实现4096*4096的,最前沿的正在努力把8192*8192的塞进去,虽然我知道的是PS4都出了那么久了,他们还没有成功。这说明了什么?这说明了竞争力啊。在很长的一段时间里,我和我身边的人都有一个观念:太占内存,是美术把贴图做的太精细了,要优化,就砍贴图精度吧。但回头想想,别人都在玩至少2048*2048的精度的时候,你还卖512*512精度的贴图,我就不寒而栗了。

 

  上面说那么多,我总结下来的是:如果在这个逐渐成熟的市场上,你想脱颖而出,或者退一步说要生存下来,那你不得不考虑你要比别人做的优秀。而如何优秀?那就是在有限的框架内做得比别人更好。是的这个极限的挑战,市场不会等待你,如果你不去挑战极限,那要不了多久,你就会被淘汰。比如说PS4出了,很多人会说可以松一口气了,8G的共享内存总够用了吧,于是就陷入一个:我能力不行,可以等硬件升级的思维中。但你的竞争对手会等你吗?显然不会,8G的内存,它的极限是多少?这天知道了,也许过几年在看看,会和现在的情形差不多吧。

  然后,大家觉得,主机游戏离我们太远了,这种东西做不了就不做好了。其实错了,该来的总会来的,或者已经来了。

  很多手游的开发者们,你们现在碰到的问题不就是这些吗?就如我前几天和做手游的朋友聊天,他的抱怨:如果能做出更华丽的游戏,谁会想死磕卡牌游戏啊。

posted @ 2014-03-15 00:46  汪淘  阅读(500)  评论(0编辑  收藏  举报