android 2D游戏开发,引擎设计(一) 基本构思

突然很想做一个TD塔防游戏,
其实我一开始用了几个android框架写游戏,API不称手,感觉学习很累,特别是各种调不通查文档。
还是自己设计一个,以后可以自己移植用。不过制作游戏还是用专业的游戏开发引擎。



首先就是框架的设计和类的设计。一开始没有想法。,这个我肯定得写边思考,推翻重构。
基础想法是:
游戏开发基础原理:就是精灵有x y 坐标和高度宽度。用list来保存。画布不停的擦除,然后把list中所有的精灵绘制出来。碰撞....移除....事件....


写框架设计好否则就会出现某个类代码量很大,不好理解,灵活性差。

还要考虑如何移植到java,android都通用。

所以首先我搬一个现实生活中的例子,来思考框架如何轻松理解和灵活编写:



                                                                                                         拍电影剧本模式

你可能听说过一句话:玩了一款游戏就像看完一部电影。是的,没错我要举的例子就是拍电影模式。


有一个导演(开发者)想拍一部电影,(脑补哈利波特,悲惨世界...)
那么就会需要一个剧本舞台,
舞台上有各种各样的场景。
每个场景都有自己的脚本(灯光摄影师,区域事件.....)
舞台有一个剧本,比如有跳关之类的剧本.
每个演员手中都有一个剧本,

应该要有一个造型室(ModelFactory),遇到事件演员可以在那里换指定的几种造型(Model).

(造型可以使单例的,可以减少内存的浪费)



舞台(Stage)开始,舞台的剧本(Script)开始演出,剧本演到哪里该让哪个演员出来演。
主角和群众演员(Actor)每个人依照自己事先定义好的剧本(Script)开始演。

(误区:看到很多人把逻辑代码写到Actor里,这是不对的。
actor是万能的演员。你给它什么剧本,它会依据剧本中的故事情节去换造型。
这样很轻松就能完成变身,强化之类等游戏功能)



灯光摄影师(GameCanvas)负责显示演员或者特写。类似渲染引擎。


中间游戏过程:
比如主角会魔法,用闪电,然后舞台灯光师立刻放一道闪电。
所以演员和剧本这些都必须有舞台 场景 灯光摄影师的引用。


舞台切换场景(Scene),场景中有很多近景远景,就是图层(Layer)的概念
场景的另外一个含义等价于关卡。


舞台演出=游戏开始;
这样思路就明确了。


关于物理引擎,是舞台之上世界的属性
世界(World):物理引擎..,重力... 引力..反弹.....
游戏基础参数(Config)




类就会有:
World:世界,实现物理引擎
Config: 游戏基础参数
Stage:舞台
Actor 精灵(演员)   
Script:剧本
GameCanvas:灯光摄影师,负责显示场景。实现渲染引擎
GameSurfaceView:显示呈现整个游戏。
Action:动作,剧本是可以修改的,剧本可以添加修改或者删除一条动作
   IEventAction  事件动作  基于某个事件做出动作
   ITimeAction   时间动作  基于某个时间做出动作
Model:造型-如僵尸受伤造型,死亡造型,移动造型....
ModelFactory:造型库,初始化造型和提供造型
Scene场景 设计光卡之类
Layer图层 场景中绘制时区分远景和近景
SceneTouchListen 游戏画面点击 移动  ...等事件




伪代码1:
//新建游戏基本参数  重力0.1,摩擦力0.2,反弹力0.3 最小事件单位13毫秒..2D.........
Config config=new Config(0.1,0.2,0.3,13,"2d");
//创造一个基于这些参数的世界
World world=WorldFactor.CreateBy(config);
//创建一个舞台。
Stage stage=new Stage(wrold);
//设置游戏舞台剧本
stage.setScript(new StageScript());
//在舞台中创建一个场景
Scene scene=stage.Create(0);
//设置场景脚本
scene.setScript(new MyGameScript());
//舞台开始演出
stage.start();



2D游戏绘图基本原理


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值