版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第1章游戏引擎大比拼第1章游戏引擎大比拼PAGEPAGE28PAGEPAGE29第1章游戏引擎大比拼
不论男女老少,很多人在初次使用计算机、iPad、iPhone、oPhone接触互联网时,都会不约而同地选择“打游戏”。国内第一款网络游戏是《万王之王》,2000千禧之年在国内公开面市,随后开创了一种划时代的全新娱乐方式。其实,这款网络游戏当时仅仅由两个人完成,一个是“万王之父”Ruby,另一个是“万王之母”Onyx。这对夫妻在1998年12月完成了图形版《万王之王》的雏形,并在台湾省展开了Alpha版测试。游戏的主题是自建国家(公会),然后互相攻伐,在网络世界中体验气势恢宏的万人国家战争。在技术层面,主要是完成了由“文字+指令”组成的MUD(泥巴)游戏向2D网络图形化游戏的全面跨越。2001年3月,《万王之王》达到巅峰,获得年度全国软件行业协会评比网络游戏第一名、中国第一届网络游戏评选之最佳网络游戏等殊荣。2001年底,雷爵公司正式宣布为《万王之王》的后续大作《万王之王2》立项,并着手进行研发。但是,《万王之王2》自研发之日起就命运多舛。原因之一是《万王之王2》的游戏引擎技术暴露出很多问题。与此同时,整个网络游戏行业的游戏引擎技术在2002-2003年期间发生了一次质的飞跃。因此,《万王之王2》的游戏视觉表现与很多采用新引擎所研发的网络游戏出现越来越大的差距。到2003年初的时候,雷爵公司不得不将已经完成了40%的《万王之王2》回炉重制,由此产生一系列雪崩效应,最终导致《万王之王2》在2007年3月20日正式停止运营。同年12月,巨人网络宣布将着手进行《万王之王3》的研发工作,并以此正式宣告巨人网络进军3D网络游戏领域。响。1.1国内热门网络游戏引擎类型统计目前,国内一些较有人气的网络游戏虽然仍旧采用2D或2.5D游戏引擎,但运营商引进或自主开发的3D游戏已经逐步成为主流,有关统计数据如表1.1~1.2所示。表1.12001-2009年热门网络游戏引擎数据统计游戏名称引擎/产地起测时间游戏名称引擎/产地起测时间热血传奇2D/日韩2001仙剑情缘33D/大陆2009奇迹MU2.5D/日韩2002大话西游2D/大陆2004梦幻西游2D/大陆2009仙境传说2.5D/日韩2009魔力宝贝2D/日韩2007FIFAOL23D/欧美2009英雄连OL3D/大陆2006诛仙3D/大陆2007神泣3D/日韩2006QQ炫雾2.5D/大陆2008问道2D/大陆2006巨星2.5D/大陆2009完美世界3D/大陆2008传奇世界2D/大陆2003天堂II3D/日韩2004指环王OL3D/欧美2009反恐精英3D/欧美2008苍天OL3D/日韩2008QQ飞车3D/大陆2008武林外传3D/大陆2009 续表游戏名称引擎/产地起测时间游戏名称引擎/产地起测时间大话西游III2D/大陆2009神鬼传奇3D/大陆2009惊天动地3D/日韩2006QQ堂2D/大陆2004生死格斗OL3D/日韩2009RF3D/大陆2008新奇迹世界3D/日韩2007宠物森林3D/大陆2008新卓越之剑2D/大陆2007彩虹岛2D/日韩2009功夫世界3D/大陆2007街头篮球2.5D/日韩2005魔神争霸3D/大陆2008光线飞车3D/日韩2007大富翁OL2D/大陆2008十二之天贰3D/日韩2009三国群英传2.5D/港台2005OL3D/大陆20092010年以来,人们比较关注的一些网络游戏的引擎构成统计数据如表1.2所示(有些游戏可能已经更新换代,请以最新数据为准)。百度数据研究中心2009年年底发布的调查结果表明:“46.42%的用户倾向于3D游戏;11.16%的用户倾向于2.5D游戏;42.43%的用户倾向于2D游戏”。我们认为,这里的倾向有可能是假象,主要是国内游戏开发商、运营商提供了相当数量的2.5D和2D游戏,国内玩家缺乏其他3D同类选择。果然,百度数据研究中心2010年年底发布的调查结果表明:“3D概念更加深入人心,关注度保持在54%以上。2D网游产品受到进一步挤压,关注度由年初43.4%回落到年底38.6%”。我们认为,这种趋势会进一步加强,玩家将逐渐放弃关注2D产品,最多只参与一些经典的2D作品。表1.22010年以来较受关注的网络游戏引擎数据统计引擎分类游戏名称2D星座OL、争霸OL-百战堂、神墓OL、亮剑OL、江湖行、大明龙权、名将三国、传奇3、昆仑OL、神武-逍遥外传、幻想世界、西游记、翼魂、梦幻魔兽、天元、浪漫Q唐、冒险岛OL、魔骑士、征途、天工物语、倚天剑与屠龙刀2、梦幻星球、幻境传说、三国杀OL、星辰变、时空战记、梦幻蜀山、石器时代2、侠义世界、征途2、热血昆仑、英雄往事、冒险大陆、地下城与勇士、降龙之剑、泡泡堂、传世群英传、绿色征途、大话轩辕、天涯OL、梦幻诛仙、大话仙剑、蓬莱、封神榜3、QQ幻想世界、风色幻想OL、新绝代双骄OL、梦想帝王、秦伤、桃花源记、剑灵·决、苍穹之怒、仙境冒险、倚天屠龙记、大话西游之战歌、英雄Q传、问道外传、圣斗士2、大话红楼、武林秘籍、八仙外传、武侠无双、水浒传、斗神、守护之剑、核金风暴、忍者世界、将军令、三界西游、天迹、决战双城、永久基地2、元斗士、陆战王、龙之大陆、貂婵、红途、抗战2、九州OL、奇门、山海奇缘、邪风曲OL、梦想世界、战国群雄、明朝演义、白蛇传OL、诺亚传说、梦幻昆仑、新鬼吹灯、都市快打、梦幻穿越、英雄美人2、仙侣外传、热血世界、铁血丹心、梦幻情缘、盘古战纪、漫游OL、名将2、大话战国归来、新石头记、刀剑英雄、苍茫世界、圣龙Q传、剑仙、剑雨天下、时空战记、夺宝世界、仙魔传奇、梦回山海、灾变、天地劫、热血传奇、梦幻西游、魔力宝贝、雷电、剑侠世界、英雄岛、数码宝贝OL、英雄年代、大秦天下、龙影、漂流幻境、生肖传说、仙尊、海之乐章、逍遥传说、天朝、机战、战国后传、新天骄、幻想封神、快乐神仙、勇者斗斗龙、开心果、真爱西游、沧海、华夏前传、仙侣奇缘3、长江7号、炎黄OL、开创世纪2013、星空传奇、西夏OL、恋仙OL 续表引擎分类游戏名称2.5D成吉思汗、苍穹之剑、QQ仙境、兽血外传、仙途、西游天下、魔咒、易三国、帝王OL、魔域、倩女幽魂OL、天龙八部2、天之痕OL、街头篮球2、猎国、远征OL、醉逍遥、大唐无双、东邪西毒、巨人前传、神仙传、苍生OL、神鬼世界、魔界2、月影传说、轩辕传奇、仙OL、凡人修仙传、极速轮滑、梦幻问情、炼狱OL、佣兵天下、神话、巨刃、百年战争、魔戒传奇、暗夜传说、梦想岛、梦幻迪士尼、魔盗OL、水浒无双、埃尔之光、兵王、九刃、圣道传奇、仙蛇传、霸者无双、盛世传奇、诸神国度、仙门、武魂、龙纹、海之梦、六道2、风色群英传、死神之刃、艾米尔编年史、传奇密传、剑圣OL、西游3、天子、锦衣卫、十虎、天魔传说、龙之传奇、月光宝盒、封神争霸OL、魔神无双、江山美人、汉武大帝、TANTRA2(密传2)、煮酒天下、梁山豪杰、火凤燎原、修魔、蓝空OL、决胜、预言2、特勤队2、光之冒险、玄界OL、雷霆、巨侠、行会争霸、超神传、剑雨OL、科洛斯风云、封神演义前传、屠魔、剑侠传奇、红颜、仙境传说、QQ炫舞、大唐豪侠外传、英雄无敌OL、剑侠时代、梦幻情天、拍拍部落、倚天屠魔、红色警戒、劲舞世界、猛将传OL、倾国倾城、帝王OL、逍遥界、热血天下、天魔传奇、十二封印3DAVA、真三国无双OL、赤壁、地牢骑士团、星尘传说、仙魔OL、众神之战、创世纪、万王之王3、诛仙2、穿越火线、侠客列传、战斗足球、东游记、纳雅外传、iTown、永恒之塔、魔兽世界、流星蝴蝶剑OL、神兵传奇、天下贰、极光世界、龙之谷、绝地反击、Mstar、跑跑卡丁车、神魔大陆、完美国际、武林至尊、天之翼、全球使命、梦幻聊斋、丢丢、洛汗、猎刃、岐山、战地之王、精灵乐章、龙的传人、热血江湖、圣域传说、天源4591、天境、创世西游、QQ仙侠传、武神、梦三国、水浒Q传、海魂、神雕OL、天翼决、晶铁之门、QQ西游、金刚8号、创誓记、自在飞车、新飞飞、王者世界、勇士OL、七剑OL、洛奇、幻魔之眼、新封印传说、龙腾世界、LUNAOL、新蜀门、网球宝贝、仙剑神曲OL、九阴真经、英雄联盟、仙剑情缘OL、功夫英雄、开心大陆、书剑恩仇录、御龙在天、战地风云OL、突击风暴、卓越之剑2、天堂梦、NBA2KOL、奇迹世界2、泡泡战士、第九大陆、巫师之怒、刀剑2、鹿鼎记、全民足球、纸片人、桃园、三国战魂、坦克世界、聚仙、地下城守护者OL、生化战场、魔钥、大冲锋、火力突击、天外飞仙、风暴战区、暗黑纪元、勇者之翼、战争前线、劲唱团、隋唐演义OL、悟空传、天骄3、白蛇传说、天地决、特种部队、龙之梦OL、烈焰行动、君·天下、潘多拉、零纪元、精灵传说、麻辣江湖、魔卡精灵、热血天骄、Avalon、炫舞吧2、大剑OL、独孤九剑、玄天之剑、诛仙前传、玄武、热血战队、烽火大唐、代号巨人X、五岳乾坤、特战先锋、蛮荒、高尔夫达人、海魂、热力排球、黑暗帝国、宠物王国、神鬼传奇、一级戒备、炼狱世界、哈姆宝宝、终极火力、惊天动地2、圣魔之血、开心星球、狼队、幻兽大陆、中华龙塔、乾坤OL、混沌之门、八仙过海、梦境之城、热血战地、魔卡、热斗传说、蓝海战记、JR01、蜀山神话、魔霸、MKZ军魂、石器2012、刀剑笑、上古世界、完美世界、界王、神迹、西游群英传、疯狂飞空艇、大汉龙腾、恶魔法则3、越野狂飙、绝对火力、舞型舞秀、洪荒、热血水浒、侠客行、出发OL、天子传奇、复仇、中华英雄OL、新地牢骑士团、劲舞团、FIFAOL、星战前夜、飘邈之旅、反恐精英OL、上古神殿、新武林外传、侠道金刚、聊个斋、守护传说、飞天风云、霸王大陆、幻想学园、大航海时代OL、寻仙、通灵王、龙魂、第七区、群英赋、武林群侠传OL、宠物小精灵OL、精灵复兴、空战世纪、热舞派对、极速轮滑、反恐行动、魔法之门、人生OL、水晶物语OL、星空之恋、超级乐者、超级舞者、飚车世界、异界OL、梦幻龙族、春秋争霸、信长野望OL、隋唐Q传、热血骑士、魔龙战纪、风云、舞街区、战鼓传说、灭神、冲锋OL、超级西西三国、铁血星球、天命OL、唯舞独尊OL、幻想大陆、激战海陆空、奇侠传、童梦伴随着三网融合以及3G时代的逐步来临,用户拥有的游戏终端设备的性能不断提升,游戏带宽成本不断降低,精美绝伦的画面品质以及别具匠心的创意可以在网络游戏情节中发挥得淋漓尽致,成为吸引玩家的核心秘笈。因此,采用性能卓越的3D引擎,已经成为游戏开发商在玩家中“攻城略地、划分疆土”的秘密武器。例如,巨人网络在复兴《万王之王3》时,就宣称组建了200多人的精英开发团队,采用具有专利的服务器端技术(3D游戏引擎中的一部分功能)进行研发。通常,3D游戏引擎完整代码由游戏开发商严格控制,甚至连游戏开发人员也无法窥其全貌。一般游戏爱好者、程序开发人员如果没有较长时间的探索积累,很难迅速构造一个简单易用、性能优良、架构合理、开放扩展的3D游戏引擎。本书通过一系列分析对比,从全世界一些知名的开源商业3D游戏引擎中遴选出Panda3D,将其作为经典3D游戏引擎呈现给读者,帮助读者完整把握3D游戏引擎的基本架构与功能,掌握一种3D游戏引擎的开发与使用。实践已经证明,Panda3D是一个成熟的商业3D游戏引擎,可以“拿来就用”。另一方面,对于那些追求3D游戏引擎更高目标的研发人员,Panda3D无疑也是一个经得起考验的“巨人的肩膀”。1.2Panda3D的前世今生从诞生之日起,Panda3D的目标就是服务于商业化3D应用开发。当迪斯尼准备为迪斯尼主题公园开发一系列3D应用时,Panda3D在研制“阿拉丁的魔毯”过程中逐步形成并最终演化为开源商业3D游戏引擎。随后,作为DisneyVRStudio的核心,Panda3D先后用来创建由一系列卡通人物游戏集合构成的“卡通城OL”及第二代MMORPG“加勒比海盗OL”。Panda3D中Panda是PlatformAgnosticNetworkedDisplayArchitecture各单词第一个字母的缩写,其真正含义是“平台无关网络化显示架构”。天公作美,竟然与我们的国宝熊猫同名。在USNews排名中计算机水平第一的美国著名学府“卡内基梅隆大学”承担了Panda3D的研制。后来,迪斯尼工程师继续大规模开发3D游戏,而Panda3D的研制者为了促进各大学更为方便地开展虚拟现实研究项目,决定从2002年开始,将3D引擎发布为开源项目。发布开源项目不是简单的事情,需要持续更新引擎的新技术并提供大量的文档和实例以繁荣开源社区。目前,Panda3D开源工作由卡内基梅隆娱乐技术中心负责。成为世界上最为活跃的开源商业化3D游戏引擎社区之一。到目前为止,采用Panda3D引擎的一些著名开发商及其商业化产品如表1.3所示。随着时间的推移,Panda3D引擎名称来历中的技术背景已经变得越来越模糊了。现在,卡内基梅隆娱乐技术中心也乐于以熊猫作为这个3D游戏引擎的Logo(带着红色、绿色双色眼镜的蓝色熊猫)。为了确保读者对Panda3D有全面的了解,先暂时停止对这款游戏引擎的深入探索,看看游戏引擎行业的整体状况。表1.3采用Panda3D的著名开发商及其商业化产品(运行截屏参看彩页)开发商商业化产品迪斯尼Disney卡通城:/加勒比海盗OL:/welcome秋月娱乐AutumnMoonEntertainment巫胡岛的幽灵海盗:http://www.ghost-pirates.de/start.php吸血鬼传奇:/SimOpsStudiosCode3D:/MSASafetyPoliceLine热成像仿真游戏:/thermal_enforcer.htmlTreeform敢死天使第二次星宿战争:/index.htmlKochMediaGmbH,Austria七百万:/1.3游戏引擎的发展游戏引擎是游戏厂商拥有和使用的用于开发游戏的专用中间件,可以有选择地在微软Windows、Linux、Mac、Symbian、Android等操作系统上运行。现代游戏引擎最核心的目的是集成、封装开发游戏时的服务器端功能,并为客户端游戏应用提供相关支持。作为延伸和扩展,许多游戏引擎还提供快速开发环境。游戏引擎不仅可以用来开发游戏,也可以用于虚拟现实、动态仿真、影视视频制作、互动娱乐、时尚UI、医学诊断、CAI等领域。撇开底层实现技术,游戏引擎的核心功能包括场景运行、2D及3D图形渲染、物理碰撞检测及响应、动画、音频、脚本、人工智能、网络、流、内存管理、多线程、本地化等。借助于游戏引擎,游戏开发可以大量实现代码重用,促进产业规模化。从专业技术角度而言,不同游戏引擎的区别在于提供不同的硬件兼容、软件架构、组件结构及3D游戏对象抽象。对于设计合理的游戏引擎,无论是在使用不同操作系统的个人电脑、移动终端还是专用游戏平台上,运行相同游戏几乎不需要修改代码或者修改量非常少。随着计算机组件技术的不断成熟,好的游戏引擎允许不断替换、升级或扩展特定的组成部分,例如物理动力特性引擎、多维音效引擎、高清数字视频引擎等。有些引擎甚至采用不同松耦合的组件系统集成产生。当然,相对于引擎扩展性而言,引擎实时性更加至关重要。由于视觉需求是第一位的,很多“游戏引擎”有时专注于实时3D渲染,舍弃了其他功能定位,并把相关内容空出,留给后续开发人员。其实,这类“游戏引擎”本质上是“图形引擎”、“渲染引擎”。例如OGRE、Irrlicht、JMonkey、RealmForge、Truevision3D、CrystalSpace、Genesis3D、Vision等引擎。1.3.1抽象硬件比游戏引擎、图形引擎更为底层的图形及多媒体API软件抽象是Direct3D、OpenGL、SimpleDirectMediaLayer(SDL)、OpenAudioLibrary(OpenAL),适用于图形处理器(GPU)、视频卡或声卡。它们对鼠标、键盘、游戏杆、网卡、声卡等进行了硬件无关处理。有时,这些底层函数库也被用来直接开发游戏,所以在一定程度上产生了误解。其实它们不是引擎而是函数库,更加关注与硬件的兼容集成性。随着硬件图形加速技术的发展,各种物理API,例如逐行倒相制式(PAL)、3D资产内部交换格式(COLLADA)也逐步出现。它们通常由不同中间件厂商提供,为上层应用与底层物理处理单元提供一种软件抽象和隔离。1.3.2软件抽象早先的游戏从头到尾很少采用抽象设计概念,只是进行紧耦合式开发,代码很难重用,除函数外没有其他软件抽象层次。第一代图形引擎或渲染引擎代表是Argonaut公司的BRender、Criterion公司的Renderware和Reality实验室的RenderMorphics。后者速度最快,但团队一些主要开发人员被微软撬走从事Direct3D研制,而RenderMorphics引擎也在被游戏巨头ElectronicArts收购后有意逐渐废弃。完整的游戏引擎概念出现在20世纪90年代中期,与第一人称射击类3D游戏(FPS)的兴起有关,其典型代表是Doom和Quake。获得许可后,开发人员可以设计自己的场景、角色、武器和关卡,无需一切从头开始。有关定制部分也称为“游戏内容”、“游戏资产”。游戏策划、游戏资产制作与游戏编程的分工加速了游戏产业化过程。后来,一些公司更加专注于游戏引擎的设计与实现问题,并通过软件许可证方式获利,例如Unreal引擎。通常,一个高端商业化游戏引擎的单个许可证费用是1万到100万美元。由于游戏引擎研制的专业化运作,游戏产业更能健康持续地与最新技术一起同步发展。与数据库等行业软件类似,现代游戏引擎是一个非常庞杂精致的应用支持系统,其内部架构、组件模式,最终精确实时地强化着用户体验。现代游戏引擎大多强调渲染、脚本、关卡、艺术效果等功能的强分隔、松耦合。为牛顿式技术痴人与毕加索式艺术疯子同台演出提供了可能。不同流派的游戏引擎已经广泛应用于各种游戏。多线程技术是现代游戏引擎的核心机制,涉及场景运行、渲染、物理碰撞检测及响应、动画、音频、脚本、人工智能、网络、流、内存管理、本地化。例如,在多线程技术保持领先的一些赛车游戏中,物理碰撞检测及响应引擎可以使用一个单独的线程,在其他核心子系统移动之前就开始运行,因为渲染和其他任务刷新频率为30~60Hz,而物理碰撞检测及响应引擎刷新频率大约为100~360Hz。当前,游戏引擎已经将跨平台、跨设备作为一个发展方向,对iPhone、iPad、浏览器的支持日益加强。实现语言也从原来的C/C++为主,丰富到涵盖Java、C#/.NET、Python等。因为随着硬件设备整体性能的大幅度提高,高级语言已经不再会过多延迟游戏运行,相反,高级语言尤其是脚本语言的灵活性,为开发人员及用户提供了更大的好处。本书将深入介绍Python脚本语言带来的灵活和便利。微软在游戏引擎领域也是动作频频,使用.NETFramework和新发布的XNAGameStudio、GameDevelopmentSite,全面支持Xbox360以及Zune播放器。还有一些引擎,不对第三方发布,由游戏开发商单独控制使用。它们不在本书讨论范围之内。1.4开源游戏引擎整体比较业界公开且比较知名的开源游戏引擎统计如表1.4所示。从统计数据来看,C++语言依然是目前游戏引擎的主要开发语言,而脚本语言中支持较多的是Lua和Python。还有一些免费游戏引擎,不提供源代码,但是可以在一定程度上免费使用,本书不讨论。表1.4知名开源游戏引擎统计名称开发语言绑定跨平台SDL针对2D脚本代表游戏许可证AlephOneC是是否LuaMarathonMarkupLanguageMarathonGPLAllegroLibraryCAda、C++、C#、D、Lisp、Lua、Pascal、Mercury、Python、Perl、Scheme是否是ZlibArdor3DJava是否ZlibAxiomC#是是否DynamicLanguageRuntimeLGPLBlenderC++Python是是否PythonGPLBox2DC++Java、C#、Lua、Action-Script、JavaScript、D、PythonDarkBasic是否是MIT
续表名称开发语言绑定跨平台SDL针对2D脚本代表游戏许可证BuildC否否CafuC++是否否LuaGPLProprietaryClanLibC++是是是ClanlibCrystalSpaceC++Python、Perl、Java是是否LGPLCubeC++是是否ZlibCube2C++是是否ZlibDelta3dC++是否PythonLGPLDGDLPC是否是LPCDXFrameworkC++否否PythonBSDExultC++是是是GPLFlixelt是否是GregoryWeir系列MITGenesisDeviceObjectPascal否否PascalScriptLGPLGenesis3DC否否GlestC++是否否LuaHPLC++是是否Penumbra:OvertureGPLProprietaryidTech1C是否否DoomDoomIIGPLidTech2C是否否QuakeIIGPLidTech3C是否否QuakeIIIArenaGPLidTech4C++是是否有Doom3,Wolf-enstein,Brink,EnemyTerritoryQuakeWarsProprietaryioquake3C是是否GPL
续表名称开发语言绑定跨平台SDL针对2D脚本代表游戏许可证IrrlichtC++Java,Perl,Ruby,Lua,Python,Delphi,FreeBAS,GameMaker,AutoIt是是否Squirrel,AutoItH-CraftChampion-shipZlibJake2Java是否否GPLjMonkeyJava是否否BSDJogreJava是否是GPLKlayGEC++是否否PythonGPLLightweightJavaGameLibraryJava是否是MinecraftBSDNebulaDeviceC++Python,Java,.NET是否LuaRubyTcl/TkPythonMITOpenScenceGraphC++是否否LuaPythonLGPLORXC/C++是是是ZlibPanda3DC++Python是否否Python已介绍BSDPixelLightC++是否否LGPLPLIBC++是是否LGPLQtC++Python,Java,CommonLisp,Haskell是否是QtScriptLGPLQuakeC是否否QuakeCGPL
续表名称开发语言绑定跨平台SDL针对2D脚本代表游戏许可证RealityFactoryC++否否SimKinTelepath,ImageoftheWeekTheLegendofOkkoraHouseofShadowsMITRealmForgeC#C/C++,C#,D,Delphi,Ada,Perl,Fortran,Python,VB.NET是否C#JScriptLostIsle,LizardRockIslandLGPLRetributionC++否否GPLRubygameRuby是是是LGPLSecondLifeC++是否否LSLSphereC++是否是JavaScriptSpringC++是否否LuaGPLStratagusC是是是LuaGPL1.5知名游戏引擎及代表游戏一些知名游戏引擎及其代表游戏如表1.5所示。其中,实力较强的完全商业化游戏引擎是Jade、PhyreEngine、SourceEngine、UnrealEngine3.x等。另外,可以看出,即便与完全商业化运作的游戏引擎相比,Panda3D也还是相当有实力。表1.5知名游戏引擎及其代表游戏游戏引擎名称代表游戏Nel3DMMORPGGameEngineRyzom,TheSagaofRyzomAlamoEmpireatWar,ForcesofCorruption,UniverseatWar:EarthAssault续表游戏引擎名称代表游戏AdventureGameStudioChzoMythos,SovietUnterzoegersdorf,TheBlackwellSeries,BenJordan:ParanormalInvestigatorAnvilAssassin’sCreedII,PrinceofPersia:TheForgottenSands,Assassin’sCreed:BrotherhoodBigWorldTwinSkies,StargateWorldsCPAL3DMementoMori,Numen:ContestofHeroes,PoundofGround,AlternativaCryEngineFarCry,Aion:TheTowerofEternityCryEngine2Crysis,EntropiaUniverseCryEngine3Crysis2CrystalToolsFinalFantasyXIII,FinalFantasyVersusXIII,FinalFantasyXIIIAgito,FinalFantasyXIVDuniaEngineFarCry2,JamesCameron’sAvatar:TheGameEssenceEngineCompanyofHeroes,OpposingFronts,Warhammer40,000:DawnofWar2EuropaEngineEuropaUniversalis,HeartsofIronGamebryoDarkAgeofCamelot,TheElderScrollsIV:Oblivion,Fallout3,Fallout:NewVegasGoldSrcHalf-Life,GunmanChroniclesGogiiGamesEngineMortimerBeckettseries,MirrorMysteriesHeroEngineHero’sJourney,StarWars:TheOldRepublicHPLEnginePenumbra:Overture,Penumbra:BlackPlague,Penumbra:Requiem,Amnesia:TheDarkDescentidTech4Doom3,Quake4,Prey,EnemyTerritory:QuakeWars,WolfensteinInfernalEngineGhostbusters:TheVideoGame,MushroomMen:TheSporeWars,BassProShops:TheStrike,Roogoo:TwistedTowersInfinityEngineBaldur’sGate,Baldur’sGateII:ShadowsofAmn,Planescape:Torment,IcewindDale,IcewindDlaeIIIronEngineSinsofaSolarEmpire
续表游戏引擎名称代表游戏JadeEngineBeyondGood&Evil,PrinceofPersia:TheSandsofTime,PrinceofPersia:WarriorWithin,PrinceofPersia:TheTwoThrones,PeterJackon’sKingKong:TheOfficialGameoftheMovie,RaymanRavingRabbids,TMNT,RaymanRavingRabbids2,Naruto:RiseofaNinja,Naruto:TheBrokenBond,JamesCameron’sAvatar:TheGame(Wiiversion),PrinceofPersia:TheForgottenSands(WiiandPSPversions)K2EngineSavage2,HeroesofNewerthNebulaDevice3Darkensang:TheDarkEyeNeonEngineOperationFlahspoint2:DragonRisingRaceDriverGridPanda3D已介绍PhyreEngineMalicious(videogame)forPSN,RugbyLeagueLive,topatoi,CritterCrunch,Neptune,BurnZombieBurn,SavageMoon,\o"AnotherCentury'sEpisode:R"AnotherCentury'sEpisode:R,Demon'sSouls,Catan,\o"AtelierRorona:AlchemistofArland"AtelierRorona:AlchemistofArland,ArtonelicoQoga:KnellofArCiel,AtelierTotori:AlchemistofArland2,PachiParaDLHyperSeaStoryInKaribu,ZettaiZetsumeiToshi4:SummerMemories,TrinityUniverse,LastRebellion,\o"UnderSiege(2009videogame)"UnderSiege,GripShift,Shatter,flow,Flower,JourneyRAGEMidnightClub:LosAngeles,GrandTheftAutoIV,RockstarGamesPresentsTableTennis,RedDeadRedemptionRiotEngineDraken:OrderoftheFlame,Darken:TheAncients’Gates,TheLordoftheRings:TheFellowshipoftheRing,TheSuffering,TheSuffering:TiesThatBindRPGMakerVXEternalEdenRPGMakerXPAveyondSAGEEngineRedAltert3,Generals,TiberiumWars,TheBattleforMiddle-earthIIScimitarAssassin’sCreed,PrinceofPersia,ShaunWhiteSnowboardingShiVa3DVoodooDice,PinballYeah,TextingofTheBread,PirateWings,GravitonSilentStormEngineSilentStorm,SilentStorm:Sentinels,Hammer&Sickle,NightWatch,DayWatch,HeroesofMightandMagicV,JaggedAlliance3
续表游戏引擎名称代表游戏SourceEngineHalfLife2,TeamFortress2,Protal,Left4Dead,Left4Dead2,Vampire:TheMasquerade-Bloodlines,SinEpisodes,DarkMessiahofMightandMagic,ZenoClash,Vindictus/Mabinogi:Heroes,KOSSecretOperationsTGEAMarbleBlastUltra,FallenEmpire:Legions,Dreamlords,PennyArcadeAdventures:OntheRain-Slick,PrecipiceofDarknessUniginePrimalCarnage,AfterfallUniverseUnityCartoonNetworkUniverse:FusionFall,TigerWoodsPGATourOnline,GooBall,GlobalConflicts:Palestine,Off_roadVelociraptorSafari,WolfQuest,DeadFrontierUnrealEngine2.xAmerica’sArmy,Exteel,LineageII,TheChroniclesofSpellborn,UnrealTournament2004,RagnarokOnline2UnrealEngine3.xAmerica’sArmy3,Batman:ArkhamAsylum,Borderlands,BrothersinArms:Hell’sHighway,BioShock,BlackSite:Area51,GearsofWar,GearsofWar2,UnrealTournament3,RainbowSixVegas,SplinterCell:Conviction,LostOdyssey,MassEffect,MassEffect2,TheLastRemnant,MedalofHonour:Airbourne,BladeandSoul,BulletstormVisionEngine8Arcania:AGothicTale,TheSettlers7:PathstoaKingdom,DIZZEL,DungeonHero,ArenaMorte,CutthroatX-RayEngineS.T.A.L.K.E.R.:ShadowofChernobyl,S.T.A.L.K.E.R.:ClearSky,S.T.A.L.K.E.R.:CallofPripyat4AEngineMetro20331.6游戏引擎的成本与收益采用游戏引擎开发游戏是上手迅速、品质有保障、技术领先、开发周期缩短的一种工业化分工合作模式。不管使用哪种游戏引擎,都会有一定的成本构成和预期收益。(1) 通常,使用游戏引擎的直接成本构成如下:许可证费用。支付给游戏引擎开发商的全部费用,包括游戏产品许可证费用、版税协议、客户培训费用等。由游戏产品支持客户数、许可证绑定目标平台、每客户或每年度服务、销售版税等因素决定。游戏产品费用。与游戏产品整个生命周期中“游戏研发阶段”各产业链环节相关的全部费用。包括创意、提案、制作、集成、测试、发布费用,直接用于相关产品开发的策划、管理、设计与实现。培训费用。这是评估游戏引擎的一个重要尺度。涉及开发团队技术学习曲线成本、时间投资成本、开发商培训成本。由论坛、知识库、技术文档、教学视频、在线帮助、实际案例等因素决定。维护升级费用。不论是自己开发游戏引擎还是使用第三方游戏引擎,都需要对游戏引擎的软件抽象设计、技术实现进行维护和升级,以适应游戏效果、游戏规模、硬件平台、设备性能、IT技术的变革。由开发团队研发费用、福利薪资、软硬件测试配置等因素决定。资质评测费用。在评测游戏产品相关资质时,对于创意、艺术视觉、音效、产品质量、性能体验都需要严格把关。使用游戏引擎降低了资质评测的时间和费用,减少了培训、支持、现场跟踪的时间及人力投入。(2) 另一方面,使用游戏引擎的直接收益如下:节省时间。游戏产品开发过程简化为创意、提案、游戏资产制作、游戏内容集成、测试、发布。每个环节之间的时序依赖和对底层技术的依赖相对弱化。有些游戏甚至可以直接采用“脚本+游戏资产”来实现。节省成本。开发团队及其管理得以精简,对开发人员整体技能要求可以有所下降,节省单个产品开发预算,为延长产品线提供了可能。聚焦游戏产品本质。游戏产品归根结底是创意产品,借助于优秀的游戏引擎,游戏开发商可以更加聚焦于游戏的创意,并保证好的创意可以最终转换为好的产品,好的体验。支持更为专业。游戏引擎是一种开放式、发展的中间件,有利于专业技术人才资源的有效整合和共享。共享行业知识经验。游戏开发商在成长过程中会遇到一系列问题,其有效解决往往与技术实现密切相关。采用游戏引擎可以快速获取有关行业知识经验,对于游戏开发商的迅速发展能提供更多的机会和便利。1.7选择游戏引擎的尺度游戏专家MarkDeloura曾经做过一项调查,统计有关游戏开发商选择不同游戏引擎的尺度,可以归结为以下几个方面:整体目标。大约90%的开发商认为是确保艺术家、设计师快速上手;大约80%的开发商认为是需要开发人员只关注游戏必需代码;大约70%的开发商认为是需要游戏开发快一点并且代码编写量少一点。引擎质量。大约70%的开发商关注引擎与计划游戏产品流派是否匹配;大约70%的开发商关注代码可读性及扩展性;大约60%的开发商关注与现有开发资源环境的集成性;大约60%的开发商关注是否可以获取源代码。实践有效性(适用于开发人员)。大约90%的开发人员考虑获取源代码;大约80%的开发人员考虑与其他中间件的集成性,大约80%的开发人员考虑资源管理易于变更;大约80%的开发人员考虑不断获取游戏引擎最新版本;大约80%的开发人员考虑清晰的工程开发路线图。技术功能。大约90%的开发商需要多线程/多处理器功能;大约90%的开发商需要渲染管道;大约90%的开发商需要动画系统;大约80%的开发商需要物理碰撞检测;大约80%的开发商需要流机制。支持工具集。大约80%的开发商希望支持配置文件;大约80%的开发商希望具有所有目标平台的预览工具;大约80%的开发商希望具有独立的场景构造工具;大约70%的开发商希望具有粒子系统编辑器;大约70%的开发商希望具有脚本支持功能。对于大多数游戏开发商而言,采用国外完全商业化运作的游戏引擎的费用过于昂贵,而采用开源游戏引擎是一个相对经济实惠、后续发展力强劲的选择。因此,在了解了游戏引擎的整体状况之后,我们来深入对比几款著名的开源游戏引擎。1.8十大开源游戏引擎深入比较在国内外,业界盛传有十大开源游戏引擎,分别是OGRE、Irrlicht、Panda3D、CrystalSpace、jME、BlenderGameEngine、RealityFactory、TheNebulaDevice2、RealmForge、OpenScene-Graph。我们对这十款开源游戏引擎深入进行分析。(1) OGRE是面向对象图形渲染引擎(Object-OrientedGraphicsRenderingEngine)的缩写,采用C++开发,以MIT许可证发布,可以在Windows、Linux、Mac上运行。OGRE自己也说明本身不是游戏引擎。其主要特征如下:面向对象,插件扩展架构,具有文档支持。支持脚本。可以通过脚本管理材质资产并进行多路渲染。支持物理碰撞检测。支持顶点灯光、像素灯光、灯光映射。支持阴影映射、三维阴影。支持多纹理、凹凸贴图、多重材质贴图、立体投影。支持顶点、像素、高级着色。支持场景管理,具有多种数据结构。支持逆向运动动画、骨架动画、变形动画、混合动画及姿态动画。支持网格加载、皮肤、渐进网格。支持环境映射、镜头眩光、公告牌、粒子、运动模糊、天空、水、雾、丝带轨迹、透明对象。支持XML文件转换。引擎特性全面(),稳定性好(),支持全面(),不容易上手和使用()。(2) Irrlicht采用C++开发,以zlib/libpng许可证发布,可以在Windows、Linux、Mac、Solaris、FreeBSD、Xbox上运行。Irrlicht自己也说明本身不是游戏引擎。其主要特征如下:面向对象,插件扩展架构,具有文档支持。支持内建场景、灯光、GUI编辑器。支持物理碰撞检测。支持顶点灯光、像素灯光、灯光映射。支持阴影映射、三维阴影、模板缓冲区阴影。支持多纹理、凹凸贴图、多重材质贴图、立体投影。支持顶点、像素、高级着色。支持场景管理,具有多种数据结构,允许无缝集成室内及室外场景。支持骨架动画、变形动画及混合动画。支持网格加载。支持环境映射、公告牌、粒子、天空、水、雾。支持地形渲染。引擎特性全面(),稳定性好(),支持全面(),容易上手和使用()。(3) Panda3D采用C++和Python开发,以BSD许可证发布,可以在Windows、Linux、Mac、SunOS上使用。Panda3D是一个完整的游戏引擎。其主要特征如下:面向对象,脚本扩展架构,具有文档支持。支持内建场景、粒子、关卡编辑器。支持物理碰撞检测,可以用于运动物体。支持顶点灯光、像素灯光、灯光映射。支持阴影映射、三维阴影、模板缓冲区阴影。支持多纹理、凹凸贴图、多重材质贴图、立体投影。支持顶点、像素、高级着色。支持场景管理,具有多种数据结构。支持骨架动画。支持网格加载及皮肤。支持环境映射、公告牌、粒子、雾、火。支持地形渲染。支持“客户端/服务器”网络模式。支持2D、3D和流音效。支持有限状态机、人工智能。引擎特性全面(),稳定性很好(),支持很全面(),很容易上手和使用()。(4) CrystalSpace采用C++开发,以LGPL许可证发布,可以在Windows、Linux、Mac上使用。CrystalSpace是一个完整的游戏引擎。其主要特征如下:面向对象,组件扩展架构,具有文档支持。支持内建场景、灯光、GUI编辑器。支持物理碰撞检测,可以用于运动物体。支持顶点灯光、灯光映射。支持阴影映射、三维阴影。支持多纹理、多重材质贴图。支持顶点、像素着色。支持场景管理,具有多种数据结构。支持骨架动画、帧动画、变形动画。支持网格加载、渐进网格。支持环境映射、镜头眩光、公告牌、粒子、天空、镜像。支持地形渲染。支持2D、3D音效。支持游戏世界管理。通过有限状态机、行为树、神经网络、遗传算法支持人工智能。引擎特性很全面(),稳定性好(),支持很全面(),不容易上手和使用()。(5) jME是jMonkeyEngine的缩写,采用Java开发,以BSD许可证发布,可以在Windows、Linux、Mac上使用。JME的目标是提供一个Java语言3D游戏引擎,但业界目前也有人认为jME还不是一个游戏引擎。其主要特征如下:面向对象,插件扩展架构,具有文档支持。支持内建游戏世界编辑器。支持物理碰撞检测。支持顶点灯光、灯光映射。支持三维阴影。支持多纹理、多重材质贴图。支持顶点、像素、高级着色。支持场景管理,具有多种数据结构。支持骨架动画、帧动画。支持网格加载及皮肤。支持环境映射、镜头眩光、公告牌、粒子、天空、水、火、爆炸、雾。支持地形渲染。支持3D音效。引擎特性全面(),稳定性好(),支持很全面(),容易上手和使用()。(6) Blender游戏引擎是采用C++和Python开发,以GPL许可证发布,可以在Windows、Linux、Mac、Solaris、FreeBSD、Irix上使用。Blender是一个完整的游戏引擎。其主要特征如下:面向对象,插件及脚本扩展架构,具有文档支持。支持内建工作流、GUI、数据库、角色等编辑器。支持物理碰撞检测,可以用于运动物体。支持顶点灯光、像素灯光。支持阴影映射。支持多纹理、凹凸贴图。支持顶点、像素着色。支持场景管理,具有多种数据结构。支持逆向运动动画、帧动画。支持网格加载及皮肤。支持环境映射、粒子、天空、水、雾。支持地形渲染。支持“客户端/服务器”网络模式。支持2D及3D音效。通过脚本方式支持人工智能。引擎特性基本全面(),稳定性基本不错(),支持全面(),不容易上手和使用()。(7) RealityFactory是采用C++开发,以MIT许可证发布,可以在Windows上使用。RealityFactory自称游戏无需编程。其主要特征如下:面向对象,脚本扩展架构,具有文档支持。支持内建几何形体编辑器。支持物理碰撞检测。支持顶点灯光、像素灯光、辐射灯光、三维灯光。支持阴影映射。支持多纹理、凹凸贴图、多重材质贴图、投影。支持顶点、像素着色。支持场景管理,具有多种数据结构。支持骨架动画、帧动画及混合动画。支持网格加载及皮肤。支持环境映射、公告牌、粒子、天空、水、火、爆炸、雾、贴花、天气、镜像。支持地形渲染。支持“客户端/服务器”网络模式。支持3D及流音效。通过路径查找、决策及脚本方式支持人工智能。引擎特性基本全面(),稳定性基本不错(),支持基本全面(),容易上手和使用()。(8) TheNebulaDevice2是采用C++开发,以MIT许可证发布,可以在Windows、Linux上使用。NebulaDevice是一个完整的游戏引擎。其主要特征如下:面向对象,插件及脚本扩展架构,具有文档支持。支持内建几何形体编辑器。支持物理碰撞检测。支持顶点灯光、像素灯光、灯光映射、光泽映射。支持阴影映射。支持多纹理、凹凸贴图、多重材质贴图、投影。支持顶点、像素、高级着色。支持场景管理,具有多种数据结构。支持骨架动画、帧动画、变形动画及混合动画。支持网格加载及皮肤。支持环境映射、镜头眩光、公告牌、粒子、天空。支持地形渲染。支持“客户端/服务器”、P2P网络模式。支持2D、3D及流音效。通过脚本方式支持人工智能。引擎特性全面(),稳定性好(),支持基本全面(),不容易上手和使用()。(9) RealmForge是采用C#在OGRE上开发,以LGPL许可证发布,可以在Windows、Linux、Mac、Solaris、HP/UX、FreeBSD上使用。RealmForge是一个完整的游戏引擎,现在已经转入商业化运作。其主要特征如下:面向对象,插件及脚本扩展架构,具有文档支持。支持内建游戏编辑器。支持物理碰撞检测,可以用于运动物体。支持顶点灯光、像素灯光、灯光映射。支持阴影映射、投影面、立体投影。支持多纹理、凹凸贴图、多重材质贴图、投影。支持顶点、像素、高级着色。支持场景管理,具有多种数据结构。支持骨架动画、帧动画、面部动画及混合动画。支持网格加载、皮肤及渐进网格。支持环境映射、镜头眩光、公告牌、粒子、天空、水、火、爆炸、贴花、雾、天气、镜像。支持地形渲染。支持“客户端/服务器”、P2P网络、主控服务器模式。支持3D及流音效。通过路径查找、决策、优先状态机、脚本、神经网络等方式支持人工智能。引擎特性全面(),稳定性基本不错(),支持基本全面(),不容易上手和使用()。(10) OpenSceneGraph是采用C++开发,以LGPL许可证发布,可以在Windows、Linux、Mac、Solaris、SunOS、FreeBSD、Irix、Playstation上使用。OpenSceneGraph是一个完整的游戏引擎。其主要特征如下:面向对象,插件及脚本扩展架构,具有文档支持。支持内建场景编辑器。支持物理碰撞检测。支持顶点灯光、各向异性灯光。支持投影面、立体投影。支持多纹理、多重材质贴图、投影。支持顶点、像素、高级着色。支持场景管理,具有多种数据结构。支持骨架动画、帧动画及混合动画。支持网格加载及皮肤。支持环境映射、公告牌、粒子、镜像。支持地形渲染。支持“客户端/服务器”、P2P网络、主控服务器模式。支持2D、3D及流音效。引擎特性全面(),稳定性好(),支持还可以(),上手和使用比较难()。一般说来,选择开源游戏引擎一定需要获取源码、好的文档及开放式支持。稳定性对于商业化运作是一个双刃剑,利于产品的开发运营,但需要有效引入新的游戏技术革新。引擎涵盖特性是一个积累过程,可以不断添加和改进。上手和使用性也反映了设计开发游戏引擎的团队的内在价值取向以技术为主,还是以应用为主。游戏开发商都希望研制、运营一个万众瞩目的游戏产品,但是,使用按照不同许可证发布的游戏引擎开发的游戏产品需要遵循相应的知识产权法规。因此,游戏引擎的软件许可证成为选择时的一个极其重要的考虑因素。1.9开源游戏引擎许可证比较许可证是软件作者对使用同一作品的其他人授予的特殊许可,表明作者仍然持有作品的原始版权或专利,并没有放弃有关权利。如果是直接公开发布作品,意味着作者放弃了一切版权,人们无需提及作品的原作者和贡献者。如果逐一授权,作者需要自行处理个人许可授权事务。开源许可证使得其他人无需寻求特别的许可就可以方便地为项目添砖加瓦,同时也保护了原创者的权利,确保作者至少可以因为自己的贡献而获得赞誉,同时防止其他人将作者的成果据为己有。上面讨论的开源游戏引擎许可证主要有MIT、BSD、GPL、LGPL、Zlib/libpng,有关初创人、版本/年代、可链接其他许可证代码、可变更许可证发布等内容如表1.6所示。表1.6有关许可证链接、发布限定许可证初创人版本/年代可链接其他许可证代码可变更许可证发布游戏引擎BSD加利福尼亚大学-可以可以Panda3D,jMEGPL自由软件基金3.0/2007不可以不可以BlenderLGPL自由软件基金3.0/2007可以不可以OpenSceneGraphCrystalSpaceRealmForgeMIT麻省理工学院1988可以可以OGRE,RealityFactory,NebulaDeviceZlib/libpng--可以可以Irrlicht(1) BSD许可证在软件传播和使用过程中对版权限制非常少,基本上没有约束,可以用于任何商业场合。实际上,BSD许可证强调的只是声明一下“祖籍渊源”。因此,BSD许可证软件使用最为广泛。二版、新版BSD许可证模板主要强调以下权利:分发、使用未经修改或修改后源码时,必须保留有关版权声明和免责声明。以二进制形式再分发软件时,必须保留有关版权声明和免责声明。未经许可,不得以软件贡献者的名字为软件的衍生产品做代言。(2) GNUGPL是通用公共许可证(GeneralPublicLicense)的缩写,是使用最广泛的自由软件许可证。GPL强调许可证使用时必须唯一且必须传承,因为弘扬和恪守的是“自由软件正本清源,代码开放基业长青”的理念,也得到社会各界人士的积极支持。但是,在使用过程中必须开放自己的代码,否则会陷入版权纠纷。这样,虽然Blender是一个非常好的开源游戏引擎,但我们无法对后续创意进行有效的商业化运作。GPL坚持软件开放源代码,但相关服务和支持可以收费。最新版本GPL许可证模板主要强调以下权利:违反GPL授权的拷贝、分发、向公众发布等传播活动有可能直接或间接侵权。分发自由软件时,必须把自由传递给接受者,让接受者明白具有获取全部源代码的权利并且能够得到全部源代码。自由软件没有任何担保责任。软件被修改过的版本必须明确标示,从而避免它们的问题被错误地归咎于先前的版本。源代码接受者可以通过任何媒介发布未被修改过的副本,但必须显著地在每个副本上都发布一个合适的版权通告。必须完整保持所有授权通告、所有免责声明,并为所有接受者提供GPL授权。修改源代码必须明确标示并给出日期,完整保持所有授权通告、所有免责声明,为接口提供适当法律通告,并且只能为所有接受者提供GPL授权。传播目标代码时,必须同时在有关场地、介质中或以网络等方式提供源代码。如果只有可以获取源代码的书面承诺,不允许盈利。公开源代码时,不包括所调用的可分离的系统库部分源代码。允许附加条款,主要是免责声明、法律通告、作者信息、禁止误传资料来源、修改的合理标示方式、限制通过作者进行商业代言及宣传、保留合法商标及标记、接受者责任假设合同。违反GPL的行为将自动终止授权,在一定时间内修改后可以恢复授权。如果贡献者需要申请专利,必须履行公开源代码义务并允许自由修改(无专利版税),否则就必须放弃盈利。更详细的内容可直接查阅有关许可证说明。(3) GNULGPL是宽通用公共许可证(GNULesserGeneralPublicLicense)的缩写,在标准GPL基础上重点对库进行授权。LGPL放宽了对软件链接的限制,不再强调链接的“纯洁”,可以进行“杂交”。所谓库是应用程序通过接口调用,但不依赖这种调用的软件集合。对库中类的派生继承也认为是通过接口调用。库和应用程序构成组合软件,库被称为链接版本。最小源代码取决于应用而不是链接版本,不能孤立地考虑组合软件的一部分。组合软件的相应应用代码包括应用、辅助工具程序及源代码,但不包括所调用的系统库。最新版本LGPL许可证模板主要强调以下权利:库的任何修改、传播不会依赖于应用提供的功能或数据,否则,库也必须无条件使用GPL许可证。应用可以使用库提供的头文件,但如果不在数字参数、数据结构布局、数据结构访问器、小型宏、内联函数及模板的限制之列,必须为每个副本提供所链接库的通告。库的链接授予LGPL许可,应用程序授予GPL许可。组合软件不能限制对库的修改、调试、兼容式替换。(4) MIT许可证非常简短,但也比较松散含混。在软件传播和使用过程中对版权限制非常少,基本上没有约束,可以用于任何商业场合。同样,MIT许可证强调的也只是声明一下“祖籍渊源”。新版MIT许可证模板主要强调以下权利:免费授予任何获得软件及相关文档的人不受限制地使用、拷贝、修改、合并、出版、分发、再授权和/或出售软件的拷贝。版权声明和许可声明必须包含在软件包的全部拷贝或实质性部分中。其实,许可声明大部分内容是免责声明。(5) Zlib/libpng许可证没有特别要求提供源代码。在软件传播和使用过程中对版权限制非常少,基本上没有约束,可以用于任何商业场合。最新版本Zlib/libpng许可证
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 综合服务总包合同
- 标准代建招标文件样本
- 机房服务合同范本
- 防水材料出口合同
- 落户协助服务合同样本
- 市场营销外包合同协议模板
- 电脑供货合同样板
- 维修工程协议范本
- 消防泵房检测与性能提升合作协议
- 民工劳动报酬支付函
- 国家电投《新能源电站单位千瓦造价标准值(2024)》
- GB 1886.342-2021食品安全国家标准食品添加剂硫酸铝铵
- 工程量清单项目编码完整版
- JJF 1629-2017 烙铁温度计校准规范(高清版)
- 项目工程质量管理体系
- 部编版二年级下册语文拼音练习
- 《高压电动机保护》PPT课件.ppt
- 在全市油气输送管道安全隐患整治工作领导小组第一次会议上的讲话摘要
- 小学英语后进生的转化工作总结3页
- 定喘神奇丹_辨证录卷四_方剂树
- 不知不觉也是牛仔元老了转一篇日牛知识贴.doc
评论
0/150
提交评论