上海交通大学硕士学位论文3D游戏开发技术设计与应用姓名:朱晴申请学位级别:硕士专业:软件工程指导教师:肖双九;苗夺谦200902153D3D3D3D3D3D3D3D(1)3D3D(2)3D(3)3D3DDESIGNANDAPPLICAIONOF3DGAMEDEVELOPMENTTECHNOLOGYABSTRACTInternetnetworkgamehasbecomeoneofthemostpopularentertainments.Thedevelopmentofthe3Donlinegameisahightechnologyproject.Gradually,thereformsaripewayonthedevelopmentofthe3Dgame:3Dgameengine,applicationframework,runningtimegamelogicdrovebyscript,itisindicatedthatthedevelopmentof3Dgamehasenterintoastandardandindustrializedperiod.Now,the3Dgameisindustrializedproduct.Game-platformdevelopmenthasbeengraduallyadoptedbydomesticgamecompanies.Allkindsofgameeditorsoftheearlydevelopmentperiodareplatformrudiment.Withtheripeofthegameenginetechniquesandthenaissanceofthescripteditor,theapplicationofthegame-platformhasbeenmature.Currently,domesticgamecompaniesattachmoreimportancetogameplatformconstruction,whichshowsthatthedevelopmentofgameinChinahasbeguntoapproachinternationallevel.Insuchcircumstance,theauthorwrotethispaperaccordingtohisownworkingexperience.Onahighlevel,thispaperdoessomeabstractandlocalrenovationoftheclient'sstructureofthe3Donlinegame.Thecontentsofthisarticleareincludes:Chapter1:thehistoryofthegametechnology,describingtheCourseofthegamedevelopmentfromindividualtolargescaleindustrialized.Chapter2:3Dgameengine,thecoreofthe3Dgametechnology,includeingtheabstractoftheRenderer,theorganizationoftheSceneGraph,Animation,collisiondetectionandsoon,finallygetthefiguretoillustratesthe3Dgameenginesstructure,anddemonstratetherelationshipsandfunctionofthe3Dgameengineduringthegamedevelop.Chapter3:presentaclientframeworkofthe3Donlinegame,illustratethecoreofthegameapplication,include:setuptheapplicationwindows,buildthestatemachine,netsynchronization,themechanismofclientcacheandsoon,Chapter4:bringoutvisualizedscripttriggereditor,whichsolvesthequestionthathighlevelgamelogicscriptshouldbewrittenbytheprogrammer.Withthetool,hedevelopercanorganizethegamelogicinavisuallyway.Soitcanbedesignedbytheartistdirectly.Accordingtotheanalysisofthesemanticlogicandthedefinitionofthevisualformat,aprototypeoftheplatform-independentscriptTriggerEditorisconstructed.Chapter5:Makingaconclusiontothecontentsofthispaper,andlookforwardtothefuturetechnologydevelopmentof3Dgameindustryanditsrelatedfields.KEYWORDS3Dgameengine,Clientframework,Statemachine,Scripttriggereditor1第一章概述1.1研究背景游戏的开发技术是伴随计算机科学发展同步的,在软件开发领域,游戏的设计与开发,经历了一个相当漫长和复杂的发展过程。当今,随着计算机硬件和软件的发展,游戏项目开发规模已经越来越大:经典的游戏,往往代码量是上百万的,美术资源是十几甚至几十个G的,策划的设计文档更是能写成一本厚厚的综合类书籍[1]。这一切,已经不是早期那种小团体小作坊甚至个人能完成的。而其中的网络游戏更是以大致三倍以上的整体工作规模而超过同类型的单机游戏,成为难度昀高的游戏项目。可以这么说,游戏软件的发展,目前已经完全进入工业化的开发时代。就像其他的软件开发领域一样,当游戏开发进入工业化时代的时候,其他领域软件设计的很多理论同样适使其中。另外,也像传统行业一样,分层次的多级的开发生产方式也逐步形成:如今的网络游戏结构层次复杂,涉及软件方面的知识比较多。由于其过程复杂,技术难度大,一款成功游戏的诞生,更是需要各个部门的通力合作[2]。国外的游戏软件开发技术由于历经了很多年和很多著名的游戏的积累和铺垫,所以相对比较成熟和完善,各个知名游戏软件开发公司都有自己的核心团队和关键技术甚至有自己一套非常完善的开发平台。而国内游戏开发技术起步比较晚,所以相对比较落后,另外对技术研发的重视程度不是太高。虽然,目前像盛大,网易,完美,天晴,巨人网络等具备游戏研发实力的一些国内知名公司开始全力发展自己的游戏,但是,从软件的纯设计角度和理念上来说,在开发技术上国内和国外的差距还是非常明显的,特别在3D游戏开发上,国内几乎很少有自己非常著名的3D引擎,所以在昀前端的网络游戏的3D应用上,国内成功的3D游戏非常少[3]。虽然在技术上存在差距,但是国内的游戏业界同行们一直在努力寻找一个切入点,想尽一切办法比如通过购买国外优秀的游戏引擎,修改国外开源的引擎等等,将自己的游戏开发模块块化,流程化,从而趋于成熟化,同时,各种设计方式和理论也应运而生,国内的游戏开发技术也正逐步走入正规。本文正是在这种大背景的条件下,研究并结合自身实际工作中碰到的问题,2来阐述,整理,设计并做局部创新游戏开发特别是3D游戏开发的技术与应用。1.2研究现状1.2.1游戏开发技术的发展的现状:3D图形技术,PC平台上的D3D系列,微软当前已经发展到D3D11,3D管线越来越灵活和高效,这使得游戏效果一跃千里,高级的电影级效果已经可以在普通家用机的图形显示卡上运行。游戏技术已经初步从传统的2D转向3D高级图形效果技术的方向发展。游戏软件开发是一项庞大的工程,这个工程的复杂程度在于需求不断的变化,因为玩家口味是在不断变化着。单机游戏,由于我国的软件盗版问题比较严重,所以赢利困难以致于难以自主独立开发,但是,国外很多的单机外包项目在国内很有气色。所以,网络游戏,成为国内技术研发的主打对象,网络游戏以其特殊的平台特性,吸引着当代的青年人,交流和互动成为了永恒的主题,玩家参与并且构建整个游戏世界,是网络游戏的核心。网络游戏分客户端和服务器端2大块,从客户端来说,3D游戏引擎已经是客户端研发所必须的。国外拥有很强的游戏技术引擎和底层:虚幻3,FARCRY,GAMEBRYO等都是世界著名的游戏引擎,而BIGWORLD更是集成了稳定的网络引擎而闻名整个游戏界。所以,从纯技术角度说客户端目前的核心技术基本都在国外。服务器技术上,目前国内外差距相对没有客户端,因为主要我国的网络游戏玩家众多,一般好知名的网络游戏国内服务器的承载量均很大。目前国内网络游戏公司大致分三种,第一,完全自主研发,比如完美时空,网易,巨人,天晴等,这些公司拥有自己的核心技术和团队。第二,代理和研发并行,比如盛大,这些公司也有一定基础和团队。第三,基本以代理为主,自主研发为辅,慢慢开始投入研发力量的公司,比如九城,久游等,这些公司的技术团队基本都是刚刚起步。从国内这些的公司分布来看,技术差距和层次比较大,而且,从团队研发实力来说,严重不平均。传统行业的工程式开发理念已经深入国内外的游戏行业中,但是,就目前来说,国外的技术积累比较深厚,资料和文档比较齐全,加上起步比较早,高级的优秀技术管理人员能掌握项目总体开发,那么,在技术把关上,远胜过国内同规模的项目研发。另外,由于国外对于游戏的观念和国内有本质的区别,导致,游戏技术的倾向性有所不同:如何构建一个快乐而有趣的游戏世界是国外游戏开发3者追求的目标,而国内由于起步比较晚,加之早期通过代理而发展出来的国内网络游戏市场利润非常的丰厚,导致,技术上相对功利和粗糙些。国内技术开发上经常不注重积累,缺少总结和探索,对项目就事论事,存在着大量重复性的技术开发工作,这是对开发资源的严重浪费。另外,国内不缺乏某个技术点上的技术专家,但是,对于整体游戏研发的技术流程能掌握并且构建的人才不多。这些都是造成过内外技术差距的原因[3]。暴雪娱乐等在业界巷有盛名的游戏生产大公司,虽然不出售其游戏引擎,但是,它的游戏平台已经非常的强悍,暗黑系列,星际系列,魔兽系列,均出自其内部的研发平台。1.2.2游戏引擎技术的发展作为游戏技术的核心,游戏引擎这里被专门提了出来。游戏引擎不是游戏,但是游戏的开发和实际运行都离不开引擎。引擎的发展是经过相当长一段曲折的经历:早期由于硬件限制,游戏画面上还没有3D的概念,仅停留在2D的显示屏的状态,画面深度的设计也仅仅由图片来做分层等简单实现,这些简陋的低层技术的集合称不上引擎,基本上只能算一套简单的开发包。大约在上世纪九十年代中后期,随着硬件和设计者思路的发展,游戏开始诞生了3D的概念,即:比传统XY轴的平面上,多了一个画面的纵向深入,也就是Z轴的概念,仅这多一维的概念给游戏开发和设计上带来突破的飞跃。另外,由于3D全真画面出现,人们对仿真程度的要求也逐渐提高,逐步进而又诞生了诸如物理系统等新型模块。而网络硬件的飞速发展,也诞生了服务器系统相关。现代游戏业内,一般这样定义游戏引擎:在一个范围内,是脱离高层逻辑而相对通用和底层的技术的集合。对于普通的3D游戏来说,如今的引擎已经发展到如下这些相对很成熟的各个系统模块:关于画面3D部分的,比如:渲染器系统,3D场景的数据组织系统,运动系统,碰撞系统,高级着色效果(SHADER)系统。非3D部分的,比如:输入输出系统,网络协议通讯系统,防真类型的物理系统。另外,还有用于开发的脚本系统等等。这里,游戏的开发和运行都是围绕引擎来展开的[4]:a.游戏开发的时候,所有策划设计与美术设计,昀终都是通过游戏程