android游戏开发的架构

在编写游戏代码之前,必须要仔细地理顺思路,清晰地构建出整个游戏的框架。有的开发者经常抱怨说,游戏开发到最后总是千头万绪,一旦出现bug就不知道该如何修改,身心疲惫甚至是痛不欲生。其实不然,只要搭建好了游戏的架构,就不会再走到骑虎难下的尬境,游戏开发就会成为一个极其享受的过程,成为一个高技术性的商业艺术创造过程。
  我们将逐步地展示“是男人就坚持20秒”游戏架构的搭建过程。在掌握策划案的基础上,开发者应该迅速作出判断,细分出游戏的功能模块。“是男人就坚持20秒”的功能模块可以如表9-3-4所示进行划分。

  

  ▲表9-3-4功能模块


  成了项目流程图之后,还不能直接进行Android游戏编程,项目执行流程和游戏运行流程是存在着较大差别的。因为项目流程图只是从用户体验角度(或者策划角度)进行的宏观描述,它只是起到过渡作用;而用于编程的流程图则是基于程序角度给出的微观描述,它将涉及到编程的实际环境。因此,我们还需要分析一下游戏实际运行的流程,而我们将要分析的这个流程就是传说中的“状态转换”。是男人就坚持20秒”的游戏状态相对比较简单,只有如表9-5所示的4种状态。

  

  ▲9-3-5游戏的4种状态


  当然,这个游戏总共就只有一关,所以关卡资源加载就只能加载唯一的一关的资源。
  接下来,就需要来做游戏状态的转换图了。状态转换一般通过有限自动机来表示,“是男人就坚持20秒”的状态转换比较简单,下面给出一种状态转换的参考图,如图9-3-5所示:

  

  ▲9-3-5游戏运行阶段细化流程图


  完成了前面几步的准备工作,框架基本上就已经出来了。虽然“是男人就坚持20秒”的架构比较简单,但是通用性和扩展性都比较强,下面的这段伪代码给出了一种高效的游戏框架,以供参考: While (游戏未结束)

  {

  State_change();
// 状态转换

  Update_fps();
// 状态执行

  Draw();
// 绘制

  }

  • State_change()函数完成游戏状态间的转换,可以根据图9
- 3状态转换图实现,不再赘述。

  • Update_fps()函数框架的伪代码如下:

  Update_fps()

  {

  Switch(游戏状态)

  
Case  资源加载:

  
Case  进入关卡:

  Load_gate();
// 加载背景、飞机、炮弹的图片。

  ase 游戏菜单:

  
If  (游戏结束) 计算游戏结果

  ase 游戏进行:

  New_paodan();
// 产生新炮弹

  Move();
// 计算出该时刻飞机以及所有炮弹所在的位置

  Is_pengzhuang();
// 碰撞判断

  ase 游戏暂停:

  Thread_pause();
// 游戏暂停操作。

  • Draw()函数框架的伪代码如下:

  Draw()

  {

  Switch(游戏状态)

  
Case  游戏进行:

  Draw_background();
// 绘制背景

  Draw_paodan();
// 画炮弹

  Draw_feiji();
// 画飞机

  
Case  其他:

  略....

  }




  注意:
  • 上述的draw()函数参考框架并不是适用于所有游戏的。特别是使用了3d特效,或者需要实现图层
  管理器的游戏。draw()函数应该根据实际需要量身定制。
  • 上述的draw()函数参考框架并不能保证绘图性能最优,高性能的图像绘制框架将非常复杂。
  完成了游戏架构之后,不要忘记把思考的结晶凝结为文档资料。建议完成如下文档:
  • 项目开发时程表
  • 功能模块划分及接口表
  • 技术备案表
  这三个表将帮助游戏开发人员明晰责权、监管制作,并为数据统计提供便利。
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值