Android游戏开发系列直播(一) 游戏总体架构设计
一、前言
1. 游戏开发的难度
游戏开发对于没有涉及过或者没有机会参与过的人来说,确实是一件听神秘的东西。菠萝认为,设计游戏软件较之设计其他的一些常用CRUD软件系统,确实要稍微难一点,但是也没有传说中的那么难。
游戏开发更考验一个人对软件设计的能力,优良的设计才能保证游戏的高性能,高扩展,高并发。(这个看需求)
2. 关于游戏引擎
游戏引擎在菠萝看来,其实就是一个游戏模版,一个半成品的游戏,而这个半成品具有非常优越的扩展能力。从而使基于它的开发人员能够轻松自由且有依靠地编写自己的创意游戏,
当然,很多同学都有过使用游戏引擎的经验,如box2d之类的。在这些引擎的基础上开发游戏,确实会让开发效率大大提高。而使用引擎的不好处,就在于这些引擎会抽象并屏蔽游戏软件设计最精华的部分。如果你的目标是设计大神,那么显然,这些引擎的作用只是帮助你思维升华的一个demo;如果你的目标是快速的出一款游戏,并迅速获取某些认可,那么,恭喜你,这就是传说中的神器。
3. 本系列文章的目的
菠萝之所以出这套文章,最主要的目的是,通过游戏说说软件设计。在学习开发自己Android游戏的同时,对面向对象软件设计有一个深层次的了解。文章可能会涉及到众多的软件设计原则,软件设计模式,所以如果同学们对OO设计原则和OO设计模式不是很了解或者又忘了,可以去再复习复习。
本系列文章不会使用游戏引擎,而是全部重头构建一个Android游戏,包括从上面提炼一个引擎,我们准备开始。
二、游戏总体设计
1. 游戏架构概览
说了一大堆,终于到游戏实际游戏设计上了,先上一个游戏总体架构图,然后我一点点介绍每个块的职责。(菠萝认为,假设你已经具备UML基础)
图 1.1
首先,我们看到的是这个游戏架构的全景图,当然,里面并没有涉及到很多的细节。这个设计是基于职责驱动的,所以,这里首当其冲介绍第一个面向对象设计原则,SRP(设计原则①),即,单一职责原则:各部门负责各部门的事,你财务的就不要来趟开发的水,人事的你也就不要去管人家营销的事,钱准备好就行。
我们游戏设计也是一样子,各部门各司其职,各自在各自的领域自由发挥。松散耦合,提高内聚。
大伙儿之间通过GameContext这个总经理做协调,从而使整个游戏系统能够有条不紊的告诉跑起来。GameContext作为整个游戏系统的指挥家,他当然负责其调度主循环的工作。我们的游戏中设计有三套线程,分别为:游戏逻辑执行总循环,游戏操作事件监视 和 游戏视频渲染主循环。游戏音频 我们使用Android提供的Media和Sound即可,架构中定义好规范,先使用它做简单实现。
当然图1.1 中并没有提供所有的块,包括音频模块和力场模块,等等。这些再后面的文章中,菠萝会逐个列出。
这里也就使用到了第一个设计模式--调停者模式(设计模式①),调停者模式作为一个中介者模式,他的作用就是总经理。
从下一个章节开始,菠萝会逐步详细讲解,每一个模块的详细架构设计,同时一样会穿插设计模式和OO设计原则,希望同学们能够稍微给点鼓励。
俗话说,冰冻三尺,非一日之寒,今天我们就算是上点霜,慢慢深入,切莫浮躁。