第一章分类介绍1-RPG(Role-Playing Game)一角色扮演类:对人生的再现与模拟*三要素:艺术性+故事性+交互性*在故事性上,与电影的关系更加密切,“情节”由“剧本”严格限定,单线发展,给游戏者提供了虚假的主动性。(交互的虚假性:选择战争方式,对情节剧本不能变化)*虚假性原因:虽然给了玩家很多选择和自由度,但这些选择和自由度对故事情节的发展是毫无影响的。玩家在战斗和使用魔法时才有真正的自由,对于推进故事情节无能为力。玩家只能严格按要求去触发下一个事件,才能推进故事情节的发展。*克服虚假性(解决方法):需要精心构思一种固定的线性描述方式,使得观众在记忆中可以较好的建立整个故事情节。交互性要求玩家对于周围的环境和其他人物具有一定的自由度和控制能力,也就是对一个网状信息集合的动态改变和组合。橄榄状结构游戏(带多个支路的单线结构):这类游戏总的来说,与单线式差不多,一个开头,一个结局。但不同的是,在游戏过程中,它存在些分支,这些并不会影响到游戏的结局。2-Act一动作类游戏3-FPS-(First-Person Shooter)第一-视角射击*特色三维场景+第一视角提高了沉浸感;摆脱了一个路线前进的限制;智 能NPC(Non-Player Character)使得对手有了一定的智能性和适应性。*FPS要素1.三维关卡:关卡这个要素是从ACT游戏中继承的。整个游戏由一系列关卡组成。每个关卡有自己独特的三维场景。2.任务:玩家在个关卡里要完成的使命和要达到的目的。例如:夺取旗子、安置炸弹。3.智能NPC:N PC是具有一定智能和适应性的,不是由玩家来控制的敌方或者友方。游戏业人工智能技术的应用最初就是从NPC上发展起来的。NPC要 阻 碍(敌 方)或 者帮 助(友 方)玩 家 完 成 任 务。*FPS发展趋势第、提 高NPC的人工智能,引入小组机制,使 得FPS不仅仅是疯狂扫射和冲锋,而有了战术配合。第二,被FPS长期忽视的故事性也越来越得到强化。第三,联网对战使得FPS更加刺激。Half-Life代表了这三种趋势。4-FTG-格斗游戏5-RTS(Real-Time Strategy)-实时策略游戏应用了大量的先进技术:寻径算法,指令序列,人工智能实时:玩家和对手同时紧张的排兵布阵,和时间赛跑,紧张刺激策略:通过资源采集、生产、后勤、开拓来振兴本种族;通过各种军事指挥手段来击败敌人6-TBS(回合制策略游戏)7-SIM一模拟类游戏8-AVG一冒险类游戏游戏设计开发的三大基石1.策划(Vision):在现有条件、技术基础上规划、策划展现在玩家面前的情景。2.技术(Technology):三维图形,人工智能。3.过程(Process):稳定性、设计周期、设计成本。游戏项目组的三驾马车机构制片人主测试理制片人照时测试员工-M试员工-M络程序员IU二月员一户员Vision主游戏份计师 程序员3D户.员本作家理游戏设计师美卡设计师权限递减,距离总体,工作越具体术导美指游戏策划L游戏概述名称、时代背景、文化表现操作方式及界面结构与同类游戏的相同点和不同点2.游戏系统介绍3.该游戏的特色及问题网游一般包含子系统角色系统NPC及怪物系统战斗系统技能体系道具系统交流系统任务体系游戏界面第二章精灵动画概念英文为sprite animation 一幅背景图一组模板图(mask)将上一帧中精灵出现的地方用背景填充,并在新的指定地点绘制精灵精灵类基本功能图像分割图片frame设置精灵定位与绘制精灵转动与翻转精灵参照点和目标定位精灵碰撞检测如何用蒙版实现镂空(基本原理)1.初始2.蒙版与背景图做and运算3.镂空图与背景图做or运算几种地图拼接方式1.固定地图使用固定的背景作为地图将屏幕切割成棋盘状的一系列小块在内存中保持一个二维数组,保存每个小块对应的编号绘制时根据数组提供的信息,在每个小块画上相应图块for(yi=0;yiy 轴小地图个数;yi+)for(xi=0;xi Unix、OS/2等各平台都提供对OpenGL的支持什么是DirectXDirectX提供多媒体程序开发所需的全面的API支持图形,DirectX Graphics声音,DirectSound,DirectMusic交互,Directlnput多人网络游戏,DirectPlay流媒体,DirectShowOpenGL和DirectX相同点和不同点相同点1.在 图形绘制部分,基于相同的计算机图形学原理实现2.提 供绘制能力相当的图形绘制API(现在Windows平台上常用的OpenGL库,也是 Microsoft依据OpenGL标准实现的)不同点l.O penGL是跨平台标准,且有各个平台的实现;DirectX仅仅应用于W indows,由Microsoft独立开发2.0 penGL仅仅提供图形绘制功能,甚至没有交互功能;DirectX则提供了多媒体程序开发所需的全部API3.0 penGL各版本向后兼容;DirectX的体系结构则在不停变化,并不向后兼容目前应用1.一般显卡厂商都支持OpenGL和 D irectX,同时针对两者进行硬件优化2.教学、科研方面OpenGL是主流,游戏开发则基本采用DirectX3.需要跨平台应用时,只能用OpenGL3D引擎的基本功能1.物体建模与图元(Primitive)绘制2.矩阵变换3.颜色管理4.光照和材质5.纹理映射(Texture mapping)6.反走样(Antialiasing)7.图像特效8.双缓存(Double buffering)动画OGRE(Object-Oriented Graphics Rendering Engine在OpenGL和DirectX之上的引擎)提供了哪些功能1.资源管理2.场景优化3.碰撞检测4.高级纹理5.动画6.公告板与粒子系统O g r e 是一款图形渲染引擎,可以选择用D i r e c t X S D K 和 O p e n G L 库。图像渲染引擎的作用就是方便了 3 D 图像的显示和场景渲染,对 3 D 图形显示的库(D i r e c t X,O p e n G L)进行了二次封装。用。penGL描述太阳地球月球运动方式void drawSolar(float E,float e,float M,float m)drawSun();glPushMatrix();/drawing earthglRotatef(e,0.0,1.0,0.0);/rotating around the sun”glTranslatef(E,0.0,0.0);/set a distance away from sunglPushMatrix();/keep this matrix state of earth to draw moonglScalef(Width/20,Width/20,Width/20);/set the size of earthdrawSphere();/draw the earthglPopMatrix();/retrieve this matrix state of earth/drawing moonglRotatef(m,0.0,1.0,0.0);/rotating around the earthglTranslatef(M,0.0,0.0);/set a distance away from earthglScalef(Width/40,Width/40,Width/40);/set the size of mooondrawSphere();/draw the moonglPopMatrix();)用OpenGL的glut实现摄像漫游(qluLookAt参数)void gluLookAt(GLdouble eyex,GLdouble eyey,GLdouble eyez,GLdouble centerx,GLdouble centery,GLdouble centerz,GLdouble upx,GLdouble upy,GLdouble upz);float speed=0.2f;if(KEY_DOWN(VK_SHIFT)speed=speedM;if(KEY_DOWN(VK_LEFT)g_Angle-=speed*2;if(KEY_DOWN(VK_RIGHT)g_Angle+二 speed*2;rad_xz=float(3.14159*g_Angle/180.0f);求弧度if(KEY_DOWN(33)g_elev+=0.2f;if(KEY_DOWN(34)g_elev-=0.2f;if(g_dev 100)g_elev=100;if(KEY_DOWN(VK_UP)g_eye2+=sin(rad_xz)*speed;g_eye0+=cos(rad_xz)*speed;if(KEY_DOWN(VK_DOWN)g_eye2-=sin(rad_xz)*speed;g_eye 0-=cos(rad_xz)*speed;g_eyel=1.8;/对于非平地漫游有何问题g_look0=float(g_eye0+100*cos(rad_xz);g_look2=float(g_eye2+100*sin(rad_xz);g_lookfl=g_eyel;gluLookAt(g_eye0,g_eye 1 ,g_eye2,g_look0,g Jook 1 +g_elev,g_look2,0.0,1.0,0.0);return TRUE;设置光源1.GLfloat light_position=1.0,1.0,1.0,0.0;齐次坐标 x y z w2.glLightfv(GL_LIGHTO,GL_POSITION,light_position);/0 号光源位置3.glEnable(GLJLIGHTING);使光源生效4.glEnable(GL_LIGHTO);旋转光蠢绕着中间一个戒指转动void display(GLint spin)GLfloat light_position=0.0,0.0,1.5,1.0;glPushMatrix();glTranslatef(0.0,0.0,-5.0);glPushMatrix();glRotated(GLdouble)spin,1.0,0.0,0.0);glLightfv(GL_LIGHTO,GL_POSITION,light_position);glPopMatrix();auxSolidTorus(0.275,0.85);glPopMatrix();glFlush();/旋转光源什么是纹理滤波通过技术平滑te x e l和 pixel之间的对应。这种技术就是纹理滤波。void glTexParameterifv(target,pname,param);target可以是GL_TEXTURE_1D或 GL_TEXTURE_2D,指定使用一维或二维纹理为什么要采用纹理滤波我们的纹理是要贴到三维图形表面的,而三维图形上的pixel中心和纹理上的texel中心并不一至(pixel不一定对应texture上的采样中心tex e l),大小也不一定一至。当纹理大于三维图形表面时:导至一个像素被映射到许多纹理像素上;当维理小于三维图形表面时,许多个象素都映射到同一纹理。当这些情况发生时,贴图就会变得模糊或发生错位,马赛克。纹理滤波的几种方式1 .点采样滤波GL_NEAREST则采用坐标最靠近象素中心的纹素,这有可能使图像走样;2.双向滤波GL_LINEAR则采用最靠近象素中心的四个象素的加权平均值。GL_NEAREST所需计算比GL_LINEAR要少,因而执行得更快,但 GL_LINEAR提供了比较光滑的效果。3.三线性滤波Mip-map纹理滤波 当 2k d m);root-f();if(root-child!=NULL)traverse(root-chi 1 d);glPopMatrix();if(root-sibling!=NULL)trave