1 典型游戏团队
1 工程师:
- runtime programmer:指制作引擎和游戏本身
- tool programmer:指制作离线工具供团队使用提高团队工作效率
2 艺术家:
- 概念艺术家:通过素描/绘画了解游戏预设的最终面貌
- 三维建模师:前景建模师(物体,角色,武器等)和背景建模师(地形、建筑等)
- 纹理艺术家:制作texture
- 灯光师:布置静态/动态光源
- 动画师:给角色加入动画
- 动画捕捉演员:提供原始的动作数据
- 音效设计师:制作和混合游戏中的音效及音乐
- 配音演员:为游戏角色配音
- 作曲家:为游戏创作音乐
3 游戏设计师:
负责设计玩家体验互动,设定故事主线、整体章节/关卡以及玩家的高层次目标
4 制作人:
资深游戏设计师的工作
5 其他管理人员:
IT技术支持、市场策划、法律、行政等
6 发行商及工作室:
发行商:游戏的市场策划、制造以及分销;
工作室:开发游戏
工作室会把他们制作的游戏卖给最好条件的发行商。
第一开发商(first-party developer):指游戏工作室直接隶属于游戏主机生产商(索尼、任天堂、微软)
2 游戏
1 定义
游戏是一种基于物质需求满足之上的,在一种特定时间、空间范围内遵循某种特定规则的,追求精神需求满足的社会行为方式。
2 电子游戏
- 基于代理模拟:模拟中多个独立的实体(成为代理)一起互动。
- 时间性模拟:游戏世界是动态的。
- 互动实时模拟:“时限”是所有实时模拟的核心概念,更新频率至少24次/s,以制造运动的错觉。大部分游戏为30帧或60帧每秒的频率渲染画面。物理模拟需要120帧/秒。
- 软实时系统:如果帧数不足,人类玩家在现实中不会因此而死亡。大部分电子虚拟游戏都属于此系统。
- 硬实时系统:错过期限可能会导致操作者损伤,如 直升机的航空电子系统和核能发电厂的控制棒。
3 游戏引擎
1 定义
是指一些已编写好的可编辑电脑游戏系统或者一些交互式实时图像应用程序的核心组件。
2 核心系统
- 断言assertion:是一种检查错误的代码。会插入代码中捕捉逻辑错误或找出与程序员原来假设不符的错误。
- 内存管理:自定义内存分配系统,以保证高速的内存分配及释放,并控制内存碎片所造成的负面影响。
- 数学库:提供矢量、矩阵、四元数旋转、三角学等几何操作、样条线操作、数值积分、解方程组等。
- 自定义数据结构及算法:提供一组工具去管理基础数据结构(链表、动态数组、二叉树、散列表等)以及算法(查找、排序)等。
3 资源管理
资源包括:三维模型资源、纹理资源、材质资源、字体资源、骨骼资源、碰撞资源、物理参数、游戏世界/地图等。
4 渲染引擎
是游戏引擎中最大及最复杂的组件之一,常采用分层架构。
-
低阶渲染器:包含引擎中全部原始的渲染功能
-
场景图/剔除优化:
-
视觉效果:
包括粒子系统、贴花系统decal system(用作弹孔、脚印等)、光照贴图及环境贴图、动态阴影、全屏后期处理效果(full-screen post effect)
-
前端:
使用一些二维图形去覆盖三维场景,目的:游戏的平视显示器HUD(heads-up display)、游戏内置菜单、主控台、其他开发工具、游戏内置图形用户界面GUI(graphical user interface)。
这类二维图形有两种渲染方法:
- 会用附有纹理的四边形quad,结合平行投影来渲染
- 完全三维的四边形公告板(billboard)渲染,这些公告板能一直面向摄像机
游戏内置电影IGC(in-game cinematics):可以在游戏本身以三维形式渲染电影情节。IGC可以故意暂停游戏,期间玩家不能控制角色。
5 剖析和调试工具
包括调试用绘图、游戏内置菜单、主控台,以及能够录制及回访游戏过程的功能,方便测试和调试。
如 Intel的VTune,IBM的Quantify.
6 碰撞和物理
术语:刚体动力学模拟 rigid body dynamics.游戏中通常只考虑刚体的运动,以及产生运动的力和力矩。
物理sdk有:Havok, PhysX.
7 动画
5种基本动画:精灵/纹理动画(sprite/texture),刚体层次结构动画,骨骼动画,每顶点动画,变形目标动画。
蒙皮skinning:骨骼中所有骨头的姿势以矩阵调色板(matrix palette)形式传至渲染引擎,之后渲染器利用矩阵表去转换顶点,每个顶点用一个或多个矩阵生成最终混合顶点位置。
8 人体学接口设备HID
human interface device,有时称作玩家输入/输出(I/O)组件。
如:键盘和鼠标,游戏手柄等游戏控制器
9 音频
包括DSP(digital signal processing)/效果,三维音频模型,音频播放/管理。
10 在线多人/网络
4种基本形式:
- 单屏多人single-screen multiplayer: 两个或以上的HID接到一台PC上。
- 切割屏多人split-screen multiplayer: 多个HID接到一台游戏机器,画面切割成多个区域使每位玩家可以看到自己的角色。
- 网络多人networked multiplayer:多台计算机用网络链接一起,每个机器接待一位玩家。
- 大型多人在线游戏 MMOG massively multiplayer online game: 数百位至数千位玩家能在一个巨大、持久、在线的游戏世界里玩,由强大的服务器组运行。
客户端于服务器之上:client-on-top-of-server模式
11 游戏性基础系统
游戏性gameplay:游戏内进行的活动、支配游戏虚拟世界的规则、玩家角色的能力、其他角色和对象的能力、玩家的长短期目标。
包括 游戏世界和游戏对象模型,事件系统,脚本系统,人工智能基础等。
12 个别游戏专用子系统
4 工具及资产管道
游戏引擎需要读取大量数据,数据形式包括游戏资产(game asset)、配置文件、脚本等。
1 数字内容创作工具
DCC=digital content creation
maya,3d max, soundforge, photoshop等
2 资产调节管道
DCC制作的数据需要导出为容易读取的标准格式或自定义格式,以便在游戏中使用。从DCC到游戏引擎的管道=资产调节管道。
3 三维模型/网格数据
- 笔刷几何图形
由凸包convex hull集合定义,每个凸包由多个平面定义。
优点:制作迅速简单;便于制作原型
缺点:分辨率低,难以制作复杂图形;不能支持有关节的物体 - 三维模型(网格)
网格由三角形和顶点组成,也可以由四边形和高次细分曲面建立。常在3d mav/maya里的ZBrush工具制作,向下转为有法线贴图normal map。
需要导出器exporter才能从DCC工具获取数据并存储为引擎可读的格式。
4 骨骼动画数据
骨骼网格是一种特殊网格,骨骼网格有时候称为皮肤。
每个顶点包含一组关节索引joint index,表明顶点绑定到骨骼上的哪些关节。每个顶点也包含一组关节权重joint weight,决定每个关节对该顶点的影响程度。
游戏引擎需要3种数据去渲染骨骼网格:
- 网格本身
- 骨骼层次架构,包含关节名字、父子关系、当网格绑定到骨骼时的姿势
- 一个至多个动画片段,指定关节如何随时间而动。
5 音频数据
wav最普遍
6 粒子系统数据
由Houdini可制作电影级别的效果,但大部分引擎不能渲染。
需自制的粒子效果编辑工具
7 游戏世界数据及世界编辑器