关于手机游戏嵌入式开发程序移植的建议

http://tech.ddvip.com   2008年06月17日    社区交流

本文详细介绍关于手机游戏嵌入式开发程序移植的建议

  都是我在以前工作中总结的一些经验,可能对刚刚从事类似工作的朋友会有点儿用处,内容不多,绝对原创,呵呵…

  游戏移植建议(Symbian)

     希望提供需求及设计文档

  希望原始游戏可以提供需求及设计文档。虽然大部分游戏功能可以在运行时看到,但通过需求文档的话可以更全面的了解游戏的功能(尤其是在某些特定条件下被触发的事件)。通过比较详细的设计文档,结合代码中的注释在阅读程序时可以更快速的掌握游戏逻辑的结构。这里主要需要类之间的关系(继承,聚合,依赖等)图和一些关键部分的顺序图或状态图,而且同类游戏只需一个就可以。

     希望注意数组及结构的赋值方式

  如果在Symbian程序中出现类似这样的代码:

MGS_POINT pos[3]=
  {
     {0,(shell->GetScreenHeight()-selH)/2},
     {shell->GetScreenWidth()-selW,pos[0].y},
     {(shell->GetScreenWidth()-selW)/2,MENU_TOP_SELECT_Y},
  }
即数组中的某一元素与其它元素存在依赖关系,那么Symbian程序在编译的时候会出现问题(可能Symbian程序编译时对数组的赋值顺序比较特别)。因此希望其他系统的程序员最好能写成:

MGS_POINT pos[3]
  pos[0].x=0
  pos[0].y=(shell->GetScreenHeight()-selH)/2
  pos[1].x=shell->GetScreenWidth()-selW
  pos[1].y=pos[0].y
  pos[2].x=(shell->GetScreenWidth()-selW)/2
  pos[2].y=MENU_TOP_SELECT_Y
的方式。同样,对结构的赋值也与此类似。

     建议统一Shell类中的接口名称。

  在不同系统的CSystemShell中,有一些功能类似的接口在名称上不同。如PlaySound()和PlayMidea()等。如果所有平台能统一起来,在项目互相移植时可以省却许多不必要的麻烦。

     游戏消息处理方式的差异。

  在游戏开发里,一般当游戏(逻辑)要执行一些系统功能时,需要调用SystemShell类来和操作系统打交道。同样,当操作系统有一些消息(如按键,来电)要告诉游戏时,也需要调用SystemShell类来通知游戏。在具体实现时,不同的操作系统可能有一些差异,如:

  消息处理函数   调用位置

Symbian   Shell->OnKeyDown( )   CxxxxAppUi::HandleKeyEventL( )
  Shell->OnBreak( )   CxxxxAppUi::HandleForegroundEventL()
  Shell->Init( )   CxxxxAppUi::ConstructL()
Brew   Shell->OnKeyDown( )   xxxx_HandleEvent(…AEEEvent eCode,…)
switch (eCode) EVT_KEY
  Shell->OnBreak( )   xxxx_HandleEvent(…AEEEvent eCode,…)
switch (eCode) EVT_APP_SUSPEND
  Game-〉OnGameStart()   xxxx_HandleEvent(…AEEEvent eCode,…)
switch (eCode) EVT_APP_START

  注:在Symbian中,Game-〉OnGameStart()可以在Shell->Init( )中调用。

  在Brew里,xxxx_HandleEvent()函数在xxxx.cpp(xxxx为项目名)文件里。

     Symbian中RGB颜色的存储方式

  在Symbain中,RGB颜色的实际存储方式实际上是BRG顺序。如红色实际上保存为0x0000FF而非0x00FF0000。所以如果有其他平台用到Symbian中的颜色的话,请注意转换。

     在保存UTF8文档时,注意把“Add a Unicode Signature(BOM)”选项去掉,否则在文档开始的地方会有乱码(JAVA程序可能不需要)。

     Symbian程序退出时习惯使用右软键,其它系统可能不一样(如使用”C”键)。所以当在不同平台上有些功能键的使用习惯不一致时,请注意调整相应的键位。

责编:豆豆技术应用

正在加载评论...