手机游戏场景开发 手机游戏场景管理办法
游戏场景是游戏中的建筑、机械、道具、山石树木等元素构成的虚拟环境。
游戏场景设计师是直接创造游戏世界环境的工程师。
在手机游戏开发中,一个制作细腻、精美的游戏场景能烘托整体游戏的气氛,将快速将玩家带到游戏剧情中,使游戏玩家能感悟到游戏策划者所想传递的游戏内涵与游戏文化。
场景是什么呢?场景就是游戏角色所存在的世界。在RPG、SLG、RTS等类型的游戏中,场景的概念比较明显,从视觉上看就是游戏的地图。不过从程序的角度看,场景是一种数据结构,不但包含了地图显示的图形信息也包含了角色在场景中活动所需要的物理信息和事件信息。比如地图上有些地方是不可以通过的,有些地方主角走过去会触发一个事件等等,这些信息往往包含在场景中。广义的场景还包含地图上的NPC信息,而狭义的场景仅包含地图和物理层。这里讨论狭义的场景,即不包含NPC信息的场景。
1、场景加速算法分类
当前主流的场景加速算法主要有这样几个大类:
(1)视域剔除:指的是将场景中在观察区域以外的多边形或物体在提交到渲染管线之前就剔除掉,从而可以大幅减少渲染他们的开销。
(2)遮挡剔除:指的是将场景中完全被别的物体遮挡住的多边形或物体在提交到渲染管线之前就剔除掉,从而可以大幅减少渲染他们的开销。
(3)LOD:为某个物体建立一系列不同精度的模型,在实际渲染的时候根据一定的规则选择合适精度的模型去渲染。从而降低整个系统的多边形数,而不会对视觉效果产生太大影响。
2、怎样组织图片显示场景
最常用的方法是拼Tile,俗称贴瓷砖。整个场景用有限的图块拼接而成。Game API中的TiledLayer就是这种方式。使用Tile方式,一般用一个二维数组表示一张地图。实际使用中,往往使用一维数组代替二维数组,这里为了讲解方便使用二维数组描述。二维数组很好的对应了二维坐标。二维数组的每一项对应地图上某格使用那个瓷砖,整个二维数组就表示整张地图。为了方便的编辑地图,往往需要开发地图编辑器,所见即所得的编辑地图,将生成的数据存储为文件,在游戏中通过读取文件获取数据。如果场景有多层,比如比较高的建筑物,就要编辑多层地图了。数据组织好了,渲染的时候只要按顺序将二维数组中的每一项对应的Tile在指定位置画出来。实际操作中,地图往往远远超出屏幕大小,这就涉及到卷轴的概念。在卷轴式地图中,屏幕可以看成是一个摄像机,每次只显示地图的一部分。随着主角的移动,屏幕所显示的部分跟着变化,形成卷轴。
卷轴式地图显示的时候,从屏幕(摄像机)所覆盖的第一个Tile开始绘制。需要注意的是屏幕所能覆盖的Tile包括部分覆盖的Tile。造成部分覆盖的原因是屏幕的卷动速度并不是Tile宽度的整数倍。在实际手机游戏开发中,卷轴速度往往可能是变化的,这样的卷轴显得比较自然。按照一定的顺序将屏幕所能覆盖到的所有Tile都绘制一遍,场景的绘制工作就完成了。这些Tile绘制的时候要采用相对于屏幕的坐标,而不是相对于地图的坐标。在2D游戏中经常用到屏幕坐标和地图坐标的转换。我的原则是所有的逻辑计算都统一在地图坐标上,只在最后渲染时才将逻辑坐标转换成屏幕坐标,对于场景和角色都一样。转换的方法很简单。设一个Tile(或角色)在地图上的坐标为(x,y),屏幕相对于地图的坐标为(sx,sy),那么Tile在屏幕上的坐标就是(x-sx,y-sy)。注意单位要统一,往往Tile的单位是格,所以要转换成像素单位,即格子坐标乘上Tile宽度或高度。将到这儿你会发现,其实我们已经实现了TiledLayer的主要功能,再加上管理Tile图片的部分一个简单的Tile引擎就成形了。不过你可千万不要满足,真正的游戏开发中场景引擎比这复杂的多,除了这种2D引擎还有2.5D的斜视角引擎,在渲染速度方面更是做了多方面的优化。
3、场景中的物理作用和事件检测
在场景中有些地方是无法通过的,有些地方走上去会触发某个机关,这些信息往往也存储在场景信息中,用另一个数组表示,一般称为物理层、地形层或事件层等等。最常用的信息就是碰撞信息,它用来处理角色和地图的碰撞。碰撞检测在游戏开发中是一个永恒的话题,而2D地图碰撞是其中最简单的一种。由于使用了物理层,我们只要计算出下一帧角色所要到达的位置是哪一格,如果这一格的物理层信息是不可通过,则组织角色前进。这种碰撞检测不同于物体间的碰撞检测,不必和所有的物体进行遍历判断,缺点是不够精确。减小物理层格子的大小可以提高精确度,但这会使数据变多。所以物理层的碰撞检测一般只用在地图上,如果有比较特殊的物体,就让它作为一个角色存在,利用角色间的碰撞检测。
以上就是手机游戏场景管理的办法,场景是一款手机游戏中极其重要的元素,特别对于手机RPG游戏来说,场景制作更是如此,在手机游戏这个虚拟娱乐世界里,一个制作细腻、精美的游戏场景能烘托整体游戏的气氛,将快速将玩家带到游戏剧情中,使游戏玩家能感悟到游戏策划者所想传递的游戏内涵与游戏文化。因此,手机游戏开发中场景制作师也是一直是各大游戏企业的稀缺热门职位。
游戏场景设计师是直接创造游戏世界环境的工程师。
在手机游戏开发中,一个制作细腻、精美的游戏场景能烘托整体游戏的气氛,将快速将玩家带到游戏剧情中,使游戏玩家能感悟到游戏策划者所想传递的游戏内涵与游戏文化。
场景是什么呢?场景就是游戏角色所存在的世界。在RPG、SLG、RTS等类型的游戏中,场景的概念比较明显,从视觉上看就是游戏的地图。不过从程序的角度看,场景是一种数据结构,不但包含了地图显示的图形信息也包含了角色在场景中活动所需要的物理信息和事件信息。比如地图上有些地方是不可以通过的,有些地方主角走过去会触发一个事件等等,这些信息往往包含在场景中。广义的场景还包含地图上的NPC信息,而狭义的场景仅包含地图和物理层。这里讨论狭义的场景,即不包含NPC信息的场景。
1、场景加速算法分类
当前主流的场景加速算法主要有这样几个大类:
(1)视域剔除:指的是将场景中在观察区域以外的多边形或物体在提交到渲染管线之前就剔除掉,从而可以大幅减少渲染他们的开销。
(2)遮挡剔除:指的是将场景中完全被别的物体遮挡住的多边形或物体在提交到渲染管线之前就剔除掉,从而可以大幅减少渲染他们的开销。
(3)LOD:为某个物体建立一系列不同精度的模型,在实际渲染的时候根据一定的规则选择合适精度的模型去渲染。从而降低整个系统的多边形数,而不会对视觉效果产生太大影响。
2、怎样组织图片显示场景
最常用的方法是拼Tile,俗称贴瓷砖。整个场景用有限的图块拼接而成。Game API中的TiledLayer就是这种方式。使用Tile方式,一般用一个二维数组表示一张地图。实际使用中,往往使用一维数组代替二维数组,这里为了讲解方便使用二维数组描述。二维数组很好的对应了二维坐标。二维数组的每一项对应地图上某格使用那个瓷砖,整个二维数组就表示整张地图。为了方便的编辑地图,往往需要开发地图编辑器,所见即所得的编辑地图,将生成的数据存储为文件,在游戏中通过读取文件获取数据。如果场景有多层,比如比较高的建筑物,就要编辑多层地图了。数据组织好了,渲染的时候只要按顺序将二维数组中的每一项对应的Tile在指定位置画出来。实际操作中,地图往往远远超出屏幕大小,这就涉及到卷轴的概念。在卷轴式地图中,屏幕可以看成是一个摄像机,每次只显示地图的一部分。随着主角的移动,屏幕所显示的部分跟着变化,形成卷轴。
卷轴式地图显示的时候,从屏幕(摄像机)所覆盖的第一个Tile开始绘制。需要注意的是屏幕所能覆盖的Tile包括部分覆盖的Tile。造成部分覆盖的原因是屏幕的卷动速度并不是Tile宽度的整数倍。在实际手机游戏开发中,卷轴速度往往可能是变化的,这样的卷轴显得比较自然。按照一定的顺序将屏幕所能覆盖到的所有Tile都绘制一遍,场景的绘制工作就完成了。这些Tile绘制的时候要采用相对于屏幕的坐标,而不是相对于地图的坐标。在2D游戏中经常用到屏幕坐标和地图坐标的转换。我的原则是所有的逻辑计算都统一在地图坐标上,只在最后渲染时才将逻辑坐标转换成屏幕坐标,对于场景和角色都一样。转换的方法很简单。设一个Tile(或角色)在地图上的坐标为(x,y),屏幕相对于地图的坐标为(sx,sy),那么Tile在屏幕上的坐标就是(x-sx,y-sy)。注意单位要统一,往往Tile的单位是格,所以要转换成像素单位,即格子坐标乘上Tile宽度或高度。将到这儿你会发现,其实我们已经实现了TiledLayer的主要功能,再加上管理Tile图片的部分一个简单的Tile引擎就成形了。不过你可千万不要满足,真正的游戏开发中场景引擎比这复杂的多,除了这种2D引擎还有2.5D的斜视角引擎,在渲染速度方面更是做了多方面的优化。
3、场景中的物理作用和事件检测
在场景中有些地方是无法通过的,有些地方走上去会触发某个机关,这些信息往往也存储在场景信息中,用另一个数组表示,一般称为物理层、地形层或事件层等等。最常用的信息就是碰撞信息,它用来处理角色和地图的碰撞。碰撞检测在游戏开发中是一个永恒的话题,而2D地图碰撞是其中最简单的一种。由于使用了物理层,我们只要计算出下一帧角色所要到达的位置是哪一格,如果这一格的物理层信息是不可通过,则组织角色前进。这种碰撞检测不同于物体间的碰撞检测,不必和所有的物体进行遍历判断,缺点是不够精确。减小物理层格子的大小可以提高精确度,但这会使数据变多。所以物理层的碰撞检测一般只用在地图上,如果有比较特殊的物体,就让它作为一个角色存在,利用角色间的碰撞检测。
以上就是手机游戏场景管理的办法,场景是一款手机游戏中极其重要的元素,特别对于手机RPG游戏来说,场景制作更是如此,在手机游戏这个虚拟娱乐世界里,一个制作细腻、精美的游戏场景能烘托整体游戏的气氛,将快速将玩家带到游戏剧情中,使游戏玩家能感悟到游戏策划者所想传递的游戏内涵与游戏文化。因此,手机游戏开发中场景制作师也是一直是各大游戏企业的稀缺热门职位。