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

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

初始化:

  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();

  场景系统

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

时间: 2024-12-16 22:27:29

动作卡牌游戏-系统设计-总体设计规划的相关文章

动作卡牌游戏-系统设计-场景和UI系统

熟悉coco2dx的人,可能都知道在引擎内部提供CCScene类,这是一个场景概念的类,而cocos2dx本身提供了切换场景的方法. CCScene t_scene; CCDirector::sharedDirector()->runWithScene(t_scene); 其实,我们要做而非去怎么改引擎.而是在引擎外部进行封装.抽象出各个系统,然后通过各个系统中调用引擎的功能,来实现我们的需求. 需求: 要实现一个场景,场景是动态的,上面漂浮着各种各样的小岛,场景当中有飞鸟,流水.上面有一层GU

CocosStdio 项目孵化记-动作卡牌游戏-系统设计-UI系统

根据解决方案,我们的UI是用Cocostdio的UI编辑器做的,在通过UI编辑器导出的资源是(.json文件 + 碎图). 这样,会出来一个JSON文件 ,例如A.json,然后一堆碎图.为什么不使用大图呢!因为,我们打算Texturepacker对碎图进行打包,来做资源优化. 这样拼接界面的事,就可以有策划或者美术或者其他人做了.程序可以安心的写代码了,只需要做某些特殊功能的时候,让拼界面的人员给制定的控件做好命名.然后程序根据这些命名写程序就OK了. 其实我们更关注的是如何把这些界面有规律的

TCG卡牌游戏研究:《炉石战记:魔兽英雄传》所做的改变

转自:http://www.gameres.com/665306.html TCG演进史 说到卡牌游戏,大家会联想到什么呢? 是历史悠久的扑克牌.风靡全球的<MTG 魔法风云会>与<游戏王>.结合数位与现实的<三国志大战>.或是在手机上掀起收集热潮的<龙族拼图>和<百万亚瑟王>? 卡牌游戏这个统称,其内容可以跟各式各样的玩法结合,而暴风雪新推出的<炉石战记>(以下简称炉石)所选择的玩法,是让玩家自行组牌.进行对战的「集换式卡牌游戏」(

卡牌游戏

卡牌游戏 个人信息:就读于燕大本科软件工程专业 目前大三; 本人博客:google搜索"cqs_2012"即可; 个人爱好:酷爱数据结构和算法,希望将来从事算法工作为人民作出自己的贡献; 编程语言:C++ 和 java ; 编程坏境:Windows 7 专业版 x64; 编程工具:vs2008; 制图工具:office 2010 powerpoint; 硬件信息:7G-3 笔记本; 真言 敢于承认不足,敢于去接触和学习,同时又沉稳而镇静 题目 百练 1003 How far can y

计蒜客 16877 卡牌游戏

题目链接:https://nanti.jisuanke.com/t/16877 题目大意:桌子上有N堆牌,每堆牌有Si张,每张牌上有个数.小明和小红玩游戏,小红女士优先,每次从任意一个牌堆顶部取出一张,小明长得丑,每次从任意一个牌堆底部取一张.假设他俩都按照最优的方式取牌,那么谁最后得到的所有牌的数字的和大. 解题思路:首先我们考虑牌个数为偶数的几堆,那么你会发现,无论小红选哪儿个,小明只要跟着她选对应牌堆底部的,那么他俩总会各选顶部或底部一半牌,而且无论谁先手都是一样,显然这样也是最优的(我不

【BZOJ3191】【JLOI2013】卡牌游戏 [DP]

卡牌游戏 Time Limit: 10 Sec  Memory Limit: 128 MB[Submit][Status][Discuss] Description N个人坐成一圈玩游戏.一开始我们把所有玩家按顺时针从1到N编号.首先第一回合是玩家1作为庄家.每个回合庄家都会随机(即按相等的概率)从卡牌堆里选择一张卡片,假设卡片上的数字为X,则庄家首先把卡片上的数字向所有玩家展示,然后按顺时针从庄家位置数第X个人将被处决即退出游戏.然后卡片将会被放回卡牌堆里并重新洗牌.被处决的人按顺时针的下一个

菜鸟教程 | egret EUI卡牌游戏制作

写在前面 随着越来越多的新人开始接触白鹭引擎,创作属于自己的游戏.考虑到初学者会遇到的一些实际操作问题,我们近期整理推出<菜鸟教程>系列的文档,以便更好的让这些开打着们快速上手,Egret大神们可以忽略此类内容.本文作者是我们技术支持部门的同事"熊猫少女".看文的小伙伴如果有问题可以来白鹭官方论坛与之交流. EUI是一套基于Egret核心显示列表的UI扩展库,它封装了大量的常用UI组件,能够满足大部分的交互界面需求,即使更加复杂的组件需求,您也可以基于EUI已有组件进行组合

[JLOI2013]卡牌游戏 概率DP

[JLOI2013]卡牌游戏 概率DP 题面 \(dfs\)复杂度爆炸,考虑DP.发现决策时,我们只用关心当前玩家是从庄家数第几个玩家与当前抽到的牌是啥.于是设计状态\(f[i][j]\)表示有\(i\)个人时,从庄家数第\(j\)个人的胜率.又因为此时终态确定\(f[1][1]=1\)(只有一个人时那个人胜率为100%),所以倒推回去. 转移时,枚举抽到的牌,算出从庄家数第\(t\)个会出局,那么下一局庄家就是第\(t+1\)个,当前局第\(j\)个就是下一局的第\(j-t(t< j)\)或\

JAVA面向对象编程课程设计——UNO卡牌游戏

一.团队介绍 团队名称:吉祥三宝 成员名称 任务分配 个人博客连接 赖慧颖(组长) 嘤 UNO卡牌游戏-个人博客 黄雅静 嘤 UNO卡牌游戏-个人博客 杨鸿漾 嘤 UNO卡牌游戏-个人博客 二.项目Git地址 UNO卡牌游戏 三.项目git提交记录截图 四.前期调查 五.项目功能架构图.主要功能流程图 六.面向对象设计包图.类图 七.项目运行截图或屏幕录制 八.项目关键代码 九.项目代码扫描结果及改正 十.项目总结 原文地址:https://www.cnblogs.com/yhy949/p/12