游戏引擎开发与应用最佳 实践 【引擎开发篇】 之二 :引擎模块划分(续)
上接 游戏引擎开发与应用最佳 实践 【引擎开发篇】 之一 :目录、引擎模块划分
http://app-adforce.jp/ad/p/r?_site=6905&_article=54854&_link=1713039&_image=1713040
com.foxugame.fox://
《开心锤子》是一款以探索箱子护送角色到达目标点为核心的游戏,结合通过数字判断箱子中是否存在危机。加入探索、收集、竞技、玩家成长元素,并延伸出多种游戏模式。以休闲益智娱乐为轴心,卡通Q版风格为背景,集成角色扮演、数字逻辑、关卡设计、多种多样的玩法、宠物系统、成就系统,包裹系统评分系统等多种元素。在这里可以体味数字解密,随机事件发生的气氛,挑战才智,构建出让自己进入卡通世界里解密的一款休闲游戏。 iOS下载地址: https://itunes.apple.com/cn/app/kai-xin-chui-zi/id1091140275?l=en&mt=8
/data/tombstones/ 目录下的文件 崩溃文件的目录
ndk-stack adb logcat | $_ndk_root/ndk-stack -sym ./obj/local/armeabi/ 查看错误的 stack 信息
另提供网络远程语音视屏的技术培训,包括: .net 、cocos2d、xna 、sqlsever、C++编程与技巧 、IOS游戏开发、ANDROID游戏开发相关的技术培训 300 元一个月,周一至周五 每天晚上8:30~9:30 详情请联系QQ:371741579 email:czjone@126.com
游戏管理库
设计图
把XNA相关的一些特性做一个封装,抽象出与我们业务更能直接适配的一个组件,让其他的开发者不用过多的去关心XNA的相关知识,降低了对XNA的学习要求,但是同时引入FLASH相关的一些适配(这样能为做动画提高一定的效率),让我们在做动画的时候最大程度的复原游戏的效果。
soundManager:处理播放声音相关的的一个帮助类,原则上应该为一个静态的。但是在本框架中采用了单列,别纠结。
resouceLoader:资源加载器,实现原理同上,但是上面的声音处理对象是依赖本对象的实例 的。
resouceManager:资源管理,负责奖路径数据转换成我们游戏中的资源对象。并提供一个异步的资源卸载方法。
Animal:2D动画的一个抽象,其中只包含一个可见区域的设置。
CLHelper:对MilHelper的一个扩充
Countainer:容器,也是本框架的重点,所有的对象都用容器与子对象的关系关联起来
Convert:为框架提供的一些数据系转换。
DisplayObject: 游戏对象。只要是在游戏中可见的。和需要控制其是否可见的,都 是本对象的了类。通过控制对抽象对象中的相关属性就能控制游戏中的一些对象的可见性,以及一些显示属性。
IScene:场景,组件对象操作接口。定义一些整体动画控制接口。
Path:路径对象,把持久数据与游戏对象中的数据关联起来。
PathAnimal:路径动画,通过注入一个动画对象和路径对象。把动画和路径绑定在一起。这样就能做到一个动画的整体控制,在整体控制的同时也提供了对动画的单独控制和对路径的单独控制。
ProgressBar:进度条的控制。
Scene:场景抽象,主要是为场景的变化来处理的一抽象。并提供了一个模式的alpha变化的过度显示,消失的效果
TextureAnimal:序列帧动画,对美术处理的序列帧动画做一个封装处理。
另提供网络远程语音视屏的技术培训,包括: .net 、cocos2d、xna 、sqlsever、C++编程与技巧 、IOS游戏开发、ANDROID游戏开发相关的技术培训 300 元一个月,周一至周五 每天晚上8:30~9:30 详情请联系QQ:371741579 email:czjone@126.com
Font:显示中文字的一个字体封装。
GameTexture:对Xna纹理对象的一个封装
IRender: 渲染器调用接口。处理渲染逻辑
RenderItem:渲染逻辑结构体
RenderManager:渲染队列
RenderSkin:渲染器,根据渲染队列中的数据,调用Xna的渲染接口,把渲染数据处理到窗口中。
Collection:自定的一个集合的实现
Decive:设备管理器
Game:游戏抽象对象
IContainer:容器接口
IExecute:执行器调用接口
IUpdate: 更新器调用接口
Log:日志对象
MilHelper:一些常用 的与游戏相关的函数封装
Setting:游戏 配置文件对象化封装
Timer: 游戏管理器
Vector: 通用 的一个4维向量
通信库
设计图
a) 设计说明
用串口的方式,处理软件与硬件间的建立一个通行的中间件,软件开发者不用过多的去关注通信的问题,只需要关心通信的数据问题,并最大程度的保证数据的正确可靠。
ByteArrayConverter: 将字节数组转换与无符号整数间的相互转换。
CrcManager: crc16校验库,验证硬件数据的正确性与完整性。
Des3Encipher:DES3 加密解密函数库,主要是用来检查加密解密通信的数据 。
CommunicationManager: 通信管理器静态类,用来进行串口通信的管理。
CommunicationSetting: 通信的一些可配置设置属性的解析。
CommWords:通信命令关键字约定
DataPackage:把通信中的数据与通信命令关键字一起封装成一个数据包。并对数据格式做一个对象化的描述
DataPackageAdapter: 数据包适配器,接收需要发送的命令,添加到Buffer中进行缓存,按照控制命令进行发送,接收串口设备收到的数据,添加的Buffer中逐个分析
DataPackageFactory: 数据包工厂类,用来制作数据包
LogManager:把收到的数据写入日志记录中。
SerialPortDevice:串口通信的一个封装。
通信数据解析库
设计图
CommandArgs:命令调用方法参数
Error:异常枚举
CommWords:命令关键字,与通信约定的包头
ControllerParmers:控制器构造时需要的参数的一个封包
ErrorFormate:把通信的相关错误提示转换成相应的
OperateStatus:硬件操作标识,当硬件发送过有效的数据后会使用本枚举来标示
GameState:游戏状态枚举
DataAdapter:数据适配,把通信有效的数据转换成我们游戏中的流程控制数据。
Controller:控制器,通过游戏流程数据,把数据转换成游戏的流程控制,这主要是硬件与软件间的相互控制解析。
CommArgs:控制器操作结果中的参数传递。
SetEndWaitArgs:硬件设置结果时的参数传递。
LoadArgs:资源加载启动时的参数
OnInitWaitArgs:启动待机时的参数
TimerTickArgs:开始倒计时需要的时间变化控制参数
SetTargetArgs:设置结果时的数据封包
Target:开奖结果对象化
数据流程适配库
设计图
Game:为同一类游戏做的一个游戏抽象,其中会包含游戏的设置,通信密钥,通信版本号。以及对控制器的组合。
SlotSetting:对游戏配置属性的一个扩展,把一些常用的配置信息,本配置文件对象属性不能包含敏感数据。
WelComeBase:开机阶段的一些数据抽象。
Welcome: 开机模块,这就是对开机各个阶段的模块切换。
WelcomegameState:开机模块当前所处的状态的一个数据化描述
GameRun:待机与送奖模块的组合,切换。
Background: 游戏运行时的一个通信的游戏背景,延续了plant word 在一些设计,具体可参考plant word的一些设计,主要作用就是把界面模块化
Element:对游戏中可能存在的一些元素进行的一个更高级别的抽象。其中还提供了一些元素创建的接口方法。
History:一个玩家的历史记录
HistoryData:历史记录中包含的数据,包含庄闲和的历史数据。
HistoryGroup: 对历史记录的模块的一个组合整体封装。
HistoryItem:每个历史记录元素对象化。
Role:待机位置与送奖时的角色对象封装,把名个阶段可能出现的一些模块封装到一个对象中,再把这个对象的引用传递到各个模块中。
RoleCollection:把游戏中存在的角色给一一的枚举出来放到一个集合中,由于开发时的不确定性没有把本类放到集合中。
RunAward:送奖模块,对游戏送奖过程做的一个多样化的一个控制。
ResultArgs: 结果参数,这个数据会提供给相应游戏的实现者,能过访问这个数据就可以把当前的游戏结果相关的一数据提炼出来。做到用不同的数据去操作不同的接口
OnBeginerunGuessArgs: 开始跑彩金的一个参数,指示出相应的彩金结果。
mailLight:跑灯模块的抽象。这个模块主要就是用来提供一些操作灯光效果的一个操作接口。
Special:翻倍奖的抽象,小猫,JP,彩金之类的翻倍效果都是用通过这个来控制的
Dragon:预警模块抽象。
LuckNumber:幸运坐位号模块
MultiPrizeWithIn:多灯同中抽象,大三元,大四喜之类的特殊送奖都是通过这个模块来实现的。
LEDAttribute: 由于所有的多灯同中都是能过多灯同中抽象模块来实现的。就需要用这个特性来区别游戏中的各个特殊效果是用什么样的数据来区别。
DoubleAttribute: 由于所有的翻倍效果都是能过翻倍模块来实现的。就需要用这个特性来区别游戏中的各个特殊效果是用什么样的数据来区别。
RunGuess:跑庄和闲模块的抽象。
ShowResult:显示单个结果的一个抽象
RunBounse: 跑彩金抽象
ShowMoreResult:显示多个结果抽象
游戏模版库
对一个基本的游戏提供一个默认的实现,也相当是提供一个DEMO。让大家更清晰明白我们的框架能做什么,
在框架使用解析的时候会做特殊交代
加载器
通过我们指定的模块接口,把我们的游戏模块装载到我们游戏中,就是把我们的游戏模块组合到一起,形成一个完成的应用程序,主要作用就是装载我们开发的模块。通过这个模块可以实现插件式开发,后面再花时间 来做单独的交代
未完 待续 ....
本文为原创,博客园为唯一官方博客,转载请说明出处....
若有问题请发 邮箱 czjone@126.com 或者加qq:371741579
另提供网络远程语音视屏的技术培训,包括: .net 、cocos2d、xna 、sqlsever、C++编程与技巧 、IOS游戏开发、ANDROID游戏开发相关的技术培训 300 元一个月,周一至周五 每天晚上8:30~9:30 详情请联系QQ:371741579 email:czjone@126.com