如何实现游戏架构设计

1、什么是架构设计

最近公司招人,我负责面试程序员,人事发给我很多简历,我在阅读他们的简历时,经常会看到说自己会客户端架构设计,但当问到他们什么是架构设计时,基本上是一无所知。出现这种情况原因:一是自己对架构设计完全不懂,二就是为了增加简历的技术含量。在这里也给读者提个建议,针对技术的简历还是务实的比较好。把自己擅长的技术写上,不擅长或者不会的就不要写了,以免面试时出现尴尬的情况,给招聘的人感觉你态度及其不老实,印象分立马下来了。

图片描述

说到架构设计,就不得不提设计模式,《设计模式》是一本非常经典的著作。作为开发者来说,我们也不可能真正的完全掌握这23种设计模式。但是作为常用的设计模式必须要掌握的,比如单例模式,工厂模式,抽象工厂模式,状态模式等。为什么要做架构设计,我们开发一款产品,第一个面临的问题就是:客户或者说策划的需求是经常变化的。如果我们在编写程序时,不考虑这些需求变换,在你项目做的过程中或者在你项目即将完成时,一旦它的需求触及到你编写的核心逻辑,估计你就要把整个项目重新修改一遍,这给项目带来的是灾难性的后果。二是产品上线运营了,运营方面会根据产品做一些调整,换句话说可能增加一些内容或者修改一些功能,如果你的架构不清晰,这带来的也是灾难性的后果。针对这些问题,要求我们必须认真的做架构设计,架构设计的优势就是解决上述问题。架构设计就是能快速响应需求变换,还有可以快速的进行版本迭代,降低各个模块之间的耦合性,避免出现牵一发而动全身的问题。

2、如何做架构设计

 既然架构设计有很多优点,如何做架构设计?游戏架构设计的产生不是异想天开,没有固定的模式,每个项目产品不同,它的架构设计也是不同的,架构是根据需求设计的,在需求明确的情况下,开始架构设计,在这里要注意,不能为了架构而做架构设计。比如有的开发者开发一款24点小游戏,UI只有两个,它还在做UI的架构设计,类似这种就不需要考虑架构设计了,注意力在算法的实现以及优化上。在这里介绍的架构设计主要是针对一些比较大的项目,比如比较流行的大数据架构还有网络游戏的客户端和服务器架构等等。做架构之前首先要把产品的主要功能文档设计好,架构是根据产品的需求做架构设计的,在这里给读者介绍几种常用的架构设计,以游戏为例,在游戏开发中,UI是一个体量比较大的系统,UI的主要功能是承载数据显示,以及它自身的创建、显示、隐藏、销毁等功能。在这里不涉及到文档需求,只是给读者举个例子。实现这些功能:一种方式是使用硬编码,另一种是采用架构等等方式,显然硬编码并不适合产品开发,那只能采用第二种架构设计,通过它的简单功能介绍,它非常适合MVC设计模式,Model表示数据的更新,View表示的是界面显示,Controller表示的是控制界面的显示以及数据更新。最初MVC主要应用领域是在Web开发中,逐步被游戏开发采用,效果如图:

图片描述
上图是关于MVC的架构设计,对于MVC整个的控制使用了有限状态机,那它在UI中是如何运用的呢?接下来把View再细分一下,看下图:
图片描述
图中的Window是针对UI的设计,窗口首先抽象出一个基类,每个UI窗口对应自己的Window,UI窗口的Window使用的是WindowManager管理的。整个设计构成了View的显示。Model和Controller的设计比较简单,这里就不一一列举了。
接下来介绍游戏核心玩法的设计,以RPG游戏为例介绍,游戏中的角色有各种动作:比如走,跑,跳,待机,战斗等,其中战斗都很多种动作,各个动作之间可以互相切换。这个非常符合FSM有限状态机模式,设计图如下:
图片描述
首先编写一个基类,其他具体的类继承这个基类,当然我们还需要一个可以实现具体FSM状态转换的类,假定它的名字是Entity,这样整个FSM设计就完成了。除了这些,游戏中还有许多类模块,我们可以单独封装也可以采用工厂模式实现,在这里希望给读者起到抛砖引玉效果。不拘泥于形式,主要目的是解决问题,完成目标。

3、游戏架构设计总结

架构设计完成后,游戏的逻辑编写就是在架构的基础上实现的,做架构的优点是什么?或者说它有什么优势?我们并不是为了做架构而做架构,做架构的目的是解决问题,解决游戏中模块之间耦合性高的问题,解决游戏快速的应对需求变换问题,解决游戏功能快速扩展问题。架构设计还有一条对于在此架构基础上编写逻辑有一定的约束性,因为游戏的编写是需要多人配合完成,如果没有框架的约束,每人都按照自己的想法写逻辑,后面对于维护的人是相当麻烦的。也不利于游戏后期版本的迭代更新。另外还有一个优点,就是有利于代码的重构。总之,架构设计对于程序员掌控整个项目开发非常有帮助,这也是程序员必须掌握的。
 最后,笔者在自己出版的著作中都有关于架构设计方面详细的讲解,已出版著作有:《手把手教你架构3D游戏引擎》和《Unity3D实战核心技术详解》等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

海洋_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值