Skip to content

Commit 89504a9

Browse files
committed
修改格式
1 parent 9fb27e7 commit 89504a9

File tree

1 file changed

+43
-27
lines changed
  • 《游戏编程模式》读书笔记

1 file changed

+43
-27
lines changed

《游戏编程模式》读书笔记/README.md

Lines changed: 43 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,19 @@
11
# 《游戏编程模式》全书内容梗概总结
2-
---------------------
32

43
这是一篇超过万字读书笔记,总结了《游戏编程模式》一书中所有章节与内容的知识梗概。
54

65

76
![](media/1.png)
87

9-
8+
<br>
9+
<br>
1010

1111
全书内容思维导图
1212
----------------
1313

1414
![](media/2.png)
15+
<br>
16+
<br>
1517

1618
目录与说明
1719
----------
@@ -76,9 +78,10 @@
7678

7779
依次介绍完19种模式之后,最终给出了一些更多的参考与学习资源。
7880

81+
<br>
7982

8083
# 一、常用GOF设计模式
81-
---------------
84+
8285

8386
## 1. 命令模式 Command Pattern
8487

@@ -116,6 +119,7 @@
116119

117120
- 本节内容相关的中文翻译:<http://gpp.tkchu.me/command.html>
118121

122+
<br>
119123
## 2. 享元模式 Flyweight Pattern
120124

121125
享元模式,以共享的方式高效地支持大量的细粒度的对象。通过复用内存中已存在的对象,降低系统创建对象实例的性能消耗。
@@ -155,6 +159,7 @@
155159

156160
- 本节内容相关的中文翻译:<http://gpp.tkchu.me/flyweight.html>
157161

162+
<br>
158163
## 3. 观察者模式 Observer Pattern
159164

160165
观察者模式定义了对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。
@@ -185,6 +190,7 @@
185190

186191
- 本节内容相关的中文翻译:<http://gpp.tkchu.me/observer.html>
187192

193+
<br>
188194
## 4.原型模式 Prototype Pattern
189195

190196
用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。
@@ -215,6 +221,7 @@
215221

216222
- 本节内容相关的中文翻译: <http://gpp.tkchu.me/prototype.html>
217223

224+
<br>
218225
## 5.单例模式 Singleton Pattern
219226

220227
保证一个类只有一个实例,并且提供了访问该实例的全局访问点。
@@ -248,6 +255,7 @@
248255

249256
- 本节内容相关的中文翻译:<http://gpp.tkchu.me/singleton.html>
250257

258+
<br>
251259
## 6.状态模式 State Pattern
252260

253261
允许对象在当内部状态改变时改变其行为,就好像此对象改变了自己的类一样。
@@ -300,16 +308,18 @@
300308

301309
- 本节内容相关的中文翻译:<http://gpp.tkchu.me/state.html>
302310

303-
二、序列型模式 Sequencing Patterns
304-
-------------------------------
311+
<br>
312+
# 二、序列型模式 Sequencing Patterns
313+
314+
本章的三种模式都是游戏开发中的常客:
305315

306316
- 游戏循环是游戏运行的主心骨。
307317

308318
- 游戏对象通过更新方法来进行每帧的更新。
309319

310320
- 我们可以用双缓冲模式存储快照,来隐藏计算机的顺序执行,从而使得游戏世界能够同步更新。
311321

312-
## 双缓冲模式 Double Buffer
322+
## 7.双缓冲模式 Double Buffer
313323

314324
双缓冲模式,使用序列操作来模拟瞬间或者同时发生的事情。
315325

@@ -341,7 +351,8 @@
341351

342352
- 本节内容相关的中文翻译: <http://gpp.tkchu.me/double-buffer.html>
343353

344-
## 游戏循环模式 Game Loop
354+
<br>
355+
## 8.游戏循环模式 Game Loop
345356

346357
游戏循环模式,实现游戏运行过程中对用户输入处理和时间处理的解耦。
347358

@@ -369,7 +380,8 @@
369380

370381
- 本节内容相关的中文翻译:<http://gpp.tkchu.me/game-loop.html>
371382

372-
## 更新方法 Update Method
383+
<br>
384+
## 9.更新方法 Update Method
373385

374386
更新方法,通过每次处理一帧的行为来模拟一系列独立对象。
375387

@@ -403,8 +415,8 @@
403415

404416
- 本节内容相关的中文翻译:<http://gpp.tkchu.me/update-method.html>
405417

418+
<br>
406419
# 三、行为型模式 Behavioral Patterns
407-
-------------------------------
408420

409421
本章的模式可以帮助我们快速定义和完善多种多样的行为:
410422

@@ -414,6 +426,7 @@
414426

415427
- 字节码模式将行为从代码中拖出,放入数据。
416428

429+
<br>
417430
## 10. 字节码模式 Bytecode
418431

419432
字节码模式,将行为编码为虚拟机器上的指令,来赋予其数据的灵活性。从而让数据易于修改,易于加载,并与其他可执行部分相隔离。
@@ -451,6 +464,7 @@
451464

452465
- 本节内容相关的中文翻译:<http://gpp.tkchu.me/bytecode.html>
453466

467+
<br>
454468
## 11. 子类沙箱模式 Subclass Sandbox
455469

456470
用一系列由基类提供的操作定义子类中的行为。
@@ -480,15 +494,15 @@
480494

481495
- 这个模式与GOF模板方法正好相反。两种模式中,都使用了一系列受限操作实现方法。使用子类沙箱时,方法在推导类中,受限操作在基类中。使用模板方法时,基类有方法,而受限操作在推导类中。
482496

483-
- 你也可以认为这个模式是GOF外观模式的变形。
484-
外观模式将一系列不同系统藏在简化的API后。使用子类沙箱,基类起到了在子类前隐藏整个游戏引擎的作用。
497+
- 你也可以认为这个模式是GOF外观模式的变形。外观模式将一系列不同系统藏在简化的API后。使用子类沙箱,基类起到了在子类前隐藏整个游戏引擎的作用。
485498

486499
- 子类沙箱模式的Unity版本实现:<https://github.com/QianMo/Unity-Design-Pattern/tree/master/Assets/Game%20Programming%20Patterns/SubclassSandbox%20Pattern>
487500

488501
- 本节内容相关的英文原文:<http://gameprogrammingpatterns.com/subclass-sandbox.html>
489502

490503
- 本节内容相关的中文翻译:<http://gpp.tkchu.me/subclass-sandbox.html>
491504

505+
<br>
492506
## 12. 类型对象模式 Type Object
493507

494508
创造一个类A来允许灵活的创造新的类,而类A的每个实例都代表了不同类型的对象。
@@ -519,7 +533,8 @@
519533

520534
- 本节内容相关的中文翻译:<http://gpp.tkchu.me/type-object.html>
521535

522-
# 四、解耦模式Decoupling Patterns
536+
<br>
537+
# 四、解耦模式 Decoupling Patterns
523538
-------------------------------
524539

525540
- 组件模式将一个实体拆成多个,解耦不同的领域。
@@ -528,7 +543,8 @@
528543

529544
- 服务定位器让代码使用服务而无需绑定到提供服务的代码上。
530545

531-
## 13. 组件模式Component
546+
<br>
547+
## 13. 组件模式 Component
532548

533549
允许单一的实体跨越多个领域,无需这些领域彼此耦合。
534550

@@ -562,7 +578,8 @@
562578

563579
- 本节内容相关的中文翻译:<http://gpp.tkchu.me/component.html>
564580

565-
## 14. 事件队列模式Event Queue
581+
<br>
582+
## 14. 事件队列模式 Event Queue
566583

567584
事件队列模式,对消息或事件的发送与处理进行时间上的解耦。
568585

@@ -596,7 +613,8 @@
596613

597614
- 本节内容相关的中文翻译:<http://gpp.tkchu.me/event-queue.html>
598615

599-
## 15. 服务定位模式Service Locator
616+
<br>
617+
## 15. 服务定位模式 Service Locator
600618

601619
提供服务的全局接入点,而不必让用户和实现它的具体类耦合。
602620

@@ -628,8 +646,8 @@
628646

629647
- 本节内容相关的中文翻译:<http://gpp.tkchu.me/service-locator.html>
630648

631-
# 五、优化模式Optimization Patterns
632-
---------------------------------
649+
<br>
650+
# 五、优化模式 Optimization Patterns
633651

634652
这一部分,描述了几个优化和加速游戏的中间层模式:
635653

@@ -641,7 +659,7 @@
641659

642660
- 空间分区加速了虚拟世界和其中内容的空间布局。
643661

644-
## 16. 数据局部性模式Data Locality
662+
## 16. 数据局部性模式 Data Locality
645663

646664
合理组织数据,充分使用CPU的缓存来加速内存读取。
647665

@@ -654,15 +672,11 @@
654672

655673
### 使用场合
656674

657-
- 使用数据局部性的第一准则是在遇到性能问题时使用。
658-
不要将其应用在代码库不经常使用的角落上。
659-
优化代码后其结果往往更加复杂,更加缺乏灵活性。
675+
- 使用数据局部性的第一准则是在遇到性能问题时使用。不要将其应用在代码库不经常使用的角落上。优化代码后其结果往往更加复杂,更加缺乏灵活性。
660676

661-
- 就本模式而言,还得确认你的性能问题确实由缓存不命中而引发的。
662-
如果代码是因为其他原因而缓慢,这个模式自然就不会有帮助。
677+
- 就本模式而言,还得确认你的性能问题确实由缓存不命中而引发的。如果代码是因为其他原因而缓慢,这个模式自然就不会有帮助。
663678

664-
- 简单的性能评估方法是手动添加指令,用计时器检查代码中两点间消耗的时间。而为了找到糟糕的缓存使用情况,知道缓存不命中有多少发生,又是在哪里发生的,则需要使用更加复杂的工具
665-
—— profilers。
679+
- 简单的性能评估方法是手动添加指令,用计时器检查代码中两点间消耗的时间。而为了找到糟糕的缓存使用情况,知道缓存不命中有多少发生,又是在哪里发生的,则需要使用更加复杂的工具 ——profilers。
666680

667681
- 组件模式是为缓存优化的最常见例子。而任何需要接触很多数据的关键代码,考虑数据局部性都是很重要的。
668682

@@ -676,7 +690,8 @@
676690

677691
- 本节内容相关的中文翻译: <http://gpp.tkchu.me/data-locality.html>
678692

679-
## 17. 脏标识模式Dirty Flag
693+
<br>
694+
## 17. 脏标识模式 Dirty Flag
680695

681696
将工作延期至需要其结果时才去执行,以避免不必要的工作。
682697

@@ -709,7 +724,8 @@
709724

710725
- 本节内容相关的中文翻译: <http://gpp.tkchu.me/dirty-flag.html>
711726

712-
## 18. 对象池模式Object Pool
727+
<br>
728+
## 18. 对象池模式 Object Pool
713729

714730
放弃单独地分配和释放对象,从固定的池中重用对象,以提高性能和内存使用率
715731

0 commit comments

Comments
 (0)