最近在学c2engine下载,不过想问下单台服务器能支持多少人在线游戏?

你们都太能脑补了啊!&br&&br&原因很简单,因为朋友圈运营规则里写了禁止小游戏的传播啊。&br&&br&&a href=&///?target=http%3A///touch/faq/120813euEJVf141117AbMfam.html%3Fplatform%3D15%26platform%3D15%26from%3Dsinglemessage%26isappinstalled%3D0& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&/touch/faq/120&/span&&span class=&invisible&&813euEJVf141117AbMfam.html?platform=15&platform=15&from=singlemessage&isappinstalled=0&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&
你们都太能脑补了啊!原因很简单,因为朋友圈运营规则里写了禁止小游戏的传播啊。
转载一篇文章,作者trace。我问他可否转载,他回了我一句太老了的文章了。。。&br&如果你没有一些技术基础读这篇文章的话慎读,因为看上去很厉害,然并卵。&br&--------------------------------------------------------------------------------------------------------------------------------------------&br&[SQUARE ENIX
开放会议 2012]&br&揭晓「Agni's Philosophy」幕后的&技术编&&br&&br&原文:game.watch 佐藤カフジ&br&翻译 : Trace译者注:因为i时间有限,翻译和一些语言的组织上的小问题还请见谅&br&&img src=&/3d06f1a7a1aac1ee59cddc270bb9b993_b.jpg& data-rawwidth=&1280& data-rawheight=&720& class=&origin_image zh-lightbox-thumb& width=&1280& data-original=&/3d06f1a7a1aac1ee59cddc270bb9b993_r.jpg&&SQUARE ENIX 公司,在11月23日,24日两天召开了名为 [SQUARE ENIX
开放会议 2012]的技术展示的私人会议。已经传播得很广,本会议的日程安排是今年6月E3 2012披露的技术DEMO「Agni's Philosophy」的剖析。&br&&br&
本文是聚焦3D模型的美术工作制作的[艺术篇]之后,由开发职员演讲的支撑「Agni's Philosophy」实现技术的[技术篇]。&br&&br&
这次会议聚焦技术面的4个部分。有[Runtime & Pipeline的构建和最优化]、[实时图形技术解说]、[服务器端路径搜索系统]、[次世代游戏AI架构]。这里以可以看到「Agni's Philosophy」成果的两个部分为中心。&br&技术推进部是如何驾驭渲染水准的庞大数据的?&br&&br&
关于技术详细会议的第一项,是技术推进部的首席工程师岩﨑浩氏的题为[Runtime & Pipeline的构建和最优化]的演讲。&br&
岩﨑先生的使命是,在「Agni's Phiolosophy」开发时,把视觉工作部门(Visual Works)的渲染影像品质的资源,可以在「Luminous Studio」上实现。以[直面次世代的游戏开发所发生问题]为第一个目标而开始的本项目,首先面对难关的就是岩崎先生&br&岩﨑先生,首先对第一个问题数据大小进行解说。作为实例披露了「Agni's Philosophy」使用的几个场景的数据量。这些例子里,保守的场景也有500W的顶点数,纹理约1000张,总量有1GB,重厚场景有接近1000W的顶点数,1300张纹理数据量1.8GB。&br&&br&「Agni's Philosophy」的艺术制作使用MAYA,场景数据完成后转换为FBX的中间格式,再进行FBX到Luminous用的数据转换。在这里进行实况编辑和时间轴编辑,接着合成最终并输出最终数据,大致是这样的流程。&br&&br&
因为这个项目的影像方面的高品质主要是视觉工作部门的工作,Luminous方面的编辑器不太被使用,几乎都是MAYA完成场景数据的特征,这样,MAYA到Luminous的转化工作频繁进行,在这里发生了问题。&br&&img src=&/b5dfd5add9fa9adc053b9599_b.jpg& data-rawwidth=&2086& data-rawheight=&1389& class=&origin_image zh-lightbox-thumb& width=&2086& data-original=&/b5dfd5add9fa9adc053b9599_r.jpg&&岩﨑浩氏(SQUARE ENIX 技术推进部 Lead Engineer)&br&&br&&img src=&/1e79aba00fd0e3347fb3_b.jpg& data-rawwidth=&1280& data-rawheight=&903& class=&origin_image zh-lightbox-thumb& width=&1280& data-original=&/1e79aba00fd0e3347fb3_r.jpg&&数据大小的例子。一个数秒结束的场景&br&&br&&img src=&/014cac656e07b8a7fa47cfe4a89ea60f_b.jpg& data-rawwidth=&1280& data-rawheight=&903& class=&origin_image zh-lightbox-thumb& width=&1280& data-original=&/014cac656e07b8a7fa47cfe4a89ea60f_r.jpg&&关于「Agni's」的数据流&br&&br&
特别致命的是,打开MAYA做成的场景数据,FBX的转换,还有从FBX变换到Luminous用数据部分,对于某个场景使用的时间分别是6分,45分,1个半小时,花费了庞大的时间。因此,这种测试,改善,再测试的迭代周期就崩溃了。随着数据的日益变大,实际已经到了崩坏的地步。&br&&br&
于是,技术推进部把在MAYA侧频繁调整的参数保存为另外一个文件来解决问题,而且在shader变化时,都有不论编译多少次同样的代码都会花费时间的问题。&br&&br&&img src=&/f09ec2f86aae276bd3896ea_b.jpg& data-rawwidth=&1280& data-rawheight=&903& class=&origin_image zh-lightbox-thumb& width=&1280& data-original=&/f09ec2f86aae276bd3896ea_r.jpg&&&img src=&/992b3aa2eb4fd_b.jpg& data-rawwidth=&1280& data-rawheight=&903& class=&origin_image zh-lightbox-thumb& width=&1280& data-original=&/992b3aa2eb4fd_r.jpg&&因为过于巨大的数据尺寸, MAYA的数据转换时间花费过多的问题发生了。&br&&br&&img src=&/2e2b75b8b8_b.jpg& data-rawwidth=&1280& data-rawheight=&903& class=&origin_image zh-lightbox-thumb& width=&1280& data-original=&/2e2b75b8b8_r.jpg&&数据流的问题点&br&&br&
对于这个问题为了再利用输出的二进制,用Maya侧的插件,缩短了对应的装载时间。 &br&&br&
而且, 对于FBX进行转换花费时间的问题,把一个场景的文件进行编集单位的分割,在Luminous的Rumtime侧导入所谓合并的结构。还有,为了解决在FBX的转换时只能使用1个CPU核的问题,把数据细分后可以用多个PC分布处理的对策,所有问题都[某种程度的解决了]。只是花力气的技巧,但是现实的方法。&br&&img src=&/16bd4f35b4d7a7af5b9aa_b.jpg& data-rawwidth=&1280& data-rawheight=&903& class=&origin_image zh-lightbox-thumb& width=&1280& data-original=&/16bd4f35b4d7a7af5b9aa_r.jpg&&版本管理使用的Perfoce也是高负荷而笨重化,据说有了一个晚上数据Commit都没结束的事情.&br&&br&&img src=&/1c60e423edd1dd83e9de_b.jpg& data-rawwidth=&1280& data-rawheight=&903& class=&origin_image zh-lightbox-thumb& width=&1280& data-original=&/1c60e423edd1dd83e9de_r.jpg&&&br&得到了各种教训,不过主干的「Luminous Studio」全部有了对策&br& 接下来提起的是关于渲染处理最优化的部分。。「Agni's Philosophy」是以前无法考虑的顶点数来绘制的(1个场景1000多万多边形)。但是根据岩﨑先生所说,运行环境是GeForce GTX 680、Intel Core i7-GHz、32GB内存的PC,好像轻描淡写的说过[繁忙的只是GPU的绘制部分,不怎么使用CPU],特别是对于轻易的处理庞大顶点的GPU顶点计算机能有点让人感动。&br&
但是,一开始给予数据进行描绘时性能很低,进行了某种程度的优化。这里面,因为要在这个表现上加以修正,所以最后没有做着色器的优化。&br&&img src=&/bd7a70afb4_b.jpg& data-rawwidth=&1280& data-rawheight=&903& class=&origin_image zh-lightbox-thumb& width=&1280& data-original=&/bd7a70afb4_r.jpg&&场景渲染性能概要&br&&br&&img src=&/b3abd2d2d6f8a48bf4f10e_b.jpg& data-rawwidth=&1280& data-rawheight=&903& class=&origin_image zh-lightbox-thumb& width=&1280& data-original=&/b3abd2d2d6f8a48bf4f10e_r.jpg&&大体上不透明部分(地形等)成了负荷&br&&br& 岩﨑先生着眼的是[Drawcall 数量的太多]。1个场景显示的模型数量庞大,每个模型又由多个材质构成,最初场景1帧的绘制有3,375次 Drawcall发生。这样GPU Stall(等待绘制处理的状态)很多导致执行低下。于是使用同一个材质进行绘制,用万能材质绘制的对象增加,Drawcall数量剧烈的消减成功(减少了85%)。GPU Stall大幅减少,实现了性能的提升。&br&
还有一个效果的最优化,一旦把Skining的结果Cache,会在多个Render Pass上做到最佳状态而实现高速化。但是也有场景因为之前计算负荷过多而延迟的部分。对应条件可以进行开关的调整。&br&&img src=&/4b8d5b8aaa81b0fc55749d_b.jpg& data-rawwidth=&1280& data-rawheight=&903& class=&origin_image zh-lightbox-thumb& width=&1280& data-original=&/4b8d5b8aaa81b0fc55749d_r.jpg&&&img src=&/7f60cb3da5e5af855c60_b.jpg& data-rawwidth=&1280& data-rawheight=&903& class=&origin_image zh-lightbox-thumb& width=&1280& data-original=&/7f60cb3da5e5af855c60_r.jpg&&有效的Drawcall最优化,红线是优化前,青线是优化后的绘制单位。&br&&br&&img src=&/51cc788e4b7d4ecda69b_b.jpg& data-rawwidth=&1280& data-rawheight=&903& class=&origin_image zh-lightbox-thumb& width=&1280& data-original=&/51cc788e4b7d4ecda69b_r.jpg&&&img src=&/a5acf3edb256aef594cbfb3_b.jpg& data-rawwidth=&1280& data-rawheight=&903& class=&origin_image zh-lightbox-thumb& width=&1280& data-original=&/a5acf3edb256aef594cbfb3_r.jpg&&Drawcall消减前和消减后的GPU Profile,Stall剧烈的降低了&br&&br&
最优化也包括细小部分,[非常一般的东西]的最优化工作也一直进行的。特别是游戏开发进行时开发最初没有进行3D模型的顶点消除,而是直接使用视觉工作部门制作的数据。&br&&img src=&/ea003f82c_b.jpg& data-rawwidth=&1280& data-rawheight=&903& class=&origin_image zh-lightbox-thumb& width=&1280& data-original=&/ea003f82c_r.jpg&&细小部分最优化例子,顶点数据大小的最优化有10%的效果&br&&br&
在影片开头显示的是,一开始的场景,有卡车从前景到纵深,放眼望去是个巨大的山崖,实际是在那个山顶附近把山切掉一部分制作了3D的寺院模型。&br&进一步放大,精密制作的有寺院的大门,再放大到门把手上高细节装饰。再放到到构成装置的绳子上,光是这个绳子就使用了9W个顶点&br&&br&
当说到所谓对于不到1像素的面积使用9W顶点的[把用到预渲染的数据原样拿过来]的做法是超现实的现实,会场是大爆笑。实际虽然是Z Culling后不需要绘制的部分,但要进行在Z Test前的顶点变换处理。但对于这个90MS的时间就完成了,证明了最新GPU的强大能力,岩﨑先生也很兴奋[真的很快,几乎没有做Mesh的最优化]&br&
但这只限于地形等静止的数据,活动的东西因为有可能成为顶点处理瓶颈需要减少顶点,Tessellator等的使用的对应也成为现实。但是因为无用顶点会影响内存使用量,装载时间,作业效率等,对应次世代水准游戏开发时的主要对策还是要消减顶点数。&br&&br&
顺便说一下「Agni's Philosophy」面临的转换时间长的问题,本版本的Luminous已经解决了,据说不会再出现同样问题。「Agni's」的项目是在引擎开发一半开始的,是在那时未完成的Luminous分支才面临的问题。&br&&img src=&/871980bcc2aa4c4287c1e_b.jpg& data-rawwidth=&1280& data-rawheight=&903& class=&origin_image zh-lightbox-thumb& width=&1280& data-original=&/871980bcc2aa4c4287c1e_r.jpg&&&img src=&/98d900b57fd999ddbe15fc057f04b2e6_b.jpg& data-rawwidth=&1280& data-rawheight=&903& class=&origin_image zh-lightbox-thumb& width=&1280& data-original=&/98d900b57fd999ddbe15fc057f04b2e6_r.jpg&&&img src=&/45fedd3cdaf8c_b.jpg& data-rawwidth=&1280& data-rawheight=&903& class=&origin_image zh-lightbox-thumb& width=&1280& data-original=&/45fedd3cdaf8c_r.jpg&&&img src=&/0bb3db72367dbc222e204c_b.jpg& data-rawwidth=&1280& data-rawheight=&903& class=&origin_image zh-lightbox-thumb& width=&1280& data-original=&/0bb3db72367dbc222e204c_r.jpg&&&img src=&/5c15b02c8a6d40e433cdf0eb078d4632_b.jpg& data-rawwidth=&1280& data-rawheight=&903& class=&origin_image zh-lightbox-thumb& width=&1280& data-original=&/5c15b02c8a6d40e433cdf0eb078d4632_r.jpg&&隐藏在遥远山顶附近的寺院,门把手上的装饰,哪里使用的9W顶点的绳子,大体上不影响绘制性能,现在的GPU是高速的。&br&&br&支撑「Agni's Philosophy」影像品质的实时Shader技术&br&&img src=&/a6ffdc87f36_b.jpg& data-rawwidth=&2256& data-rawheight=&1504& class=&origin_image zh-lightbox-thumb& width=&2256& data-original=&/a6ffdc87f36_r.jpg&&Remi Driancourt先生(SE 技术推进部)&br&&br&&img src=&/9df43485b8ceb331b3b9faea2f23ded1_b.jpg& data-rawwidth=&1986& data-rawheight=&1321& class=&origin_image zh-lightbox-thumb& width=&1986& data-original=&/9df43485b8ceb331b3b9faea2f23ded1_r.jpg&&Napaporn Metaaphanon先生(同上)&br&&br&
会议的第2日是[实时图形技术解说]和[Agni's Philosoph]使用的图形渲染技术详细披露。演讲的是技术推进部的Remi Driancourt先生和Napaporn Metaaphanon先生。&br&&br&
大半部分技术解说是Driancourt先生来推进,不过情报量过于强大, 2个小时的会议不能全部解说,本稿把会议里解说的要素,把重点特别放在角色渲染上来分配字数。&br&&br&
还有,就是「Agni's Philosophy」渲染品质影像的实时实现的,背景和人物使用的photo real的shading技法。进行没有毛病的线性空间的shading,为了符合场景的氛围,增加适当的色调修正,是从fp16的HDR空间到LDR的Toon Mapping的基本流程&br&&br&
这上面的背景和其他对象主要使用万能型shader,人物等的重要性高的东西非常复杂的特别Shading技术,实现着向预渲染品质逼近的实时影像。下面看看详细部分。&br&表现出Photo Real气氛的Global Illumination&br&&br&
给予场景全体的气氛感的环境光源表现,是使用自己的Global Illumination(GI)技术来制作。这种把各对象的表面光的扩散反射(间接光)加入计算的场景全体照明技法可以得到非常PhotoReal的照明效果,但比普通的实时(照明)消费要高。
因此「Agni's Philosophy」牺牲了动态光源,GI计算结果由内置工具烘培,制作成Light Map化来对应。&br&&img src=&/53bfab5eb0f0d5c053bb24_b.jpg& data-rawwidth=&1194& data-rawheight=&672& class=&origin_image zh-lightbox-thumb& width=&1194& data-original=&/53bfab5eb0f0d5c053bb24_r.jpg&&线性空间的HDR渲染&br&&br&&img src=&/fd79a0c3506_b.jpg& data-rawwidth=&1194& data-rawheight=&672& class=&origin_image zh-lightbox-thumb& width=&1194& data-original=&/fd79a0c3506_r.jpg&&关于「Agni's」Global Illumination(GI)&br&&br&
LightMap的每个纹素,以全方位的光源影响的球谐波函数(SH)的形式来记录,可以很好的对应视点的变化进行表面亮度的变化。这样,虽然光源和物体对象的位置不能动,但地面和墙壁可以根据摄像机的方向清楚的看到再现动态光。一边稳固的维持着包含间接光源的光线信息,一边要烘培有效率的高度静态的数据。&br&&br&
动态对象的环境照明,是把立体空间分割为格子状,每个地点照到光的方式使用SH的形态来记录(SH Irradiance Volume)。虽然是会大量使用内存的方法,但lighting的结果有着和静态对象做调和的价值,也有能够在动态的模型上应用的优点&br&&br&
用通常lighting和阴影不能表现的,包含了细部凹凸和迂回的暗部表现由Ambient Occlusion (AO)实现。除了为了高品质而使用的预先烘培的AO外,据说还有对应动态场景的Screen Based AO(SSAO),还对于大的动态物体对象的暗部制作特殊的情况,使用称为Object Based AO的技法(能在卡车的车轮周围看到) &br&&img src=&/bd36da60bc548e0e8069_b.jpg& data-rawwidth=&1194& data-rawheight=&672& class=&origin_image zh-lightbox-thumb& width=&1194& data-original=&/bd36da60bc548e0e8069_r.jpg&&2D SH LightMap。静止物体用的&br&&br&&img src=&/edf82c50da7399fba76b211a955bae63_b.jpg& data-rawwidth=&1194& data-rawheight=&672& class=&origin_image zh-lightbox-thumb& width=&1194& data-original=&/edf82c50da7399fba76b211a955bae63_r.jpg&&SH Irradiance Volumes。动态物体对象的光照使用&br&&br&&img src=&/fb99d5d4ded628ba3fed673db4bc0711_b.jpg& data-rawwidth=&1194& data-rawheight=&672& class=&origin_image zh-lightbox-thumb& width=&1194& data-original=&/fb99d5d4ded628ba3fed673db4bc0711_r.jpg&&GI烘培的Surface印象&br&&br&&img src=&/c235cd03e0afddd4a27aa_b.jpg& data-rawwidth=&1194& data-rawheight=&672& class=&origin_image zh-lightbox-thumb& width=&1194& data-original=&/c235cd03e0afddd4a27aa_r.jpg&&Screen Based AO(SSAO)&br&&br&&img src=&/3dd5d862bce6bec12910_b.jpg& data-rawwidth=&1194& data-rawheight=&672& class=&origin_image zh-lightbox-thumb& width=&1194& data-original=&/3dd5d862bce6bec12910_r.jpg&&&img src=&/682a70ea00e5ad0a5a3d61f_b.jpg& data-rawwidth=&1194& data-rawheight=&672& class=&origin_image zh-lightbox-thumb& width=&1194& data-original=&/682a70ea00e5ad0a5a3d61f_r.jpg&&Object Based AO是大型运动物体对象使用,这个场景是卡车轮胎周围。&br&&br&聪明的加入丰富表现的皮肤Shading&br&&br&
在「Agni's Philosophy」中,特别要加以注意的是实现的角色渲染机能。用以前的Shader表现力完全不足,所以要准备人物的皮肤,眼球,头发的特殊Shader。再加上post process实现了有说服力的影像。&br&&br&
首先,是人类皮肤表现基础的次级表面散射(Subsurface scattering, SSS)。这是人类皮肤(其实应该是全生物),半透明的层重叠在一起的构造和变换着眼的技法。收到的光6%直接成为反射(specular),还有94%是皮下扩散,根据角质层颜色进行颜色变化再向外部放射。&br&&br&「Agni's」中是基于进行post effect的 Screen Based的SSS技法来确保可扩展性。还有,对皮下散射的模拟使用的纹素采样, 用Poisson distribution的特殊table(因为能够把旋转后Reference结果做模糊,所以也称为“disk”)进行Reference,通过权重来弥补皮下扩散模拟的信息。 &br&&img src=&/ca79aa97d24748eed8274_b.jpg& data-rawwidth=&1194& data-rawheight=&672& class=&origin_image zh-lightbox-thumb& width=&1194& data-original=&/ca79aa97d24748eed8274_r.jpg&&人体所有透明感的表现挑战&br&&br&&img src=&/1dad1aed288eddc98dba5d_b.jpg& data-rawwidth=&1194& data-rawheight=&672& class=&origin_image zh-lightbox-thumb& width=&1194& data-original=&/1dad1aed288eddc98dba5d_r.jpg&&皮下散射的概念&br&&br&&img src=&/ffce9be8eb5e0bf10f65c7cd1e18f431_b.jpg& data-rawwidth=&1194& data-rawheight=&672& class=&origin_image zh-lightbox-thumb& width=&1194& data-original=&/ffce9be8eb5e0bf10f65c7cd1e18f431_r.jpg&&Screen Based SSS的概要&br&&br&&img src=&/ab5c719eb_b.jpg& data-rawwidth=&1194& data-rawheight=&672& class=&origin_image zh-lightbox-thumb& width=&1194& data-original=&/ab5c719eb_r.jpg&&施加采样方法的版本&br&&br&&img src=&/f79bef2dff84cc_b.jpg& data-rawwidth=&1194& data-rawheight=&672& class=&origin_image zh-lightbox-thumb& width=&1194& data-original=&/f79bef2dff84cc_r.jpg&&实现的SSS的管线概念图&br&&img src=&/e74a8ecc3a932ba55426a_b.jpg& data-rawwidth=&1194& data-rawheight=&672& class=&origin_image zh-lightbox-thumb& width=&1194& data-original=&/e74a8ecc3a932ba55426a_r.jpg&&Screen Based的处理根据距离有很大的负荷变化。&br&&br&&img src=&/8ae8ddd4f1f39f472ce29_b.jpg& data-rawwidth=&1194& data-rawheight=&672& class=&origin_image zh-lightbox-thumb& width=&1194& data-original=&/8ae8ddd4f1f39f472ce29_r.jpg&&&img src=&/16d4e12fb2b_b.jpg& data-rawwidth=&1194& data-rawheight=&672& class=&origin_image zh-lightbox-thumb& width=&1194& data-original=&/16d4e12fb2b_r.jpg&&有无SSS的比较。SSS应用的一部分产生红色,表面变的光滑。&br&&br&&img src=&/1a00712cfed6b0eda452f_b.jpg& data-rawwidth=&1194& data-rawheight=&672& class=&origin_image zh-lightbox-thumb& width=&1194& data-original=&/1a00712cfed6b0eda452f_r.jpg&&Kelemen Szirmay?Kalos的specular&br&&br&&img src=&/bcfac225e3cdcb9a2ec8519_b.jpg& data-rawwidth=&1194& data-rawheight=&672& class=&origin_image zh-lightbox-thumb& width=&1194& data-original=&/bcfac225e3cdcb9a2ec8519_r.jpg&&两种的Specluar做混合&br&&br&
同时为皮肤质感贡献的是Specular的表现。人物用Specular只使用Phong Specular是不足的,采用了基于Kelemen Szirmay-Kalos实现的Specular(BRDF,双向反射率分布函数)的技法。这是每个反射地点的不同都会给反射方向或强度带来变化的Specular处理,能够得到增加了肌肤的细小凹凸影响的Specular效果。&br&&br&
这里把两种的Specular做混合。一个主要来自是SH Irradiance Volume(GI的环境光)的影像,和Cube Map的影响钝化(译者注:日文原文是钝,英文是dull)混合的Specular,就得到了“干”的质感。另外就是基于Cube Map的强的Specular,这个湿润带有闪亮的质感,由于恰当的组合他们,干的皮肤,油光发亮的皮肤,流汗等丰富多彩的质感都能表现。&br&&br&&img src=&/41b998a19bcff58d186a5_b.jpg& data-rawwidth=&1194& data-rawheight=&672& class=&origin_image zh-lightbox-thumb& width=&1194& data-original=&/41b998a19bcff58d186a5_r.jpg&&一般的Phong高光&br&&br&&img src=&/a1a6f3b46af_b.jpg& data-rawwidth=&1194& data-rawheight=&672& class=&origin_image zh-lightbox-thumb& width=&1194& data-original=&/a1a6f3b46af_r.jpg&&「Agni's」的Specular&br&&br&&img src=&/c907fabc45_b.jpg& data-rawwidth=&1194& data-rawheight=&672& class=&origin_image zh-lightbox-thumb& width=&1194& data-original=&/c907fabc45_r.jpg&&&img src=&/3da7c0e4e9a36aa74d33_b.jpg& data-rawwidth=&1194& data-rawheight=&672& class=&origin_image zh-lightbox-thumb& width=&1194& data-original=&/3da7c0e4e9a36aa74d33_r.jpg&&一部分使用带有Mask的Wet Specular,使得汗和泪的表现成为可能&br&&br&人物用的AO也被准备了。预先烘培的AO和实时附加的Screen based AO两者被分开使用,与通常的AO不同,是按照AO的level让其发生颜色位移,在暗的部分上稍微加上红色。使用这个,据说暗的部分的皮下扩散效果会倍强调为带有红色,作出了自然的表现。&br&&img src=&/eefaf9cd4f2d771c76e1_b.jpg& data-rawwidth=&1194& data-rawheight=&672& class=&origin_image zh-lightbox-thumb& width=&1194& data-original=&/eefaf9cd4f2d771c76e1_r.jpg&&&img src=&/a8b5bc5a74ff9_b.jpg& data-rawwidth=&1194& data-rawheight=&672& class=&origin_image zh-lightbox-thumb& width=&1194& data-original=&/a8b5bc5a74ff9_r.jpg&&给予AO的颜色计算少许变化,暗的部分有了若干的红色。&br&&br&&img src=&/e14d9c0a2ca8daf613b88_b.jpg& data-rawwidth=&1194& data-rawheight=&672& class=&origin_image zh-lightbox-thumb& width=&1194& data-original=&/e14d9c0a2ca8daf613b88_r.jpg&&&img src=&/28cbbafe7a0d3c_b.jpg& data-rawwidth=&1194& data-rawheight=&672& class=&origin_image zh-lightbox-thumb& width=&1194& data-original=&/28cbbafe7a0d3c_r.jpg&&有无AO的影像比较,细小的凹凸部分有张有弛的生成了。&br&&br&
还有一个,为了人物的肌肤的透明感的表现,实装了Backscatter(背景扩散)的效果。在手指和耳朵的比较薄的部分,背景的光透过,比厚的地方明亮而且可以看见红色。这样,就对象物体厚度情报的光源色颜色反映的加入就实现了。&br&&img src=&/638ff459b83fb46c5e6fada878a1cf36_b.jpg& data-rawwidth=&1194& data-rawheight=&672& class=&origin_image zh-lightbox-thumb& width=&1194& data-original=&/638ff459b83fb46c5e6fada878a1cf36_r.jpg&&&img src=&/ba14dbdc2c3c3d28c6c903f885dc3b33_b.jpg& data-rawwidth=&1194& data-rawheight=&672& class=&origin_image zh-lightbox-thumb& width=&1194& data-original=&/ba14dbdc2c3c3d28c6c903f885dc3b33_r.jpg&&有无Backscatter的比较,演出了自然的透明感。&br&&br&
为了给予CG角色[眼力],眼球上也使用了特别的Shader。眼球不是单纯的球体,有厚度的水晶体,这里面有虹彩。如果从侧面看眼球,可以看到由于水晶体的歪曲虹彩的深度不同。为了把这个再现,用bump map表现虹彩的凹陷,parallax mapping表现折射。做出了没有违和感的真实眼球描写&br&&img src=&/8f099be1edee3e55e104_b.jpg& data-rawwidth=&1194& data-rawheight=&672& class=&origin_image zh-lightbox-thumb& width=&1194& data-original=&/8f099be1edee3e55e104_r.jpg&&漫反射是用Bump Map表现凹陷&br&&br&&img src=&/517e54e3cef2_b.jpg& data-rawwidth=&1194& data-rawheight=&672& class=&origin_image zh-lightbox-thumb& width=&1194& data-original=&/517e54e3cef2_r.jpg&&环境光的反射使用 判定用的bump map 来突出效果&br&&br&&img src=&/4cd063d40db64e62bfdab_b.jpg& data-rawwidth=&1194& data-rawheight=&672& class=&origin_image zh-lightbox-thumb& width=&1194& data-original=&/4cd063d40db64e62bfdab_r.jpg&&Specluar是应用两种bumpmap&br&&br&&img src=&/c996fcd665bcbdb6a6a4_b.jpg& data-rawwidth=&1194& data-rawheight=&672& class=&origin_image zh-lightbox-thumb& width=&1194& data-original=&/c996fcd665bcbdb6a6a4_r.jpg&&合成并最终输出成这个样子&br&&br&&img src=&/eaefe92d15cdbc839fad0_b.jpg& data-rawwidth=&1194& data-rawheight=&672& class=&origin_image zh-lightbox-thumb& width=&1194& data-original=&/eaefe92d15cdbc839fad0_r.jpg&&&img src=&/bb73adaa026_b.jpg& data-rawwidth=&1194& data-rawheight=&672& class=&origin_image zh-lightbox-thumb& width=&1194& data-original=&/bb73adaa026_r.jpg&&有无parallax mapping的折射表现比较,那边自然是一目了然&br&头发的Shading也没有疏忽!&br&&br&
和眼睛一样,也加入了赋予人物印象的头发技术也。首先,作为头发的Geometry使用了2种技法。一个是用和以前一样的基于多边形的头发表现,还有一个是在Nurbs曲线上给与控制的线来模拟毛束,用Tessellation来增加头发的技法&br&&img src=&/fa1d498cf62d_b.jpg& data-rawwidth=&1194& data-rawheight=&672& class=&origin_image zh-lightbox-thumb& width=&1194& data-original=&/fa1d498cf62d_r.jpg&&传统手法的B-Hair&br&&br&&img src=&/cfea977f17_b.jpg& data-rawwidth=&1194& data-rawheight=&672& class=&origin_image zh-lightbox-thumb& width=&1194& data-original=&/cfea977f17_r.jpg&&基于Nurbs的T-Hair追加了 volume up &br&&br&
技术推进里部把前者比作为[香蕉皮]B-Hair,后者是参考的是取自论文的发表者名字称作T-Hair(Tariq-Hair)。B-Hair在Maya上作为通常的Mesh来制作、T-Hair是Nurbs曲线的控制点的集合来制作。控制点像弹簧一样可以进行力学对象的模拟,受到重力或其他对象或则风等矢量场的影响来动作。&br&&br&
T-Hair的控制点在DirectX 11的Compute Shader里做Smoothing的基础上,使用Tessellator增毛。增毛时给予Tessellator参数可以加上卷曲,歪曲,回旋等,不是直线而是贴上billboard texture的毛发的质量表现也能达到。根据这个,从Agni的的干爽的头发,到开头登场的男性弯曲的胡须,鬣狗风怪物的硬毛等的体毛都可以得到有说服力的表现。&br&&img src=&/c1b2d54cf36ce7bb81e9_b.jpg& data-rawwidth=&1194& data-rawheight=&672& class=&origin_image zh-lightbox-thumb& width=&1194& data-original=&/c1b2d54cf36ce7bb81e9_r.jpg&&&img src=&/f1c4dc15eeb07c2635d8_b.jpg& data-rawwidth=&1194& data-rawheight=&672& class=&origin_image zh-lightbox-thumb& width=&1194& data-original=&/f1c4dc15eeb07c2635d8_r.jpg&&T-Hair可以在召唤等男性角色的胡须还有动物的体毛上使用&br&&br&&br&&img src=&/f61ac9f995_b.jpg& data-rawwidth=&1194& data-rawheight=&672& class=&origin_image zh-lightbox-thumb& width=&1194& data-original=&/f61ac9f995_r.jpg&&Maya的数据是这样构成&br&&br&&img src=&/e2ced47d859fa7fcfc07fa2b_b.jpg& data-rawwidth=&1194& data-rawheight=&672& class=&origin_image zh-lightbox-thumb& width=&1194& data-original=&/e2ced47d859fa7fcfc07fa2b_r.jpg&&Nurbs的控制点是被物理物理控制后再Smoothing,Tessllation增毛,生成billboard texture这样顺序的最终印象。&br&&br&&img src=&/131e78aa2fdd3d86c91ed4_b.jpg& data-rawwidth=&1194& data-rawheight=&672& class=&origin_image zh-lightbox-thumb& width=&1194& data-original=&/131e78aa2fdd3d86c91ed4_r.jpg&&&img src=&/2af1ef396f0281_b.jpg& data-rawwidth=&1194& data-rawheight=&672& class=&origin_image zh-lightbox-thumb& width=&1194& data-original=&/2af1ef396f0281_r.jpg&&Tessellator增毛时增加变形,可以柔软的表现不同毛质&br&&br&
关于头发的Shading,上述的B-Hair和T-Hair两者要看起来很好的渗透是有必要的,是个高难度的问题。「Agni's」中,采用的并实现了Steve Marschner先生所说的,由头发的颜色决定高光,二次高光用复杂要素来近似的方法。&br&&img src=&/27ec9f73dfd61e1c928d3e53c6ad8dcc_b.jpg& data-rawwidth=&1194& data-rawheight=&672& class=&origin_image zh-lightbox-thumb& width=&1194& data-original=&/27ec9f73dfd61e1c928d3e53c6ad8dcc_r.jpg&&没有specular&br&&br&&img src=&/b3ea3d9bc6f12ebf691eb4e_b.jpg& data-rawwidth=&1194& data-rawheight=&672& class=&origin_image zh-lightbox-thumb& width=&1194& data-original=&/b3ea3d9bc6f12ebf691eb4e_r.jpg&&追加第一高光&br&&br&&img src=&/7f9ad2cdd1bdc_b.jpg& data-rawwidth=&1194& data-rawheight=&672& class=&origin_image zh-lightbox-thumb& width=&1194& data-original=&/7f9ad2cdd1bdc_r.jpg&&追加第二高光,加入Phase Shift&br&&br&&img src=&/2a53d533f1f25fd9a158b0_b.jpg& data-rawwidth=&1194& data-rawheight=&672& class=&origin_image zh-lightbox-thumb& width=&1194& data-original=&/2a53d533f1f25fd9a158b0_r.jpg&&追加CubeMap的环境反射等灯光&br&&br&关于头发形成的影子,使用PCF(Percentage Closer Filtering)Shdow的变形方法。具体的,对应遮蔽物(这个场合是毛发)的距离来衰减影子的浓度。使用Shadowmap专用的几何体来制作阴影以减轻负荷。&br&&img src=&/18b3a2a9cc872f198aa883abf613f512_b.jpg& data-rawwidth=&1194& data-rawheight=&672& class=&origin_image zh-lightbox-thumb& width=&1194& data-original=&/18b3a2a9cc872f198aa883abf613f512_r.jpg&&对PCF Shadow做了少许定制的Self Shadow技法。&br&&br&
即使这样做出了那样的影子,「Agni's」中 还应用了复数的Post Process。首先,加入Unsharp Mask来突出阴影边缘,实现了头发和体毛的深度阴影表现&br&&br&
再加上,关于在边缘部分Jaggies做到醒目的问题,使用由Multi Sampling做出的anti-aliasing(MSAA)、再进行Post process形态的AA(FXAA),还有景深(DOF)组合出了自然的边缘感。光是头发,体毛的表现就有非常丰富的Post Process来应用。&br&&img src=&/3a3c6eb0856d_b.jpg& data-rawwidth=&1194& data-rawheight=&672& class=&origin_image zh-lightbox-thumb& width=&1194& data-original=&/3a3c6eb0856d_r.jpg&&没有影子的印象&br&&br&&img src=&/453efc2def15bd71aba820f_b.jpg& data-rawwidth=&1194& data-rawheight=&672& class=&origin_image zh-lightbox-thumb& width=&1194& data-original=&/453efc2def15bd71aba820f_r.jpg&&Shadow map用的几何体&br&&br&&img src=&/d242ef15f47ccb64648f_b.jpg& data-rawwidth=&1194& data-rawheight=&672& class=&origin_image zh-lightbox-thumb& width=&1194& data-original=&/d242ef15f47ccb64648f_r.jpg&&让shadow稍微有效果&br&&br&&img src=&/53f336d9b189ae91cc1eba9_b.jpg& data-rawwidth=&1194& data-rawheight=&672& class=&origin_image zh-lightbox-thumb& width=&1194& data-original=&/53f336d9b189ae91cc1eba9_r.jpg&&让shadow更加有效果&br&&br&&img src=&/a31f591ddeccc17ae23cc_b.jpg& data-rawwidth=&1194& data-rawheight=&672& class=&origin_image zh-lightbox-thumb& width=&1194& data-original=&/a31f591ddeccc17ae23cc_r.jpg&&没有post process&br&&br&&img src=&/af5d7d9c68_b.jpg& data-rawwidth=&1194& data-rawheight=&672& class=&origin_image zh-lightbox-thumb& width=&1194& data-original=&/af5d7d9c68_r.jpg&&Unsharp Mask 加入&br&&br&&img src=&/8c4dbff6cba82d38d9f4d_b.jpg& data-rawwidth=&1194& data-rawheight=&672& class=&origin_image zh-lightbox-thumb& width=&1194& data-original=&/8c4dbff6cba82d38d9f4d_r.jpg&&没有AA
&br&&br&&img src=&/ebf613bfedcee7b4f7d39488_b.jpg& data-rawwidth=&1194& data-rawheight=&672& class=&origin_image zh-lightbox-thumb& width=&1194& data-original=&/ebf613bfedcee7b4f7d39488_r.jpg&&MSAAx8&br&&br&&img src=&/d4e7a7ac6facb5bbbe826_b.jpg& data-rawwidth=&1194& data-rawheight=&672& class=&origin_image zh-lightbox-thumb& width=&1194& data-original=&/d4e7a7ac6facb5bbbe826_r.jpg&&进一步加上FXAA&br&&br&&img src=&/3dd45f26748dad1a7eb3a2_b.jpg& data-rawwidth=&1194& data-rawheight=&672& class=&origin_image zh-lightbox-thumb& width=&1194& data-original=&/3dd45f26748dad1a7eb3a2_r.jpg&&完成DOF&br&&br&一次会议无法区分开的渲染技术&br&&br&
本会议此外还选择用在衣服上的不同方向性的Specular,Volumetric Fog,瓶子或水滴描写使用的折射Shading,烟或昆虫表现使用的粒子系统等话题,为了控制在会议两个小时内,成了非常快的解说。&br&
因为本稿到这里字数也用尽了,这里介绍的也只是幻灯片的一部分。讲演者的Driancourt先生要说,光是一个项目的详细解说某种程度上这样就结束了,「Agni's Philosophy」是技术集大成的存在的。确实使之觉得是个的密度很深的技术日程。。&br&
总结「Luminous Studio」的技术情报不仅是此次开发会议,游戏业界团体CESA主办的CEDEC也被披露了,今后也会更加详细和广泛的提供情报。窥视了次世代游戏图形世界的「Agni's Philosophy」和成为支柱的「Luminous
Studio」,今后也会继续汇集世间的关注了。&br&&img src=&/c289d945ff2f400efc14d6f_b.jpg& data-rawwidth=&1194& data-rawheight=&672& class=&origin_image zh-lightbox-thumb& width=&1194& data-original=&/c289d945ff2f400efc14d6f_r.jpg&&各向异性Specular的印象图&br&&br&【各向异性Specular】&br&&img src=&/d58cd14d5e_b.jpg& data-rawwidth=&1194& data-rawheight=&672& class=&origin_image zh-lightbox-thumb& width=&1194& data-original=&/d58cd14d5e_r.jpg&&&img src=&/58fb14deeee_b.jpg& data-rawwidth=&1194& data-rawheight=&672& class=&origin_image zh-lightbox-thumb& width=&1194& data-original=&/58fb14deeee_r.jpg&&根据角度变化使Specular起效果的情况,等到了上等品质的布料质感&br&&br&【预渲染和实时渲染的影像比较】&br&&img src=&/9e89bafc0c05f80dca7c79_b.jpg& data-rawwidth=&1194& data-rawheight=&672& class=&origin_image zh-lightbox-thumb& width=&1194& data-original=&/9e89bafc0c05f80dca7c79_r.jpg&&&img src=&/e244c15848f24aca50d97c233bd6a374_b.jpg& data-rawwidth=&1194& data-rawheight=&672& class=&origin_image zh-lightbox-thumb& width=&1194& data-original=&/e244c15848f24aca50d97c233bd6a374_r.jpg&&通过之前介绍的Shading技术,实现了与预渲染映像惊人接近的品质的实时映像。&br&======================================================================&br&我认识一个大神 &a data-hash=&9dfbf6a39b973b0eee586& href=&///people/9dfbf6a39b973b0eee586& class=&member_mention& data-editable=&true& data-title=&@这你都不知道& data-hovercard=&p$b$9dfbf6a39b973b0eee586&&@这你都不知道&/a& ,我让他注册了知乎号,看他的时间是否允许了。我要是讲的话都是来自他的二手观点,所以我就不献丑了。&br&另外,现在很多游戏公司里的美术越来越少了,50人的开发团队,只要3~5个美术就够。&br&======================================================================
转载一篇文章,作者trace。我问他可否转载,他回了我一句太老了的文章了。。。如果你没有一些技术基础读这篇文章的话慎读,因为看上去很厉害,然并卵。-------------------------------------------------------------------------------------------------…
&p&如果恐怖也是一种美的话......&/p&&br&&p&给三角形的3个顶点,和一个当前点,然后以以下的方式进行迭代处理:&/p&&blockquote&&p&a.随机选择三角形的某一个顶点,计算出它与当前点的中点位置;&/p&&p&b.将计算出的中点做为当前点,再重新执行操作a&/p&&/blockquote&&p&会生成&strong&谢尔宾斯基三角形&/strong&,又叫&strong&谢尔宾斯基坟垛&/strong&:&/p&&img src=&/2d892c7de_b.jpg& data-rawwidth=&1080& data-rawheight=&629& class=&origin_image zh-lightbox-thumb& width=&1080& data-original=&/2d892c7de_r.jpg&&&p&如此执行几千万次之后,可以将所有点集生成一幅图像&strong&.&/strong&这算是一种最简单的分形图.&/p&&img src=&/78810c2cec10f19e9d0c_b.jpg& data-rawwidth=&1024& data-rawheight=&1024& class=&origin_image zh-lightbox-thumb& width=&1024& data-original=&/78810c2cec10f19e9d0c_r.jpg&&&br&&p&若是对五边形做类似的处理,&/p&&img src=&/732eeb4802feab6bd52528_b.jpg& data-rawwidth=&1080& data-rawheight=&629& class=&origin_image zh-lightbox-thumb& width=&1080& data-original=&/732eeb4802feab6bd52528_r.jpg&&&p&生成的图像如下:&/p&&img src=&/c766d54a693c4f0298e5dadd_b.jpg& data-rawwidth=&1024& data-rawheight=&1024& class=&origin_image zh-lightbox-thumb& width=&1024& data-original=&/c766d54a693c4f0298e5dadd_r.jpg&&&p&在这幅画中,我看到了累累白骨,颗颗骷髅.&/p&&br&&p&然后对八边形做类似处理,生成的图像为:&/p&&p&&img src=&/8b3ee8fea_b.jpg& data-rawwidth=&1024& data-rawheight=&1024& class=&origin_image zh-lightbox-thumb& width=&1024& data-original=&/8b3ee8fea_r.jpg&&挺瘆人的一幅画,尤其是某一天我发现这东西很像HIV病毒.&/p&&br&&p&但是,如果对算法做一些修改,调整每个顶点的选中概率,调整当前点的位置偏移,可以生成很美的图像:&/p&&img src=&/fbdbde769f4a01c6b54a08_b.jpg& data-rawwidth=&1024& data-rawheight=&1024& class=&origin_image zh-lightbox-thumb& width=&1024& data-original=&/fbdbde769f4a01c6b54a08_r.jpg&&&img src=&/81bf73a140a6ad73a9928_b.jpg& data-rawwidth=&1024& data-rawheight=&1024& class=&origin_image zh-lightbox-thumb& width=&1024& data-original=&/81bf73a140a6ad73a9928_r.jpg&&&img src=&/fb48fb7d00_b.jpg& data-rawwidth=&1024& data-rawheight=&1024& class=&origin_image zh-lightbox-thumb& width=&1024& data-original=&/fb48fb7d00_r.jpg&&&img src=&/6bad0ced40e670aa1d9bb_b.jpg& data-rawwidth=&1024& data-rawheight=&1024& class=&origin_image zh-lightbox-thumb& width=&1024& data-original=&/6bad0ced40e670aa1d9bb_r.jpg&&&img src=&/9b438deac16bf14397dfbb_b.jpg& data-rawwidth=&1024& data-rawheight=&1024& class=&origin_image zh-lightbox-thumb& width=&1024& data-original=&/9b438deac16bf14397dfbb_r.jpg&&&img src=&/d9efadd1bc001a_b.jpg& data-rawwidth=&1024& data-rawheight=&1024& class=&origin_image zh-lightbox-thumb& width=&1024& data-original=&/d9efadd1bc001a_r.jpg&&&img src=&/1fccead2c89ed53675fb60_b.jpg& data-rawwidth=&1024& data-rawheight=&1024& class=&origin_image zh-lightbox-thumb& width=&1024& data-original=&/1fccead2c89ed53675fb60_r.jpg&&&img src=&/db8df01e8d6247fceefc66_b.jpg& data-rawwidth=&1024& data-rawheight=&1024& class=&origin_image zh-lightbox-thumb& width=&1024& data-original=&/db8df01e8d6247fceefc66_r.jpg&&&img src=&/eafd45096_b.jpg& data-rawwidth=&1024& data-rawheight=&1024& class=&origin_image zh-lightbox-thumb& width=&1024& data-original=&/eafd45096_r.jpg&&&img src=&/07ec66f88fb13f773ea9dbf365a6b8dc_b.jpg& data-rawwidth=&1024& data-rawheight=&1024& class=&origin_image zh-lightbox-thumb& width=&1024& data-original=&/07ec66f88fb13f773ea9dbf365a6b8dc_r.jpg&&&img src=&/3d5c7fa47ab3ddbaea9eff_b.jpg& data-rawwidth=&1024& data-rawheight=&1024& class=&origin_image zh-lightbox-thumb& width=&1024& data-original=&/3d5c7fa47ab3ddbaea9eff_r.jpg&&更多图像见:&br&&a class=& wrap external& href=&///?target=http%3A///WhyEngine/p/4169138.html& target=&_blank& rel=&nofollow noreferrer&&三生万物---算法生成的25幅三角形图像&i class=&icon-external&&&/i&&/a&&br&&a class=& wrap external& href=&///?target=http%3A///WhyEngine/p/4171461.html& target=&_blank& rel=&nofollow noreferrer&&混沌开窍---24幅由算法生成的正方形图像&i class=&icon-external&&&/i&&/a&&br&&a class=& wrap external& href=&///?target=http%3A///WhyEngine/p/4110337.html& target=&_blank& rel=&nofollow noreferrer&&正与邪---25幅由算法生成的五角星图像&i class=&icon-external&&&/i&&/a&&br&&a class=& wrap external& href=&///?target=http%3A///WhyEngine/p/4184412.html& target=&_blank& rel=&nofollow noreferrer&&自然的密码---36幅由算法生成的六芒星图像&i class=&icon-external&&&/i&&/a&&br&&a class=& wrap external& href=&///?target=http%3A///WhyEngine/p/4181969.html& target=&_blank& rel=&nofollow noreferrer&&雪花六出---几幅算法生成的雪花图像&i class=&icon-external&&&/i&&/a&&br&&a class=& wrap external& href=&///?target=http%3A///WhyEngine/p/4083362.html& target=&_blank& rel=&nofollow noreferrer&&恶魔的指纹---49幅由算法生成的七芒星图像&i class=&icon-external&&&/i&&/a&&br&&a class=& wrap external& href=&///?target=http%3A///WhyEngine/p/4228361.html& target=&_blank& rel=&nofollow noreferrer&&太阳崇拜---64幅由算法生成的八芒星图像&i class=&icon-external&&&/i&&/a&&br&&a class=& wrap external& href=&///?target=http%3A///WhyEngine/p/4089141.html& target=&_blank& rel=&nofollow noreferrer&&火火火---12幅算法生成火的图像&i class=&icon-external&&&/i&&/a&&br&&a class=& wrap external& href=&///?target=http%3A///WhyEngine/p/4150711.html& target=&_blank& rel=&nofollow noreferrer&&九尾之火---算法生成的动画图像&i class=&icon-external&&&/i&&/a&
如果恐怖也是一种美的话......给三角形的3个顶点,和一个当前点,然后以以下的方式进行迭代处理:a.随机选择三角形的某一个顶点,计算出它与当前点的中点位置;b.将计算出的中点做为当前点,再重新执行操作a会生成谢尔宾斯基三角形,又叫谢尔宾斯基坟垛:如此…
&b&Unreal 4&/b&&br&&b&Unreal 4&/b&&br&&b&Unreal 4&/b&&br&&br&重要的事情要说三遍。&br&&br&其他的不需要看,不用看KlayGE,我不是想黑龚大,但说道引擎的质量,受到真正产品的检验,Unreal4是绝对不二选择。个人能力无法与团队抗衡,何况顶尖的团队,何况业余作品对抗全职。&br&&br&&b&更不要看Ogre!&/b&&br&&b&更不要看Ogre!&br&&/b&&br&&b&更不要看Ogre!&/b&&br&&br&重要的事情继续说三遍。Ogre是个失败的作品,是一堆半专业队业余从事的零散产品,架构混乱,要改成成品需要花很大的力气。&br&&br&你需要的,是最强的,最好的,就像选择老师,必须选最好的老师,而不是选一个看上去友好但半桶水的老师。&br&&br&如果你能拿到Unreal3,把Unreal3和Unreal4对照着看。无论多苦,都要看,无论能否看得下去,都要坚持。凡事问为什么,凡遇到不明白的,无论花多少精力和时间,都要搞清楚,弄明白。&br&&br&Unreal4是世界最顶尖的一款引擎,目前来说,可以看到代码的,无出其右,所以应该把所有的精力,花在最有用的地方。如果你看不明白,如果你有弄不懂的,有想不通的,慢慢来。
Unreal 4Unreal 4Unreal 4重要的事情要说三遍。其他的不需要看,不用看KlayGE,我不是想黑龚大,但说道引擎的质量,受到真正产品的检验,Unreal4是绝对不二选择。个人能力无法与团队抗衡,何况顶尖的团队,何况业余作品对抗全职。更不要看Ogre!更不要看Ogr…
这个函数:&br&&a href=&///?target=https%3A///spring/spring/blob/a2a84bda1f828b5fd7db280d90d0596d/rts/Sim/MoveTypes/ClassicGroundMoveType.cpp%23L754& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&spring/ClassicGroundMoveType.cpp at a2a84bda1f828b5fd7db280d90d0596d · spring/spring · GitHub&i class=&icon-external&&&/i&&/a&&br&主要算法从这一行开始:&br&&a href=&///?target=https%3A///spring/spring/blob/a2a84bda1f828b5fd7db280d90d0596d/rts/Sim/MoveTypes/ClassicGroundMoveType.cpp%23L811& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&spring/ClassicGroundMoveType.cpp at a2a84bda1f828b5fd7db280d90d0596d · spring/spring · GitHub&i class=&icon-external&&&/i&&/a&
这个函数:主要算法从这一行开始:
谢邀,手游页游和端游的服务端本质上没区别,区别的是游戏类型。&br&&br&&b&类型1:卡牌、跑酷等弱交互服务端&/b&&br&&br&卡牌跑酷类因为交互弱,玩家和玩家之间不需要实时面对面PK,打一下对方的离线数据,计算下排行榜,买卖下道具即可,所以实现往往使用简单的 HTTP服务器:&br&&img src=&/b6e288b02b8664afd843_b.jpg& data-rawwidth=&438& data-rawheight=&186& class=&origin_image zh-lightbox-thumb& width=&438& data-original=&/b6e288b02b8664afd843_r.jpg&&登录时可以使用非对称加密(RSA, DH),服务器根据客户端uid,当前时间戳还有服务端私钥,计算哈希得到的加密 key 并发送给客户端。之后双方都用 HTTP通信,并用那个key进行RC4加密。客户端收到key和时间戳后保存在内存,用于之后通信,服务端不需要保存 key,因为每次都可以根据客户端传上来的 uid 和 时间戳 以及服务端自己的私钥计算得到。用模仿 TLS的行为,来保证多次 HTTP请求间的客户端身份,并通过时间戳保证同一人两次登录密钥不同。&br&&br&每局开始时,访问一下,请求一下关卡数据,玩完了又提交一下,验算一下是否合法,获得什么奖励,数据库用单台 MySQL或者 MongoDB即可,后端的 Redis做缓存(可选)。如果要实现通知,那么让客户端定时15秒轮询一下服务器,如果有消息就取下来,如果没消息可以逐步放长轮询时间,比如30秒;如果有消息,就缩短轮询时间到10秒,5秒,即便两人聊天,延迟也能自适应。&br&&br&此类服务器用来实现一款三国类策略或者卡牌及酷跑的游戏已经绰绰有余,这类游戏因为逻辑简单,玩家之间交互不强,使用 HTTP来开发的话,开发速度快,调试只需要一个浏览器就可以把逻辑调试清楚了。&br&&br&&b&类型2:第一代游戏服务器 1978&/b&&br&&br&1978年,英国著名的财经学校University of Essex的学生 Roy Trubshaw编写了世界上第一个MUD程序《MUD1》,在University of Essex于1980年接入 ARPANET之后加入了不少外部的玩家,甚至包括国外的玩家。《MUD1》程序的源代码在 ARPANET共享之后出现了众多的改编版本,至此MUD才在全世界广泛流行起来。不断完善的 MUD1的基础上产生了开源的 MudOS(1991),成为众多网游的鼻祖:&br&&img src=&/b647b152f0c29b29e2c9_b.jpg& data-rawwidth=&368& data-rawheight=&225& class=&content_image& width=&368&&MUDOS采用 C语言开发,因为玩家和玩家之间有比较强的交互(聊天,交易,PK),MUDOS使用单线程无阻塞套接字来服务所有玩家,所有玩家的请求都发到同一个线程去处理,主线程每隔1秒钟更新一次所有对象(网络收发,更新对象状态机,处理超时,刷新地图,刷新NPC)。&br&&br&游戏世界采用房间的形式组织起来,每个房间有东南西北四个方向可以移动到下一个房间,由于欧美最早的网游都是地牢迷宫形式的,因此场景的基本单位被成为 “房间”。MUDOS使用一门称为LPC的脚本语言来描述整个世界(包括房间拓扑,配置,NPC,以及各种剧情)。游戏里面的高级玩家(巫师),可以不断的通过修改脚本来为游戏添加房间以及增加剧情。早年 MUD1上线时只有17个房间,Roy Trubshaw毕业以后交给他的师弟 Richard Battle,在 Richard Battle手上,不断的添加各种玩法到一百多个房间,终于让 MUD发扬光大。&br&&br&用户使用 Telnet之类的客户端用 Tcp协议连接到 MUDOS上,使用纯文字进行游戏,每条指令用回车进行分割。比如 1995年国内第一款 MUD游戏《侠客行》,你敲入:&go east&,游戏就会提示你:“后花园 - 这里是归云庄的后花园,种满了花草,几个庄丁正在浇花。此地乃是含羞草生长之地。这里唯一的出口是 north。这里有:花待 阿牧(A mu),还有二位庄丁(Zhuang Ding)”,然后你继续用文字操作,查看阿牧的信息:“look a mu”,系统提示:“花待 阿牧(A mu)他是陆乘风的弟子,受命在此看管含羞草。他看起来三十多岁,生得眉清目秀,端正大方,一表人才。他的武艺看上去【不是很高】,出手似乎【极轻】”。然后你可以选择击败他获得含羞草,但是你吃了含羞草却又可能会中毒死亡。在早期网上资源贫乏的时候,这样的游戏有很强的代入感。&br&&br&用户数据保存在文件中,每个用户登录时,从文本文件里把用户的数据全部加载进来,操作全部在内存里面进行,无需马上刷回磁盘。用户退出了,或者每隔5分钟检查到数据改动了,都会保存会磁盘。这样的系统在当时每台服务器承载个4000人同时游戏,不是特别大的问题。从1991年的 MUDOS发布后,全球各地都在为他改进,扩充,退出新版本,随着 Windows图形机能的增强。1997游戏《UO》在 MUDOS的基础上为角色增加的x,y坐标,为每个房间增加了地图,并且为每个角色增加了动画,形成了第一代的图形网络游戏。&br&&br&因为游戏内容基本可以通过 LPC脚本进行定制,所以MUDOS也成为名副其实的第一款服务端引擎,引擎一次性开发出来,然后制作不同游戏内容。后续国内的《万王之王》等游戏,很多都是跟《UO》一样,直接在 MUDOS上进行二次开发,加入房间的地图还有角色的坐标等要素,该架构一直为国内的第一代 MMORPG提供了稳固的支持,直到 2003年,还有游戏基于 MUDOS开发。&br&&br&虽然后面图形化增加了很多东西,但是这些MMORPG后端的本质还是 MUDOS。随着游戏内容的越来越复杂,架构变得越来越吃不消了,各种负载问题慢慢浮上水面,于是有了我们的第二代游戏服务器。&br&&br&&b&类型3:第二代游戏服务器 2003&/b&&br&&br&2000年后,网游已经脱离最初的文字MUD,进入全面图形化年代。最先承受不住的其实是很多小文件,用户上下线,频繁的读取写入用户数据,导致负载越来越大。随着在线人数的增加和游戏数据的增加,服务器变得不抗重负。同时早期 EXT磁盘分区比较脆弱,稍微停电,容易发生大面积数据丢失。因此第一步就是拆分文件存储到数据库去。&br&&img src=&/984d43af31dcbb20bfbdf6c22cce4947_b.jpg& data-rawwidth=&439& data-rawheight=&159& class=&origin_image zh-lightbox-thumb& width=&439& data-original=&/984d43af31dcbb20bfbdf6c22cce4947_r.jpg&&&br&此时游戏服务端已经脱离陈旧的 MUDOS体系,各个公司在参考 MUDOS结构的情况下,开始自己用 C在重新开发自己的游戏服务端。并且脚本也抛弃了 LPC,采用扩展性更好的 Python或者 Lua来代替。由于主逻辑使用单线程模型,随着游戏内容的增加,传统单服务器的结构进一步成为瓶颈。于是有人开始拆分游戏世界,变为下面的模型:&br&&img src=&/68a2d231c4e2c1ba2fb37_b.jpg& data-rawwidth=&404& data-rawheight=&163& class=&content_image& width=&404&&游戏服务器压力拆分后得意缓解,但是两台游戏服务器同时访问数据库,大量重复访问,大量数据交换,使得数据库成为下一个瓶颈。于是形成了数据库前端代理(DB Proxy),游戏服务器不直接访问数据库而是访问代理,再有代理访问数据库,同时提供内存级别的cache。早年 MySQL4之前没有提供存储过程,这个前端代理一般和 MySQL跑在同一台上,它转化游戏服务器发过来的高级数据操作指令,拆分成具体的数据库操作,一定程度上代替了存储过程:&br&&img src=&/cf87922d9cff5e0a6490abc5d396c4fe_b.jpg& data-rawwidth=&466& data-rawheight=&162& class=&origin_image zh-lightbox-thumb& width=&466& data-original=&/cf87922d9cff5e0a6490abc5d396c4fe_r.jpg&&但是这样的结构并没有持续太长时间,因为玩家切换场景经常要切换连接,中间的状态容易错乱。而且游戏服务器多了以后,相互之间数据交互又会变得比较麻烦,于是人们拆分了网络功能,独立出一个网关服务 Gate(有的地方叫 Session,有的地方叫 LinkSvr之类的,名字不同而已):&br&&img src=&/6ae41d97c6bbf306d1319a_b.jpg& data-rawwidth=&486& data-rawheight=&289& class=&origin_image zh-lightbox-thumb& width=&486& data-original=&/6ae41d97c6bbf306d1319a_r.jpg&&把网络功能单独提取出来,让用户统一去连接一个网关服务器,再有网关服务器转发数据到后端游戏服务器。而游戏服务器之间数据交换也统一连接到网管进行交换。这样类型的服务器基本能稳定的为玩家提供游戏服务,一台网关服务1-2万人,后面的游戏服务器每台服务5k-1w,依游戏类型和复杂度不同而已,图中隐藏了很多不重要的服务器,如登录和管理。这是目前应用最广的一个模型,到今天任然很多新项目会才用这样的结构来搭建。&br&&br&人都是有惯性的,按照先前的经验,似乎把 MUDOS拆分的越开性能越好。于是大家继续想,网关可以拆分呀,基础服务如聊天交易,可以拆分呀,还可以提供web接口,数据库可以拆分呀,于是有了下面的模型:&br&&img src=&/e0c141eb5954dcafcbb4bc86c475da30_b.jpg& data-rawwidth=&480& data-rawheight=&266& class=&origin_image zh-lightbox-thumb& width=&480& data-original=&/e0c141eb5954dcafcbb4bc86c475da30_r.jpg&&这样的模型好用么?确实有成功游戏使用类似这样的架构,并且发挥了它的性能优势,比如一些大型 MMORPG。但是有两个挑战:每增加一级服务器,状态机复杂度可能会翻倍,导致研发和找bug的成本上升;并且对开发组挑战比较大,一旦项目时间吃紧,开发人员经验不足,很容易弄挂。&br&&br&比如我见过某上海一线游戏公司的一个 RPG上来就要上这样的架构,我看了下他们团队成员的经验,问了下他们的上线日期,劝他们用前面稍微简单一点的模型。人家自信得很,认为有成功项目是这么做的,他们也要这么做,自己很想实现一套。于是他们义无反顾的开始编码,项目做了一年多,然后,就没有然后了。&br&&br&现今在游戏成功率不高的情况下,一开始上一套比较复杂的架构需要考虑投资回报率,比如你的游戏上线半年内 PCU会去到多少?如果一个 APRG游戏,每组服务器5千人都到不了的话,那么选择一套更为贴近实际情况的结构更为经济。即使后面你的项目真的超过5千人朝着1万人目标奔的话,相信那个时候你的项目已经挣大钱了 ,你数着钱加着班去逐步迭代,一次次拆分它,相信心里也是乐开花的。&br&&br&上面这些类型基本都是从拆分 MUDOS开始,将 MUDOS中的各个部件从单机一步步拆成分布式。虽然今天任然很多新项目在用上面某一种类似的结构,或者自己又做了其他热点模块的拆分。因为他们本质上都是对 MUDOS的分解,故将他们归纳为第二代游戏服务器。&br&&br&&b&类型4:第三代游戏服务器 2007&/b&&br&&br&从魔兽世界开始无缝世界地图已经深入人心,比较以往游戏玩家走个几步还需要切换场景,每次切换就要等待 LOADING个几十秒是一件十分破坏游戏体验的事情。于是对于 2005年以后的大型 MMORPG来说,无缝地图已成为一个标准配置。比较以往按照地图来切割游戏而言,无缝世界并不存在一块地图上面的人有且只由一台服务器处理了:&br&&img src=&/c13a5acd999_b.jpg& data-rawwidth=&418& data-rawheight=&185& class=&content_image& width=&418&&&br&每台 Node服务器用来管理一块地图区域,由 NodeMaster(NM)来为他们提供总体管理。更高层次的 World则提供大陆级别的管理服务。这里省略若干细节服务器,比如传统数据库前端,登录服务器,日志和监控等,统统用 ADMIN概括。在这样的结构下,玩家从一块区域走向另外一块区域需要简单处理一下:&br&&img src=&/424cd1ceecfeb_b.jpg& data-rawwidth=&388& data-rawheight=&290& class=&content_image& width=&388&&玩家1完全由节点A控制,玩家3完全由节点B控制。而处在两个节点边缘的2号玩家,则同时由A和B提供服务。玩家2从A移动到B的过程中,会同时向A请求左边的情况,并向B请求右边的情况。但是此时玩家2还是属于A管理。直到玩家2彻底离开AB边界很远,才彻底交由B管理。按照这样的逻辑将世界地图分割为一块一块的区域,交由不同的 Node去管理。&br&&br&对于一个 Node所负责的区域,地理上没必要连接在一起,比如大陆的四周边缘部分和高山部分的区块人比较少,可以统一交给一个Node去管理,而这些区块在地理上并没有联系在一起的必要性。一个 Node到底管理哪些区块,可以根据游戏实时运行的负载情况,定时维护的时候进行更改 NodeMaster 上面的配置。&br&&br&于是碰到第一个问题是很多 Node服务器需要和玩家进行通信,需要问管理服务器特定UID为多少的玩家到底在哪台 Gate上,以前按场景切割的服务器这个问题不大,问了一次以后就可以缓存起来了,但是现在服务器种类增加不少,玩家又会飘来飘去,按UID查找玩家比较麻烦;另外一方面 GATE需要动态根据坐标计算和哪些 Node通信,导致逻辑越来越厚,于是把:“用户对象”从负责连接管理的 GATE中切割出来势在必行于是有了下面的模型:&br&&img src=&/bd2bec76b90651cfdf696da_b.jpg& data-rawwidth=&420& data-rawheight=&275& class=&content_image& width=&420&&网关服务器再次退回到精简的网络转发功能,而用户逻辑则由按照 UID划分的 OBJ服务器来承担,GATE是按照网络接入时的负载来分布,而 OBJ则是按照资源的编号(UID)来分布,这样和一个用户通信直接根据 UID计算出 OBJ服务器编号发送数据即可。而新独立出来的 OBJ则提供了更多高层次的服务:&br&&ul&&li&对象移动:管理具体玩家在不同的 Node所管辖的区域之间的移动,并同需要的 Node进行沟通。&br&&/li&&li&数据广播:Node可以给每个用户设置若干 TAG,然后通知 Object Master 按照TAG广播。&br&&/li&&li&对象消息:通用消息推送,给某个用户发送数据,直接告诉 OBJ,不需要直接和 GATE打交道。&br&&/li&&li&好友聊天:角色之间聊天直接走 OBJ/OBJ MASTER。&/li&&/ul&整个服务器主体分为三层以后,NODE专注场景,OBJ专注玩家对象,GATE专注网络。这样的模型在无缝场景服务器中得到广泛的应用。但是随着时间的推移,负载问题也越来越明显,做个活动,远来不活跃的区域变得十分活跃,靠每周维护来调整还是比较笨重的,于是有了动态负载均衡。&br&&br&动态负载均衡有两种方法,第一种是按照负载,由 Node Master 定时动态移动修改一下各个 Node的边界,而不同的玩家对象按照先前的方法从一台 Node上迁移到另外一台 Node上:&br&&img src=&/0c4dcad7e6e8a694a46df5e_b.jpg& data-rawwidth=&162& data-rawheight=&181& class=&content_image& width=&162&&
图11 动态负载均衡&br&&br&这样 Node Master定时查找地图上的热点区域,计算新的场景切割方式,然后告诉其他服务器开始调整,具体处理方式还是和上面对象跨越边界移动的方法一样。&br&&br&但是上面这种方式实现相对复杂一些,于是人们设计出了更为简单直接的一种新方法:&br&&img src=&/8e250bfe7fc15eb0a0d2925dab684ec2_b.jpg& data-rawwidth=&251& data-rawheight=&250& class=&content_image& width=&251&&
图12 基于网格的动态负载均衡&br&&br&还是将地图按照标准尺寸均匀切割成静态的网格,每个格子由一个具体的Node负责,但是根据负载情况,能够实时的迁移到其他 Node上。在迁移分为三个阶段:准备,切换,完成。三个状态由Node Master负责维护。准备阶段新的 Node开始同步老 Node上面该网格的数据,完成后告诉NM;NM确认OK后同时通知新旧 Node完成切换。完成切换后,如果 Obj服务器还在和老的 Node进行通信,老的 Node将会对它进行纠正,得到纠正的 OBJ将修正自己的状态,和新的 Node进行通信。&br&&br&很多无缝动态负载均衡的服务端宣称自己支持无限的人数,但不意味着 MMORPG游戏的人数上限真的可以无限扩充,因为这样的体系会受制于网络带宽和客户端性能。带宽决定了同一个区域最大广播上限,而客户端性能决定了同一个屏幕到底可以绘制多少个角色。&br&&br&从无缝地图引入了分布式对象模型开始,已经完全脱离 MUDOS体系,成为一种新的服务端模型。又由于动态负载均衡的引入,让无缝服务器如虎添翼,容纳着超过上一代游戏服务器数倍的人数上限,并提供了更好的游戏体验,我们称其为第三代游戏服务端架构。网游以大型多人角色扮演为开端,RPG网游在相当长的时间里一度占据90%以上,使得基于 MMORPG的服务端架构得到了蓬勃的发展,然而随着玩家对RPG的疲惫,各种非MMORPG游戏如雨后春笋般的出现在人们眼前,受到市场的欢迎。&br&&br&&b&类型5:战网游戏服务器&/b&&br&&br&经典战网服务端和 RPG游戏有两个区别:RPG是分区分服的,北京区的用户和广州区的用户老死不相往来。而战网,虽然每局游戏一般都是 8人以内,但全国只有一套服务器,所有的玩家都可以在一起游戏,而玩家和玩家之使用 P2P的方式连接在一起,组成一局游戏:&img src=&/bfda3d0c5da7_b.jpg& data-rawwidth=&493& data-rawheight=&352& class=&origin_image zh-lightbox-thumb& width=&493& data-original=&/bfda3d0c5da7_r.jpg&&玩家通过 Match Making 服务器使用:创建、加入、自动匹配、邀请 等方式组成一局游戏。服务器会选择一个人做 Host,其他人 P2P连接到做主的玩家上来。STUN是帮助玩家之间建立 P2P的牵引服务器,而由于 P2P联通情况大概只有 75%,实在联不通的玩家会通过 Forward进行转发。&br&&br&大量的连接对战,体育竞技游戏采用类似的结构。P2P有网状模型(所有玩家互相连接),和星状模型(所有玩家连接一个主玩家)。复杂的游戏状态在网状模型下难以形成一致,因此星状P2P模型经受住了历史的考验。除去游戏数据,支持语音的战网系统也会将所有人的语音数据发送到做主的那个玩家机器上,通过混音去重再编码的方式返回给所有用户。&br&&br&战网类游戏,以竞技、体育、动作等类型的游戏为主,较慢节奏的 RPG(包括ARPG)有本质上的区别,而激烈的游戏过程必然带来到较 RPG复杂的多的同步策略,这样的同步机制往往带来的是很多游戏结果由客户端直接计算得出,那在到处都是破解的今天,如何保证游戏结果的公正呢?&br&&br&主要方法就是投票法,所有客户端都会独立计算,然后传递给服务器。如果结果相同就更新记录,如果结果不一致,会采取类似投票的方式确定最终结果。同时记录本剧游戏的所有输入,在可能的情况下,找另外闲散的游戏客户端验算整局游戏是否为该结果。并且记录经常有作弊嫌疑的用户,供运营人员封号时参考。&br&&br&&b&类型7:休闲游戏服务器&/b&&br&&br&休闲游戏同战网服务器类似,都是全区架构,不同的是有房间服务器,还有具体的游戏服务器,游戏主体不再以玩家 P2P进行,而是连接到专门的游戏服务器处理:&br&&img src=&/bae1e94836cbb_b.jpg& data-rawwidth=&698& data-rawheight=&630& class=&origin_image zh-lightbox-thumb& width=&698& data-original=&/bae1e94836cbb_r.jpg&&&br&和战网一样的全区架构,用户数据不能象分区的 RPG那样一次性load到内存,然后在内存里面直接修改。全区架构下,为了应对一个用户同时玩几个游戏,用户数据需要区分基本数据和不同的游戏数据,而游戏数据又需要区分积分数据、和文档数据。胜平负之类的积分可以直接提交增量修改,而更为普遍的文档类数据则需要提供读写令牌,写令牌只有一块,读令牌有很多块。同帐号同一个游戏同时在两台电脑上玩时,最先开始的那个游戏获得写令牌,可以操作任意的用户数据。而后开始的那个游戏除了可以提交胜平负积分的增量改变外,对用户数据采用只读的方式,保证游戏能运行下去,但是会提示用户,游戏数据锁定。&br&&br&&b&类型8:现代动作类网游&/b&&br&&br&从早期的韩国动作游戏开始,传统的战网动作类游戏和 RPG游戏开始尝试融合。单纯的动作游戏玩家容易疲倦,留存也没有 RPG那么高;而单纯 RPG战斗却又慢节奏的乏味,无法满足很多玩家激烈对抗的期望,于是二者开始融合成为新一代的:动作 + 城镇 模式。玩家在城镇中聚集,然后以开副本的方式几个人出去以动作游戏的玩法来完成各种 RPG任务。本质就是一套 RPG服务端+副本服务端。由于每次副本时人物可以控制在8人以内,因此可以获得更为实时的游戏体验,让玩家玩的更加爽快。&br&&br&说了那么多的游戏服务器类型,其实也差不多了,剩下的类型大家拼凑一下其实也就是这个样子而已。游戏服务端经历了那么多结构上的变迁,内部开发模式是否依然不变?究竟是继续延续传统的开发方式?还是有了更多突破性的方法?经历那么多次架构变迁,后面是否有共通的逻辑?未来的发展还会存在哪些困难?游戏服务端开发如何达到最终的彼岸?请看下节:技术的演进。&br&&br&&b&技术的演进&/b&&br&&br&(欢迎加入“游戏服务端架构交流” QQ群 ,共同讨论相关问题)&br&&br&(待续)
谢邀,手游页游和端游的服务端本质上没区别,区别的是游戏类型。类型1:卡牌、跑酷等弱交互服务端卡牌跑酷类因为交互弱,玩家和玩家之间不需要实时面对面PK,打一下对方的离线数据,计算下排行榜,买卖下道具即可,所以实现往往使用简单的 HTTP服务器:登录…
本人在游戏行业干了十几年了,在国外一直做AAA游戏,所以对这个话题还是有些了解的,其他答案都提及到了大概的成本问题,本人已这些年了解到的情况给大家聊一聊。&br&&br&从给大家清理几个误解开始,逐步展开吧:&br&1,开发一个游戏需要上亿的资金吗?&br&一般情况不需要。注意,题主问的是开发,纯开发的话,绝大多数游戏不可能有这么高的成本。另外,本文说的是美金。&br&&br&2,那GTA呢?&br&特例!而且之所以是特例,是因为是人就知道,这个游戏稳赚,所以才可以砸这么多钱。&br&&br&3,那为什么GTA能花这么多钱?&br&时间+人力。仅此而已。GTAV一共花了5年时间,团队全部加一起上千人。这么大的规模,只有摇滚之星搞得出来。用了这么多人,用了这么长时间,而且开发工具极其稳定,人们就是在不停的加内容,所以才可以有无数种细节。这些细节都是靠人 x 时间=钱,来堆出来的。&br&&br&4,那一般一个AAA游戏的开发成本到底多少是正常的?&br&一般的情况,成本必须控制在50M以下,也就是五千万。超过这个数,想要盈利就很困难了。那么五千万是什么概念?就是一年半的小团队pre production,加上一年半的大团队production。整个production超过两年,就风险很大了,因为花销巨大。&br&&br&5,那么为什么超过五千万就快跪了?&br&这里要讨论一下游戏的盈利。(传统游戏啊,跟国内的网游手游不搭边。)一款游戏售价60刀,这里面真正到开发商手里的钱,也就20刀(其余全被零售商,发行,物流等等剥削去了),如果是发行商自己的工作室,可能会达到25刀。那么保守计算,一个五千万成本的游戏需要卖多少套可以打平?答案:两百五十万套。卖到这个数很难吗?只能说不容易。现在的游戏市场都在拼产品价值,只有做的好的前十名才有钱赚,其他的游戏要么将将打平,要么亏到死。那为什么大家都还在做AAA?因为前十名把整个市场的钱基本都赚走了,分到每一个游戏,利润比十年前大很多,所以大家都拼了命的做质量,要挤进前十。这就是良性循环。&br&&br&6,刚才提到小团队pre production,大团队production,啥意思?&br&制作一款游戏,最开始都是小团队开发,这个规模一般也就50号人撑死了。这些人就是要搞清楚游戏是啥,怎么玩,怎么做,等等一系列问题,这个阶段很痛苦,但也很有成就感。当证明可以实现这个游戏了以后,才完整铺开production,这时候才根据成本的预算来招人,确定规模等等。一般的情况,制作一个AAA的游戏,production要至少150号人。这些人需要将近两年的时间,把游戏的原型彻彻底底制作完成,当然加班是必不可少的。&br&&br&7, 那具体人的成本是多少?&br&咱们大体算算:&br&pre production:50(人数)x80k(平均年薪,senior居多)x1.5(年数)=6M&br&Production:150(人数)x75k(平均年薪,一些junior拖后腿)x1.5(年数)=16.8M&br&&br&光算工资的话,这就已经22.8M了。按照公司运转核算,这个真实成本得工资乘以2,所以一共是(6+16.8)x2=45.7M&br&&br&8,你这个数对吗?&br&我不敢说完全正确,但八九不离十。本人在国外干了这么久,周围人们多少钱工资我还是知道的,而且也确实看到过一些具体的数据,比方说,一个制作人(producer)的工资水平,其实平均也只有75k一年而已,我第一次看到也吓一跳,本以为制作人都得十几万轻轻松松,后来接触了很多制作人才发现,真没那么高。各位请不要给我举反例,反例随口说说,远不如我这么多年看到的普罗大众来的实在。谢谢。&br&&br&9,50M就够了?&br&其实不够,还有一大块没算进来,就是市场推广费用。GTA之所以成本高也是游戏市场费花的爽气。但问题是,一般情况市场费用算在发行的成本里面,不做为开发成本核算。60刀的售价里,除了20刀给开发商,剩下的钱里早就包含发行的那块蛋糕了。而且,做为发行商,每年终归需要一定的市场费用,这个费用今年给这个游戏,明年给那个游戏,没见过哪个发行商一年到头不发游戏的,所以这笔费用终归在那里,逃不掉,所以不计算在开发费用,是很合理的。&br&&br&暂时说这么多吧。
本人在游戏行业干了十几年了,在国外一直做AAA游戏,所以对这个话题还是有些了解的,其他答案都提及到了大概的成本问题,本人已这些年了解到的情况给大家聊一聊。从给大家清理几个误解开始,逐步展开吧:1,开发一个游戏需要上亿的资金吗?一般情况不需要。…
&a data-hash=&670a6aab34635a37bcfd& href=&///people/670a6aab34635a37bcfd& class=&member_mention& data-tip=&p$b$670a6aab34635a37bcfd& data-hovercard=&p$b$670a6aab34635a37bcfd&&@陈诺&/a& 的回答非常好,但我觉得还不够。&br&&br&很多时候,你不由自主地打开游戏,真的是因为想逃避现实中亟待解决的问题吗?&br&对我来说,如果一件事情悬而未决,我一定玩不下去。玩游戏也好,刷知乎也好,只会令我越来越焦虑。&br&我觉得,更根源的症结在于,你解决一个问题之后,紧随着满足感而来的那种空虚感。&br&&br&简而言之,就是:找不到意义。&br&&br&不打游戏能干什么呢?&br&看书?学习?打工?运动健身做家务?&br&做这些能换来钱吗?能从天上掉下一个女朋友吗?&br&不能——那我看书学习打工运动健身干嘛?&br&能——但是我要那么多钱干嘛?&br&有钱了,你就可以不用上班,不用干活,不用朝九晚六,每天可以舒舒服服地躺着打游戏了哇。&br&——对啊,我现在不就正在这样做吗。&br&&br&我觉得,这就是问题的根源——&b&许多人,对于自己的工作,学习,生活,事业,乃至于人生规划,其实是严重缺乏发自内心的认可和接受度的&/b&。&br&&br&这是一种逃避。但并非逃避问题,而是:&b&逃避思考&/b&。&br&很多时候,我们并不是在逃避问题,而是,我们根本就不知道,为什么要解决这个问题。&br&&br&许多人都过着自己不怎么喜欢的生活,却懒得改变,或者,根本不知道该怎样改变,更可怕的是,改变之后的结果,看起来似乎也一样无趣。&br&就像身在迷宫之中,往前,往后,往左,往右,似乎都找不到出路。&br&&br&那既然如此,还不如坐下歇一歇呢。学习也好,健身也罢,都是长期收益的东西,既然没有亟待解决的问题,又没有严峻的生活压力,为什么要做那些吃力不讨好的事情?打会游戏,至少,可以让大脑在即时的反馈里产生满足感。就算毫无意义,也比在忙碌了一天之后,还要投入看不到效果的事情来得轻松。&br&&br&这种现象,叫迷惘也行,叫空虚也好,叫无聊也可以。&br&这些都是表象。而本质上,是我们自己缺乏对生活的掌控能力。&b&我们不知道自己想要什么样的生活,更严重的是,就算知道,也缺乏努力的动力&/b&。&br&&br&不妨问问自己:你已经多久没努力过了?&br&再问问:你的努力,是真的契合内心的声音,坚持内心的道路,还只是因为,家人、朋友、舆论,告诉你:你要努力,你不努力就得摔倒,就得被踩在脚下?&br&&br&归根结底,沉迷于电脑、游戏的原因,是你没有更加值得去做的事情,没有压力,没有高悬在头上的达摩克里斯之剑,没有动力,没有对生活的热切渴望和向往。&br&&br&简而言之:没有一样真真正正热爱的东西,拼尽一生也要去实现的东西,浪费一分钟都会觉得十分可惜的东西。&br&&br&我觉得,这是很可悲的事情。&br&&br&&br&PS:对于 &a data-hash=&670a6aab34635a37bcfd& href=&///people/670a6aab34635a37bcfd& class=&member_mention& data-tip=&p$b$670a6aab34635a37bcfd& data-hovercard=&p$b$670a6aab34635a37bcfd&&@陈诺&/a& 的问题,我想了下,如果有了钱……&br&我大概会想把《辐射》和《博德之门》做完吧。:)
的回答非常好,但我觉得还不够。很多时候,你不由自主地打开游戏,真的是因为想逃避现实中亟待解决的问题吗?对我来说,如果一件事情悬而未决,我一定玩不下去。玩游戏也好,刷知乎也好,只会令我越来越焦虑。我觉得,更根源的症结在于,你解决一个问…
现有的高票答案都是从视觉流畅的角度来分析的,都解释的很好,但是游戏开发中,以每秒60帧作为性能目标的原因,并不仅是单纯考虑到视觉流畅性。 &br&&br&事实上,仅考虑视觉流畅性的话,30帧是完全可以接受的。在画面细节足够的情况下,人眼脑补运动感的能力会被充分调动起来,不会太在意帧间区别。而实际上,xbox360和ps3上都有大量的游戏运行在30帧每秒,包括光环,战争机器,神秘海域,杀戮地带这样的大作。 &br&&br&而且以现在的3D技术,完全可以在30帧的情况下, 加入动作模糊等特效, 对画面中高速运动的物体加上人为模糊,从而实现和电影画面相似的质感。 在打开动态模糊的情况下,30帧和60帧的视觉流畅度差异极小。 &br&&br&这里有一个游戏30帧和60帧视频对比的网站:&a href=&///?target=http%3A///& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&30fps vs 60fps&i class=&icon-external&&&/i&&/a&&br&可以看到,差别需要细看才能体会,而且单看30帧的话,不会让人在视觉上觉得卡顿。&br&&br&但是开发者和玩家仍然会尽可能的追求60帧的体验,为何?因为对游戏而言,流畅感并不仅来自于视觉方面,操作的流畅也至关重要。 &br&&br&决定操作流畅感的,主要是操作响应时间。这是指玩家做完一个操作,到游戏画面反映出这个操作影响为止,所需的时间。&br&&br&而根据目前大多数游戏引擎运行的方式,这个过程需要3帧。就是说玩家的任何操作,最快也要3帧之后才能体现在画面上。因此,游戏的响应速度对帧率高度敏感。&br&&br&30帧的情况下,每帧显示33ms,响应极限大概是100ms。&br&&br&60帧的情况下,每帧显示16ms,响应极限大概是50ms。&br&&br&实际表现中,由于游戏逻辑处理,以及显示设备还有一个几毫秒的响应时间,一般60帧的游戏响应速度会在60到70ms,30帧游戏的响应速度会在120到150ms。&br&&br&因此,对玩家而言,60帧能够明显的感到比30帧流畅。&br&&br&=======关于3帧延迟========&br&3帧延迟和游戏引擎对逻辑和渲染的处理流程有关,在当下比较常用的渲染流程下,3帧是一个极限。对此制作过吉他英雄的 NeverSoft 的联合创始人Mick West 专门撰文进行过详细分析,全文见如下连接:&br&&a href=&///?target=http%3A///view/feature/1942/programming_responsiveness.php& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Gamasutra - Programming Responsiveness&i class=&icon-external&&&/i&&/a&&br&我有空的时候考虑翻译一吧,至于原理,倒是引用他一张图就够了:&br&&img src=&/40b58f33ba3e605baa52594f4fed893d_b.jpg& data-rawwidth=&405& data-rawheight=&383& class=&content_image& width=&405&&&br&&br&他自己对多个游戏的响应速度测试:&br&&a href=&///?target=http%3A///view/feature/132122/measuring_responsiveness_in_video_.php& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Gamasutra - Measuring Responsiveness in Video Games&i class=&icon-external&&&/i&&/a&&br&&br&评测网站 DigitalFoundry 的测试:&br&&a href=&///?target=http%3A//www.eurogamer.net/articles/digitalfoundry-lag-factor-article& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Console Gaming: The Lag Factor Article o Page 1 o Eurogamer.net&i class=&icon-external&&&/i&&/a&&br&&br&确实只有少部分游戏可以达到3帧的响应速度,一般游戏能做到4帧就算不错。&br&&br&==========&br&感谢 &a data-hash=&ccbc554d1eb7d7c970fa7d& href=&///people/ccbc554d1eb7d7c970fa7d& class=&member_mention& data-tip=&p$b$ccbc554d1eb7d7c970fa7d& data-hovercard=&p$b$ccbc554d1eb7d7c970fa7d&&@王小明&/a&的提醒,说无论怎样理论极限都是3帧太武断了,已修改。
现有的高票答案都是从视觉流畅的角度来分析的,都解释的很好,但是游戏开发中,以每秒60帧作为性能目标的原因,并不仅是单纯考虑到视觉流畅性。 事实上,仅考虑视觉流畅性的话,30帧是完全可以接受的。在画面细节足够的情况下,人眼脑补运动感的能力会被充…
说到暴雪,里面高层开发人员和设计师,三四十岁一抓一大把。国外那帮大公司出来做独立游戏的,平均年龄也在30-40岁这个阶段。&br&&br&看看我们这边,十年前电子游戏还是毒品,整个行业真正上正轨也就是这几年页游、手游赚了大钱才引来那么多关注。我说整个行业在设计上离国外差了二十年,基础技术上差十年应该没人有意见吧?其实不仅仅是游戏业,整个计算机科学和软件工程领域都是普遍落后的状态。&br&&br&从市场角度来说,那么多从来没玩过游戏的人开始接触游戏,总是件好事。但你不可能一下子就把山珍海味塞给他们,对于刚出生的婴儿,还是只能喂奶。&br&&br&当然,我对未来还是比较乐观的。毕竟有那么多烂作品做垫脚石,才能显得我们这些想做“好玩”游戏的制作者们比较牛逼嘛!&br&&br&最后我预言一下,5-10年内,中国的单机游戏有可能出现几部ign评分7左右的大制作,但希望不大。在独立游戏这块会出现一次明显的井喷,这波井喷的主力将会是现在大公司各制作组的骨干。
说到暴雪,里面高层开发人员和设计师,三四十岁一抓一大把。国外那帮大公司出来做独立游戏的,平均年龄也在30-40岁这个阶段。看看我们这边,十年前电子游戏还是毒品,整个行业真正上正轨也就是这几年页游、手游赚了大钱才引来那么多关注。我说整个行业在设…
已有帐号?
无法登录?
社交帐号登录
260 人关注
2620 人关注
310 个回答
4267 人关注
446 个回答
16549 人关注
587 个回答}

我要回帖

更多关于 cheat engine 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信