上一次大致说明了一下,使用Starling如何组织游戏入口,和窗体跳转,还有就是使用Starling进行开发时的一些分包情况,也就是层次结构了。每一个人都有每一个人的理解,软件工程这个东西真的没有所谓的银弹,所以就按照《Hungry hero》源代码来说明一下他的分包规则。
上一张图,就是《Hungry Hero》 的源代码,主要分为几个层!
+default package:
1、程序入口:HungryHero.as
2、游戏窗体切换逻辑:Game.as
3、资源:Assets.as Fonts.as ParticleAssets.as Sounds.as
4、配置信息常量: GameConstants.as
+com.hsharma.hungryHero
+customObjects
1、字体的模型类:Font.as
+events
1、自定义事件:NavigationEvent.as
+gameElements
1、背景层:BgLayer.as
2、背景层文档类:GameBackground.as
3、英雄模型类:Hero.as
4、元素(食物)模型类:Item.as
5、障碍物模型类:Obstacle.as
6、特殊道具模型类:Particle.as
+objectPools
1、元素池(食物):PoolItem.as
2、障碍物池:PoolObstacle.as
3、特殊物品池:PoolParticle.as
+screens
1、欢迎界面:Welcome.as
2、游戏界面:InGame.as
+ui
1、游戏结束组件:GameOverContainer.as
2、声音ui组件:SoundButton.as
3、暂停组件:PauseButton.as
4、字体组件:HUD.as
如果仔细梳理上面的分层结构及分包规则,我们可以看出整体可以按照下面的结构来看待
1、游戏入口
2、界面
3、模型
典型的MVC模式,C层较弱,仔细的将一些ui显示组件化,游戏运动的元素也进行了抽象出gameElements.as。如果要进一步脱离的话,那么screen还可以抽出一层contraller,将界面的监听和主循环脱离出来,将更好的降低代码耦合度吧,尽是个人理解。
分的包越多,抽象和设计越重要,编程也越麻烦,很难权衡,值得慢慢思考!希望大家能给出自己的一些模式,来分析一下优劣,相互学习一下。