第331章 多线程逻辑
作者:讲故事的人   春寒料峭时的相遇最新章节     
    那一段时期夫妻俩的生活虽然很紧凑,木晨曦每天都要忙着处理《星梦森林夜》的各种各样的杂事,完全已经没有之前他自己开发游戏时候的那般自在了。
    以前他可以自己安排自己的事情,可以坐下来写代码一写写一整天,也可以用整块整块的时间来画素材,写文本。
    现在不可以了,并不是他不需要再写代码,而是有很多向外对接的事情需要他自己去处理。
    文本和设计有沈时玖在做,代码有小满做,他们两个都不擅长和外面的合作方谈判对接以及协调。
    他们又都很看中沈时玖的这个设计点子,想把这个游戏做好,甚至已经开始考虑采抢先体验模式先上线。
    因此对外的很多杂事,都是木晨曦在对接处理,而他还要负责总体进度的推进,还要随时保持着对开发成本的敏感。
    方敏抒知道做生意做事业要细心,但是游戏行业她不熟。
    木晨曦跟她说,游戏这个东西很容易因为开发团队自我膨胀,自己给自己画饼,而导致系统过于庞杂,实现难度过大,最后死于成本暴增,所以他必须随时考虑着,什么功能要,什么功能不要,什么细节可以花钱花功夫去做,什么细节可以靠视觉欺骗糊弄过去。
    玩家是去玩游戏的,注意力只会放在游戏的主要方向上,因此那些增加氛围感和细节的部分,就可以考虑用简单的办法去糊弄。
    所谓的优化,很多时候其实也就是大型糊弄技术。
    2d游戏也许它不怎么吃显卡显存,但是因为在图形方面省出来大量的资源,开发者也会把主意打到cpu身上去。
    游戏里的单位多了,主循环运转一次,需要处理的数据量就多,依然会非常考验开发者的性能优化能力。
    譬如,《rimworld》里的殖民地有了十六个居民,养了五百只鸡,主循环执行一次,就要检查五百只鸡的状态,扣减饱食度,扣减营养值,然后根据数值的变化,由观察者observer来决定鸡的行为树或者状态机是不是需要切换。
    这就是跑不了的五百次for循环。
    如果是最原始复古的设计,for循环占用进程,那么势必会减少单位时间内的渲染次数。
    渲染次数减少,对玩家来说,就是掉帧,卡顿。
    如果还有对象没有及时回收,那又会导致内存泄露以至于最终游戏崩溃。
    而为了实现在村子里养殖许多的鸡,就要想办法不让鸡的for循环干扰渲染,就要想办法利用cpu的并行能力。
    那么就要走到多线程或者并发的道路上去。
    用上了多线程或者并发之后,又会产生死锁,争用这样的问题,导致程序直接闪退或者卡死。
    多线程的渲染是相似的,但多线程的游戏逻辑则各有各的多线程……
    多线程的渲染有很多泛用性很广的解决方案,但是多线程的游戏逻辑是没有的,因为每个游戏的逻辑都不一样,那就只能是开发者自己去设计。
    沈时玖当初因为游戏要处理的单位过多,而每个单位的复杂度又高,困在性能瓶颈上整年前进不了一步,最后近乎到了崩溃的边缘。
    那段时间何心深有体会,经常吵架,搞得她一天天也疑神疑鬼的,一度以为两个人的感情要告吹,虽然最后发现是虚惊一场,但其实,她付出了很多坚持。
    现在几个人一起来合作这个项目了,设计要求拔高了一些,最难的性能优化部分就落到了木晨曦的肩头上。
    上一个小时也许还在和美术外包在沟通风格和素材细节,下一个小时可能就要开始琢磨算法了。这种在不同的心流间切换的感觉有时会很令人烦躁,但敏敏发觉自家老公对此很淡然。
    也是,多难的日子他都过来了,这对他来说又算得什么呢?
    这一段时期,木晨曦一周七天班地忙着,游戏也不玩了,电钢也不玩了,只要不驻唱和开演唱会,每天敏敏都要坐地铁去孵化园接他下班。杨小满对此“意见很大”,说自己见天儿吃狗粮,其实她自己有空的时候又带着警察哥跑博德之门的团。
    整一个半斤八两。
    而何心则并不和敏敏一起去孵化园接沈时玖,晚上他们下班的时候,何心一般都在忙。
    这天孵化园里又只剩下他们三个人。
    时间已经到了晚九点。
    木晨曦吁了一口气,伸了个懒腰,然后按下了f5键。
    “这一次应该没有什么问题了。”
    小满在写脚本,累了一天本来也不是很专心,就扭头凑了过来,“那我看一看。”说完就掰了一下显示器。
    沈时玖也停下了手里的活,“这次应该可以了吧?”
    木晨曦搓着下巴,“我觉得应该可以了,看看结果。”
    编译完成,屏幕边上出现了资源监视窗——
    【内存788mb,cpu占用42%】
    这是刚启动时的资源占用。
    然后木晨曦进入游戏,打开了控制台,手指缓慢但有节奏地按着键盘,输入他们自己编制的控制台指令集。
    【\/add -unit sheep 2000】(增加单位绵羊,2000只)
    【\/unit status set -dead forbidden】(单位状态设置,禁止死亡)
    屏幕上立刻出现了两千只绵羊,默认分配给玩家。
    内存占用立刻来到1936mb,cpu占用也很快飙升到了58%。
    三个人都看着游戏界面右上角的帧率,还是维持60帧没变。
    木晨曦说,“感觉这次有戏。”
    “cpu占用过六十五了。”小满说,“看看线程数。”
    木晨曦切进cpu资源监视窗。
    “哇哦,”沈时玖赞叹了一声,“七十六个线程,两千只绵羊也没卡。”
    木晨曦嘴角挑了挑,“不错。”
    小满说,“很不错了,这么复杂的逻辑做多线程,没有绷。”
    木晨曦说,“那就再加压。木木镇同时处理的实例才几十个,这个游戏随随便便就上千了。”
    小满说,“那试试,加吧,把鸡和鸭都加上去。”
    他们又测了一阵,最后加到近五千个单位以后,线程数上了百,cpu的散热风扇呼呼转起来,游戏的帧率也开始下降了。
    木晨曦松了一口气,“我觉得这个性能是可以满足设计要求的了。游戏不复杂,主要是为了减轻玩家的负担,自动化的逻辑多一些。你觉得呢?九?”
    沈时玖说,“性能肯定是够了。”
    他此刻心里是庆幸,庆幸这个游戏有好朋友一起来搞,不然他自己不知道要琢磨到什么时候才能解决掉这个技术问题。
    木晨曦和小满却对此并不在意,个个游戏都有坑,坑坑不一样,都是爬过坑的人,也就不怕坑了。
    “来吧,”木晨曦说,“看看你的文案。”
    “好。”
    沈时玖正要去拿,小满却反对道,“看什么看,几点了,下班了!”
    众人这才看了时间,都已经快九点半了。
    这时木晨曦的手机响了,小天后的电话打了进来。
    另外俩人早见惯了这对恩爱夫妻,窃窃笑着看他接电话。
    木晨曦一接起来就说,“我们刚搞完,马上就下来。”
    电话那头的敏敏说,“我已经上来了。”
    “啊?”
    他们抬起头就看见敏敏拿着电话,笑盈盈地出现在孵化园大厅的另一头。