网络游戏程序员新手入门
本是为公司新人准备的一个培训稿,因为也没有什么商业秘密可言,索性放到这里,为一些希望进入游戏程序开发行业的朋友提供一些信息吧.
程序部新员工培训准备稿(小志)
修订记录
审核人
Tidy
概述:
收集整理一份游戏发展史,当代游戏技术特点,游戏开发部门分工与协作资料,让新人更快更方便的了解游戏开发这个行业。
设计思路:
主要分为三大模块进行说明:
l 网络游戏发展史。
l 当代游戏的特点以及技术概述。
l 游戏开发流程和部分分工。
网络游戏发展史 首先,我们可以明白以下一点:
网络游戏是电脑游戏的一个分支类型,电脑游戏又是电子游戏的一个分支,电子游戏是游戏的一种类型。
游戏(任何动物都有的一种活动,游戏是生活中必不可少的一个环节,是动物们用来学习的一种基本形式)
l 游戏的两大特性:现实模拟性,交互性。
电子游戏(借用电子设备进行的游戏)
(1961年,SpaceWar, 美国辍学大学生,第一款电脑游戏,也是第一款网络游戏)
(1972年,PingPong, 雅各达公司, 第一款电子游戏,也是第一款商业化游戏)
电子游戏路线
1983 任天堂 8位
1988 世嘉 MD 16位
1994 世嘉 土星 32位
1996 任天堂 N64 64位
电脑游戏路线
l 1969-1977年,混沌阶段。(为什么69年?)
此时游戏特征:
1:非持续性,电脑重启后,信息丢失,无法模拟一个持续发展的世界。
2:游戏无法跨系统平台。
3:免费。
附:1969年传输控制协议(TCP/IP)出现。
l 1978-1992年,MUD阶段
游戏特征:
1:可跨平台。
2:收费。
3:用户之间的交互较强,但图形交互较差。
4:网络范围受限,仅依托于单一的服务商。
l 1995-至今。(为什么95年)
游戏特征:
1:MMORPG大型多人网络游戏。
2:图形方面很快获得了进展。
附:Quake带来了图形界的大变革。
中国电脑网络游戏路线
l 2000年开始,中国网游代理疯狂发展之时。市场混乱。
2000年 万王之王
2001年11月 传奇
l 2003年,一年内,中国网络依旧大肆代理,但个别本土单机游戏公司已经开始有动作,国外网游开始遭挫。
2003年1月 RO
2003年9月 剑侠情缘OL,大话西游
l 2004年开始中国网游已开始自主创作,运营的164款网游中,国产网游73款,占有率接近一半。
2003年12月 梦幻西游
l 2005年大陆网游消费能力不再疯狂上涨,市场趋于稳定。国家加大力度管理。网络游戏市场大规模洗牌。
2005年 WOW
游戏开发流程和部分分工 l 调研 – 开发 – 测试 – 运营
(我们公司的情况分析)
l 附加介绍:
游戏开发公司
游戏运营公司
游戏开发运营公司
开发部门构成: l 策划(灵魂)8-10人
l 主策划
l 执行策划
l 脚本策划
l 文案策划
l 关卡策划
l 数值策划
l 界面策划
l 程序(骨肉)8-10人
l 主程
l 客户端引擎
l 服务器端引擎
l 逻辑程序员
l 3D程序
l AI程序
l 物理程序
l 脚本程序
l 数据库程序
l 编辑器,工具程序员
l 美术(皮肤)20-30人
l 人物原画
l 人物建模美术
l 材质贴图美术
l 人物动作美术
l 场景原画
l 场景建模美术
l UI界面,图标平面美术
l 动画CG美术
l 特效美术
l 音乐音效
l 其他管理部门
开发组长(部门协调)
项目经理(项目整体把控)
通常开发流程是:
l 项目经理(产品经理):立项。(前期预估项目成本,风险,市场情况。中期重新评估)
l 主策划:游戏原型策划。(消费群体,能力,产品定位,游戏风格。)
l 执行策划:写初部策划案。(将主策的想法具体的细节实现,提前3-4月)
l 美术,程序:实现(基本是同时动工)
主要构架,测试主逻辑,测试引擎。
主功能,(图形,脚本,AI,数据库,网络的测试)
主逻辑模块,(战斗,聊天,换线,任务)
附逻辑模块,(好友,队伍,小地图等等)
游戏整和调试,(关卡串联,置入音效,策划数值调整)
l 宣传。(游戏官网以及周边的游戏功略说明书,游戏截图宣传等)
l 技术测试:白盒内部测试。代码效率,可扩展性,DEBUG功能移除,封包,加密测试。
l a测试:黑盒测试部测试。游戏内部测试(功能性测试)
l b测试:黑盒BEBUG测试。主要进行各种不合常理的行为操作的测试,和GM功能测试。
l 内测:重点测试服务器压力。
l 公测:获取用户群的信息表,已确定游戏的一些商业运营方式。
当代游戏的特点以及技术概述 整体行业近况:
l 运营成本增加,盈利模式趋同。
(由于国内游戏开发环境已经逐步完善,游戏与游戏之间,游戏公司与游戏公司之间的竞争加剧,游戏的商业化运营更加正式,做为游戏的重要的宣传手段,运营的投入也大幅增加,于是便分化出了游戏运营商和开发商。
根据Ireasch的2007年报告来说,中国67%游戏已经是PayToPlay转化为FreeToPlay,典型的有盛大的招牌《传奇》,都转为免费游戏+收费道具。)
l 产品老化严重,用户忠诚度很低。
(用户:蝗虫族。2/3以上玩家兼玩2种或2种以上的不同类型游戏。平均蜜月期不足1年半,国外玩家平均蜜月期为3年3月。
新的网游很多,但是能够冲破 WOW,传奇,西游 三大霸主的地位难度还是很大。很多游戏是热门抄作期一过,就完了。)
l 游戏产品类型五分天下,玩家群分化严重。
(回合制MMORPG:大话,梦幻,问道,水浒Q传
2D ARPG:传奇,征途
3D ARPG:魔兽。热血江湖,RF,天堂2,天龙八部
休闲游戏:跑跑卡丁车,劲舞团,街头篮球
棋牌类:QQ游戏,联众
)
l 跨行业合作性强。
(可口可乐,康师傅,百事可乐均进入游戏合作推广,游戏作为一种宣传媒体,这种宣传模式越来越被认可)
l 整体来说:中国网络游戏行业,面临机会和挑战并存。
(一部分厂商凭借稳固高质量的游戏产品和务实的运营开始崭露头角,一部分则因为产品运营原因,关门大吉。网游市场多极化发展,用户拥有了广泛的选择,对产品质量和用户氛围也越加注重,游戏公司必须和市场一起成熟起来,才能适应今后的发展。)
l 游戏程序发展方向:
代码重用性。出现引擎。
OO思想和效率的兼顾。C++语言的流行。
游戏可扩展性,灵活性。脚本语言的流行。
硬件的发展。3D将成为主流,虚拟现实VR,Web3D也大肆发展。
网络的发展。网络游戏的适用范围越来越大。分布式服务器的流行。(EVE)
AI,物理在游戏中占的比例越来越大。
1:引擎的作用。
将不同游戏的共同功能抽象出来,做为核心底层的封装的代码就是引擎。
最底层大致包括:计时器,内存管理,错误处理,输入设备处理,网络通讯,IO输入,基本的数据结构,取随机数大小值等基本数学方法函数,不同格式的文件数据类型读取。
稍高一层大致包括:音效管理,网络通讯管理,UI管理,对象管理,寻路,场景管理,渲染器管理,脚本管理,物理模拟库,AI状态机,数据库管理,图形管线,角色对象管理系统等。
若是3D游戏的话,在图形图象部分还要多出一些部分:Shader,粒子系统,渲染对象管理,2D精灵系统,地形,BSP树拣选,八叉树拣选,包围盒,摄象机,动态模糊,动态光照,碰撞检测,鼠标拣选,HDR等。
2:C++语言的发展。
相对C来说,OO思想更符合现在大型项目的开发思路,在效率上C++较之JAVA,C#等语言效率很高,可方便的嵌入汇编优化。
汇编: 快,超快又小巧。要是天才汇编程序员,比其他语言程序员做出的程序强大的多的多。可以学习起来极难,编写一个程序,需要极多的代码。完全没有任何移植性可言。我们不可能用它来做一个游戏,但是,局部可以汇编优化。MMX指令集。
VB: 容易上手和学习,但是没有由于照抄BASIC,丝毫没有结构感,OO表现难度过大。即时编辑和良好的插件还是很不错。但是应用系统太大,运行时间过长,运行时还需要一个左右的运行库,另外,支持且仅支持Windows,他是完全基于WindowsAPI开发。
JAVA: 强大。J2EE的企业级开发库支持的细节是非常强大的。但是做中小型项目又实在没有必要,J2SE的功能又凌杂的有些可怜。纯粹且完全的OO语言,使得非面向对象的思想完全活不下去。正因为JAVA的强大细节把握性,导致JAVA代码通常很冗长,没有做到轻便化。而且!最重要的是,不支持操作符重载,实在非常烦人。所谓的平台无关性也是一种说法而已,它本身就需要一个JVM运行环境,环境本身就是一个平台。JAVA的设计目的是安全性,可移植性,于是对内存地址访问被CUT了,所以在性能上容易有一些损失。总之一句话,它很象一个对C++的封装。
C#类似JAVA不重复多说。
3:脚本语言。
工作流程:脚本 – 行处理器(词法分析,语法分析) – 字节码流 – 解释器
特点:容易学习,代码可维护性强。
Lua,Pyth,Ruby,Perl各有优势,但Lua以轻量化,与C结合紧密出众,获得亲睐。
Ruby: 慢, Debug难度较大,没有成熟的作品(RM特殊),在日本流行度较高。
Lua: 轻量化,与C结合紧密。但教程极少,接口设计不够巧妙,也没有对大型应用设计出良好的支持。但游戏开发已经足够了。WOW,大话梦幻等。
Python: 老的脚本语言了。强大,有极高的阅读性,很好的扩展性,开发人员可以用C++等语言对Python本身进行扩展。当我们进行比较大型项目,将其拆分为大量单元,交由多数人进行开发时,阅读性,高效性,可维护性是脚本语言比较重视的部分,Python在这里做的很好,所以,Google,微软,Nokia都用Python.
4:3D成为主流。
3D的画面表现力比2D强,仿真性强,给人带来的代入感好,随着硬件的更新,3D是一种不可抗拒的趋势。
5:分布式服务器结构。
单服务器结构,开发效率快,逻辑简单,但是容量小,随着网络的发展,已经被抛弃。1500-2000
多服务器结构,可分为按地图划分服务器和按功能划分服务器。
按地图划分为服务器,大致会分为 世界服务器,地图服务器,网关服务器。当负责分配的世界服务器出现鼓掌,将使所有的地图服务器失效,因为数据是依照地图独立存储的,当某一地图服务器挂掉,将可能失去大量的数据。
按功能划分服务器是符合OO思想的一种设计,将一些密集型的功能分离开来,单独由一个服务器进行控制,这样的话,当一个服务器出现问题时,不会影响其他模块的运行,而且扩充性也比较优秀简单。
分布式服务器构架:支持远程对象调用,动态的分布节点吞吐,保证服务器受压平衡。但是在开发难度上较大。
6:AI,物理模拟在国内网络游戏开发中并没有过多的使用该功能。带过。
新人程序员应当熟悉的资料 l 主程
l 客户端引擎
l 服务器端引擎
l 逻辑程序员
l 3D程序
l AI程序
l 物理程序
l 脚本程序
l 数据库程序
l 编辑器,工具程序员
首先,我们看一下上面说的游戏程序员的种类,我们来谈一下,需要大致了解的东西。
【3D Graphics API 】
DirectX 9.0 SDK - Direct3D
OpenGL 2.0
【2D API】
DirectX 9.0 SDK - DirectMedia
Win32 GDI
【Input Device】
DirectX 9.0 SDK - DirectInput
【Audio】
DirectX 9.0 SDK - DirectSound / Direct3DSound / DirectMedia
OpenAL
【OS API】
Win32 SDK
MFC
【Network】
DirectX 9.0 SDK - DirectPlay
Socket library
l 注意,Lib库和引擎和API库是不同的。
Lib重点是拿来用它的接口的,大部分内部结构和命名比较糟糕,不推荐学习,有兴趣的话可以学习其中的算法。
API库重点是拿来用它的接口函数,对于内部结构,相当多的都被封装了,结构性和命名更加糟糕,例如,”_”是底层库专用,”__”是编译器专用。建议熟悉API的大致功能即可,对于其中的参数和API名称,没必要死记。
引擎是最值得研究的,它的重点是设计思想,对于项目开发来说,需要把作者的设计思路,和接口设计完全弄清楚才算合格。