码迷,mamicode.com
首页 > 其他好文 > 详细

动作卡牌游戏-系统设计-总体设计规划

时间:2015-01-03 22:17:43      阅读:216      评论:0      收藏:0      [点我收藏+]

标签:

一个软件项目的最高级别的抽象

初始化:

  init()

主循环:

while(1)

{

  逻辑更新

  图像更新

  //帧率

}

结束:

  destroy()

 

以上是最高层次的抽象,那么什么东西是逻辑,什么东西是图像。内存控制,帧率控制。这些都如何做到的呢。其实不难,随着分享的深入,其实我们才会慢慢的涉及到这些底层的问题。

很显然,在这个死循环中,执行的代码量越少,效率越高。这是一个基本的道理。

我们姑且把一款游戏的代码分成2部分,一部分在主循环内部,一部分在主循环外部。然后我们尽量在主循环内部放入简单高效的代码。

那么在主循环内部执行的代码,我们再分两部分,一部分长驻主循环内部,这部分代码一定要简单,高效。另一部分代码是根据需求,由外部模块动态的向主循环内部插入一些功能或者函数。

----------------------------------------------------------------------------------黄金分割线 以上是指导思想 哈哈--------------------------------------------------------------------------------------------------------------------------------------

先看下我们游戏的系统: 由于代码是从0开始设计,并未做更深入合理的划分,就是就目前状态而言

 

//增加外部逻辑  pDirector->setOutLogicForceUpdate(Out_Logic_Force_Update); (强制更新,每一帧都调用,即时cocos引擎暂停)

         pDirector->setOutLogicUpdate(Out_Logic_Update);(如果cocos引擎暂停,这里就不会调用)

  这部分,就是想引擎的主循环当中,插入了两个回调函数的指针。这是对cocos引擎本身扩展,以便于项目能够轻轻松松的想主循环中插入代码,

 

 //垃圾回收系统初始化  CRecycleMgr::GetInst()->init();

  这部分是垃圾回收系统,用于动态的回收一些纹理,临时数据结构,包含系统在一段时间内没有使用过的资源。它的update()写到了强制更新中,并给予设置帧率的功能,例如,可以使其在5帧调用一次,以后慢慢讨论这一块。

 

//时间控制系统  CTimeCtrl::GetInst()->init();

  这部分就是在最上层来改变cocos引擎执行的时间片源,可以实现某一个动作突然变慢的功能。

 

 //定时器系统  CTimerMgr::GetInst()->init();

  这部分是定时器控制,和垃圾回收功能相似,比如每隔多少秒触发一次动画。

 

  

 //屏幕适配  CScreenHelper::getInst()->init();

  这部分就是来做UI层的屏幕适配,场景也有场景的适配方案。

 

 //解表系统初始化  ClientConfigMgr::GetInst()->LoadGameConfig();  

  这部分是解析本地配表,客户端用到的很多配表。

 

 //脚本系统初始化  CLuaManager::getInst()->init(); 

  这部分是加载脚本部分。

 

 //回调系统初始化  CCallBackMgr::GetInst()->init();

  这部分主要是UI的回调部分,属于我们UI设计一大组成部分,需要慢慢详细去说。

 

 //技能系统初始化  CSkillMgr::GetInst()->init();

  这是技能系统。

 

 //GUI系统初始化  CGuiMgr::GetInst()->init();

  GUI系统

 

 //特效系统初始化  CEffectMgr::GetInst()->init();

  特效系统

 

 //动画系统初始化  CSkeMgr::GetInst()->init();

  动画系统

 

 //分系统初始化  CSubSysMgr::GetInst()->init();

  业务逻辑系统,与逻辑分系统

 

 //声音系统初始化  CSoundMgr::GetInst()->init();

  声音系统

 

 //场景初始化  CSceneMgr::GetInst()->init();

   场景系统

 

以上各个分系统都会慢慢的做分享。其实我们的整个系统设计,就像一棵大树,每个树枝都会散开下去,细化到树叶。

动作卡牌游戏-系统设计-总体设计规划

标签:

原文地址:http://www.cnblogs.com/freeze86/p/4199991.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!