文档详情

基于cocos2d-x引擎的游戏框架设计.pdf

发布:2015-08-09约8.18千字共11页下载文档
文本预览下载声明
基于cocos2d-x 引擎的游戏框架设计 文文 / / 李成,李成,郑鑫郑鑫 文文 / / 李成李成,,郑鑫郑鑫 移动互联网浪潮正在彻底改变人们日常的生活习惯和生活方式。相应的,基于移动终端和感 应交互的游戏,也为人们带来了全新的游戏体验。本文,我们将结合目前流行的cocos2d-x 引擎,使用C++语言,基于iOS 平台,和大家分享iPhone、iPad 上游戏客户端的构架与 实现。 游戏架构与实现游戏架构与实现 游戏架构与实现游戏架构与实现 目前,很多基于cocos2d-x 的代码基本上仅是对引擎功能的使用,完全不能按照游戏项目 的标准来参考。作为游戏项目代码,不仅需要实现游戏的诸多功能,还需要从架构层面,从 模块设计的角度来思考和设计,使代码具有更好的复用性和拓展性。 对于游戏客户端,按照功能模块的区别可分为:引擎封装层模块、游戏数据管理模块、应用 程序配置模块、日志记录模块、网络管理模块、消息事件机制模块、输入输出控制模块、音 效管理模块、UI 系统模块、逻辑系统处理模块、调试器控制模块等。针对不同类型的游戏, 通常只需要单独实现最上层的游戏逻辑系统,而剩余的模块完全可以复用。下面将详细讲解 各个模块的职能与实现(暂不包含游戏逻辑系统)。 引擎封装模块(引擎封装模块 (EngineSystemEngineSystem)) 引擎封装模块引擎封装模块 ((EngineSystemEngineSystem)) 为了减少客户端代码对cocos2d-x 引擎的依赖程度和降低耦合度,我们建立了引擎封装层 模块,将引擎必要的初始化、逻辑更新、渲染和资源管理等操作全部交给引擎封装层处理, 使客户端的其他模块不需要过于依赖引擎层。同时,为了避免客户端代码中频繁、直接地调 用平台相关的诸多功能,我们还将一些平台相关的功能全部封装在引擎封装层模块内。 cocos2d-x 功能很多很强大,但在开发时,需要根据项目需要有条件选择引擎功能(当然, cocos2d-x 本身设计实现的很好)。例如,在引擎封装层内部,我们仅使用了一个CCScene 对象,在设计之初就刻意避免处理多个CCScene 之间的初始化、跳转、销毁、更新等操作, 极大地简化了逻辑层代码,降低了复杂度,且到目前为止,在表现效果上没有什么影响。 数据管理模块(数据管理模块 (DBSystemDBSystem)) 数据管理模块数据管理模块 ((DBSystemDBSystem)) 在开发过程中经常会存储和读取大量的静/动态数据,对比我们针对这部分设计了 DBSystem 模块,专门进行游戏数据层的管理。每种类型的游戏数据都会派生出一个具体的 类,如音效数据管理器、图片数据管理器等。这些数据管理器都在DBSystem 内部统一进 行初始化、更新和销毁,并各自使用单例模式。外层使用时,直接通过其类进行数据读取即 可,无须关心其初始化、逻辑更新、销毁等操作。同时,为了时刻对游戏的静态数据进行监 控,所有的数据模块都暴露了获取其所包含数据的接口,这样我们就可以在游戏中随时获取 数据层的信息,方便进行统计和监控。 应用配置系统(应用配置系统 (VariableSystemVariableSystem)) 应用配置系统应用配置系统 ((VariableSystemVariableSystem)) 开发者一般需要对应用属性进行可配置化处理:一方面可以方便开发者快速开启/屏蔽某些 功能;另一方面能更人性化地支持用户偏好设置。目前,我们根据类型的不同,建立了账号、 网络、日志三种配置文件,分别对游戏账号、游戏功能信息、游戏网络配置信息、游戏日志 配置信息进行动态设置,全部使用XML 进行数据存储和读取。 在开发中通常需要保存大量临时数据,这些数据往往被放在各个模块内部,如果其他模块需 要使用,就造成两个模块间强行依赖,增加了耦合度。所以,我们将所有临时需要的数据统 一定位为内存配置数据,放在我们的应用配置系统中,其和账号、网络、日志配置文件的区 别在于:基于文件配置的属性数据都需要在程序退出时强行写回文件,而基于内存配置的属 性数据无须保存。 音效控制模块(音效控制模块 (SoundSystemSoundSystem)) 音效控制模块音效控制模块 (
显示全部
相似文档