第186章 系统自带应用
这个过程听起来就很麻烦。 虽然不明白大道至简的道理,但帕/纳/宁同样认为而麻烦的事物往往意味着实际运行的时候容易出现这样那样的问题。 反正帕/纳/宁觉得GRAYFOREST所用的绝对不是这种方法。 在老搭档面前帕/纳/宁自然没有遮掩。 他将他这个想法毫无保留地说给了贝尼托·瓦西里耶维奇。 贝尼托·瓦西里耶维奇深以为然。 帕/纳/宁道:“我的老伙计,你把我搞糊涂了。 你刚才说GRAYFOREST所做的无非就是以2D的形式进行了3D的表现从而实现3D的视觉效果。 可你也同意了我刚刚的观点——认为GRAYFOREST采用的不是通过引入3D渲染区域再构建‘折叠册’的那种做法。 莫非你想说的是除了我刚才说的这种方法之外,还有别的方法可以在2D画面中进行3D表现? 在电脑游戏中除了我刚才说的那个方法,确实还有很多别的方法在2D画面中进行3D表现。 但恕我实在想不到在手游里除了构建3D渲染区域之外,还有哪些可以实现在2D画面中实现3D效果的技术。 哦,我亲爱的贝尼托·瓦西里耶维奇,别绕弯子了,快告诉我你究竟是怎么想的。” 贝尼托·瓦西里耶维奇理了理思路,而后开口说道:“首先说到你刚才提到的观点,我和你也是同样的见解。 利用类似于折叠册的形式实现《HILLCLIMBRACING》这款游戏里下雨场景中那种颇具层次感的画面虽然在理论上行得通。 但仅仅是理论上,GRAYFOREST在《HILLCLIMBRACING》用的绝对不是这种方法。 如果按照你说得那种方法在实际操作的时候涉及到将3D渲染层覆盖到2D渲染层之上时。 这个过程需要对2D渲染层采用正交投影方式进行投影,对所述3D渲染层采用透视投影方式进行投影。 而这两种投影涉及到的计算都极其庞大。 尤其是透视投影是典型的计算密集型投影,这个过程涉及到三角计算。 并不是sinx、cosx那种简单的三角计算,涉及到这个过程中的三角计算通常伴随附加有包括矩阵和矢量相乘的运算。 随着场景中所记录细节的量的增大时,用来渲染该场景的冗长计算的数量也将增大,这对CPU是个极大的考验。 常规情况下,涉及到一般物体的投影计算都很吃CPU。 更何况是涉及到下雨这个场景,如果按照你说得这种办法进行透视投影的话。 实时计算量将随着雨滴数量的增多而呈现出指数增长。 恕我直言,别说5s中的A7处理器是一枚桌面级处理器。 就是A7处理器的处理效能在此基础上再翻一番恐怕也只能勉强满足这种运算需求。 巧妇难为无米之炊,如果真的是采用这种方式的话,现有的CPU水平根本无法提供技术支撑。 假设GRAYFOREST所采用的真是这种方式的话。 那么在现有的技术水平下,运行这么一款计算量超级多的游戏时会出现什么样的反应呢? 这些额外的计算大概率会要求以移动设备减小的帧速率进行游戏。 但经过我们的实测同样的5s机型在运行《HILLCLIMBRACING》这款游戏时在屋顶场景的小雨环节并不会出现帧速率减小的情况。 这也从侧面验证了我们先前的判断。 即—GRAYFOREST在《HILLCLIMBRACING》用的绝对不是引入3D渲染区域而后构建折叠册的方式。 除此之外,我觉得GRAYFOREST所采用的方式也不是传统意义上的游戏渲染。 一般来说涉及到2D游戏画面相对应的游戏渲染通常所采取的步骤通常是: 先获取2D游戏画面数据而后分析2D游戏画面元件的初始坐标; 在获得初始坐标之后根据所述初始坐标构建所述2D游戏画面元件的实际坐标系。 接着,基于上面所构筑的实际坐标系,将2D游戏画面映射成3D游戏画面才具有的视觉效果。 再之后要将映射的3D游戏画面的数据缓存到缓存器中。 当接收2D游戏的运行指令,只需要根据所述运行指令调取缓存器中已经生成的3D游戏画面的数据就可以了。 同时为了增强表现形式,还需要对调取的3D游戏画面进一步渲染。 上述这个过程对GPU的要求很高,GPU必须有强大的实时渲染能力。 这样的做法虽然理论上行得通,但也仅仅是在越狱后蘋果手机或者ROOT之后的安卓手机上菜行得通。 但在正常状态的手机中根本不大现实。 毕竟一个应用能调用的GPU大多数情况下都是相当有限的。 因此我认为GRAYFOREST在《HILLCLIMBRACING》用的绝对不是这种方法。” 帕/纳/宁:“那你认为GRAYFOREST采用的究竟是什么方式呢?” 贝尼托·瓦西里耶维奇:“对此我也只能猜测,一个人设计游戏时采用的方式很大程度和其开发风格有很大的关系。 GRAYFOREST虽然崛起的很迅速,像一颗冉冉兴起的新星,但此人开发手法是相当老练的。 毕竟在开发《HILLCLIMBRACING》这款游戏之前,GRAYFOREST已经开发了三个作品了。 这些作品都得到了市场的验证,广受游戏玩家的喜爱。 能取得这样的成绩的GRAYFOREST也可以说得上是一个极其有经验的游戏开发者了。 而这样的人在涉及到具体游戏开发时不可能凭空给自己制造麻烦。 因此我推断GRAYFOREST所采取的一定是最简单的方式。 另外不久前GRAYFOREST在GitHub上上传了他之前开发《2048》所设计的代码。 开始的时候我并没怎么当回事,因为这段代码形式并不算很简洁。 但绝对是在iOS上运行起来效率最高的。 其实像《2048》这种简单的小游戏,即便是运行效率有点区别,也不会影响太大。 可偏偏GRAYFOREST一定要搞一个效率最高的。 这说明这个人骨子里就追求高效率。 这样一个一味追求高效的人在设计《HILLCLIMBRACING》这款游戏中所采用场景构建一定是最高效的。 而在2D游戏中最高效的做法绝对不是额外引入3D渲染区。 基于效率方面的分析以及对游戏画面进行判断。 我认为GRAYFOREST在下雨场景中雨滴之所以看起来很有层次感是因此采用了一种视觉欺骗。” 帕/纳/宁疑惑道:“视觉欺骗?” 贝尼托·瓦西里耶维奇:“对的,就是视觉欺骗,一般我们会下意识的认为‘近大远小’。 因此涉及到雨滴层次感架构的时候,只需要将雨滴表现的大小不一即可。 当然,涉及到如此浓密的雨滴,GRAYFOREST绝对不可能一滴滴地去绘制。 正常来讲,2D画面,就是只有X、Y轴的画面,不存在Z轴; 而3D画面,则是有X、Y、Z轴的画面。 而GRAYFOREST采用的做法应该是在2D游戏中引入了虚拟的Z轴。 我猜测GRAYFOREST具体来说是这样做的。 因为在游戏中,像雨滴这种东西一般都是由粒子系统进行表示的。 [一般来说粒子系统表示三维计算机图形学(CG)中模拟一些特定的模糊现象的技术。 之所以将这些现象称为模糊现象是因为用其它传统的渲染技术难以实现的真实感的游戏图形。 经常使用粒子系统模拟的现象有火、爆炸、烟、雨、火花、落叶、云、雾、发光轨迹这样的抽象视觉效果等等。 粒子系统的核心是粒子发射器生成的一个个行为独立的粒子,共同构建出动画] 在对游戏中引入虚拟的z轴之后。 这样我们在游戏开发中进行雨滴层次感的构建的时候。 完全可以让粒子发射器在发射天气粒子(雨滴)的时候,赋予天气粒子(雨滴)一个虚拟深度值Z。 在天气粒子的整个生命周期中,虚拟深度值Z保持不变; Z值和天气粒子(雨滴)状态之间应该存在着一个函数, 这个函数所起到的作用是缩放作用是对雨滴进行缩放。 并且这个函数将赋予深度值不同的天气粒子以不同的视觉大小和运动状态。 再之后将缩放变换结果分别发送至粒子大小显示单元和粒子运动状态显示单元 如此一来,理论上应该会使2D游戏中的天气粒子具备层次感。 当然,这只是我的猜测而已,想要知道问题真正的答案,还需要进一步的分析。 再或者,我们要向GRAYFOREST本人寻求答案。” (ps:……天气粒子分层这个是猪场的技术,原本是14年末出现的) 帕/纳/宁听到这个分析,似乎又收获了一些新的启发,不过他也有不解之处。 帕/纳/宁说道:“只是这样吗?我记得在很多游戏的建筑场景都常用到这种类似的近大远小效应啊。” 贝尼托·瓦西里耶维奇说:“确实很多2D游戏中都用到了近大远小这种效应。 尤其是涉及到像2D游戏里涉及到回廊的场景,进行这种近大远小的设计是常有的事情。 但在此之前,从未有人想过将这种效应应用在天气粒子上。 事实上在过去手机游戏开发里涉及到一些诸如天气效应的场景中,很少有像GRAYFOREST这么较真的开发者。 在我看来,GRAYFOREST是一个另辟蹊径的探索者,这样的人是勇士。 而且,如果诚然像我们猜测的那样,现在GRAYFOREST已然走出了一条从未有人走过的路。 就拿虚拟深度值Z和天气粒子之间存在的函数吧。 假如说这个函数是:?=F(Z) 尽管我们能知道这个函数的具体作用,但我们尚且无法知道这个函数具体涉及到哪些参数。. 而且即便是天气粒子层次感这个问题解决了,还有很多问题依然困惑着我们。 就比如说为什么GRAYFOREST设计的下雨场景中并没有出现一般游戏里天气粒子常常呈现的“井喷”或者断续。 为什么《HILLCLIMBRACING》这款游戏里下雨场景开始和结束时涉及到的一些过渡很自然? 除此之外还有很多很多的问题,总之涉及到这款游戏的兼并不管别人怎么看。 反正我从纯技术的角度看待,这笔交易是不亏的。 能够吃透这个游戏里涉及到的全部技术对于我们超级细胞有着很大的助力。” 帕/纳/宁道:“放心,我不会因为外界的一些非议动摇决心。 事实上我打算最近就将意向书敲定成正式合同。” 贝尼托·瓦西里耶维奇点点头。 只听帕纳宁接着说道:“对了,另外经过你刚才的提示,虽然关于如何解决‘井喷’的问题我还没答案。 但涉及到天气粒子的‘断续’问题我似乎有答案了。 之所以我们未能看见天气粒子井喷和断续的现象,大概率是因为在《HILLCLIMBRACING》这款游戏中预缓存一些天气粒子。 刚才你提到预缓存一些3D场景很考验GPU,但预缓存一些天气粒子基本上对GPU压力不大。 通过这个小做法,可以使玩家在游戏场景移动时观测到的粒子是平滑连续。” 贝尼托·瓦西里耶维奇也认同了这一观点。 贝尼托·瓦西里耶维奇接着道:“剩下的问题我觉得我们也没必要再纠结了。 我听说中國有一个软件叫YINXIANG(音象),在上面可以隐藏身份提问一些问题。 而据我了解GRAYFOREST就玩这个软件。 或许到时候我们可以在上面以有偿问题的形式请教GRAYFOREST一些技术层面的问题。 这笔我们这样无头苍蝇似的乱撞要好得多。” 帕纳宁:“这倒是个好主意。 哎,涉及到游戏开发为什么GRAYFOREST总有那么多灵感。 而且这些灵感不得不说这还真是不错的思路。 按理说这些东西也不是很难想到,可为什么偏偏我们就没想到呢?” 贝尼托·瓦西里耶维奇:“我觉得这不是我们的问题。 而是GRAYFOREST太天才了。 我现在倒是愈发觉得这样的游戏设计天才,即便他没跟全新的游戏开发引擎有瓜葛。 这样的人才也应该是吸纳进我们超级细胞来的。 光是他那层出不进的点子就让人赞叹不已了。” 帕/纳/宁知道这话是贝尼托·瓦西里耶维奇的真心话。 贝尼托·瓦西里耶维奇尽管技术方面很过硬,但从来不排斥其余人才。 帕/纳/宁:“我也想将这样的人吸纳进来,但很难啊,像GRAYFOREST这样的人很难用钱打动啊!” 贝尼托·瓦西里耶维奇却不完全认同这个观点:“或许我们可以用诚意来打动他,如果能允许GRAYFOREST此人利用我们现有的所有资源去开发游戏呢?亏了的我们负责,盈利的五五分享,我感觉他应该很难抗拒这样的诱惑吧! 当然这只是一种建议,具体怎么决定还是你说了算。” 帕/纳/宁一时之间感觉眼前一亮。 毕竟全球范围内还没几年游戏公司能够拿出一个年营收超过十亿美元的手游让一个‘准新人’在此基础上做开发。 在部落冲突这样的超级IP面前没人不会心动吧? 帕纳宁相信GRAYFOREST也无法抗拒这个诱惑。猪熊的穿越:2014