loading请求处理中...

如何理解移动游戏开发背景 手机游戏开发背景概况介绍

2021-12-01 06:12:58 阅读 10842次 标签: 手机游戏 作者: chenliwen666
  如果在一个内存不受约束的设备上,那要完成一个翻滚的背景不是一件难事,背景图能够被存为一个独自的位图,在每次需求刷新当时帧的时分,咱们能够简略的把需求完成的有些传到off-screen缓冲即可。但在特别的情况下,如Series 60设备中,这样的办法是不切实际的,手机游戏开发公司要注意的问题是,无论什么完成办法,其首要前提是削减堆和存储空间的运用。这需要咱们有技巧性的来操作。

    一、CTilemap框架
  在二层或三层中做一个选择吗?还是来定义一个可扩展的框架来包容他们吧,呵呵。这样的可扩展性来自于tilemap(贴图映射),tileset(贴图集)和tile classes(贴图类)之间的独立性。他们之间是独立的,几乎不需要了解对方。
  在这里,tilemaps和metatiles都是由CTilemap类来完成的,The only difference between the top and middle layers of the three-layer model is in the kind of sub-tilemap object referred to by each grid cell. This difference is eliminated by requiring only that the sub-tilemap object implement the interface MRenderable. Since CTilemap itself implements this interface, objects of class CTilemap can quite happily nest to any depth required.
  CTilemap同它所映射的对象的类型是互相独立的,因为这些都是由一个抽象类CTileset来提供的。在RetroBlaster例子中,有两个具体的tileset类:CRetroLeafTileset,他提供了CBitmapTile的对象;还有一个就是CRetroNodeTileset,他提供了CTilemap的对象。
  在这些两者中,tileset生成并拥有了相关联的对象,and only supplies the calling CTilemap object with pointer to them.(这种处理方式被成为“flyweight pool”,你需要小心的处理,这里必须先释放CTilemap后才能释放tileset,我们可以理解,如果不这样做,就会造成指针指向无效的对象。
  如果你构筑好顶级的tilemap,那可以直接的调用它的CTilemap::Render()来实现(描绘)它。它可以直接计算出哪个grid单元需要被输入到view窗口,并告诉每个相关联的sub-object去立即实现出来。这些处理将会交给metatiles去处理(其实还是调用的CTilemap),知道它接触到CBitmapTile对象,这个时候就可以利用相应的graphics context来进行输入了。
  二、Tiled(贴图)机制和它的局限
  对大多数游戏来说,游戏的背景是一个很大数值概念的象素范围,当然,你可以生成一个2048x2048象素的背景,但这样会严重消耗你的内存,因为一个4096色这样大的位图将占用4MB的堆空间(2048bytex2048byte=4MB),但一个Series60设备是不会为你准备这么多的RAM使用的。
  我们想到的第一个解决办法就是将整个背景切割为一个个grid(小格),然后每个小格都是一个位图。如果设计得当,那整个背景将天衣无缝的呈现在用户面前。这些位图被称为tiles(贴图)。所有的贴图(用来实现一个游戏的背景)组合起来被称为tileset(贴图集),而那个grid(小格)则称为为tilemap(贴图映射)。
  我们尽量减小tileset(贴图集)的大小,这样我们所要表现的游戏世界背景将是紧凑有效的:如果你有32个tiles(贴图),每个为32x32象素,这样一个64x64的tilemap(贴图映射)就可以完成你2048x2048的背景需要(64x64x32x32):)
  这样大约花费64kb在tileset(贴图集)-(32x32x32x2byte=64kb)上,而花费16kb在tilemap数组上(这里假设每个数组单位为32bit,则64x64x4=16kb)。
  假设大多数游戏都需要几个不同的tilesets来满足不同背景的需要,那所有tilesets所节省的容量将是非常客观的(只是64xnKB的计算了)
  对于一个中等体积大小的游戏来说,这样的方法已经足以应付了,但你可以做的更好:)在第一种方法里,你已经通过对那个2048x2048位图的拆解节约了巨大的内存空间。你可以称之为two-layered(两层)方案。这里处于第一层的grid单元映射到位于第二层的位图中。详情参见图(Figure 2)
  这里的映射属于多对一,也就是这个技巧使得我们节约了内存空间。
  现在请假设你采用的是三层映射方案,这里原处于第一层的grid单元被映射到中间层gird,而中间层的grid则映射到最低层的位图上。详情参见图(Figure 3)
  因为这两个双重映射的存在,因此你可以想象我们将比采用第一个方法节约更大的内存。
  可以想象的是前面那个64x64的tilemap将被拆解为更小体积,如一个位图中有1/3可以重复利用,那我们可以只需要(16)/3kb的容量。当然手机游戏开发工程师采用这种方法带来的影响是中间层需要一定的存储空间耗费,但在大多数游戏中,这些grids(通常称为metatile),可以配合不同的低层tilesets(贴图集)来使用,这样任何游戏只需要一个单独的metatileset。这个方法节省了大量的存储空间。了解移动游戏开发背景的意义就是可以根据背景来选择不同的风格或主题等等,以实现节约更多的内存空间,也可以实现扩展和关联。
 一品威客网汇聚众多优秀的专业设计师和服务商团队,随时为您提供IOS应用 Android应用 IPAD应用 微信公众平台开发 手机游戏开发 应用软件开发 Windowsphone Symbian应用 应用汉化等服务,欢迎上一品威客网。
  

推荐更多与“如何理解移动游戏开发背景 手机游戏开发背景概况介绍”相关推荐:

 游戏开发要学什么​  | 游戏结果的设定 | ios手游开发教程  | 手机Flash游戏特点 | 游戏开发实践

 游戏开发编程基础  | 安卓3d手机游戏 | 游戏开发JAVA语言 | Flash网页游戏开发 | 手游开发流程 

 游戏开发要学多久  | android游戏开发| 手机游戏开发流程 | 如何开发网页游戏  | 手游开发语言 



手游开发公司推荐

成为一品威客服务商,百万订单等您来有奖注册中

留言( 展开评论

快速发任务

价格是多少?怎样找到合适的人才?

官方顾问免费为您解答

 
手游开发相关任务
DESIGN TASK 更多
手机游戏开发

¥33000 已有1人投标

手机游戏开发三期

¥16500 已有1人投标

手机游戏开发及上架尾款

¥29998 已有1人投标

手机游戏开发及上架尾款

¥42654 已有1人投标

手机游戏开发及上架4期

¥50001 已有1人投标

手机游戏开发及上架3期

¥32999 已有1人投标

手机游戏开发二期

¥16500 已有1人投标