游戏开发入门(二)游戏中的设计模式

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/u012999985/article/details/79090524

视频链接:游戏开发入门(二)游戏中的设计模式(3节课 时常:约2小时40分钟)
该视频主要围绕游戏中常见的设计模式展开讲解并实践,需要大家多多实践与理解


笔记与总结(请先学习视频内容):

1.有必要深刻的认识到设计模式的意义
游戏开发是一个软件工程,他的特点是需求极易变化。对于任何一个软件工程,我们要从代码的组织方式上来提高其可读性(别人也很容易理解),安全性(不能经常出bug),易用性(逻辑复杂,思路太偏,使用上各种麻烦),健壮性(要能良好的处理意外情况),可维护性(是否容易修复与修改),可拓展性(是否容易添加功能),封装和复用性(一段代码不要到处拷贝粘贴)

2.游戏项目的特点
对于游戏项目来说,除了上面的问题,我们更要注意其可拓展性,因为游戏的需求每天都可能发生变化,所以在写游戏逻辑的时候一定要尽可能的考虑多种情况,考虑到以后的修改是否方便等。因此,我们需要尽可能降低代码的耦合性,做到不同的功能尽可能不要互相影响。不过,这里的降低耦合不仅仅是指自己写的模块间的耦合,还有考虑与别人写的模块的耦合,尽可能做到不要过分依赖别人的模块,这样别人代码的一点修改不至于造成我们代码的大规模修改。

3.不要过度设计
因为需求变化太过频繁,很可能你针对当前需求设计的是否完美的一个方案在第二天需求变更时就完全失效了。另外,对一个需求的设计是需要时间成本的,也许花费一个星期才思考一个近乎完美的解决方案,但第二个星期需求就改了,这一个星期的时间几乎完全浪费。这一点几乎无法完全掌握,但是可以通过经验积累尽量避免问题。

4.游戏性能是一项非常重要的指标
游戏与其他软件不同的是,很多游戏逻辑不是消息驱动,需要每帧都去调用。所以,我们在向Tick()函数里面添加方法时,都要去思考能不能换一种方式驱动来减小函数执行的开销。

5.工厂模式:简单工厂,普通工厂,抽象工厂
所谓工厂,目的就是生产产品。所以,我们至少封装一个工厂类和一个产品类。一般来说呢,一个工厂又不会只生产一种产品。所以呢,我们把产品抽象一下,可以基于这个产品派生出多种类似的产品。这样就是一种简单工厂了,该工厂可以生产一个类型不同系列的多种产品。举例来说,一个制造厂生产民用飞机,战斗机,无人机。那么这三种飞机就是同一个类型(都是飞机),不过系列不同(应用场景不同)。

当然呢,有的时候为了分工明确,我不想一个工厂生产所有类型的产品,所以我把工厂抽象一下,不同类型的工厂生产相同类型不同系列的产品。这也是一种工厂模式,我们就称他为普通工厂吧。举例:我不能让战斗机与民用飞机在同一个厂子生产,所以呢,再弄一个新的战斗机制造厂专门生产战斗机,而民用机弄一个新的民用制造厂来制作。

那么什么是抽象工厂?
上面简单工厂不管怎么抽象,一个具体的工厂只生产一种特定的产品。抽象工厂的每个具体的工厂可以生产多种产品。举例:制造厂发现平时生产飞机多出来很多材料,扔了太浪费了,所以研究一下生产点小型汽车。这样,一个民用飞机制造厂又可以生产汽车了,然后改名为民用制造厂。战斗机工厂生产防弹车,改名叫军用制造厂。

对比一下简单工厂,普通工厂与抽象工厂:
简单工厂只有一种工厂,负责生产同一类型的所有产品,所以可以简单的都在一个工厂处理,工厂不需要抽象,但是由于产品可能有多种,所以产品有必要抽象。
普通工厂有多种工厂但是每个工厂只生产同一类型同一系列的一种产品,考虑到同一类型的产品可能有多种而且一个系列的产品对应一个工厂,所以产品与工厂都有必要抽象。
抽象工厂有多种工厂,每种工厂都可能生产多种类型的产品。考虑到同一类型的产品可能有多种,所以也有必要抽象。

游戏设计中的工厂模式: 游戏GamePlay逻辑游戏世界里面需要频繁生成与创建的对象都可以通过工厂模式来管理。如刷怪,然后可以根据怪的种类再进一步抽象成普通工厂。

6.Builder模式:
细分一个对象的构造细节并拆分,达到可以自由调整构造顺序以及构造内容的效果。

游戏设计中的Builder模式:使用不多,个人觉得可以通过这个创建不同类型的组装武器,可以拆分零件等。总之,可以重复利用同一个资源实现表现的多样性。

7.原型模式:
复制一个对象的实例,简单来说就是克隆。一般用在根据对象自己本身创建一个新的对象,隐藏对象创建细节。

游戏设计中的原型模式:一般编辑器里面拖拽进去的对象都是用类似的方法实现对象创建的,如Unity中的Prefab。首先玩家从资源文件拖拽一个对象到编辑器场景里面,这时候就创建了一个对象。随后,玩家点击play,新的世界就会clone一个完全一样的对象。

8.单例/单件:
整个程序运行中只存在唯一的一个全局对象。

游戏设计中的单例:比如一个全局的NPC管理,事件记录器,控制台管理等等。

9.观察者Observer模式/发布订阅模式:
当一个对象的状态发生改变时, 所有依赖于它的对象都得到通知并被自动更新。目标对象可以自由的绑定N个观察者,他不在乎订阅者都是谁,反正每次自己发生变化的时候就通知所有观察者,达到了降低耦合的目的。
发布订阅模式与观察者模式有区别,发布有一个统一的调度中心,订阅者(类比观察者)可以随意从调度中心订阅内容,发布者(类比目标对象)可以随时发布消息到调度中心,然后调度中心根据订阅者是否订阅来处理消息的发布。

游戏设计中的观察者模式:
比如任务系统中,所有接收同一个全局任务的玩家会收到任务的更新信息。该模式与C++语言中的多播代理的实现思路极为相似。

10.Adaptor适配器:
把完成同样的一个功能但是接口不能兼容的类桥接在一起使之可以在一起工作,主要处理旧的接口不兼容的问题。

游戏设计中的适配器模式:一般在项目或引擎代码更新后与原来接口不兼容,或者在一个新的游戏里面套用老项目代码的情况下使用。比如旧项目使用新引擎的功能,调用新引擎的底层接口。可以新建一个适配器继承旧的类,然后保存一个新引擎对应类类型的属性,调用旧的接口的时候覆盖原来的旧的逻辑改为新引擎对应类的接口,也可以为旧的类增加新引擎才有的新的接口。

11.Bridge桥接模式:
假如一个对象有两个维度的变化因素,那么可以通过继承抽象实现一个维度变化,通过在抽象类里面聚合另一个维度变化的因素(这里面也通过继承来抽象,而且还可以继续聚合抽象),这就是桥接模式。

游戏设计中的桥接模式:暂时还没有使用过。

12.Decorator装饰器:
就是对已经存在的某些类进行装饰,以此来扩展一些功能,装饰器的价值在于装饰,他并不影响被装饰类本身的核心功能。通常在一个继承的体系中,子类通常是互斥的,而有一些功能却是通用的,为了给不同的子类动态添加不同功能,就可以使用装饰器来达到这样的效果。

游戏设计中的桥接模式:暂时还没有使用过。


上一篇:游戏开发入门(一)游戏开发概述
下一篇:游戏开发入门(三)图形渲染

原文链接(转载请标明):http://blog.csdn.net/u012999985/article/details/79090524

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 《Head First设计模式》第版电子书是一本涵盖了23种不同设计模式入门级别书籍。其独特的学习方式,以及生动的案例和插图能够吸引读者的兴趣,使得学习设计模式变得更加轻松有趣。 此书使用了一种活泼有趣的学习方式,让读者通过图片、例子和场景故事的方式快乐地理解设计模式的各种特点和应用场景。在讲解设计模式之前,书还特地对程序设计基础进行了讲解,清晰易懂地让读者掌握这些基础知识。 读完本书,读者将获得深入设计模式的知识,特别对于初学者而言,这本书是一个非常好的选择。无论是初学者还是有一定经验的开发人员,都可以通过本书掌握设计模式,提高自己的编程技能。 总之,《Head First设计模式》第版电子书是一本非常有用的书籍,它不仅上升设计模式的认知,更让读者从获得对软件设计的理解,同时也提供了很多实用的技巧和工具,让读者能够更好地应用设计模式来解决实际问题。对于学习软件设计的人来说,这是一本不可多得的参考书。 ### 回答2: 《Head First设计模式版》是一本非常适合初学者阅读的设计模式书籍。与其他枯燥乏味的设计模式书籍不同,《Head First设计模式版》使用大量的图片、代码示例和幽默的语言,非常生动形象地解释了设计模式的概念和应用。 本书共包括23种设计模式,每一种模式都有详细的实现步骤、优缺点以及示例代码,读者可以快速掌握并且深入理解各种设计模式的使用场景和具体实现方法。 此外,本书还包括了大量的实际应用案例,比如游戏开发、咖啡店点餐系统等,让读者可以将所学的设计模式应用到真实的项目。 值得一提的是,本书的作者也是许多Java程序员非常熟悉的Kathy Sierra和Bert Bates。这两位作者在Java编程领域拥有非常高的知名度,并且是《Head First Java》的作者,因此质量可靠。 总的来说,《Head First设计模式版》是一本非常不错的设计模式书籍,适合想要系统学习设计模式的初学者和想要在实际项目应用设计模式的软件开发人员阅读。 ### 回答3: 《Head First设计模式》是一本系统、易于理解的设计模式入门书籍。第版在原有的基础上进行了全面的修订和更新,书增加了一些新的设计模式及案例,同时也修正了第一版部分问题和错误。本书通过采用具体的案例来讲解设计模式,同时大量使用图片、漫画、图表等形式进行说明,使得读者可以更加深入浅出地理解设计模式的应用。对于初学者来说,本书是非常友好的入门教材,对于有一定经验的开发者,则可以帮助其更好地理解设计模式,提高设计和开发水平。另外,第版电子书的特点在于方便查询和阅读,随时随地可以进行阅读,而且可以进行文字搜索。总之,《Head First设计模式》第版电子书是一本极具价值和实用性的设计模式入门书籍,无论是对于初学者还是资深开发者来说,都是一本必备的书籍。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值