Cocos游戏设计心得(一)

工作有些年头了,我们都一直为自己的生活而努力着,没有过多的时间将工作以及生活书写一下,记录下来,还好最近终于闲了下来才有时间写写东西,今天我们来谈谈,一款游戏如何从头到脚后跟的设计。这里不排除我借用一些他人,我认为较为好的设计理念。希望对你们有所帮助。

一个游戏框架的开始是什么?

我认为是一个较为清晰的文件结构,如:你的启动文件,配置文件,逻辑文件,模块文件,游戏主体文件,游戏子体文件,等等都应该如何调理清晰的安置它们
对于开发过cocos-lua项目的同学一定对其目录结构并不陌生
Game/
├─── .settings/ vscode编辑器配置文件
├─── .vscode/ vscode lua插件debug配置
├─── frameworks/ cocos2dx框架目录
├─── res/ 游戏资源目录
├─── src/ 游戏脚本目录
├─── runtime/ 游戏调试运行时目录
├─── .gitignore git忽略文件配置
├─── Game.code-workspace vscode工程文件
├─── LICENSE 开源许可文件
└─── README.md 说明文档

我们需要如何构架自己的游戏结构呢?

首先认为我们要有一个自己游戏的专属目录,如Game,这里面可以封装游戏所涉及的所有内容

有了Game目录后我们就应该思考,如何让游戏启动起来,好了这里就有一个问题。cocos启动流程是什么?

原cocos-lua项目的启动流程:

1.初始化C++部分代码
2.绑定cocos中的接口道lua虚拟机中以供lua使用
3.使用lua虚拟机engine->executeScriptFile("main.lua")

现在我们要将其设计成这样的启动流程:

1. 初始化cocos2dx C++部分
2. 绑定cocos2dx到lua虚拟机
3. 使用zip解压方式加载启动包文件,形如这样 ZipAsset::unzip(FileUtils::getInstance()->fullPathForFilename("boot.zip").c_str(),FileUtils::getInstance()->getWritablePath().c_str(),NULL,true),当然你也可以使用pack包的形式进行这样的处理,效果其实是一样的。(后续将会解释如何得到zip或者pack,以及使用方法)
4. 使用lua虚拟机调用zip中的boot.lua文件启动

虚拟机调用lua文件前,我们执行了加载boot.zip包文件操作,并且我们执行的是boot.lua文件,其实这里的boot和原项目中的mian功能其实是一样的,只不过我们将它定义为启动包这样更为贴切一些,由于我们讲启动部分单独做了一个启动包,所以随后我们就可以加载自己的游戏主体包了,这里我感觉定义为main才比较好,所以main.lua会在其他包文件中(比如main.zip主体包),执行main.lua的部分我们放在boot.lua的最后好了。

启动包要做些什么事情和好处?

主要作用当然是启动游戏,让整个cocos引擎能够与lua虚拟机进行连接工作,从而让整个进程启动。

那我们把游戏启动部分单独分包有什么好处呢:
1. 启动游戏我们都知道需要启动时间,那么这个时间就必然出现黑屏的现象,所以避免有些游戏一上来就有很多的资源加载是很有必要的,毕竟玩家才是上帝,所以有了启动包boot.zip就能一定程度上的解决此类问题,当然有的同学会说,那不还有解压时间吗?当然不可否认启动时间是有的解压时间也是有的,但是这个时间一般是感觉不出加载时间。你总不能又让马儿跑又不给马儿草吧!
2. 启动包不单单是启动游戏,还可以包含游戏配置模块(读取游戏本地和远程配置)、游戏日志模块(初始化日志等)、游戏更新模块、游戏解压模块、游戏下载模块、游戏网络模块等。启动模块一般可以是通用的,而且和你的游戏是无关的。把整个游戏的更新模块定义在这里,如果我们要修复网络问题,换个更新方式什么的,更新这个包就完成了。是不是简单明了了很多。
3. 有了启动包的独立,我们就可以真正意义上达到了通用的目的,当然不排除要做一些小修改,如跟换游戏地址,LOGO什么的。

所以整体下来启动的流程就是如下了:

1. 如果是Debug模式,启动simulator。
2. 初始化通用模块。
3. 读取本地和远程配置文件。
4. 检查包文件更新。
5. 如果boot包需要更新,则更新boot包并重启启动流程。
6. 更新游戏main基础包。
7. 加载游戏main基础包。
8. 执行main.lua运行游戏主体。

(未完待续)下一期内容

好了今天就讲到这里,后面会详细地的讲一下每个部分的具体实现。有什么疑问,也可以向我提问,我们一起探讨。留下我的个人博客以供大家学习使用:http://taoqy666.com

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值