游戏程序员的职业素养
- 掌握一定的计算机基础理论是十分必要的
- 具备良好的逻辑思维能力,计算机编程依托于各种数学和物理学原理,对于这些基础学科知识的学习和掌握是成为程序员的基础条件
- 深入地理解基本数据结构的概念和实现细节
- 对于职业的程序开发人员来说至少要掌握两种以上的计算机语言,这是程序员的立身之本。其中,C语言、C++语言及JAVA语言是需要重点掌握的开发工具
- 还要掌握一些简便的可视化开发语言,如VB、Power Builder、Delphi、CBuilder等,这些开发工具减小了开发难度,并能够强化程序员对象模型的概念
- 选择相应编译器
- 掌握数据库技能,对关系型数据库的关键元素要非常清楚,要熟练掌握SQL的基本语法
- 熟悉开发环境,简单来说就是要熟悉不同的操作系统平台
- 具备需求理解能力
- 团队精神和协作能力也是程序员所应具备的关键素质
游戏程序的职能分工
主程序 | 负责制订部门的工作进度表、负责游戏程序的整体构架、参与技术开发文档的设计、管理和指导团队人员的开发工作,保证整个团队部门的开发进度等 | 相当于程序团队的主管,也就是程序部门的最高领导 |
游戏引擎程序员 | 负责构建和设计开发游戏引擎的编程人员。构建游戏的基础开发平台,与其他程序员相比,他们会将更多的时间和目光放在对游戏逻辑和游戏内核的研制和封装上 | 在游戏引擎技术大行其道的今天,引擎俨然已成为整个开发流程中的核心 |
客户端程序员 | 负责游戏客户端的研发,他们更强调游戏的画面表现和一些人机界面的效果,如网络游戏中需要下载的客户端,就是这些程序人员的工作成果 | 图形程序主要负责游戏画面的显示,对于3D游戏来说,图形渲染包括模型、材质、贴图的显示,光照和阴影的效果等,这可以说是游戏编程中技术含量最高的部分。从事图形程序需要良好的3D数学训练,线性代数、图形学是最需要攻克的课程。此外,现在业界主流使用DirectX作为底层库,这也是比较基础的技能。 |
服务器端程序员 | 负责网络游戏服务器端的研发工作。由于网络游戏的特点,服务器端程序员往往更强调对游戏数据的处理和计算,而对游戏的画面表现并不在意,服务器端程序员必须让自己的程序能够接收和发送来自客户端的数据包,同时还要对这些数据进行相关的计算。 | 服务器端程序员更强调对游戏引擎的掌握,因为游戏的服务器端是否稳定,是真正决定一款游戏能否被广泛接受的主要原因之一,同时服务器端程序的好坏,直接关系到对游戏系统的维护和优化,甚至关系到外挂等网络游戏常见的相关问题 |
逻辑程序员 | 控制游戏世界的规则 | 在游戏世界中,你能看到的一切游戏玩法都要依赖逻辑程序来控制,在绝大多数情况下,逻辑程序在代码数量上占据了游戏程序的主体 |
界面程序员 | 负责编写人机界面 | ㅤ |
网络程序员 | 负责网络数据交换及优化 | ㅤ |
AI程序员 | 负责实现游戏人工智能 | ㅤ |
音频程序员 | 负责将音乐音效添加到游戏中 | ㅤ |
负责测试和保障游戏软件质量 | 测试程序员 | ㅤ |
游戏引擎
定义
游戏引擎就是用于控制所有游戏功能的主程序,从模型控制到计算碰撞、物理系统和物体的相对位置,再到接收玩家的输入,按照正确的音量输出声音等都属于游戏引擎的功能范畴。
完整成熟的游戏引擎必须包含以下几方面的功能
光影效果
即场景中的光源对所有物体的影响方式。游戏的光影效果完全是由引擎控制的,折射、反射等基本的光学原理及动态光源、彩色光源等高级效果都是通过游戏引擎的不同编程技术实现的
动画
目前游戏所采用的动画系统可以分为两种:一种是骨骼动画系统,另一种是模型动画系统。前者用内置的骨骼带动物体产生运动,比较常见;后者则是在模型的基础上直接进行变形。游戏引擎通过这两种动画系统的结合,能够使动画师为游戏中的对象制作出更加丰富的动画效果
提供物理系统
它可以使物体的运动遵循固定的规律,例如,当角色跳起的时候,系统内定的重力值将决定他能跳多高,他下落的速度有多快;另外,如子弹的飞行轨迹、车辆的颠簸方式等也都是由物理系统决定的。
碰撞探测是物理系统的核心部分,它可以探测游戏中各物体的物理边缘。当两个3D物体撞在一起的时候,这种技术可以防止它们相互穿过,这就确保了当你撞在墙上的时候,不会穿墙而过,也不会把墙撞倒,因为碰撞探测会根据角色和墙之间的特性确定两者的位置和相互的作用关系
渲染
当3D模型制作完毕后,游戏美术师会为模型添加材质和贴图,最后再通过引擎渲染把模型、动画、光影、特效等所有效果实时计算出来并展示在屏幕上,渲染模块在游戏引擎的所有部件当中是最复杂的,它的强大与否直接决定着最终游戏画面的质量。
负责玩家与计算机之间的沟通
包括处理来自键盘、鼠标、摇杆和其他外设的输入信号。如果游戏支持联网特性的话,网络代码也会被集成在引擎中,用于管理客户端与服务器之间的通信。
优秀游戏引擎所具备的优点
1.完整的游戏功能
随着游戏要求的提高,现在的游戏引擎不再是一个简单的3D图形引擎,而是涵盖了3D图形、音效处理、AI运算、物理碰撞等游戏中的各个组件,所以齐全的各项功能和模块化的组件设计是游戏引擎所必须实现的。
2.强大的编辑器和第三方插件
优秀的游戏引擎还要具备强大的编辑器,包括场景编辑、模型编辑、动画编辑、特效编辑等。编辑器的功能越强大,美工人员可发挥的余地就越大,做出的效果也越多。而插件的存在,使得第三方软件如3ds Max、Maya等可以与引擎对接,无缝实现模型的导入导出。
3.简洁有效的SDK接口
优秀的引擎会把复杂的图像算法封装在模块内,对外提供的则是简洁有效的SDK接口,有助于游戏开发人员迅速上手。这一点就像各种编程语言一样,越高级的语言越容易使用。
4.其他辅助支持
优秀的游戏引擎还提供网络、数据库、脚本等功能,这一点对于面向网游的引擎来说更为重要,因为网游要考虑服务器端的状况,要在保证优异画质的同时降低服务器端的极高压力。
世界主流游戏引擎
Unreal(虚幻)引擎 | 虚幻4可以处理极其细腻的模型,通常游戏的人物模型由几百至几千个多边形面组成,而虚幻4引擎可以创建一个数百万多边形面组成的超精细模型,并对模型进行细致渲染,然后得到一张高品质的法线贴图。除此之外,虚幻4引擎还具备新的材料流水线、蓝图视觉化脚本、直观蓝图调试、内容浏览器、人物动画、Matinee影院级工具集、全新地形和植被、后期处理效果、热重载(Hot Reload)、模拟与沉浸式视角、即时游戏预览、AI人工智能、音频、中间件集成等一系列全新特性。 |
CryEngine引擎 | 擅长超远视距的渲染,同时拥有先进的植被渲染系统,此外玩家在游戏关卡中不需要暂停来加载附近的地形,对于室内和室外的地形也可无缝过渡,游戏大量使用像素着色器,借助Crytek PolyBump法线贴图技术,使游戏中室内和室外的水平特征细节也得到了大幅提高。
采用CryEngine 2引擎所创造出来的世界可以说是一个惊为天人的游戏世界,它引入了白天和黑夜交替设计,静物与动植物的破坏、拣拾和丢弃系统,物体的重力效应,人或风力对植物、海浪的形变效应,爆炸的冲击波效应等一系列的场景特效,其视觉效果直逼真实世界。 |
Frostbite(寒霜)引擎 | 寒霜2.0引擎理论上支持100%物体破坏,包括载具、建筑、草木枝叶、普通物体、地形等(见图7-22),是名副其实的次时代游戏引擎。 |
Gamebryo引擎 | Gamebryo游戏引擎是由C++语言编写的多平台游戏引擎,支持的平台有Windows、Wii、PlayStation 2、PlayStation 3、Xbox和Xbox 360。Gamebryo是一个灵活多变、支持跨平台创作的游戏引擎和工具系统,无论是制作RPG或FPS游戏,或是一款小型桌面游戏,也无论游戏平台是PC、Playstation 3、Wii或者Xbox 360,Gamebryo游戏引擎都能在设计制作过程中起到极大的辅助作用,提升整个项目计划的进程效率。
灵活性是Gamebryo引擎设计原则的核心。由于Gamebryo游戏引擎具备超过10年的技术积累,使更多的功能开发工具以模块化的方式呈现,所以能够让开发者根据自己的需求开发各种不同类型的游戏。另外,Gamebryo的程序库允许开发者在不需修改源代码的情况下做最大限度的个性化制作。强大的动画整合也是Gamebryo引擎的特色,引擎几乎可以自动处理所有的动画值,这些动画值可从当今热门的DCC工具中导出。此外,Gamebryo的Animation Tool可让您混合任意数量的动画序列,创造出具有行业标准的产品,结合Gamebryo引擎中所提供的渲染、动画及特技效果功能,来制作任何风格的游戏。 |
BigWorld引擎 | BigWorld游戏引擎也是目前世界上唯一一套完整的服务器、客户端MMOG解决方案,整体引擎套件由服务器软件、内容创建工具、3D客户端引擎、服务器端实时管理工具组成,让整个游戏开发项目避免了未知、昂贵和耗时的软件研发风险,从而使授权客户能够专注于游戏本质的创作 |
Source引擎 | 真3D的游戏引擎,可以提供关于渲染、声效、动画、抗锯齿、界面、网络、美工创意和物理模拟等全方面的支持。Source引擎的特性是大幅度提升了物理系统的真实性和渲染效果,数码肌肉的应用让游戏中人物的动作神情更为逼真。Source引擎可以让游戏中的人物模拟情感和表达,每个人物的语言系统都是独立的,在编码文件的帮助下,和虚拟角色间的交流就像真实世界中一样 |
Unity 3D引擎 | 自身具备所有大型3D游戏引擎的基本功能,如高质量渲染系统、高级光照系统、粒子系统、动画系统、地形编辑系统、UI系统、物理引擎等,而且整体的视觉效果也不亚于现在市面上的主流大型3D引擎。在此基础上,Unity 3D引擎最大的优势在于多平台的发布支持和低廉的软件授权费用。Unity 3D引擎不仅支持苹果iOS和安卓平台的发布,同时也支持对PC、MAC、PS、Wii、Xbox等平台的发布 |
游戏引擎编辑器的基本功能
游戏引擎是一个十分复杂的综合概念,其中包括众多的内容,既有抽象的逻辑程序概念,也包括具象的实际操作平台,引擎编辑器就是游戏引擎中最为直观的交互平台,它承载了企划、美术制作人员与游戏程序的衔接任务。
一套成熟完整的游戏引擎编辑器一般包含以下几部分:场景地图编辑器、场景模型编辑器、角色模型编辑器、动画特效编辑器和任务编辑器,不同的编辑器负责不同的制作任务,以供不同的游戏制作人员使用。
场景地图编辑器
在以上所有的引擎编辑器中,最为重要的就是场景地图编辑器,因为其他编辑器制作完成的对象最后都要加入到场景地图编辑器中,也可以说整个游戏内容的搭建和制作都是在场景地图编辑器中完成的。
功能
1.地形编辑功能
地形编辑功能是引擎地图编辑器的重要功能之一,也是其最为基础的功能,通常来说3D游戏野外场景中的大部分地形、地表、山体等并非3ds Max制作的模型,而是利用场景地图编辑器生成并编辑制作完成的
2.模型的导入
在场景地图编辑器中完成地表的编辑制作后,就需要将模型导入到地图编辑器中,进行局部场景的编辑和整合,这就是引擎地图编辑器的另一重要功能——模型导入。
在3ds Max中制作完成模型之后,通常要将模型的重心归置到模型的中心,并将其归位到坐标系的中心位置,还要根据各自引擎和游戏的要求调整模型的大小比例,之后就要利用游戏引擎提供的导出工具,将模型从3ds Max导出为引擎需要的格式文件,然后将这种特定格式的文件导入到游戏引擎的模型库中,这样场景地图编辑器就可以在场景地图中随时导入和调用模型了。
3.添加粒子及动画特效
当场景地图的制作大致完成后,通常我们需要对场景进行修饰和润色,最基本的手段就是添加粒子特效和场景动画,这也是在场景地图编辑器中完成的。其实粒子特效和场景动画的编辑和制作并不是在场景地图编辑器中进行的,游戏引擎会提供专门的特效动画编辑器,具体特效和动画的制作都是在这个编辑器中来完成。之后与模型的操作方式和原理相同,就是把特效和动画导出为特定的格式文件,然后导入到游戏引擎的特效动画库中以供地图编辑器使用,地图编辑器中对特效动画的操作与普通场景模型的操作方式基本相同,都是对操作对象完成缩放、旋转、移动等基本操作,来配合整个场景的编辑、整合与制作。
4.设置物体属性
游戏引擎场景地图编辑器的另外一项功能就是设置模型物体的属性,这通常是高级游戏引擎会具备的一项功能,主要是对场景地图中的模型物体进行更加复杂的属性设置
5.设置触发事件和摄像机动画
设置触发事件和摄像机动画是属于游戏引擎的高级应用功能,通常是根据游戏剧情的需要来设置玩家与NPC的互动事件,或者是需要利用镜头来展示特定场景。




