818这些年我所遭遇过的游戏中间件


818这些年我所遭遇过的游戏中间件html

    生活中总有些以前从没想过的东西,却出如今本身之后的生活中.好比,上中学时我从没想过本身能上大学.在学校时屡次路过一家公司,看它的大楼非常个性,从没想过本身毕业后会坑在这家公司.第一次据说中间件,是我读研时的一个舍友,他的研究方向就是中间件.我问他什么是中间件,他口若悬河地讲了一大坨我听不懂也记不住的话.没想到我工做以后却和中间件有着难解之缘.什么是中间件,百度上的解释以下:
    "中间件是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不一样的技术之间共享资源。中间件位于客户机/服务器的操做系统之上,管理计算机资源和网络通信。是链接两个独立应用程序或独立系统的软件。相链接的系统,即便它们具备不一样的接口,但经过中间件相互之间仍能交换信息。执行中间件的一个关键途径是信息传递。经过中间件,应用程序能够工做于多平台或OS环境。"
    上述语句我也看不懂,由于这不是我所搞的中间件,大概是我那舍友所搞的中间件吧.还有另一种中间件,百度上的定义以下:"中间件(middleware)是基础软件的一大类,属于可复用软件的范畴。顾名思义,中间件处于操做系统软件与用户的应用软件的中间。"这个定义意思上大概差很少有那么点合乎个人理解.我对中间件的定义是:为编程中某一功能提供具体实现的软件开发工具包.中间件和SDK差很少是一个东西."软件开发工具包(Software Development Kit, SDK)通常是一些被软件工程师用于为特定的软件包、软件框架、硬件平台、操做系统等建立应用软件的开发工具的集合." 它或许只是简单的为某个程序设计语言提供应用程序接口的一些文件,但也可能包括能与某种嵌入式系统通信的复杂的硬件。通常的工具包括用于调试和其余用途的实用工具。SDK还常常包括示例代码、支持性的技术注解或者其余的为基本参考资料澄清疑点的支持文档。web

    中间件是由第三方为实现某一功能开发的,较为成熟而且可复用的lib库或dll库.开发者能够经过其提供的接口来实现其功能.中间件所实现的功能有多有少,其复杂程度有大有小.复杂的如一些游戏引擎:osg,ogre.简单的如一些图像格式解析的库,jpglib,pnglib.其特色就是能够嵌入其余的程序中.之因此定义它为中间件是由于,它不是具体的执行程序,没法执行,但它为具体的执行程序提供服务.好吧,按照个人定义,中间件和软件开发工具包就是一个东西.一般咱们将一些比较低层的东西叫作软件开发工具包,如openGL,D3D,openCL,也会把一些功能全面又复杂的东西叫软件开发工具包,如:VTK,ogre,osg.而中间件则多指功能具体并且单一的东西,如:用于物理的Havok,PhysX,Bullet,用于界面的Scaleform,用于人工智能寻路的Kynapse,Navigation.
    这种中间件并非处于操做系统与应用软件的中间,而是处于开发环境与开发程序之间.若是要问"STL算中间件吗?",我更倾向于它属于开发环境的一部分.但若是你又写了一套STL,并发布出去,这就算是中间件了.算法

    你如果问我:"中间件靠谱吗?",我会坚决果断地回答:"靠".一方面,中间件为开发者提供现成的功能,咱们能够简单调用其接口实现一些很复杂的算法.但另外一方面,中间件大多不开源,开源的又大多看不懂,一旦出有问题或有了新需求将很难维护.总之,中间件在下降开发成本的同时,会提升维护成本.你可能只须要花几星期或是几天写出一个看上去颇有技术含量的DEMO,但当将这个DEMO移植到具体的游戏中时,总会出现这样那样的问题.Shit often happens.几乎全部我遭遇过的中间件都会有奇葩的事情出现.而这些出现问题中,大约三分之一能获得完善解决,有三分之一能够经过别的方式绕过去,剩下的就只能将就着用吧.有时会发现某款中间件就如同鸡肋,欲罢不能,欲进无力.然而有些东西咱们只能用中间件来解决,例如物理,这个要独立开发的话,坑实在是太大了.编程

下面的将全部我遭遇过的游戏中间件列举出来,打算将对每一款都写个小文章,记录下本身的亲身经历.服务器

(1)VTK:一款图形开发包.http://www.cnblogs.com/WhyEngine/p/3473713.html
(2)Havok:物理中间件.http://www.cnblogs.com/WhyEngine/p/3469600.html
(3)Speedtree:用于场景植被渲染的中间件.http://www.cnblogs.com/WhyEngine/p/3504198.html
(4)Physx:物理中间件.http://www.cnblogs.com/WhyEngine/p/3474035.html
(5)Scaleform:用于Flash界面的中间件.http://www.cnblogs.com/WhyEngine/p/3489953.html
(6)FlashOcx:Adobe提供的Flash界面插件.http://www.cnblogs.com/WhyEngine/p/3491132.html
(7)Kynapse:用于人工智能的中间件.http://www.cnblogs.com/WhyEngine/p/3494743.html
(8)HumanIK:用于反向动力学的中间件.http://www.cnblogs.com/WhyEngine/p/3504189.html
(9)Substance Redux:用于纹理压缩与合成的中间件.http://www.cnblogs.com/WhyEngine/p/3484408.html
(10)dxtlib:用于DXT格式转化,DDS文件生成的开发包.http://www.cnblogs.com/WhyEngine/p/3504197.html网络

(11)Apex:对PhysX的扩展中间件.http://www.cnblogs.com/WhyEngine/p/3474313.html
(12)Bullet:物理中间件.这个因为尚未将它用于具体的项目,并且这是一个开源的中间件还没有进行太深刻的研究,因此还没写.先提供个我用Bullet写的Demo:http://www.cnblogs.com/WhyEngine/p/3428311.html并发

(13)MaxSDK: 3D Max的开发包.http://www.cnblogs.com/WhyEngine/p/3541698.htmlapp

相关文章
相关标签/搜索