From b2d9fa3ff078ed8e56ac05cd76691bca17c72c6a Mon Sep 17 00:00:00 2001 From: ChildhoodAndy Date: Mon, 4 Aug 2014 19:19:04 +0800 Subject: [PATCH 001/123] update read me update read me --- README.md | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 4c40a73..bdfdb07 100644 --- a/README.md +++ b/README.md @@ -65,5 +65,10 @@ Game-Programming-Patterns-CN 欢迎朋友们阅读并斧正,提交 Issue 或者 send pull request :] -能有所收获,便是我翻译中文的意义所在。 - +能有所收获,便是我们翻译中文的意义所在。 + +## 参与 + +- 在[Issue列表](https://github.com/GameDevelopmentCollege/Game-Programming-Patterns-CN/issues)中查看尚未领取的章节 +- 然后在[Issue1](https://github.com/GameDevelopmentCollege/Game-Programming-Patterns-CN/issues/1)中留言回复,我会更新Issue列表状态。 +- Folk项目后开始翻译,提交PR。 From 5bfa149bc81f6dfe4bc6804e2bd8af550ca94a96 Mon Sep 17 00:00:00 2001 From: ChildhoodAndy Date: Wed, 6 Aug 2014 12:40:16 +0800 Subject: [PATCH 002/123] add object pool --- 06.3-Object Pool.md | 439 +++++++++++++++++++++++++++++- res/object-pool-heap-fragment.png | Bin 0 -> 134950 bytes 2 files changed, 438 insertions(+), 1 deletion(-) create mode 100644 res/object-pool-heap-fragment.png diff --git a/06.3-Object Pool.md b/06.3-Object Pool.md index 5420eb9..7184e65 100644 --- a/06.3-Object Pool.md +++ b/06.3-Object Pool.md @@ -1,2 +1,439 @@ -Object Pool +# 对象池 ============================ + +## 目标 +通过用固定的池来重用对象的方法取代手动分配,释放对象,以达到提升性能和内存使用的目的。 + +## 动机 +我们正致力于我们游戏的视觉效果优化。当一个英雄施放魔法时,我们想让一个火星从屏幕闪烁着横穿并爆炸。这一特效将调用粒子系统——一个用来生成微小发光图形并在它们生存周期内产生动画的引擎。 + +由于光是一个魔棒就会引发数以百计的粒子生成,故我们的系统需要快速地生成它们。更重要的是,我们需要确保创建和销毁它们时不会带来内存碎片。 + +### 碎片化的害处 +控制台游戏编程(比如XBox360)从多方面而言都比传统的PC编程要更接近于嵌入式编程。就像嵌入式编程一样,控制台游戏必须在很长的一段时间内运行而不能有崩溃或是内存泄露的情况,而且多数情况下无法使用高效的内存压缩管理器。在这样的情况下内存碎片是致命的。 + +碎片化意味着我们空闲着的堆空间被破坏成了许多小的内存碎屑,而不是一整块连续的内存块。或许这些小碎屑构成的总可访问内存是大的,但其中最连续的区域却可能小得可怜。假设我们有14字节的空闲空间,但它被一个正被使用的内存块划分成了2个7字节的碎片——假如这时我们想分配一个12字节的对象,则会失败,屏幕上也不会出现任何闪光画面了。 + +(注解:碎片化:这就像在一条杂乱散布着车辆的热闹街区里尝试停车一样,如果他们首尾紧挨着,那么就能腾得出空间,但在乱停放的情况下这些空间却只是众车辆之间的碎片空间。) + +![](./res/object-pool-heap-fragment.png) + +上图解释了一个堆如何变得碎片化,以及这是如何导致内存分配失败(尽管在理论上有足够的空间供其分配)。 +就算碎片化的情况很少,它仍然在削减着堆并使其成为一个千疮百孔而不可用的泡沫块,严重局限了整个游戏的表现力。 + +许多控制台游戏制作者都要求游戏通过“浸泡测试”(soak tests)——他们将游戏置于demo模式连续地跑上好几天。假如游戏崩溃了,他们则不会让游戏投入市场。尽管浸泡测试的失败有时会来自极罕见的意外bug,但多数情况下碎片化的扩张或者是内存泄露才是导致游戏当机的原因。 + + +### 二者兼顾 +由于碎片化,以及内存分配缓慢的缘故,在游戏中何时以及如何管理内存需要十分谨慎。一个常用而有效的办法是:在游戏启动时分配一大块内存,直到游戏结束才释放它。但当我们在游戏运行过程中创建或销毁东西时,这一方法会成为系统的硬伤。 + +使用对象池使得我们二者兼顾:对于内存管理器而言,我们仅分配一大块内存直到游戏结束才释放它,对于内存池的使用者而言,我们可以按照自己的意愿来分配和释放对象。 + +## 对象池模式 +定义一个保持着可重用对象集合的对象池类。其中的每个对象支持对其”使用中”(“in use”)状态的访问,以确定这一对象目前是否“存活”(“alive”)。当对象池初始化时,它预先创建整个对象的集合(通常为一块连续堆区域),并将它们都置为”未使用” (“not in use”) 状态。 + +当你想要创建一个新对象时就向对象池请求。它将搜索到一个可用的对象,将其初始化为”使用中”(“in use”)状态并返回给你。当该对象不再被使用时,它将被置回”未使用” (“not in use”) 状态。使用该方法,对象便可以在无需进行内存(或其他资源的)分配的情况下进行任意的创建和销毁。 + +## 使用情境 +这一设计模式被广泛地应用在游戏中,如游戏实体对象,各种视觉特效,甚至是非可视化的数据结构,如当前播放的声音。我们在以下情况使用对象池: + +- 当你需要频繁地创建和销毁对象时。 +- 对象的大小一致时。 +- 在堆上进行对象内存分配较慢或者会产生内存碎片时。 +- 每个对象包含着较昂贵且可重用的资源(如数据库,网络的连接)时。 + +## 使用须知 +你一般依赖于一个垃圾回收器或只是简单地new/delete来为项目进行内存管理。而通过使用对象池,你就是在告诉系统:”我比你更通晓这些字节该如何管理。”也就意味这个模式的规则是完全由你来负责制定的。 + +### 对象池可能在闲置的对象上浪费内存 +对象池的大小需要根据游戏的需求量身定制。在确定大小时,分配过小的情况往往很明显(任何一个崩溃都能告诉你这一点),但要同时注意不能让池子过大。一个大小适中的池可以腾出空余的内存来供其它模块使用。 + +### 任意时刻处于”使用中”状态的对象数目恒定 +从某些角度上说这是件好事。将内存划分为几个独立的对象池用于不同类型的对象管理,这一点保证诸如下面的这些情况不会发生:例如,一大连串的爆炸动画不会致使你的粒子系统把所有的可有内存全部占用,也能避免创建敌人时的类似情况。 + +然而,这也意味着你要为如下情况做好准备:当你希望向对象池申请重用某个对象时,可能会失败,因为它们都在被使用。以下是一些针对此问题的常见对策: + +- 彻底根除。这也是最常见的方法:约束对象池的大小令其不论使用者如何分配都不会致使溢出。对于重要的对象池,如怪物或游戏道具池,这往往是行之有效的。并没有什么所谓正确的方法来处理当玩家到达关卡尾部时没有任何空闲的空间来创建”大Boss”这样的情况,所以最聪明的办法还是从根本上避免其发生。 +- 上述方法的负面是,它会令你仅仅为了十分罕见的边际情况而腾出许多空闲的对象空间。鉴于此,单一的固定大小的对象池并不适用于所有的游戏状态。例如,有些关卡显著偏重于特效而另一些则偏重于音效。在此情况下,可以考虑针对不同的场景将池调整至不同尺寸。 +- 不创建对象。这听起来很残忍,但它在诸如粒子系统中十分奏效。假如所有的粒子对象都处于使用状态,那么屏幕将可能被闪光的图元所覆盖。玩家将不会注意到下一次的爆炸效果是否和当前的效果是否一样炫。 +- 强行清理现存对象。以一个音效对象池为例,并假设你想要播放新的一段音效但对象池满了。你并不希望直接忽视掉这个新的音效:玩家会注意到他们的魔杖在施法时有时带着咒语而有时却不听话地沉默了。解决方案是,检索当前播放的音效中最不引人注意的并以我们的新音效替换之。新的音效将掩盖旧音效的中断。 +- 一般来说,如果新对象的出现能让我们无法觉察到既有对象的消失,那么清理现存对象的方法会是一个好选择。 +- 增加对象池的大小。假如游戏允许你调配更多的内存,你可以在运行时对对象池扩容,或者增设一个二级的溢出池。假如你通过上述任一种方法获取到更多内存,那么当这些额外空间不再被占用时你就必须考虑是否将池的大小恢复到扩容之前。 + + +### 每个对象的内存大小是固定的 +多数对象池在实现时将对象原地存入一个数组中。假如你的所有的对象都属于同一类型,没问题。然而假如你希望在池中存入不同类型的对象,或者子类型(带有额外的类成员),那么你就必须保证对象池中的每个槽都能容纳这些类型中尺寸最大者。否则一个未知的大对象将占去相邻对象的空间,并导致内存崩溃。 + +与此同时,当你的对象大小不一时,将浪费内存——因为每个对象槽的大小都被要求容得下尺寸最大的那个。假如多数对象的尺寸不那么大,那么每当你置入一个小对象时就在浪费内存。就像你在机场为自己的钱包拉了个大托运一样。 + +当你发现自己像这样浪费掉许多内存时,考虑根据对象的尺寸将一个池划分为多个——大的装行李,小的装口袋里的杂物。 + +这是一个实现内存高效利用的通用设计模式。管理器持有许多块尺寸不同的池。当你向它们申请一块时,管理器将从池里挑选合适大小的块并返回给你。 + +### 被重用的对象并不会自动清除 +多数内存管理器都有一个排错特性:它们会将刚分配或者刚释放的内存置成某些特定值(比如0xdeadbeef),这一做法将帮助你找到那些由”未初始化的变量”或者”使用了已释放的内存块”引发的致命错误。 + +由于我们的对象池并不通过内存管理器来重用对象,故我们将脱离这张安全网。更可怕的是,这些”新”对象使用的内存先前存储着另一个同类型的对象。这将使你几乎无法分辨自己是否在创建对象时已将它们初始化——这块存储新对象的内存可能在其先前的生命周期中已经包含了完全相同的数据。 + +鉴于此,需要特别注意在对象池中初始化对象的部分要对新创建的对象完整地初始化。甚至值得花些功夫为在为清理对象槽内存时增设一个排错功能。(推荐清空后将其内存值置为0x1deadb0b) + +### 未使用的对象将占用内存 +对象池在那些支持垃圾回收机制的系统中较少被使用,因为内存管理器通常会替你进行内存碎片处理。当然对象池在节省分配和释放时开销方面依然有所作为,在CPU处理速度较慢且回收机制叫简单的移动平台上尤为如此。 + +假如你使用了对象池,请注意一个潜在的矛盾:由于对象池在对象不再被使用时并不真正地释放它们,故它们仍占用内存。假如它们包含了指向其他对象的引用,这也将阻碍回收机制对它们进行释放。为避免这些问题,当对象池中的对象不再被需要时,应当清空它指向其他任何对象的引用。 + +## 例子 +模拟现实的粒子系统常常会应用到重力,风力,摩擦力以及其他物理效果。在简化的示例中,我们只是在几帧的时间内将粒子沿着直线移动一些距离,并在结束后销毁它们。虽不比标准的电影水准,但足以为我们展示对象池的应用。 + +让我们从最简单的实现开始,首先是粒子类: + +```c++ +class Particle +{ +public: + Particle() + : framesLeft_(0) + {} + + void init(double x, double y, + double xVel, double yVel, int lifetime) + { + x_ = x; y_ = y; + xVel_ = xVel; yVel_ = yVel; + framesLeft_ = lifetime; + } + + void animate() + { + if (!inUse()) return; + + framesLeft_--; + x_ += xVel_; + y_ += yVel_; + } + + bool inUse() const { return framesLeft_ > 0; } + +private: + int framesLeft_; + double x_, y_; + double xVel_, yVel_; +}; +``` + +默认构造函数将粒子初始化为”未使用”状态。(“not in use”),接下来调用init()将其状态置为”使用中”。 +粒子随着时间播放动画,并逐帧调用函数animate()。 + +对象池需要知道哪些粒子可被重用——通过粒子实例的inUse()方法来获取粒子的状态。它利用粒子的生命周期有限这一点,同时我们使用变量_framesLeft来检查哪些粒子正在被使用(而不是使用一个分隔标志)。 +对象池类也很简单: + +```c++ +class ParticlePool +{ +public: + void create(double x, double y, + double xVel, double yVel, int lifetime); + + void animate() + { + for (int i = 0; i < POOL_SIZE; i++) + { + particles_[i].animate(); + } + } + +private: + static const int POOL_SIZE = 100; + Particle particles_[POOL_SIZE]; +}; +``` +create()函数使用内部代码创建粒子群。游戏逐帧调用对象池的animate() 方法,它遍历池中所有粒子并调用它们的animate() 函数。 + +这里的animate() 方法是 [Update Method](03.3-Update Method.md) 设计模式的一个例子。 + +对象池简单地使用一个固定大小的数组来存储粒子。在本例的实现中,这个数组的大小在其类声明中被硬编码地写死,当然也可以通过根据给定的大小使用动态数组,或者使用值模板参数来定义。 +创建粒子是直接明了的: + +```c++ +void ParticlePool::create(double x, double y, + double xVel, double yVel, + int lifetime) +{ + // Find an available particle. + for (int i = 0; i < POOL_SIZE; i++) + { + if (!particles_[i].inUse()) + { + particles_[i].init(x, y, xVel, yVel, lifetime); + return; + } + } +} +``` +我们通过遍历池来寻找首个可用(闲置)的粒子。一旦找到,我们将它初始化并立即返回。注意在这个版本的实现中,假如没有找到可用的粒子,我们就不再创建新粒子。 + +以上全部就是一个简单的粒子系统,当然不包括粒子的渲染啦~。我们现在可以创建一个粒子池,并通过它创建一些粒子。当粒子的生命周期结束时它们会自动地将自己反激活。 + +这已经足以在游戏中使用,但细心的读者会发现,创建一个新粒子需要在池内部遍历粒子数组直到找到一个空槽。假设这个池数组很大且几乎已满,此时创建粒子将会十分缓慢。让我们来看看如何由此提升性能:创建一个粒子的时间开销为O(n)(上过算法课的你一定还记得时间复杂度吧)。 + +### 释放列表 +假设我们不花时间去检索空闲的粒子槽,那么显然我们得跟踪它们。我们可以单独维护一个指向每个未被使用粒子的指针列表。此时,当我们需要创建粒子时,我们只需移除这个列表的第一项并将这第一项指针指向的粒子进行重用即可。 + +不幸的是,这可能要求我们管理如同整个对象池对象数组一样庞大的指针列表。毕竟,当我们首次创建对象池时,所有的粒子都是未被使用的,也就是说此时这个列表包含了指向对象池中每个粒子的指针。 + +假如能不牺牲任何内存来修补我们的性能问题那就太好了。方便的是,我们身边就有一些可利用的资源:正是那些未被利用的粒子它们自己。 + +当某个粒子未被使用时,它们中的绝大多数是状态异常的,它们的位置和速度都未被使用。它唯一需要的就是用于表示自身是否被销毁的状态,也就是我们的例子中的framesLeft 成员。除此之外的其他空间都是可利用的,修改后的例子如下: + +```c++ +class Particle +{ +public: + // ... + + Particle* getNext() const { return state_.next; } + void setNext(Particle* next) { state_.next = next; } + +private: + int framesLeft_; + + union + { + // State when it's in use. + struct + { + double x, y; + double xVel, yVel; + } live; + + // State when it's available. + Particle* next; + } state_; +}; +``` + +例子如下:我们将除了framesLeft_之外的成员变量置入一个live 结构体中,并将它置入一个state_联合体中。该结构包括了粒子在播放动画时的状态。当粒子未被使用时(也就是联和结构的其他情况下),成员next 将被激活。该成员存储了一指向下其一个可用粒子的指针。 + +在联和体似乎并不那么常用的今天,这个符号可能对你而言有些陌生。假如你在一个游戏团队工作,你可能会成为一个”内存问题专家”:也就是个当游戏不可避免地遇上内存吃紧问题时忙着想办法的受难同胞。想想联合体吧,说到节省字节的办法它们可谓了如指掌。 + +我们可以利用这些指针(next成员)来创建一个对象池中未被使用的粒子列表。我们持有所需的可用粒子列表,且无需额外的内存——我们将那些已死亡粒子占用的空间划分过来以存储这个列表。 + +这机智的技术被称作空闲表(free list),为使其正常运作,我们需要保证指针的正确初始化以及粒子在被创建和销毁时能够保持住它们。当然,我们也需要时刻跟踪这个列表的头指针: + +```c++ +class ParticlePool +{ + // ... +private: + Particle* firstAvailable_; +}; +``` + +当对象池首次被创建时,所有的粒子处于可用状态,故我们的空闲表贯穿了整个对象池。对象池的构造函数如下: + +```c++ +ParticlePool::ParticlePool() +{ + // The first one is available. + firstAvailable_ = &particles_[0]; + + // Each particle points to the next. + for (int i = 0; i < POOL_SIZE - 1; i++) + { + particles_[i].setNext(&particles_[i + 1]); + } + + // The last one terminates the list. + particles_[POOL_SIZE - 1].setNext(NULL); +} +``` + +现在创建一个新粒子时我们跳转到第一个空闲的粒子:(O(1)复杂度,宝贝!万事顺利!) + +```c++ +void ParticlePool::create(double x, double y, + double xVel, double yVel, + int lifetime) +{ + // Make sure the pool isn't full. + assert(firstAvailable_ != NULL); + + // Remove it from the available list. + Particle* newParticle = firstAvailable_; + firstAvailable_ = newParticle->getNext(); + + newParticle->init(x, y, xVel, yVel, lifetime); +} +``` + +我们需要获知粒子何时死亡以将它置回空闲表中。于是我们将粒子类中的 animate() 改为当这个存活的粒子在某一帧死掉时函数返回true 。 + +```c++ +bool Particle::animate() +{ + if (!inUse()) return false; + + framesLeft_--; + x_ += xVel_; + y_ += yVel_; + + return framesLeft_ == 0; +} +``` + +一帧死掉此时,我们就把这个粒子串回空闲表: + +```c++ +void ParticlePool::animate() +{ + for (int i = 0; i < POOL_SIZE; i++) + { + if (particles_[i].animate()) + { + // Add this particle to the front of the list. + particles_[i].setNext(firstAvailable_); + firstAvailable_ = &particles_[i]; + } + } +} +``` + +这就是了,一个漂亮的,在创建和删除时具有常量时间开销的小对象池。 + +## 设计的一些考虑 + +如你所见,最简单的对象池实现几乎没什么特别的:创建一个对象数组并在它们被需要时重新初始化。实际项目中的代码可不会这么简单。还有许多扩展对象池的方法,来使其更加通用,安全,便于管理。当你在自己的游戏中使用对象池时,你需要回答一下这些问题: + +### 对象是否被加入对象池? +当你在编写一个对象池时首先要问的一个问题就是这些对象自身是否能知道自己处于一个对象池中。多数时间它们是知道的,但你不需要在一个可以存储任意对象的通用对象池类中做这项工作。 + +#### 假如对象被加入对象池: + +01.实现很简单,你可以简单地为那些池中的对象增加一个”使用中”的标志或者函数,这就能解决问题了。 + +02.你可以保证对象只能通过对象池创建。在C++中,只需简单地将对象池类作为对象类的友元类,并将对象的构造函数私有化即可: + +```c++ +class Particle +{ + friend class ParticlePool; + +private: + Particle() + : inUse_(false) + {} + + bool inUse_; +}; + +class ParticlePool +{ + Particle pool_[100]; +}; +``` + +上述代码中表述的关系指出了使用该对象类的方法(只能通过对象池创建对象),确保了开发者不会创建出脱离对象池管理的对象。 + +03.你可以避免存储一个”使用中”标志,许多对象已经维护了可以表示自身是否仍然存活的状态。例如,粒子可以通过”位置已离开屏幕范围”来表示自身可被重用。假如对象类知道自己可能被对象池使用,它可以提供inUse()方法来检查这一状态。这避免了对象池使用额外的空间来存储那些”使用中”标志。 + +#### 假如对象不被加入池中: + +01.任意类型的对象可以被置入池中。这是个巨大的优点。通过对象与对象池的解绑,你将能够实现一个通用,可重用的对象池类。 + +02.“使用中”状态可能会在对象外部被追踪。最简单的做法是在对象池中额外创建一块独立的空间: + +```c++ +template +class GenericPool +{ +private: + static const int POOL_SIZE = 100; + + TObject pool_[POOL_SIZE]; + bool inUse_[POOL_SIZE]; +}; +``` + +### 谁来初始化那些被重用的对象? +为了重用现存的对象,它需要被重新初始化成新的状态。一个关键的问题在于是在对象池中初始化它还是在外部初始化。 + +#### 假如在对象池内部初始化重用对象 + +01.对象池可以完全地封装它管理的对象。这取决于你定义的对象类的其他功能,你或许能够将它们完全置于对象池内部。这样可以确保外部代码不会引用到这些对象而引致意外的重用。 + +02.对象池与对象如何被初始化密切相关。一个置入池中的对象可能会提供多个初始化函数。假如由对象池进行初始化管理,其接口必须支持所有的对象初始化方法,并相应地初始化对象。 + +```c++ +class Particle +{ + // Multiple ways to initialize. + void init(double x, double y); + void init(double x, double y, double angle); + void init(double x, double y, double xVel, double yVel); +}; + +class ParticlePool +{ +public: + void create(double x, double y) + { + // Forward to Particle... + } + + void create(double x, double y, double angle) + { + // Forward to Particle... + } + + void create(double x, double y, double xVel, double yVel) + { + // Forward to Particle... + } +}; +``` + +#### 假如对象在外部被初始化 + +01.此时对象池的接口会简单一些,池只要简单地返回新对象的引用,而无需像上面那样提供不同的初始化接口来应付对象不同的初始化方法了。 + +```c++ +class Particle +{ +public: + // Multiple ways to initialize. + void init(double x, double y); + void init(double x, double y, double angle); + void init(double x, double y, double xVel, double yVel); +}; + +class ParticlePool +{ +public: + Particle* create() + { + // Return reference to available particle... + } +private: + Particle pool_[100]; +}; +``` + +调用者可以使用粒子类暴露的任何初始化接口来初始化对象: + +```c++ +ParticlePool pool; + +pool.create()->init(1, 2); +pool.create()->init(1, 2, 0.3); +pool.create()->init(1, 2, 3.3, 4.4); +``` + +02.外部编码可能需要处理新对象创建失败的情况。先前的例子假设了create() 函数总会成功地返回一个指向对象的指针。假如对象池满,它应当返回NULL。安全起见,你需要在初始化对象之前检查指向新对象的指针是否为空: + +```c++ +Particle* particle = pool.create();if (particle != NULL) particle->init(1, 2); +``` +## 参考 +- 对象池模式与Flyweight模式看起来很相似。它们都管理着一系列可重用对象。其差异在于”重用”的含义。Flyweight模式中的对象通过在多个持有者中并发地共享相同的实例以实现重用。它避免了因在不同上下文中使用相同对象而导致的内存使用重叠。 +- 对象池中的对象也被重用,但此”重用”是针对一段时间而言的。在对象池中,”重用”意味着在原对象持有者使用完它之后,将其内存释放。对象池里的对象在其生命周期中不存在着因为被共享而引致的异常。 +- 将那些类型相同的对象在内存上进行打包整合,能够帮助你的CPU缓冲区时刻保持满载,以供游戏迭代这些对象。[Data Locality](06.1-Data Locality.md)设计模式阐释了这一点。 diff --git a/res/object-pool-heap-fragment.png b/res/object-pool-heap-fragment.png new file mode 100644 index 0000000000000000000000000000000000000000..96d7b2bcb5886d15fc7f427507f3d9191acd76ff GIT binary patch literal 134950 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 t$c!M?IT3;%e{)BSm;!1}IsX3w3;>Au2f Date: Wed, 6 Aug 2014 12:48:06 +0800 Subject: [PATCH 003/123] formatting fix --- 06.3-Object Pool.md | 128 +++++++++++++++++++++++++------------------- 1 file changed, 72 insertions(+), 56 deletions(-) diff --git a/06.3-Object Pool.md b/06.3-Object Pool.md index 7184e65..cbfbc4e 100644 --- a/06.3-Object Pool.md +++ b/06.3-Object Pool.md @@ -2,19 +2,22 @@ ============================ ## 目标 + 通过用固定的池来重用对象的方法取代手动分配,释放对象,以达到提升性能和内存使用的目的。 ## 动机 + 我们正致力于我们游戏的视觉效果优化。当一个英雄施放魔法时,我们想让一个火星从屏幕闪烁着横穿并爆炸。这一特效将调用粒子系统——一个用来生成微小发光图形并在它们生存周期内产生动画的引擎。 由于光是一个魔棒就会引发数以百计的粒子生成,故我们的系统需要快速地生成它们。更重要的是,我们需要确保创建和销毁它们时不会带来内存碎片。 ### 碎片化的害处 + 控制台游戏编程(比如XBox360)从多方面而言都比传统的PC编程要更接近于嵌入式编程。就像嵌入式编程一样,控制台游戏必须在很长的一段时间内运行而不能有崩溃或是内存泄露的情况,而且多数情况下无法使用高效的内存压缩管理器。在这样的情况下内存碎片是致命的。 碎片化意味着我们空闲着的堆空间被破坏成了许多小的内存碎屑,而不是一整块连续的内存块。或许这些小碎屑构成的总可访问内存是大的,但其中最连续的区域却可能小得可怜。假设我们有14字节的空闲空间,但它被一个正被使用的内存块划分成了2个7字节的碎片——假如这时我们想分配一个12字节的对象,则会失败,屏幕上也不会出现任何闪光画面了。 -(注解:碎片化:这就像在一条杂乱散布着车辆的热闹街区里尝试停车一样,如果他们首尾紧挨着,那么就能腾得出空间,但在乱停放的情况下这些空间却只是众车辆之间的碎片空间。) +(注解:碎片化:这就像在一条杂乱散布着车辆的热闹街区里尝试停车一样,如果他们首尾紧挨着,那么就能腾得出空间,但在乱停放的情况下这些空间却只是众车辆之间的碎片空间。) ![](./res/object-pool-heap-fragment.png) @@ -25,17 +28,20 @@ ### 二者兼顾 -由于碎片化,以及内存分配缓慢的缘故,在游戏中何时以及如何管理内存需要十分谨慎。一个常用而有效的办法是:在游戏启动时分配一大块内存,直到游戏结束才释放它。但当我们在游戏运行过程中创建或销毁东西时,这一方法会成为系统的硬伤。 -使用对象池使得我们二者兼顾:对于内存管理器而言,我们仅分配一大块内存直到游戏结束才释放它,对于内存池的使用者而言,我们可以按照自己的意愿来分配和释放对象。 +由于碎片化,以及内存分配缓慢的缘故,在游戏中何时以及如何管理内存需要十分谨慎。一个常用而有效的办法是:在游戏启动时分配一大块内存,直到游戏结束才释放它。但当我们在游戏运行过程中创建或销毁东西时,这一方法会成为系统的硬伤。 + +使用对象池使得我们二者兼顾:对于内存管理器而言,我们仅分配一大块内存直到游戏结束才释放它,对于内存池的使用者而言,我们可以按照自己的意愿来分配和释放对象。 ## 对象池模式 + 定义一个保持着可重用对象集合的对象池类。其中的每个对象支持对其”使用中”(“in use”)状态的访问,以确定这一对象目前是否“存活”(“alive”)。当对象池初始化时,它预先创建整个对象的集合(通常为一块连续堆区域),并将它们都置为”未使用” (“not in use”) 状态。 当你想要创建一个新对象时就向对象池请求。它将搜索到一个可用的对象,将其初始化为”使用中”(“in use”)状态并返回给你。当该对象不再被使用时,它将被置回”未使用” (“not in use”) 状态。使用该方法,对象便可以在无需进行内存(或其他资源的)分配的情况下进行任意的创建和销毁。 ## 使用情境 -这一设计模式被广泛地应用在游戏中,如游戏实体对象,各种视觉特效,甚至是非可视化的数据结构,如当前播放的声音。我们在以下情况使用对象池: + +这一设计模式被广泛地应用在游戏中,如游戏实体对象,各种视觉特效,甚至是非可视化的数据结构,如当前播放的声音。我们在以下情况使用对象池: - 当你需要频繁地创建和销毁对象时。 - 对象的大小一致时。 @@ -43,17 +49,20 @@ - 每个对象包含着较昂贵且可重用的资源(如数据库,网络的连接)时。 ## 使用须知 -你一般依赖于一个垃圾回收器或只是简单地new/delete来为项目进行内存管理。而通过使用对象池,你就是在告诉系统:”我比你更通晓这些字节该如何管理。”也就意味这个模式的规则是完全由你来负责制定的。 + +你一般依赖于一个垃圾回收器或只是简单地new/delete来为项目进行内存管理。而通过使用对象池,你就是在告诉系统:”我比你更通晓这些字节该如何管理。”也就意味这个模式的规则是完全由你来负责制定的。 ### 对象池可能在闲置的对象上浪费内存 + 对象池的大小需要根据游戏的需求量身定制。在确定大小时,分配过小的情况往往很明显(任何一个崩溃都能告诉你这一点),但要同时注意不能让池子过大。一个大小适中的池可以腾出空余的内存来供其它模块使用。 ### 任意时刻处于”使用中”状态的对象数目恒定 -从某些角度上说这是件好事。将内存划分为几个独立的对象池用于不同类型的对象管理,这一点保证诸如下面的这些情况不会发生:例如,一大连串的爆炸动画不会致使你的粒子系统把所有的可有内存全部占用,也能避免创建敌人时的类似情况。 -然而,这也意味着你要为如下情况做好准备:当你希望向对象池申请重用某个对象时,可能会失败,因为它们都在被使用。以下是一些针对此问题的常见对策: +从某些角度上说这是件好事。将内存划分为几个独立的对象池用于不同类型的对象管理,这一点保证诸如下面的这些情况不会发生:例如,一大连串的爆炸动画不会致使你的粒子系统把所有的可有内存全部占用,也能避免创建敌人时的类似情况。 -- 彻底根除。这也是最常见的方法:约束对象池的大小令其不论使用者如何分配都不会致使溢出。对于重要的对象池,如怪物或游戏道具池,这往往是行之有效的。并没有什么所谓正确的方法来处理当玩家到达关卡尾部时没有任何空闲的空间来创建”大Boss”这样的情况,所以最聪明的办法还是从根本上避免其发生。 +然而,这也意味着你要为如下情况做好准备:当你希望向对象池申请重用某个对象时,可能会失败,因为它们都在被使用。以下是一些针对此问题的常见对策: + +- 彻底根除。这也是最常见的方法:约束对象池的大小令其不论使用者如何分配都不会致使溢出。对于重要的对象池,如怪物或游戏道具池,这往往是行之有效的。并没有什么所谓正确的方法来处理当玩家到达关卡尾部时没有任何空闲的空间来创建”大Boss”这样的情况,所以最聪明的办法还是从根本上避免其发生。 - 上述方法的负面是,它会令你仅仅为了十分罕见的边际情况而腾出许多空闲的对象空间。鉴于此,单一的固定大小的对象池并不适用于所有的游戏状态。例如,有些关卡显著偏重于特效而另一些则偏重于音效。在此情况下,可以考虑针对不同的场景将池调整至不同尺寸。 - 不创建对象。这听起来很残忍,但它在诸如粒子系统中十分奏效。假如所有的粒子对象都处于使用状态,那么屏幕将可能被闪光的图元所覆盖。玩家将不会注意到下一次的爆炸效果是否和当前的效果是否一样炫。 - 强行清理现存对象。以一个音效对象池为例,并假设你想要播放新的一段音效但对象池满了。你并不希望直接忽视掉这个新的音效:玩家会注意到他们的魔杖在施法时有时带着咒语而有时却不听话地沉默了。解决方案是,检索当前播放的音效中最不引人注意的并以我们的新音效替换之。新的音效将掩盖旧音效的中断。 @@ -62,6 +71,7 @@ ### 每个对象的内存大小是固定的 + 多数对象池在实现时将对象原地存入一个数组中。假如你的所有的对象都属于同一类型,没问题。然而假如你希望在池中存入不同类型的对象,或者子类型(带有额外的类成员),那么你就必须保证对象池中的每个槽都能容纳这些类型中尺寸最大者。否则一个未知的大对象将占去相邻对象的空间,并导致内存崩溃。 与此同时,当你的对象大小不一时,将浪费内存——因为每个对象槽的大小都被要求容得下尺寸最大的那个。假如多数对象的尺寸不那么大,那么每当你置入一个小对象时就在浪费内存。就像你在机场为自己的钱包拉了个大托运一样。 @@ -71,7 +81,8 @@ 这是一个实现内存高效利用的通用设计模式。管理器持有许多块尺寸不同的池。当你向它们申请一块时,管理器将从池里挑选合适大小的块并返回给你。 ### 被重用的对象并不会自动清除 -多数内存管理器都有一个排错特性:它们会将刚分配或者刚释放的内存置成某些特定值(比如0xdeadbeef),这一做法将帮助你找到那些由”未初始化的变量”或者”使用了已释放的内存块”引发的致命错误。 + +多数内存管理器都有一个排错特性:它们会将刚分配或者刚释放的内存置成某些特定值(比如0xdeadbeef),这一做法将帮助你找到那些由”未初始化的变量”或者”使用了已释放的内存块”引发的致命错误。 由于我们的对象池并不通过内存管理器来重用对象,故我们将脱离这张安全网。更可怕的是,这些”新”对象使用的内存先前存储着另一个同类型的对象。这将使你几乎无法分辨自己是否在创建对象时已将它们初始化——这块存储新对象的内存可能在其先前的生命周期中已经包含了完全相同的数据。 @@ -80,12 +91,13 @@ ### 未使用的对象将占用内存 对象池在那些支持垃圾回收机制的系统中较少被使用,因为内存管理器通常会替你进行内存碎片处理。当然对象池在节省分配和释放时开销方面依然有所作为,在CPU处理速度较慢且回收机制叫简单的移动平台上尤为如此。 -假如你使用了对象池,请注意一个潜在的矛盾:由于对象池在对象不再被使用时并不真正地释放它们,故它们仍占用内存。假如它们包含了指向其他对象的引用,这也将阻碍回收机制对它们进行释放。为避免这些问题,当对象池中的对象不再被需要时,应当清空它指向其他任何对象的引用。 +假如你使用了对象池,请注意一个潜在的矛盾:由于对象池在对象不再被使用时并不真正地释放它们,故它们仍占用内存。假如它们包含了指向其他对象的引用,这也将阻碍回收机制对它们进行释放。为避免这些问题,当对象池中的对象不再被需要时,应当清空它指向其他任何对象的引用。 ## 例子 + 模拟现实的粒子系统常常会应用到重力,风力,摩擦力以及其他物理效果。在简化的示例中,我们只是在几帧的时间内将粒子沿着直线移动一些距离,并在结束后销毁它们。虽不比标准的电影水准,但足以为我们展示对象池的应用。 -让我们从最简单的实现开始,首先是粒子类: +让我们从最简单的实现开始,首先是粒子类: ```c++ class Particle @@ -95,8 +107,8 @@ public: : framesLeft_(0) {} - void init(double x, double y, - double xVel, double yVel, int lifetime) + void init(double x, double y, + double xVel, double yVel, int lifetime) { x_ = x; y_ = y; xVel_ = xVel; yVel_ = yVel; @@ -116,8 +128,8 @@ public: private: int framesLeft_; - double x_, y_; - double xVel_, yVel_; + double x_, y_; + double xVel_, yVel_; }; ``` @@ -125,14 +137,14 @@ private: 粒子随着时间播放动画,并逐帧调用函数animate()。 对象池需要知道哪些粒子可被重用——通过粒子实例的inUse()方法来获取粒子的状态。它利用粒子的生命周期有限这一点,同时我们使用变量_framesLeft来检查哪些粒子正在被使用(而不是使用一个分隔标志)。 -对象池类也很简单: +对象池类也很简单: ```c++ class ParticlePool { public: - void create(double x, double y, - double xVel, double yVel, int lifetime); + void create(double x, double y, + double xVel, double yVel, int lifetime); void animate() { @@ -147,16 +159,17 @@ private: Particle particles_[POOL_SIZE]; }; ``` + create()函数使用内部代码创建粒子群。游戏逐帧调用对象池的animate() 方法,它遍历池中所有粒子并调用它们的animate() 函数。 这里的animate() 方法是 [Update Method](03.3-Update Method.md) 设计模式的一个例子。 对象池简单地使用一个固定大小的数组来存储粒子。在本例的实现中,这个数组的大小在其类声明中被硬编码地写死,当然也可以通过根据给定的大小使用动态数组,或者使用值模板参数来定义。 -创建粒子是直接明了的: +创建粒子是直接明了的: ```c++ -void ParticlePool::create(double x, double y, - double xVel, double yVel, +void ParticlePool::create(double x, double y, + double xVel, double yVel, int lifetime) { // Find an available particle. @@ -164,7 +177,7 @@ void ParticlePool::create(double x, double y, { if (!particles_[i].inUse()) { - particles_[i].init(x, y, xVel, yVel, lifetime); + particles_[i].init(x, y, xVel, yVel, lifetime); return; } } @@ -174,16 +187,17 @@ void ParticlePool::create(double x, double y, 以上全部就是一个简单的粒子系统,当然不包括粒子的渲染啦~。我们现在可以创建一个粒子池,并通过它创建一些粒子。当粒子的生命周期结束时它们会自动地将自己反激活。 -这已经足以在游戏中使用,但细心的读者会发现,创建一个新粒子需要在池内部遍历粒子数组直到找到一个空槽。假设这个池数组很大且几乎已满,此时创建粒子将会十分缓慢。让我们来看看如何由此提升性能:创建一个粒子的时间开销为O(n)(上过算法课的你一定还记得时间复杂度吧)。 +这已经足以在游戏中使用,但细心的读者会发现,创建一个新粒子需要在池内部遍历粒子数组直到找到一个空槽。假设这个池数组很大且几乎已满,此时创建粒子将会十分缓慢。让我们来看看如何由此提升性能:创建一个粒子的时间开销为O(n)(上过算法课的你一定还记得时间复杂度吧)。 ### 释放列表 + 假设我们不花时间去检索空闲的粒子槽,那么显然我们得跟踪它们。我们可以单独维护一个指向每个未被使用粒子的指针列表。此时,当我们需要创建粒子时,我们只需移除这个列表的第一项并将这第一项指针指向的粒子进行重用即可。 不幸的是,这可能要求我们管理如同整个对象池对象数组一样庞大的指针列表。毕竟,当我们首次创建对象池时,所有的粒子都是未被使用的,也就是说此时这个列表包含了指向对象池中每个粒子的指针。 -假如能不牺牲任何内存来修补我们的性能问题那就太好了。方便的是,我们身边就有一些可利用的资源:正是那些未被利用的粒子它们自己。 +假如能不牺牲任何内存来修补我们的性能问题那就太好了。方便的是,我们身边就有一些可利用的资源:正是那些未被利用的粒子它们自己。 -当某个粒子未被使用时,它们中的绝大多数是状态异常的,它们的位置和速度都未被使用。它唯一需要的就是用于表示自身是否被销毁的状态,也就是我们的例子中的framesLeft 成员。除此之外的其他空间都是可利用的,修改后的例子如下: +当某个粒子未被使用时,它们中的绝大多数是状态异常的,它们的位置和速度都未被使用。它唯一需要的就是用于表示自身是否被销毁的状态,也就是我们的例子中的framesLeft 成员。除此之外的其他空间都是可利用的,修改后的例子如下: ```c++ class Particle @@ -202,8 +216,8 @@ private: // State when it's in use. struct { - double x, y; - double xVel, yVel; + double x, y; + double xVel, yVel; } live; // State when it's available. @@ -212,13 +226,13 @@ private: }; ``` -例子如下:我们将除了framesLeft_之外的成员变量置入一个live 结构体中,并将它置入一个state_联合体中。该结构包括了粒子在播放动画时的状态。当粒子未被使用时(也就是联和结构的其他情况下),成员next 将被激活。该成员存储了一指向下其一个可用粒子的指针。 +例子如下:我们将除了framesLeft_之外的成员变量置入一个live 结构体中,并将它置入一个state_联合体中。该结构包括了粒子在播放动画时的状态。当粒子未被使用时(也就是联和结构的其他情况下),成员next 将被激活。该成员存储了一指向下其一个可用粒子的指针。 -在联和体似乎并不那么常用的今天,这个符号可能对你而言有些陌生。假如你在一个游戏团队工作,你可能会成为一个”内存问题专家”:也就是个当游戏不可避免地遇上内存吃紧问题时忙着想办法的受难同胞。想想联合体吧,说到节省字节的办法它们可谓了如指掌。 +在联和体似乎并不那么常用的今天,这个符号可能对你而言有些陌生。假如你在一个游戏团队工作,你可能会成为一个”内存问题专家”:也就是个当游戏不可避免地遇上内存吃紧问题时忙着想办法的受难同胞。想想联合体吧,说到节省字节的办法它们可谓了如指掌。 我们可以利用这些指针(next成员)来创建一个对象池中未被使用的粒子列表。我们持有所需的可用粒子列表,且无需额外的内存——我们将那些已死亡粒子占用的空间划分过来以存储这个列表。 -这机智的技术被称作空闲表(free list),为使其正常运作,我们需要保证指针的正确初始化以及粒子在被创建和销毁时能够保持住它们。当然,我们也需要时刻跟踪这个列表的头指针: +这机智的技术被称作空闲表(free list),为使其正常运作,我们需要保证指针的正确初始化以及粒子在被创建和销毁时能够保持住它们。当然,我们也需要时刻跟踪这个列表的头指针: ```c++ class ParticlePool @@ -229,7 +243,7 @@ private: }; ``` -当对象池首次被创建时,所有的粒子处于可用状态,故我们的空闲表贯穿了整个对象池。对象池的构造函数如下: +当对象池首次被创建时,所有的粒子处于可用状态,故我们的空闲表贯穿了整个对象池。对象池的构造函数如下: ```c++ ParticlePool::ParticlePool() @@ -248,11 +262,11 @@ ParticlePool::ParticlePool() } ``` -现在创建一个新粒子时我们跳转到第一个空闲的粒子:(O(1)复杂度,宝贝!万事顺利!) +现在创建一个新粒子时我们跳转到第一个空闲的粒子:(O(1)复杂度,宝贝!万事顺利!) ```c++ -void ParticlePool::create(double x, double y, - double xVel, double yVel, +void ParticlePool::create(double x, double y, + double xVel, double yVel, int lifetime) { // Make sure the pool isn't full. @@ -262,7 +276,7 @@ void ParticlePool::create(double x, double y, Particle* newParticle = firstAvailable_; firstAvailable_ = newParticle->getNext(); - newParticle->init(x, y, xVel, yVel, lifetime); + newParticle->init(x, y, xVel, yVel, lifetime); } ``` @@ -281,7 +295,7 @@ bool Particle::animate() } ``` -一帧死掉此时,我们就把这个粒子串回空闲表: +一帧死掉此时,我们就把这个粒子串回空闲表: ```c++ void ParticlePool::animate() @@ -302,16 +316,16 @@ void ParticlePool::animate() ## 设计的一些考虑 -如你所见,最简单的对象池实现几乎没什么特别的:创建一个对象数组并在它们被需要时重新初始化。实际项目中的代码可不会这么简单。还有许多扩展对象池的方法,来使其更加通用,安全,便于管理。当你在自己的游戏中使用对象池时,你需要回答一下这些问题: +如你所见,最简单的对象池实现几乎没什么特别的:创建一个对象数组并在它们被需要时重新初始化。实际项目中的代码可不会这么简单。还有许多扩展对象池的方法,来使其更加通用,安全,便于管理。当你在自己的游戏中使用对象池时,你需要回答一下这些问题: ### 对象是否被加入对象池? 当你在编写一个对象池时首先要问的一个问题就是这些对象自身是否能知道自己处于一个对象池中。多数时间它们是知道的,但你不需要在一个可以存储任意对象的通用对象池类中做这项工作。 -#### 假如对象被加入对象池: +#### 假如对象被加入对象池: 01.实现很简单,你可以简单地为那些池中的对象增加一个”使用中”的标志或者函数,这就能解决问题了。 -02.你可以保证对象只能通过对象池创建。在C++中,只需简单地将对象池类作为对象类的友元类,并将对象的构造函数私有化即可: +02.你可以保证对象只能通过对象池创建。在C++中,只需简单地将对象池类作为对象类的友元类,并将对象的构造函数私有化即可: ```c++ class Particle @@ -336,11 +350,11 @@ class ParticlePool 03.你可以避免存储一个”使用中”标志,许多对象已经维护了可以表示自身是否仍然存活的状态。例如,粒子可以通过”位置已离开屏幕范围”来表示自身可被重用。假如对象类知道自己可能被对象池使用,它可以提供inUse()方法来检查这一状态。这避免了对象池使用额外的空间来存储那些”使用中”标志。 -#### 假如对象不被加入池中: +#### 假如对象不被加入池中: 01.任意类型的对象可以被置入池中。这是个巨大的优点。通过对象与对象池的解绑,你将能够实现一个通用,可重用的对象池类。 -02.“使用中”状态可能会在对象外部被追踪。最简单的做法是在对象池中额外创建一块独立的空间: +02.“使用中”状态可能会在对象外部被追踪。最简单的做法是在对象池中额外创建一块独立的空间: ```c++ template @@ -355,6 +369,7 @@ private: ``` ### 谁来初始化那些被重用的对象? + 为了重用现存的对象,它需要被重新初始化成新的状态。一个关键的问题在于是在对象池中初始化它还是在外部初始化。 #### 假如在对象池内部初始化重用对象 @@ -367,25 +382,25 @@ private: class Particle { // Multiple ways to initialize. - void init(double x, double y); - void init(double x, double y, double angle); - void init(double x, double y, double xVel, double yVel); + void init(double x, double y); + void init(double x, double y, double angle); + void init(double x, double y, double xVel, double yVel); }; class ParticlePool { public: - void create(double x, double y) + void create(double x, double y) { // Forward to Particle... } - void create(double x, double y, double angle) + void create(double x, double y, double angle) { // Forward to Particle... } - void create(double x, double y, double xVel, double yVel) + void create(double x, double y, double xVel, double yVel) { // Forward to Particle... } @@ -401,9 +416,9 @@ class Particle { public: // Multiple ways to initialize. - void init(double x, double y); - void init(double x, double y, double angle); - void init(double x, double y, double xVel, double yVel); + void init(double x, double y); + void init(double x, double y, double angle); + void init(double x, double y, double xVel, double yVel); }; class ParticlePool @@ -418,22 +433,23 @@ private: }; ``` -调用者可以使用粒子类暴露的任何初始化接口来初始化对象: +调用者可以使用粒子类暴露的任何初始化接口来初始化对象: ```c++ ParticlePool pool; -pool.create()->init(1, 2); -pool.create()->init(1, 2, 0.3); -pool.create()->init(1, 2, 3.3, 4.4); +pool.create()->init(1, 2); +pool.create()->init(1, 2, 0.3); +pool.create()->init(1, 2, 3.3, 4.4); ``` -02.外部编码可能需要处理新对象创建失败的情况。先前的例子假设了create() 函数总会成功地返回一个指向对象的指针。假如对象池满,它应当返回NULL。安全起见,你需要在初始化对象之前检查指向新对象的指针是否为空: +02.外部编码可能需要处理新对象创建失败的情况。先前的例子假设了create() 函数总会成功地返回一个指向对象的指针。假如对象池满,它应当返回NULL。安全起见,你需要在初始化对象之前检查指向新对象的指针是否为空: ```c++ -Particle* particle = pool.create();if (particle != NULL) particle->init(1, 2); +Particle* particle = pool.create();if (particle != NULL) particle->init(1, 2); ``` ## 参考 + - 对象池模式与Flyweight模式看起来很相似。它们都管理着一系列可重用对象。其差异在于”重用”的含义。Flyweight模式中的对象通过在多个持有者中并发地共享相同的实例以实现重用。它避免了因在不同上下文中使用相同对象而导致的内存使用重叠。 - 对象池中的对象也被重用,但此”重用”是针对一段时间而言的。在对象池中,”重用”意味着在原对象持有者使用完它之后,将其内存释放。对象池里的对象在其生命周期中不存在着因为被共享而引致的异常。 - 将那些类型相同的对象在内存上进行打包整合,能够帮助你的CPU缓冲区时刻保持满载,以供游戏迭代这些对象。[Data Locality](06.1-Data Locality.md)设计模式阐释了这一点。 From cf39616f9f923ae48a20ef4c2e47811baa02ac01 Mon Sep 17 00:00:00 2001 From: ChildhoodAndy Date: Wed, 6 Aug 2014 13:21:06 +0800 Subject: [PATCH 004/123] add pre/next/contents link --- 06.3-Object Pool.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/06.3-Object Pool.md b/06.3-Object Pool.md index cbfbc4e..9d46413 100644 --- a/06.3-Object Pool.md +++ b/06.3-Object Pool.md @@ -453,3 +453,13 @@ Particle* particle = pool.create();if (particle != NULL) particle->init(1, 2); - 对象池模式与Flyweight模式看起来很相似。它们都管理着一系列可重用对象。其差异在于”重用”的含义。Flyweight模式中的对象通过在多个持有者中并发地共享相同的实例以实现重用。它避免了因在不同上下文中使用相同对象而导致的内存使用重叠。 - 对象池中的对象也被重用,但此”重用”是针对一段时间而言的。在对象池中,”重用”意味着在原对象持有者使用完它之后,将其内存释放。对象池里的对象在其生命周期中不存在着因为被共享而引致的异常。 - 将那些类型相同的对象在内存上进行打包整合,能够帮助你的CPU缓冲区时刻保持满载,以供游戏迭代这些对象。[Data Locality](06.1-Data Locality.md)设计模式阐释了这一点。 + +=============================== +[上一节](06.2-Dirty Flag.md) + +[目录](README.md#目录) + +[下一节](06.4-Spatial Partition.md) + + + From 9b7c7627dc8e56b2424d6561c7209c6d4872b0bc Mon Sep 17 00:00:00 2001 From: kislyl <1131985199@qq.com> Date: Wed, 6 Aug 2014 14:17:05 +0800 Subject: [PATCH 005/123] Update 06.3-Object Pool.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit now tips are like “(注解i: blabla..)” --- 06.3-Object Pool.md | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/06.3-Object Pool.md b/06.3-Object Pool.md index 9d46413..b2ee009 100644 --- a/06.3-Object Pool.md +++ b/06.3-Object Pool.md @@ -17,14 +17,14 @@ 碎片化意味着我们空闲着的堆空间被破坏成了许多小的内存碎屑,而不是一整块连续的内存块。或许这些小碎屑构成的总可访问内存是大的,但其中最连续的区域却可能小得可怜。假设我们有14字节的空闲空间,但它被一个正被使用的内存块划分成了2个7字节的碎片——假如这时我们想分配一个12字节的对象,则会失败,屏幕上也不会出现任何闪光画面了。 -(注解:碎片化:这就像在一条杂乱散布着车辆的热闹街区里尝试停车一样,如果他们首尾紧挨着,那么就能腾得出空间,但在乱停放的情况下这些空间却只是众车辆之间的碎片空间。) +(注解1:碎片化:这就像在一条杂乱散布着车辆的热闹街区里尝试停车一样,如果他们首尾紧挨着,那么就能腾得出空间,但在乱停放的情况下这些空间却只是众车辆之间的碎片空间。) ![](./res/object-pool-heap-fragment.png) 上图解释了一个堆如何变得碎片化,以及这是如何导致内存分配失败(尽管在理论上有足够的空间供其分配)。 就算碎片化的情况很少,它仍然在削减着堆并使其成为一个千疮百孔而不可用的泡沫块,严重局限了整个游戏的表现力。 -许多控制台游戏制作者都要求游戏通过“浸泡测试”(soak tests)——他们将游戏置于demo模式连续地跑上好几天。假如游戏崩溃了,他们则不会让游戏投入市场。尽管浸泡测试的失败有时会来自极罕见的意外bug,但多数情况下碎片化的扩张或者是内存泄露才是导致游戏当机的原因。 +(注解2:浸泡测试: 许多控制台游戏制作者都要求游戏通过“浸泡测试”(soak tests)——他们将游戏置于demo模式连续地跑上好几天。假如游戏崩溃了,他们则不会让游戏投入市场。尽管浸泡测试的失败有时会来自极罕见的意外bug,但多数情况下碎片化的扩张或者是内存泄露才是导致游戏当机的原因。) ### 二者兼顾 @@ -78,7 +78,7 @@ 当你发现自己像这样浪费掉许多内存时,考虑根据对象的尺寸将一个池划分为多个——大的装行李,小的装口袋里的杂物。 -这是一个实现内存高效利用的通用设计模式。管理器持有许多块尺寸不同的池。当你向它们申请一块时,管理器将从池里挑选合适大小的块并返回给你。 +(注解3:多个对象池: 这是一个实现内存高效利用的通用设计模式。管理器持有许多块尺寸不同的池。当你向它们申请一块时,管理器将从池里挑选合适大小的块并返回给你。) ### 被重用的对象并不会自动清除 @@ -86,7 +86,8 @@ 由于我们的对象池并不通过内存管理器来重用对象,故我们将脱离这张安全网。更可怕的是,这些”新”对象使用的内存先前存储着另一个同类型的对象。这将使你几乎无法分辨自己是否在创建对象时已将它们初始化——这块存储新对象的内存可能在其先前的生命周期中已经包含了完全相同的数据。 -鉴于此,需要特别注意在对象池中初始化对象的部分要对新创建的对象完整地初始化。甚至值得花些功夫为在为清理对象槽内存时增设一个排错功能。(推荐清空后将其内存值置为0x1deadb0b) +鉴于此,需要特别注意在对象池中初始化对象的部分要对新创建的对象完整地初始化。甚至值得花些功夫为在为清理对象槽内存时增设一个排错功能。 +(注解4:推荐清空后将其内存值置为0x1deadb0b) ### 未使用的对象将占用内存 对象池在那些支持垃圾回收机制的系统中较少被使用,因为内存管理器通常会替你进行内存碎片处理。当然对象池在节省分配和释放时开销方面依然有所作为,在CPU处理速度较慢且回收机制叫简单的移动平台上尤为如此。 @@ -162,7 +163,7 @@ private: create()函数使用内部代码创建粒子群。游戏逐帧调用对象池的animate() 方法,它遍历池中所有粒子并调用它们的animate() 函数。 -这里的animate() 方法是 [Update Method](03.3-Update Method.md) 设计模式的一个例子。 +(注解5:这里的animate() 方法是 [Update Method](03.3-Update Method.md) 设计模式的一个例子。) 对象池简单地使用一个固定大小的数组来存储粒子。在本例的实现中,这个数组的大小在其类声明中被硬编码地写死,当然也可以通过根据给定的大小使用动态数组,或者使用值模板参数来定义。 创建粒子是直接明了的: @@ -187,7 +188,8 @@ void ParticlePool::create(double x, double y, 以上全部就是一个简单的粒子系统,当然不包括粒子的渲染啦~。我们现在可以创建一个粒子池,并通过它创建一些粒子。当粒子的生命周期结束时它们会自动地将自己反激活。 -这已经足以在游戏中使用,但细心的读者会发现,创建一个新粒子需要在池内部遍历粒子数组直到找到一个空槽。假设这个池数组很大且几乎已满,此时创建粒子将会十分缓慢。让我们来看看如何由此提升性能:创建一个粒子的时间开销为O(n)(上过算法课的你一定还记得时间复杂度吧)。 +这已经足以在游戏中使用,但细心的读者会发现,创建一个新粒子需要在池内部遍历粒子数组直到找到一个空槽。假设这个池数组很大且几乎已满,此时创建粒子将会十分缓慢。让我们来看看如何由此提升性能: +(注解6:时间开销:创建一个粒子的时间开销为O(n),上过算法课的你一定还记得时间复杂度吧。) ### 释放列表 @@ -228,7 +230,7 @@ private: 例子如下:我们将除了framesLeft_之外的成员变量置入一个live 结构体中,并将它置入一个state_联合体中。该结构包括了粒子在播放动画时的状态。当粒子未被使用时(也就是联和结构的其他情况下),成员next 将被激活。该成员存储了一指向下其一个可用粒子的指针。 -在联和体似乎并不那么常用的今天,这个符号可能对你而言有些陌生。假如你在一个游戏团队工作,你可能会成为一个”内存问题专家”:也就是个当游戏不可避免地遇上内存吃紧问题时忙着想办法的受难同胞。想想联合体吧,说到节省字节的办法它们可谓了如指掌。 +(注解7:联合体union: 在联和体似乎并不那么常用的今天,这个符号可能对你而言有些陌生。假如你在一个游戏团队工作,你可能会成为一个”内存问题专家”:也就是个当游戏不可避免地遇上内存吃紧问题时忙着想办法的受难同胞。想想联合体吧,说到节省字节的办法它们可谓了如指掌。) 我们可以利用这些指针(next成员)来创建一个对象池中未被使用的粒子列表。我们持有所需的可用粒子列表,且无需额外的内存——我们将那些已死亡粒子占用的空间划分过来以存储这个列表。 @@ -262,8 +264,8 @@ ParticlePool::ParticlePool() } ``` -现在创建一个新粒子时我们跳转到第一个空闲的粒子:(O(1)复杂度,宝贝!万事顺利!) - +现在创建一个新粒子时我们跳转到第一个空闲的粒子: +(注解8:O(1)复杂度,宝贝!万事顺利!) ```c++ void ParticlePool::create(double x, double y, double xVel, double yVel, From 96db22a740fe79ce99528de339fc9513c61be9bb Mon Sep 17 00:00:00 2001 From: ChildhoodAndy Date: Fri, 8 Aug 2014 10:49:57 +0800 Subject: [PATCH 006/123] add introduction --- 01-Introduction.md | 148 ++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 147 insertions(+), 1 deletion(-) diff --git a/01-Introduction.md b/01-Introduction.md index 9bfa836..d8883c2 100644 --- a/01-Introduction.md +++ b/01-Introduction.md @@ -1,2 +1,148 @@ -Introduction +序言 ============================ + +在五年级的时候,我和我的小伙伴们被获准使用一个容放着一些非常破旧的 TRS-80s (译者注:见[维基百科TRS-80s](http://en.wikipedia.org/wiki/TRS-80)) 的废弃教室。为了激励我们,一个老师找到了一些简单的 BASIC 程序的打印输出让我们鼓捣玩耍。 + +电脑上的音频盒式磁带驱动器当时是坏掉的,所以每次我们想要运行一些代码的时候,我们不得不仔细的从头开始键入。这使得我们更喜欢那些只有几行代码的程序: + +``` +10 PRINT "BOBBY IS RADICAL!!!" +20 GOTO 10 +``` +> 注解 + +> 如果计算机打印足够多的次数,或许它会神奇的变成现实哦。(译者注:这里指的是计算机反复打印第10行代码的语句`BOBBY IS RADICAL!!!`,作者开玩笑的说会变成现实。) + +即便如此,整个过程还是比较艰辛。我们不懂得如何去编程,所以一个小的语法错误便让我们感到很费解。如果程序不工作了,通常都会这样,我们便会重新开始。 + +在这些书页的后面,我们遇到了一个真正的怪物:一个程序,它密密麻麻的代码占去了好几页。我们过了一会终于鼓足勇气来尝试它,但是它实在让人无法接受-列表的标题是“隧道与巨人”("Tunnels and Trolls")。我们不知道它是做什么的,但是听起来像是个游戏,还有什么比你自己编写一款电脑游戏更酷么? + +我们从来没有让它运行起来过,一年后,我们搬出了那个教室。(很久之后,我才真正了解了一点BASIC,我意识到它只是一个为桌面游戏使用的字符产生器,本身并不是游戏。)但木已成舟,从那之后,我立志要成为一个游戏开发者。 + +在我十几岁时,我的家人搞了一台装有 QuickBASIC 的 Macintosh,之后又装了 THINK C。我几乎整个暑假都在 hack games。自我学习是缓慢而痛苦的。我学到了一些东西并顺手会运行起来-或许是个地图又或者是个小的猜谜游戏-但是随着程序的扩大,它越来越难了。 + +> 注解 + +> 我的许多夏天都是在路易斯安那州南部的沼泽中捕蛇和乌龟来渡过的。如果户外不是这样酷热,有一个很好的机会,这将是一个爬虫学的书,而不是编程书。 + +起初,让一些东西显示在屏幕上对我来说是个挑战。后来,我想搞清楚如何写出更大点的程序。除了阅读一些关于“如何用C++编程”的书籍,我开始试图寻找一些关于如何组织程序的书籍。 + +又过了几年,一个朋友给了我一本书:《设计模式:可复用面向对象软件的基础》。终于来了!这就是我从青少年开始便一直寻找的那本书!在一次会议上,我从头到尾读了一遍。我之前仍然在为我自己写的程序挣扎犯愁,但是看到别人也如此挣扎并提出了解决方案,我便解脱了。我感觉我终于有了一些武器而不再是赤手空拳了。 + +> 注解 + +> 这是我们第一次见面,5分钟自我介绍之后,我坐在他的沙发上,并在接下来的几个小时里,我在聚精会神的阅读,完全忽视了他。从那时起,我想我的社交应该至少要提高一点点了。 + +在2001年,我得到了我梦想中的工作:Electronic Arts 的软件工程师。我迫不及待的想看下真正的游戏,以及工程师是如何组织他们的。像 Madden Football 这样的大型游戏到底是一个什么样的架构?他们是怎么用一套代码库在不同平台上运行的? + +破解开放的源码是一个震撼人心和令人惊奇的体验。那里有着优秀的图形、人工智能、动画和视觉效果的代码。我们公司有人知道如何榨取CPU的每一个周期并得宜善用。我甚至认为一些不可能的东西,这些家伙午餐前就能搞定。 + +但这种优秀代码的结构往往是事后想出来的。他们太专注于功能以至于忽视了组织架构。模块之间耦合很严重。新功能只要哪里能够适用就被放到代码库里。我的幻想破灭了,在我看来,就像很多程序员,从来没有研究过_设计模式_,从来不了解[单例模式](02.5-Singleton.md)一样。 + +当然,情况不是真的很糟糕。我已经想象游戏程序员坐在到处是白板的象牙塔中,从容地讨论代码架构细节数周直到结束。现实的情况是,我一直在寻找的代码正是赶着最后期限的人写出来的。他们竭尽了全力,而且,我逐渐意识到,他们最好的努力结果往往是很不错的。我花了游戏代码上的时间越长,我发现隐藏在地表的宝藏越多。 + +不幸的是,“隐藏”却通常很好的描述了这种情况。在代码中埋藏着宝藏,但许多人却只是从上面走过。我看到同事在努力重塑良好的解决方案时,他们需要的例子正是他们脚下的那些代码库。 + +这样的问题正是这本书要在解决的问题。我挖掘并研磨出我在游戏中发现的最好的设计模式,将它们呈现在这里,让我们可以花时间来发明新的东西,而不是重新发明他们。 + +# 书店所售书籍 + +目前市面已经有数十多个游戏编程的书籍。为什么还要再写一本? + +我见过的大多数游戏编程书籍分为两类: + +- __关于特定领域的书籍__。这些针对性较强的书籍给你的游戏开发会带来一些具体的视角。他们会教你3D图形,实时渲染,物理模拟,人工智能,或音频。这些是很多游戏程序员自己的职业生涯过程中专注的领域。 + +- __关于整个游戏引擎的书籍__。相反,这些书尝试阐述整个游戏引擎的不同部分。它们被组织起来形成一个完整的引擎来适用于一些特定类型的游戏,通常是3D第一人称射击游戏。 + +我喜欢这两种类型的书,但我觉得他们留有一些空白。很少有特定领域的书会告诉你的代码块如何与游戏的其他部分交互。你可能在物理和渲染方面是一个巫师(译者注:这里指的是在某个领域特别擅长的人),但是你知道如何优雅的将他们配合在一起? + +第二类书籍覆盖了这些,但我通常发现整个引擎的书太单一,太泛泛之谈。特别是随着移动和​​休闲游戏的兴起,我们正处在大量不同类型游戏被创造的时期。我们不再只是克隆 Quake(译者注:雷神之锤,第一个真3D实时演算的FPS游戏)了。当你的游戏不适合这个模型时,指导完成一个引擎的图书并不是一个合适的选择。 + +相反,这里我想要做的,就是更多的“向导”。在这本书中,每个章节都是一个独立的想法,而你可以将它应用到你的代码里。通过这个方式,你可以混合使用他们来让他们在你制作的游戏中发挥最好的效果。 + +> 注解 + +> 这种“向导”风格的另外一个例子,就是广受大家喜爱的《游戏编程精粹》系列。 + +# 与设计模式的相关性 + +任何名字中带有“模式”的编程书籍显然蕴藏着和经典图书《设计模式:可复用面向对象软件的基础》有着一种关系。这本书由 Erich Gamma,Richard Helm,Ralph Johnson 和 John Vlissides 完成。(俗称“Gang of Four”--四人组) + +> 注解 + +> 设计模式本身也是受到前人的灵感。使用模式语言来描述开放式解决问题的想法来自[《A Pattern Language》](http://en.wikipedia.org/wiki/A_Pattern_Language),由 Christopher Alexander(以及Sarah Ishikawa,Murray Silverstein)完成。 + +> 他们的书是关于架构(就像真正的建筑结构有着建筑和围墙之类的东西),但他们希望他人会使用相同的结构来描述在其他领域的解决方案。设计模式(Design Patterns)是 Gang of Four 在软件领域的一个尝试。 + +通过调用这本书“游戏编程模式”,我并不想暗示四的书刚不适用于游戏。与此相反:这本书的设计模式再访部分涵盖了许多从设计模式的模式,但重点是如何将它们应用到游戏编程。 + +把这本书命名为“游戏编程模式”,我并非暗示 Gang of Four 的书不适用于游戏。恰巧相反,在[再探设计模式](02-Design Patterns Revisited.md)一节中覆盖了众多设计模式,但强调了他们是如何被应用到游戏开发中的。 + +相反,我觉得这本书也适用于非游戏软件。我也可以把这本书命名为 _More Design Patterns_,但我认为游戏制作例子更吸引人。难道你真的想要阅读的一本关于员工记录和银行账户例子的书么? + +话虽这么说,这里介绍的模式是在其他软件中是有用的,我觉得他们是特别适合于软件开发,就像在游戏中经常遇到的挑战一样: + +- 时间和顺序往往是一个游戏的架构的核心部分。事情必须发生在正确的顺序和正确的时间。 + +- 开发周期被高度压缩,一些程序员需要能够快速构建和迭代一组丰富的不同的行为,而不牵连到他人或者查遍整个代码库。 + +- 所有这些行为被定义后,它便开始互动。怪物撕咬英雄,药水混合在一起,炸弹炸到敌人和朋友类似这样。这些交互必须被很好的完成,同时代码库需要保持干净不能纷乱无章犹如交织错乱的毛线球一样。 + +- 最后,性能是游戏的关键。游戏开发者是在不断比赛着看谁能够充分利用平台的性能。游戏周期处理的不同可能意味着数以百万计销售的A级游戏或者掉帧以及愤怒的评论的区别。 + +# 如何阅读这本书 + +_游戏编程模式_分为三大部分。第一部分是序言和书的概括。这正是你现在阅读的章节以及下一章节。 + +第二部分,再探设计模式,回顾了 Gang of Four 中的一些设计模式。在每个章节中,我会提到我对该模式的认识,以及我觉得如何将该模式运用到游戏中。 + +最后部分是这本书的重头戏。这部分代表了我认为十分有用的13种设计模式。它们分为四类:序列模式,行为模式,解耦模式,优化模式。 + +这些模式使用一致的文本组织结构来讲述,以便你将该书作为参考并能快速找到你所需要的内容: + +- __意图__(Intent)部分提供了该模式旨在解决的问题的快照描述。这样你很容易浏览全书快速找到你想要的模式来帮助你解决遇到的难题。 + +- __动机__(Motivation)部分描述了一个示例,该示例存在问题,我们将要对之采用设计模式。不同于具体的算法,模式通常是无形的,除非适用于一些特定的问题。教授一个设计模式却不提供示例就像教授烘培却没有面团一样。这个部分提供面团,之后的部分将会教你如何烘培。 + +- __模式__(Pattern)部分会提炼出前面示例中的模式本质。如果你想了解该模式的书面描述,就是这部分了。如果你已经熟悉了,这部分也是一个很好的复习,确保你没有忘记该模式。 + +- 到目前为止,该模式只是就一个单一的例子来解释的。但你怎么该模式是否适用于你的问题呢?__使用情境__(When to Use It)就模式使用的情境以及何时避免使用会提供一些指引。__使用须知__(Keep in Mind)部分会指出使用该模式时面临的后果和风险。 + +- 如果像我一样,需要借助具体的实例才能真正的理解,那么__示例__(Sample Code)正满足你的需要。示例会一步步实现模式,所以你可以清楚的看到模式是如何工作的。 + +- 模式和单一的算法不同,因为模式是开放式的。每次使用模式的时候,你实现的方式有可能会不同。接下来__设计决策__(Design Decisions)部分,会探讨这个问题,并告诉你在应用模式时要考虑的不同因素。 + +- 结束部分,__参考__(See Also)部分会告诉你该模式和其他模式的关联并指出使用该模式的一些真实世界中的开源代码。 + +# 关于示例代码 + +这本书中的示例代码用 C++ 编写,但是这并不意味着这些模式仅在该语言中有用或者说 C++ 比其他语言要好。几乎所有的语言都适用,虽然有些模式确实倾向于语言有对象和类的概念。 + +我选择 C++ 有几个原因。首先,它是商业游戏中最流行的语言,是该行业的通用语言。 另外,C++ 基于 C 的语法也是 Java,C#,JavaScript和许多其他语言的基础。即使你不懂 C++,也没有关系,你可以很轻松的明白示例代码的含义。 + +这本书的目的,不是教你学习 C++。示例会保持尽可能简单,但是这并不代表良好的 C++ 编码风格或使用就是这样。阅读代码时要理解代码所传达的思想,而不是代码本身的表达。 + +特别一提的是,示例代码没有采用“现代” C++ -- C++11 或更高版本风格。它没使用标准库并很少使用模板。这是“糟糕”的 C++ 代码,但我仍希望保留下来,这样会对那些从C,Objective-C,Java和其他语言转来的人们更加的友好。 + +为了避免浪费页面空间,你已经看到了,和模式不相关的代码,有时会在例子中省略,通常用省略号来表示省去的代码。 + +举个例子,有一个函数,它会处理一些工作,并且会返回一个值。被解释的模式是只关心返回值,不关心处理的工作。在这种情况下,示例代码看起来像这样: + +```c++ +bool update() +{ + // Do work... + return isDone(); +} +``` +# 下一步 + +模式是软件开发中一个不断变化和扩展的部分。这本书从 Gang of Four 文献开始,并分享他们了解的软件设计模式,当书页发布之后过程仍然会继续。 + +你是这个过程的核心部分。只要你开发了你自己的模式并细化(或者反驳!)这本书中提到的模式,你就是在为软件社区贡献力量。如果你关于书中内容有任何建议,修正或者其他反馈,请与我联系。 + +=============================== +[目录](README.md#目录) + +[下一节](01.1-Architecture, Performance, and Games.md) \ No newline at end of file From 6cdfa046a2532a498918ba566aef19d7de54f9ee Mon Sep 17 00:00:00 2001 From: ChildhoodAndy Date: Fri, 8 Aug 2014 10:55:25 +0800 Subject: [PATCH 007/123] fix introduction translation --- 01-Introduction.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/01-Introduction.md b/01-Introduction.md index d8883c2..b183800 100644 --- a/01-Introduction.md +++ b/01-Introduction.md @@ -75,8 +75,6 @@ > 他们的书是关于架构(就像真正的建筑结构有着建筑和围墙之类的东西),但他们希望他人会使用相同的结构来描述在其他领域的解决方案。设计模式(Design Patterns)是 Gang of Four 在软件领域的一个尝试。 -通过调用这本书“游戏编程模式”,我并不想暗示四的书刚不适用于游戏。与此相反:这本书的设计模式再访部分涵盖了许多从设计模式的模式,但重点是如何将它们应用到游戏编程。 - 把这本书命名为“游戏编程模式”,我并非暗示 Gang of Four 的书不适用于游戏。恰巧相反,在[再探设计模式](02-Design Patterns Revisited.md)一节中覆盖了众多设计模式,但强调了他们是如何被应用到游戏开发中的。 相反,我觉得这本书也适用于非游戏软件。我也可以把这本书命名为 _More Design Patterns_,但我认为游戏制作例子更吸引人。难道你真的想要阅读的一本关于员工记录和银行账户例子的书么? From bdd012d5bf7c2e163d7cf5505405fcb461c2fc56 Mon Sep 17 00:00:00 2001 From: ChildhoodAndy Date: Fri, 8 Aug 2014 11:09:21 +0800 Subject: [PATCH 008/123] update read me --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index bdfdb07..3acc27e 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ Game-Programming-Patterns-CN - 是否发现随着代码库的增长却不容易做出些改动? - 是否感觉到你的游戏就是一个纷乱交杂的巨大的毛球? - 又或者不知如何将设计模式应用到游戏? -- 听说过“缓存一致性”和“对象池”,但却不知道如何使用它们来让你的游戏提升性能? +- 听说过“缓存一致性”和“对象池”,但却不知道如何使用它们来提升你的游戏的性能? 你们的救星来啦!我撰写了这本书来解答这些问题。这是我在游戏中所使用的模式总结,这些模式能让我们的代码更整洁,更清晰易懂,以及运行更快! @@ -71,4 +71,4 @@ Game-Programming-Patterns-CN - 在[Issue列表](https://github.com/GameDevelopmentCollege/Game-Programming-Patterns-CN/issues)中查看尚未领取的章节 - 然后在[Issue1](https://github.com/GameDevelopmentCollege/Game-Programming-Patterns-CN/issues/1)中留言回复,我会更新Issue列表状态。 -- Folk项目后开始翻译,提交PR。 +- Fork项目后开始翻译,提交PR。 From a671369651769619b29713f1f07bc25859a46d0a Mon Sep 17 00:00:00 2001 From: ChildhoodAndy Date: Fri, 8 Aug 2014 11:09:38 +0800 Subject: [PATCH 009/123] update object pool update object pool --- 06.3-Object Pool.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/06.3-Object Pool.md b/06.3-Object Pool.md index b2ee009..a8c9684 100644 --- a/06.3-Object Pool.md +++ b/06.3-Object Pool.md @@ -1,13 +1,13 @@ -# 对象池 +对象池 ============================ ## 目标 -通过用固定的池来重用对象的方法取代手动分配,释放对象,以达到提升性能和内存使用的目的。 +使用固定池重用对象,取代手动分配,释放对象,以此来达到提升性能和内存使用的目的 ## 动机 -我们正致力于我们游戏的视觉效果优化。当一个英雄施放魔法时,我们想让一个火星从屏幕闪烁着横穿并爆炸。这一特效将调用粒子系统——一个用来生成微小发光图形并在它们生存周期内产生动画的引擎。 +我们正致力于我们游戏的视觉效果优化。当一个英雄施放魔法时,我们想让一个闪烁的火花在屏幕中崩裂。这一特效将调用粒子系统——一个用来生成微小发光图形并在它们生存周期内产生动画的引擎。 由于光是一个魔棒就会引发数以百计的粒子生成,故我们的系统需要快速地生成它们。更重要的是,我们需要确保创建和销毁它们时不会带来内存碎片。 @@ -15,7 +15,7 @@ 控制台游戏编程(比如XBox360)从多方面而言都比传统的PC编程要更接近于嵌入式编程。就像嵌入式编程一样,控制台游戏必须在很长的一段时间内运行而不能有崩溃或是内存泄露的情况,而且多数情况下无法使用高效的内存压缩管理器。在这样的情况下内存碎片是致命的。 -碎片化意味着我们空闲着的堆空间被破坏成了许多小的内存碎屑,而不是一整块连续的内存块。或许这些小碎屑构成的总可访问内存是大的,但其中最连续的区域却可能小得可怜。假设我们有14字节的空闲空间,但它被一个正被使用的内存块划分成了2个7字节的碎片——假如这时我们想分配一个12字节的对象,则会失败,屏幕上也不会出现任何闪光画面了。 +碎片化意味着我们空闲着的堆空间被破坏成了许多小的内存碎屑,而不是一整块连续的内存块。或许这些小碎屑构成的可访问内存总量是很大的,但其中最连续的区域却可能小得可怜。假如我们有14字节的空闲内存,但它被一个已使用内存分割为了两个7字节的片段——假如这时我们想分配一个12字节的对象,则会失败,屏幕上也不会出现任何闪光画面了。 (注解1:碎片化:这就像在一条杂乱散布着车辆的热闹街区里尝试停车一样,如果他们首尾紧挨着,那么就能腾得出空间,但在乱停放的情况下这些空间却只是众车辆之间的碎片空间。) @@ -50,7 +50,7 @@ ## 使用须知 -你一般依赖于一个垃圾回收器或只是简单地new/delete来为项目进行内存管理。而通过使用对象池,你就是在告诉系统:”我比你更通晓这些字节该如何管理。”也就意味这个模式的规则是完全由你来负责制定的。 +你一般依赖于一个垃圾回收器或只是简单地new/delete来为项目进行内存管理。而通过使用对象池,你就是在告诉系统:“我更明白这些字节应该如何处理。”也就意味这个模式的规则是完全由你来负责制定的。 ### 对象池可能在闲置的对象上浪费内存 @@ -80,7 +80,7 @@ (注解3:多个对象池: 这是一个实现内存高效利用的通用设计模式。管理器持有许多块尺寸不同的池。当你向它们申请一块时,管理器将从池里挑选合适大小的块并返回给你。) -### 被重用的对象并不会自动清除 +### 重用对象不会被自动清理 多数内存管理器都有一个排错特性:它们会将刚分配或者刚释放的内存置成某些特定值(比如0xdeadbeef),这一做法将帮助你找到那些由”未初始化的变量”或者”使用了已释放的内存块”引发的致命错误。 @@ -191,7 +191,7 @@ void ParticlePool::create(double x, double y, 这已经足以在游戏中使用,但细心的读者会发现,创建一个新粒子需要在池内部遍历粒子数组直到找到一个空槽。假设这个池数组很大且几乎已满,此时创建粒子将会十分缓慢。让我们来看看如何由此提升性能: (注解6:时间开销:创建一个粒子的时间开销为O(n),上过算法课的你一定还记得时间复杂度吧。) -### 释放列表 +### 空闲表 假设我们不花时间去检索空闲的粒子槽,那么显然我们得跟踪它们。我们可以单独维护一个指向每个未被使用粒子的指针列表。此时,当我们需要创建粒子时,我们只需移除这个列表的第一项并将这第一项指针指向的粒子进行重用即可。 @@ -318,7 +318,7 @@ void ParticlePool::animate() ## 设计的一些考虑 -如你所见,最简单的对象池实现几乎没什么特别的:创建一个对象数组并在它们被需要时重新初始化。实际项目中的代码可不会这么简单。还有许多扩展对象池的方法,来使其更加通用,安全,便于管理。当你在自己的游戏中使用对象池时,你需要回答一下这些问题: +如你所见,最简单的对象池实现几乎没什么特别的:创建一个对象数组并在它们被需要时重新初始化。实际项目中的代码可不会这么简单。还有许多扩展对象池的方法,来使其更加通用,安全,便于管理。当你在自己的游戏中使用对象池时,你需要回答以下问题: ### 对象是否被加入对象池? 当你在编写一个对象池时首先要问的一个问题就是这些对象自身是否能知道自己处于一个对象池中。多数时间它们是知道的,但你不需要在一个可以存储任意对象的通用对象池类中做这项工作。 From 360c9665a1788c8b88d3fceb31b29086b6f0b3af Mon Sep 17 00:00:00 2001 From: ChildhoodAndy Date: Fri, 8 Aug 2014 11:17:55 +0800 Subject: [PATCH 010/123] update object pool --- 06.3-Object Pool.md | 36 ++++++++++++++++++++++++++++-------- 1 file changed, 28 insertions(+), 8 deletions(-) diff --git a/06.3-Object Pool.md b/06.3-Object Pool.md index a8c9684..dc55550 100644 --- a/06.3-Object Pool.md +++ b/06.3-Object Pool.md @@ -17,14 +17,18 @@ 碎片化意味着我们空闲着的堆空间被破坏成了许多小的内存碎屑,而不是一整块连续的内存块。或许这些小碎屑构成的可访问内存总量是很大的,但其中最连续的区域却可能小得可怜。假如我们有14字节的空闲内存,但它被一个已使用内存分割为了两个7字节的片段——假如这时我们想分配一个12字节的对象,则会失败,屏幕上也不会出现任何闪光画面了。 -(注解1:碎片化:这就像在一条杂乱散布着车辆的热闹街区里尝试停车一样,如果他们首尾紧挨着,那么就能腾得出空间,但在乱停放的情况下这些空间却只是众车辆之间的碎片空间。) +> 注解 + +> 碎片化:这就像在一条杂乱散布着车辆的热闹街区里尝试停车一样,如果他们首尾紧挨着,那么就能腾得出空间,但在乱停放的情况下这些空间却只是众车辆之间的碎片空间。 ![](./res/object-pool-heap-fragment.png) 上图解释了一个堆如何变得碎片化,以及这是如何导致内存分配失败(尽管在理论上有足够的空间供其分配)。 就算碎片化的情况很少,它仍然在削减着堆并使其成为一个千疮百孔而不可用的泡沫块,严重局限了整个游戏的表现力。 -(注解2:浸泡测试: 许多控制台游戏制作者都要求游戏通过“浸泡测试”(soak tests)——他们将游戏置于demo模式连续地跑上好几天。假如游戏崩溃了,他们则不会让游戏投入市场。尽管浸泡测试的失败有时会来自极罕见的意外bug,但多数情况下碎片化的扩张或者是内存泄露才是导致游戏当机的原因。) +> 注解 + +> 浸泡测试: 许多控制台游戏制作者都要求游戏通过“浸泡测试”(soak tests)——他们将游戏置于demo模式连续地跑上好几天。假如游戏崩溃了,他们则不会让游戏投入市场。尽管浸泡测试的失败有时会来自极罕见的意外bug,但多数情况下碎片化的扩张或者是内存泄露才是导致游戏当机的原因。 ### 二者兼顾 @@ -78,7 +82,9 @@ 当你发现自己像这样浪费掉许多内存时,考虑根据对象的尺寸将一个池划分为多个——大的装行李,小的装口袋里的杂物。 -(注解3:多个对象池: 这是一个实现内存高效利用的通用设计模式。管理器持有许多块尺寸不同的池。当你向它们申请一块时,管理器将从池里挑选合适大小的块并返回给你。) +> 注解 + +> 多个对象池: 这是一个实现内存高效利用的通用设计模式。管理器持有许多块尺寸不同的池。当你向它们申请一块时,管理器将从池里挑选合适大小的块并返回给你。 ### 重用对象不会被自动清理 @@ -87,7 +93,10 @@ 由于我们的对象池并不通过内存管理器来重用对象,故我们将脱离这张安全网。更可怕的是,这些”新”对象使用的内存先前存储着另一个同类型的对象。这将使你几乎无法分辨自己是否在创建对象时已将它们初始化——这块存储新对象的内存可能在其先前的生命周期中已经包含了完全相同的数据。 鉴于此,需要特别注意在对象池中初始化对象的部分要对新创建的对象完整地初始化。甚至值得花些功夫为在为清理对象槽内存时增设一个排错功能。 -(注解4:推荐清空后将其内存值置为0x1deadb0b) + +> 注解 + +> 推荐清空后将其内存值置为 0x1deadb0b ### 未使用的对象将占用内存 对象池在那些支持垃圾回收机制的系统中较少被使用,因为内存管理器通常会替你进行内存碎片处理。当然对象池在节省分配和释放时开销方面依然有所作为,在CPU处理速度较慢且回收机制叫简单的移动平台上尤为如此。 @@ -163,7 +172,9 @@ private: create()函数使用内部代码创建粒子群。游戏逐帧调用对象池的animate() 方法,它遍历池中所有粒子并调用它们的animate() 函数。 -(注解5:这里的animate() 方法是 [Update Method](03.3-Update Method.md) 设计模式的一个例子。) +> 注解 + +> 这里的`animate()`方法是 [Update Method](03.3-Update Method.md) 设计模式的一个例子。 对象池简单地使用一个固定大小的数组来存储粒子。在本例的实现中,这个数组的大小在其类声明中被硬编码地写死,当然也可以通过根据给定的大小使用动态数组,或者使用值模板参数来定义。 创建粒子是直接明了的: @@ -189,7 +200,10 @@ void ParticlePool::create(double x, double y, 以上全部就是一个简单的粒子系统,当然不包括粒子的渲染啦~。我们现在可以创建一个粒子池,并通过它创建一些粒子。当粒子的生命周期结束时它们会自动地将自己反激活。 这已经足以在游戏中使用,但细心的读者会发现,创建一个新粒子需要在池内部遍历粒子数组直到找到一个空槽。假设这个池数组很大且几乎已满,此时创建粒子将会十分缓慢。让我们来看看如何由此提升性能: -(注解6:时间开销:创建一个粒子的时间开销为O(n),上过算法课的你一定还记得时间复杂度吧。) + +> 注解 + +> 时间开销:创建一个粒子的时间开销为O(n),上过算法课的你一定还记得时间复杂度吧。 ### 空闲表 @@ -230,7 +244,9 @@ private: 例子如下:我们将除了framesLeft_之外的成员变量置入一个live 结构体中,并将它置入一个state_联合体中。该结构包括了粒子在播放动画时的状态。当粒子未被使用时(也就是联和结构的其他情况下),成员next 将被激活。该成员存储了一指向下其一个可用粒子的指针。 -(注解7:联合体union: 在联和体似乎并不那么常用的今天,这个符号可能对你而言有些陌生。假如你在一个游戏团队工作,你可能会成为一个”内存问题专家”:也就是个当游戏不可避免地遇上内存吃紧问题时忙着想办法的受难同胞。想想联合体吧,说到节省字节的办法它们可谓了如指掌。) +> 注解 + +> 联合体union: 在联和体似乎并不那么常用的今天,这个符号可能对你而言有些陌生。假如你在一个游戏团队工作,你可能会成为一个”内存问题专家”:也就是个当游戏不可避免地遇上内存吃紧问题时忙着想办法的受难同胞。想想联合体吧,说到节省字节的办法它们可谓了如指掌。 我们可以利用这些指针(next成员)来创建一个对象池中未被使用的粒子列表。我们持有所需的可用粒子列表,且无需额外的内存——我们将那些已死亡粒子占用的空间划分过来以存储这个列表。 @@ -265,7 +281,11 @@ ParticlePool::ParticlePool() ``` 现在创建一个新粒子时我们跳转到第一个空闲的粒子: -(注解8:O(1)复杂度,宝贝!万事顺利!) + +> 注解 + +> O(1)复杂度,宝贝!万事顺利! + ```c++ void ParticlePool::create(double x, double y, double xVel, double yVel, From 702f23e7399e44b161aca52ddc9496ee698a82c4 Mon Sep 17 00:00:00 2001 From: G_will Date: Fri, 8 Aug 2014 11:44:06 +0800 Subject: [PATCH 011/123] update readme --- README.md | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 3acc27e..3732d83 100644 --- a/README.md +++ b/README.md @@ -61,14 +61,19 @@ Game-Programming-Patterns-CN - [空间划分](06.4-Spatial Partition.md) ========================== -## 译者 -欢迎朋友们阅读并斧正,提交 Issue 或者 send pull request :] +## 翻译 + +欢迎朋友们阅读并斧正,提交 Issue 或者 send pull request :) 。 能有所收获,便是我们翻译中文的意义所在。 -## 参与 +### 如何参与? - 在[Issue列表](https://github.com/GameDevelopmentCollege/Game-Programming-Patterns-CN/issues)中查看尚未领取的章节 - 然后在[Issue1](https://github.com/GameDevelopmentCollege/Game-Programming-Patterns-CN/issues/1)中留言回复,我会更新Issue列表状态。 - Fork项目后开始翻译,提交PR。 + +### 参考资料 + +- [术语参考](https://github.com/GameDevelopmentCollege/Game-Programming-Patterns-CN/wiki/%E6%9C%AF%E8%AF%AD%E5%8F%82%E8%80%83) From 8b810bb2de8192183db08090893f209d7727e643 Mon Sep 17 00:00:00 2001 From: zhizhen Date: Mon, 11 Aug 2014 11:18:29 +0800 Subject: [PATCH 012/123] translate finished --- 02-Design Patterns Revisited.md | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/02-Design Patterns Revisited.md b/02-Design Patterns Revisited.md index da8acd6..375e741 100644 --- a/02-Design Patterns Revisited.md +++ b/02-Design Patterns Revisited.md @@ -1,2 +1,16 @@ -Design Patterns Revisited +再探设计模式 ============================ + +《设计模式:可复用面向对象软件的基础》一书已经写了将近20年。站在我们的肩膀上,边喝酒边阅读这本书,你就有可能意识到,《设计模式》的确很古老了。对于软件这样一个迅速发展的行业而言,十分远古。这本书的持续流行讲述了无穷无尽的设计是如何同许多框架以及方法相关联的。 + +然而我认为设计模式到了今天仍然重要,我们从过去几十年中学习到了许多东西。在这个章节中,我们将重温许多原始的四人帮写的设计模式。针对每一种模式,我都希望能写出一些有用、有趣的东西。 + +我认为有些模式被过度使用了(单例模式),同时另一些却又被冷落(命令模式)。还有俩列在这是因为我们尤其想要探索它们与游戏的千丝万缕(Flyweight 和 Observer)。最后,有时候我认为去发掘设计模式如何应用在大型编程项目中非常有趣(原型模式和状态模式)。 + +## 模式 +- 命令模式 +- 享元模式 +- 观察者模式 +- 原型模式 +- 单例模式 +- 状态模式 \ No newline at end of file From a9eb86e17bae73e193f154184f6951e67d9c89ee Mon Sep 17 00:00:00 2001 From: zhizhen Date: Mon, 11 Aug 2014 11:22:48 +0800 Subject: [PATCH 013/123] fix translate words --- 02-Design Patterns Revisited.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/02-Design Patterns Revisited.md b/02-Design Patterns Revisited.md index 375e741..54e1f5d 100644 --- a/02-Design Patterns Revisited.md +++ b/02-Design Patterns Revisited.md @@ -5,7 +5,7 @@ 然而我认为设计模式到了今天仍然重要,我们从过去几十年中学习到了许多东西。在这个章节中,我们将重温许多原始的四人帮写的设计模式。针对每一种模式,我都希望能写出一些有用、有趣的东西。 -我认为有些模式被过度使用了(单例模式),同时另一些却又被冷落(命令模式)。还有俩列在这是因为我们尤其想要探索它们与游戏的千丝万缕(Flyweight 和 Observer)。最后,有时候我认为去发掘设计模式如何应用在大型编程项目中非常有趣(原型模式和状态模式)。 +我认为有些模式被过度使用了(单例模式),同时另一些却又被冷落(命令模式)。还有俩列在这是因为我们尤其想要探索它们与游戏的千丝万缕(享元模式和观察者模式)。最后,有时候我认为去发掘设计模式如何应用在大型编程项目中非常有趣(原型模式和状态模式)。 ## 模式 - 命令模式 From 3cb3e315abdc63be888846d72d4c898fe5353f36 Mon Sep 17 00:00:00 2001 From: ChildhoodAndy Date: Mon, 11 Aug 2014 13:43:25 +0800 Subject: [PATCH 014/123] add game loop article --- 03.2-Game Loop.md | 402 ++++++++++++++++++++++++++++++- res/game-loop-fixed.png | Bin 0 -> 73873 bytes res/game-loop-simple.png | Bin 0 -> 77471 bytes res/game-loop-timeline-close.png | Bin 0 -> 54988 bytes res/game-loop-timeline.png | Bin 0 -> 43443 bytes 5 files changed, 401 insertions(+), 1 deletion(-) create mode 100644 res/game-loop-fixed.png create mode 100644 res/game-loop-simple.png create mode 100644 res/game-loop-timeline-close.png create mode 100644 res/game-loop-timeline.png diff --git a/03.2-Game Loop.md b/03.2-Game Loop.md index 63b44fb..48b2222 100644 --- a/03.2-Game Loop.md +++ b/03.2-Game Loop.md @@ -1,2 +1,402 @@ -Game Loop +游戏循环 ============================ + +# 目的 + +实现来自用户输入和处理器速度在游戏时间进度上的分离。 + +# 动机 + +假如说有哪个模式是这本书无法删去的,那么非游戏循环模式莫属。游戏循环模式是游戏编程模式中的精髓。几乎所有的游戏都包含着它,无一雷同,相比而言那些非游戏程序则难见它的身影。 + +为了解循环模式是如何大有作为,我们先来快速回顾一下内存的发展史。在那个大家都还留着络腮胡的编程年代,程序就像你家里的洗碗机那样工作——你塞进一段代码给机器,按下按钮,等待,获得输出结果,完成。那就是批处理程序——活干完了,程序也就终止了。 + +> 注解 + +> 络腮胡:Ada Lovelace(十九世纪中期的数学家,世界上第一位程序设计师)和海军少将 Grace Hopper(二十世纪的海军将军和计算机科学家)都留着极具纪念意义的络腮胡 + +今天你依然见得到它们,幸运的是今天的我们不再使用穿孔卡片来写它们了。书里的那些会转变成一堆标记性语言(Markdown)的Shell脚本,命令行程序,甚至是个小的Python脚本都属于批处理程序。 + +## CPU探秘 + +最终,程序员们意识到这种把批处理代码丢给计算机然后离开几个小时后再回来取结果的方式在程序排错上根本慢得可怕。他们需要实时的反馈——于是交互式编程诞生了。最早的一批交互式程序就包括了游戏: + +``` +YOU ARE STANDING AT THE END OF A ROAD BEFORE A SMALL BRICK +BUILDING . AROUND YOU IS A FOREST. A SMALL +STREAM FLOWS OUT OF THE BUILDING AND DOWN A GULLY. + +> GO IN +YOU ARE INSIDE A BUILDING, A WELL HOUSE FOR A LARGE SPRING. +``` + +> 注解 + +> 洞穴冒险:上面这个被称为”洞穴探险”(Colossal Cave Adventure),史上首个冒险游戏。 + +你可以和这个程序面对面地交谈。它等待你的输入,并对你的操作进行响应。你也许还会回应它的反馈,你们就这么轮流地一唱一和,就像你在幼儿园里所学的那样。当轮到你是,它就静静地呆在那儿啥也不做,就像: + +```c++ +while (true) +{ + char* command = readCommand(); + handleCommand(command); +} +``` + +> 注解 + +> 退出游戏:这个程序永远地循环着,因此你无法退出游戏。真实的游戏会改为诸如while (!done) 并通过设置done标志的值来退出游戏。我省去了这些来让例子看上去更简单。 + +## 事件循环 + +如果剥去现代的图形UI应用程序的外衣,你将发现它们和旧的冒险游戏是多么惊人地相似。你的文字处理器通常什么也不做地呆着直到你按下了某个键或者点击了鼠标: + +```c++ +while (true) +{ + Event* event = waitForEvent(); + dispatchEvent(event); +} +``` + +这与文本指令的主要差异在于,事件循环程序等待用户的输入事件,包括鼠标点击和键盘按键。基本上它还是像旧的文字冒险游戏那样运作,阻塞着等待用户输入,这是个大问题。 + +不同于其他大多数软件,游戏即便在用户不提供输入时也一直在跑。假如你坐下来愣盯着屏幕,游戏也不会卡住。动画依旧在播放,各种效果也在闪动跳跃,假如你运气不佳,怪物们则可能在不断地啃咬你的英雄! + +> 注解 + +> 空闲状态:多数事件循环都包含一个”空闲”(“idle”)事件以保证在没有用户输入时也能间歇性地处理事务,这对于闪烁的光标或者一个进度条而言是很好的,但对于游戏而言远远不够。 + +这是实际游戏循环的第一个关键点:它处理用户的输入,但并不等待输入。游戏循环始终在运转: + +```c++ +while (true) +{ + processInput(); + update(); + render(); +} +``` + +上面是最基本的结构,我们稍后再改善它。processInput()处理其相邻两次调用之间的所有用户输入。接着update()让游戏(数据)模拟迭代一步,它执行游戏AI和物理计算(这是常见顺序)。最后render()对游戏进行渲染以将游戏内容展现给玩家。 + +> 注解 + +> 见名知意,你可能已经猜到了,update()方法中正是个使用[Update模式](03.3-Update Method.md)的好地方。 + +## 时间之外的世界 + +假如循环不因为输入而阻塞,那么试问:它运转得多快呢?游戏循环的每次执行通过某些值更新了游戏状态,从游戏世界中某个住户的视角来看,他们的时钟便往前走了一个单位。 + +> 注解 + +> 帧:游戏循环的一次更新可以用术语”tick”(“tick”)或“帧”(“frame”)来描述。 + +与此同时,玩家的实际时间也在流逝。假如用现实时间来衡量游戏循环的速度,我们就得到了游戏的”帧率”(FPS,frames per second)。假如游戏循环得很快,FPS的值便很高,游戏将会运行得十分快而流畅。反之,游戏就会拖拉得像个定格电影(stop motion movie)。 + +对于现在这个粗糙的游戏循环,它以其尽可能快的速度在运转。两个因素决定了帧率: + +1.循环每一帧要处理的信息量。复杂的物理运算,一堆对象的数据更新,许多图形细节等等都将让你的CPU和GPU忙个不停,这都会让一帧消耗更多的时间。 + +2.平台的底层速度。越快的芯片在相同时间内处理更多的代码。多核,多GPU,专用声卡以及操作系统的定时器都影响着你在一帧里能干多少事情。 + +## 秒的长短 + +在早期的电视游戏中,这个秒数因子是被固定的。假如你为红白机(NES)或者苹果二代电脑(Apple IIe)写游戏,你就必须对执行你游戏的CPU有深度的了解,而且你要能(且必须)为它写专门的代码。你需要好好考虑游戏的每一帧都该做些什么。 + +早些的游戏被精心地编写成每帧仅执行必须的任务,以便它能够在开发者期望的速度下运行。但假如你在更快或更慢一些的机器上跑这样的游戏,游戏本身会发生变速的现象。 + +> 注解 + +> “turbo”:这也就是那些旧的个人电脑总带着“加速”(“turbo”)按钮的原因。新一代的个人电脑变得更快,它们将无法运行那些旧的游戏——因为这些游戏跑起来会变得很快。关闭加速按钮可以减缓它们的运行速度以便进行游戏。 + +而今很少有开发者对他们游戏所运行的硬件平台有深度的了解。取而代之的是,我们必须要让游戏智能地(在速度上)适配于多种硬件机型。 + +这就是游戏循环模式的另一个要点:这一模式让游戏在一个硬件无关的速度常量下运行。 + +# 游戏循环模式 + +游戏循环在游戏过程中持续运转。每循环一次,它非阻塞地处理用户的输入,更新游戏状态,并渲染游戏。它跟踪流逝的时间并控制游戏的速率。 + +# 使用情境 + +对于设计模式,宁可不用也不能错用,故每一章你都能看到这一部分,以便让我们冷静下来思考。设计模式的目标可不是为了让你毫无节制地往你的程序里塞代码。 + +但这一模式有所不同。我能拍着胸脯说你会在你的游戏里使用它。假如你使用了游戏引擎,那么这一模式无需你亲手撰写,但它依然存在(于引擎中)。 + +> 注解 + +> 于我而言,这就是“引擎”和”库”之间的差别。使用库时,你自己把握游戏循环并在其中调用库函数,而使用引擎时它自己掌握着游戏主循环并调用你的代码。 + +你可能会想,我的回合制游戏应该不需要这家伙吧?不,尽管回合制游戏中,游戏状态总是随着双方回合的轮转而更新,但游戏中视觉和听觉的模块却也一直在运转,即便你正在自己的回合犹豫着下一步行动时,动画和音效也依旧在运转。 + +# 使用须知 + +我们这里所讨论的循环是游戏中举足轻重的部分。正所谓程序90%的时间都花在10%的代码上——而游戏循环部分的代码就在这10%之中。你必须小心翼翼,并时刻考虑它的效率。 + +> 注解 + +> 做这些听起来不靠谱的统计,正是那些正牌机械或电气工程师不把我们当回事的原因吧! + +## 你可能需要与操作系统的事件循环进行协调 + +假如你在一个带有图形UI和内置事件循环的操作系统或平台上构建游戏,那么在游戏运行时就有两个应用程序循环在执行。它们需要很好地协作。 + +有时你可以对其进行控制使得游戏只执行你的游戏循环。例如,你放弃珍贵的WindowsAPI来开发游戏,那么你的main()函数可以简化为一个游戏循环。其中你可以调用PeekMessage()处理并从操作系统中分派事件。不同于GetMessage(),PeekMessage()并不阻塞等待用户输入,所以你的游戏循环会持续地运转。 + +其他平台并不会轻易地让你退出事件循环。假如你以浏览器为平台,事件循环也已根植在浏览器执行模式的底层。其中事件循环负责显示,你同样要使用它来作为你的游戏循环。你可能会调用requestAnimationFrame()之类的函数以便浏览器回调回你的程序,并维持游戏的运转。 + +# 例子 + +做了这么长的介绍,游戏循环模式的代码实际上就很容易给出。我们将看见两个不同的实现版本,并比较它们的好坏。 + +游戏循环驱动着AI,渲染,和其他游戏系统,但这并不是模式本身的关键,所以这里我们将这些部分都虚化。实际上render(),update() 等这些部分留给读者作为练习(值得一试!)。 + +## 跑,能跑多快就跑多快 + +我们已经看到最简单的游戏循环: + +```c++ +while (true) +{ + processInput(); + update(); + render(); +} +``` + +它的问题在于你无法控制游戏运转的快慢。在较快的机器上游戏循环可能会快得令玩家无法看清游戏在做些什么,在慢的机器上游戏则会一样变慢变卡。假如你还加入了重量级的模块或者进行AI,物理运算,游戏事实上会更卡。 + +## 小睡一会儿 + +我们首先来看看做一点小改动会如何。假设你希望让游戏以60帧/秒运行,也就是说你大概有16毫秒的时间来处理每一帧。假如你确实能够在这16毫秒以内进行所有的游戏更新与渲染工作,你就可以以一个稳定的帧率来跑游戏。你所需要做的就是处理这一帧,接着等待下一帧的到来,如下图: + +![](./res/game-loop-simple.png) + +> 注解 + +> 1000 ms/FPS = 毫秒每帧 + +代码如下: + +```c++ +while (true) +{ + double start = getCurrentTime(); + processInput(); + update(); + render(); + + sleep(start + MS_PER_FRAME - getCurrentTime()); +} +``` + +这里sleep()的方法确保即便过快地处理完一帧游戏也不会运转得太快。但这办法在游戏运行过慢时并无作为。假如一帧的更新渲染时间超过了16毫秒,睡眠的时间为负,假如我们有让时间逆流的电脑,那许多事情都容易多了,遗憾的是并没有。 + +这时候游戏便慢下来。你可以通过减少每帧的工作量——减少图形处理量或者在AI上耍点小聪明,甚至直接砍了AI。但即便是在一台很快的机器上,这样做也会影响游戏的质量。 + +## 小改动大进步 + +让我们再试试稍复杂点的办法。我们目前的问题可以归结为: + +1.每次更新游戏花去一个固定的时间值。 + +2.需要花些实际的时间来进行更新。(译者注:而这个“实际时间”是机器相关的) + +假如第二步的时间长于第一步,那么游戏就会变慢。例如当需要16毫秒以上的时间来更新帧速为16毫秒每帧的游戏时,就可能无法维持运行速度。但假如我们能在每一帧中进行超过16毫秒的游戏状态更新,那么我们可以不那么频繁地更新游戏并且能够追赶上游戏的行进速度。 + +具体想法是计算这一帧距离上一帧的实际时间间隔以作为更新步长。帧处理花费的实际时间越长,这个步长也就越长(译者注:这个步长实际上等值于帧处理花费的实际时间)。这个办法使得游戏总会越来越接近于实际时间。他们称此为浮动时间迭代(或者变值时间迭代),代码如下: + +```c++ +double lastTime = getCurrentTime(); +while (true) +{ + double current = getCurrentTime(); + double elapsed = current - lastTime; + processInput(); + update(elapsed); + render(); + lastTime = current; +} +``` + +在每一帧里,我们计算出自从上次进行更新所花费的实际时间,也就是变量elapsed。当我们更新游戏状态时,我们将这个时间值传入。接下来游戏引擎必须负责将游戏世界更新到这个时间增量的下一个状态。 + +假设我们从屏幕左边向右边开了一枪。在固定时间迭代方法下,每帧中你根据子弹的速度移动它。在浮动时间迭代方法下,你通过时间差可以调整这个子弹的速度。随着迭代步长增加,子弹在每一帧越飞越快。于是子弹将在等同的实际时间中移动同样的距离,不论它花了20小步来完成的或4大步来完成。 + +这办法看起来成功了: + +1.这样一来游戏在不同的硬件上以相同的速率运行。 +2.高端机器的玩家能够得到一个更流畅的游戏体验。 + +但,哎,我们面前还埋着个大坑:我们使得游戏变得不确定且不稳定。举个例子来说说我们自埋的坑吧: + +> 注解 + +> “确定性”表示每次你运行程序,假如给与同样的输入,那么你将得到完全一致的输出。如你所想,在具有确定性的程序上排错要容易多了——一旦找到导致错误的输入,那么它每次都能重现BUG。 + +> 计算机天生具有确定性,它们机械地执行程序。当混乱的现实世界参杂进来时它们就比变得不确定。例如,网络,系统时钟,线程定时器等都很大程度地依赖于程序控制之外的真实世界。 + +假设在一个双玩家的网络游戏中,Fred使用的是强大的游戏机而George用的是他祖母的古董PC机,我们之前讨论的子弹在他们的屏幕上飞来飞去。在Fred的机器上,游戏运行得飞快,也就是说每一帧处理所需的时间都极短。让我们把帧填满:假设在Fred的机器上子弹飞过屏幕共执行了50帧,那么George那苦逼的机器可能只能在这样的时间里执行5帧。 + +这意味着在Fred的机器上,游戏的物理引擎更新了子弹的位置50次,而George的机器只执行了5次。多数游戏采用浮点数,而它们会带来舍入误差。 每次你将两个浮点数相加,其返回的结果都可能出现左右偏差。Fred的机器做了比George机器10倍多的运算,所以他累计了更多的误差。在他们的机器上,子弹将在不同的位置消失。 + +这只是变时迭代方法可能导致的麻烦问题之一,问题还多着呢。为了以实时来运行,游戏的物理引擎会做实际物理规则的近似。为了防止这近似计算”炸飞上天”,系统进行了减幅运算。这个减幅运算被小心地安排成以某个固定时长迭代进行。因此,物理引擎将变得不稳定。 + +> 注解 + +> “炸飞上天”(“Blowing up”)在这里取字面意思。当物理引擎出问题时,游戏中的对象可能已完全错误的速度飞到天上去。 + +这个例子其不稳定性只是作为一个警醒我们的例子,它会引导我们更进一步。 + +## 把时间追回来 + +渲染,是引擎中通常不会受变时迭代影响的部分。由于渲染引擎表现的是游戏时间中的一瞬间,所以它并不关心距离上次渲染过去了多少时间。它只是把当前的游戏状态渲染出来而已。 + +> 注解 + +> 这很大程度上是成立的。诸如动态模糊等效果可能受到时间迭代的影响,但假如它们出现一些偏差,玩家往往也注意不到。 + +我们可以利用这一事实。我们将使用固定时间更新,因为它使得物理引擎和AI都更加稳定。但我们允许在渲染的时候进行一些机动的调整以释放出一些处理器时间。 + +它这样运作:距离上次的游戏循环已经过去了一段(真实的)时间。这一段时间就是我们需要模拟的游戏”当前时间”,以便赶上玩家的实际时间。我们通过一系列的定时步骤来实现它。代码大致如下: + +```c++ +double previous = getCurrentTime(); +double lag = 0.0; +while (true) +{ + double current = getCurrentTime(); + double elapsed = current - previous; + previous = current; + lag += elapsed; + + processInput(); + + while (lag >= MS_PER_UPDATE) + { + update(); + lag -= MS_PER_UPDATE; + } + + render(); +} +``` + +上述代码可分为几部分:在每一帧的开始,我们基于实际流逝的时间更新变量lag。这一变量表示了游戏时钟相对现实时间落后的量。接着我们使用一个内部循环来更新游戏,每次以固定时间进行,直到它追赶上现实时间。一旦赶上,我们渲染并进行下一次游戏循环。你可以将上述过程画图如下: + +![](./res/game-loop-fixed.png) + +注意此时的时间步长不再是视觉上的帧率。常量MS_PER_UPDATE只是我们更新游戏的间隔。这一间隔越短,追赶上实际时间所花费的处理次数就越多。间隔越大,游戏跳帧越明显。理论上,你希望它足够短,通常快于60FPS,以使游戏在快的机器上维持高保真度。 + +但要注意的是别让它过短。你必须保证这个时间步长大于每次update()函数的处理时间,即便在最慢的机器上也须如此。否则,你的游戏便跟不上现实时间。 + +> 注解 + +> 我把它就这么留在这,但你可以对其进行一些安全保护:当内部更新循环次数超出一定迭代上限时,让循环终止。这样游戏可能会变慢,但总比完全卡死好。 + +幸运的是,我们给予了自己一些喘息的空间。我们通过将渲染拉出更新循环之外来实现了这一点。这一方法解放了大量的CPU时间。最后的结果是,游戏通过定时步长更新,实现了在多硬件平台上以恒定速率进行游戏模拟。只不过在低端机器上玩家会看到游戏窗口里出现跳帧的情况。 + +## Stuck in the middle + +眼下还留有一个问题,也就是残留的延迟。我们以固定的时间步长更新游戏,但在随机的时间点进行渲染。这意味着从玩家的角度来看,游戏常会在两次更新之间展示出完全相同的画面。 + +让我们看看时间线: + +![](./res/game-loop-timeline.png) + +如你所见,我们的更新十分紧凑而固定,同时我们在任何可能的时间进行渲染。渲染的频度低于更新,且不稳定。这些都没有问题。问题在于我们并不总在更新的时间点进行渲染。看看第三次渲染,它介于两次更新之间: + +![](./res/game-loop-timeline-close.png) + +设想一个自当正横穿屏幕,在首次更新时,它在右侧而第二次更新将它移动到屏幕右端。渲染在两次更新之间的时间点进行。以我们现在的实现方式,它将依然在屏幕左端。这意味着动作看起来会显得卡顿而不流畅。 + +顺带一提,我们实际上知道渲染时相邻两帧之间的间隔长度:也就是lag。当这个值小于更新时间步长时,我们跳出更新循环,而不是当lag为0时。那么此时lag剩余的量呢?其实这个量就是我们进入下一帧的时间间隔。 + +当进行渲染时,我们将其传入: + +```c++ +render(lag / MS_PER_UPDATE); +``` + +> 注解 + +> 标准化:这里我们将它除以MS_PER_UPDATE是为了将值标准化。这样传入render()的值将在0(恰好在前一帧)到1(恰好在后一帧)之间(忽略更新时间步长)。通过这一方法,渲染引擎无需担心帧率。它仅仅处理0-1值之间的情况。 + +渲染器知道每个游戏对象的属性以及其当前速度。假设子弹在距离屏幕左侧20像素的地方并以400像素每帧的速率向右移动,加入我们在两帧的正中间渲染,传入render()的参数值即为0.5。故它绘制了一帧半的子弹飞行情况,也就是在距离屏幕左侧220的位置。锵!流畅的动作。 + +当然,可能会遇到推断错误的情况。当我们计算下一帧时,我们可能发现子弹可能撞上了障碍物,或者减速了等等。我们只是设想其前一帧的位置以及下一帧可能所在的位置并在两者之间插值地渲染其位置。但除非物理引擎和AI更新完成,否则我们并不能确切知道子弹究竟会在哪。 + +故推断含有猜测的成分,有时将会出错。幸运的是,这些程度的修正通常并不引人注目。至少,比起你完全不做预测时的卡顿要不起眼得多。 + +# 设计的一些考虑 + +尽管这章已经写得够长了,但我还是留下了许多额外的问题。一旦你考虑诸如与显示刷新速率的同步,多线程,GPU等因素,实际的游戏循环将会变得复杂许多。在这样的高级层面上,你可能需要考虑一下这些问题: + +## 谁来控制游戏循环,你还是平台? + +这是你或多或少都要回答的一个问题。假如你的游戏嵌入在浏览器里,那么你往往无法自己来写游戏循环。浏览器自带基于事件的机制已经预先包含了这一循环。类似地,假如你使用了现成的游戏引擎,你也将依赖于它的游戏循环而不是自己来控制。 + +- 使用平台的事件循环: + - 这相对简单,你无须担心游戏核心循环的代码和优化问题。 + - 它与平台协作得很好。你显然无需担心它何时处理事件,如何捕获事件,或者如何处理平台与你的输入模型之间不匹配的问题等等。 + - 你失去了对时间的控制。平台将在其认为合适的时间调用你的代码。假如其频度无法达到你所预期,很遗憾。更糟的是,许多应用程序的事件循环在概念上的设计并不同与游戏——它们通常很慢并且不连续。 + +- 使用游戏引擎的游戏循环: + - 你无需自己写代码。写游戏循环需要不少技巧。由于其核心代码每一帧都会执行,其微小的错误或性能问题都可能对你的游戏产生很大的影响。具有一个紧凑靠谱的游戏循环是考虑使用现存引擎的重要原因。 + - 你不需要亲自来写。当然,坏消息是当出现一些与引擎循环不那么合拍的需求时,你却无法获得循环的控制权。 + +- 自己写游戏循环: + - 你来掌控一切。你可以做你想做的任何事。你可以完全依照你游戏的需求来设计它。 + - 你需要实现平台的接口。应用程序框架和操作系统通常希望你能划分出一些时间来供它们处理事件并做一些其他事。假如你掌控你程序的核心循环,那么它们便得不到这些时间。你显然周期性地将控制权交给系统以保证应用程序的框架不会混乱。 + +## 你如何解决能量耗损? + +五年前我们无须讨论这个问题。那时游戏运行在电视设备或专用手持设备上。但随着智能手机,笔记本电脑,移动游戏的大力发展,你现在是该好好考虑这个问题了。一个跑起来很炫的游戏,但它却将玩家的手机变成一个3分钟将果汁蒸发的加热器,这可不是个让人们开心的好游戏啊。 + +现在你需要考虑不但要让你的游戏看来很棒,并且尽可能低减少CPU的使用率。当你完成了一帧中所做的所有工作时,你可能需要一个性能的上限来控制CPU进行休眠。 + +- 让它能跑多快跑对快: + +你最好只在PC游戏上这么做(尽管越来越多的玩家在笔记本上跑PC游戏)。你的游戏循环从不明确地让系统休眠。任何空余的循环都要用于避免FPS或者图形保真度的不稳定。 + +这给予你最好的游戏体验,但它会吞噬电量。假如玩家在笔记本电脑上玩,他们需要一个很好的供电装置。 + +- 限制帧率: + +移动游戏通常更关注游戏的运转质量而不是最高的画质。许多移动游戏会设置帧率上限(60或30FPS)。假如游戏循环在本时间片内已经完成了处理,剩余的时间它将休眠。 + +这给予了玩家一个足够好的体验并帮他们节省的设备能耗。 + +## 如何来控制游戏速度? + +一个游戏循环具有两个关键部分:非阻塞的用户输入和帧时间适配。输入的问题好解决。所以关键在于你如何解决时间的问题。游戏可运行的平台数目是有限的,且多数游戏只能在其中几个平台上跑。如何适应平台变化便是关键。 + +> 注解 + +> 做游戏看起来像是人类的天赋之一,因为每创造出一个能进行计算的机器,我们最先做的就是在它上面开发游戏。PDP-1是一台主频2kHz的机器,仅有4096字的内存,即便如此Steve Russell和他的几个同学还是在它身上创造出了Spacewar!(译者注:世界上第一款真正意义上的娱乐性游戏,双人飞行射击游戏)。 + +- 非同步的定时迭代:见我们的第一个代码样例。你只需要尽可能快地执行游戏循环。 + - 简单。这是这一情况的主要(呃,也是唯一的)优点。 + - 游戏速度直接取决于硬件和游戏的复杂程度。其主要缺点是假如硬件出现任何变化,将直接影响游戏速度。它就像带着死飞的游戏循环。 + +- 同步的定时迭代:在复杂平台上所要做的下一步是让游戏进行定时迭代,同时在循环的末尾增加一个延时,或者是同步点以防游戏运行得过快。 + - 依然很简单。比起最简单的例子,只需要追加一行代码。在多数游戏中,你都希望进行同步。或许你会为图形引擎增加双缓存并让翻转缓存的操作与显示的刷新率同步。 + - 这是省电的。这是移动游戏十分在意的一点。你不会希望非必要地耗损用户的电量。通过几毫秒的休眠而不是将每一帧都塞满操作,你能够省电。 + - 游戏不会跑得很快。它的速度可能是填满操作的游戏循环的一半。 + - 游戏可能会跑得很慢。假如更新一帧的更新和渲染花去过多的时间,游戏反馈将会变慢。由于这一模式并不将更新与渲染分离,在没有进一步优化的情况下它将很容易显露出这一缺陷。不进行外置帧渲染并同步时,游戏会变慢。 + +- 变时迭代:我在此提到诸多解决方法中的这一种以警示那些我曾经建议避免使用它的游戏开发者们。记住这个方法为何不好,总有助益。 + - 它能适应过快或过慢的硬件平台。加入游戏无法跟上现实速度,它将以越来越快的步伐跟上。 + - 它使得游戏变得不确定且不稳定。当然这才是根本问题。物理和网络模块往往在变时迭代下变得运转困难。 + +- 定时更新迭代,变时渲染:我们提及的例子中的最后一个办法也是最复杂,最具适配性的一个。它以固定时间步长进行更新,但将渲染与更新分离,并让渲染来跟进玩家的时钟。 + - 它也能适应过快或过慢的硬件平台。因为游戏能够实时更新,所以游戏状态不会落后于现实时间。假如玩家拥有顶尖的机器,它则将带来一个十分流畅的游戏体验。 + - 它很复杂。它的主要缺陷在于实际的实现还有需要工作要做。你需要协调更新迭代的步长使其在高端机上足够小(足够平滑),同时在低端机上不会让游戏跑得太慢。 + +# 参考 + +- 讲述游戏循环模式的一篇经典文章是来自Glenn Fiedler的[“Fix Your Timestep“](http://gafferongames.com/game-physics/fix-your-timestep/)。没有它这一章节就没法写成现在这样。 +- Witters的文章 [game loops](http://www.koonsolo.com/news/dewitters-gameloop/) 也值得一看。 +- [Unity](http://unity3d.com/)的框架具有一个复杂的游戏循环,[这里](http://www.richardfine.co.uk/2012/10/unity3d-monobehaviour-lifecycle/)有一个对其很详尽的阐述。 diff --git a/res/game-loop-fixed.png b/res/game-loop-fixed.png new file mode 100644 index 0000000000000000000000000000000000000000..8f7bf44d48f4b8cede5e3d0c7546f81394d1e80f GIT binary patch literal 73873 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 Y0M2PZ1?SirLjV8(07*qoM6N<$f@z*&mjD0& literal 0 HcmV?d00001 diff --git a/res/game-loop-simple.png b/res/game-loop-simple.png new file mode 100644 index 0000000000000000000000000000000000000000..b4db2d28e616777c08be7e104a21bdaa253b5b3f GIT binary patch literal 77471 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 z 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 literal 0 HcmV?d00001 diff --git a/res/game-loop-timeline.png b/res/game-loop-timeline.png new file mode 100644 index 0000000000000000000000000000000000000000..cc7902df46778cf07d874e6680f2116ef1304e65 GIT binary patch literal 43443 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 literal 0 HcmV?d00001 From c199362d8adebd39139063fabd0113aaf544501e Mon Sep 17 00:00:00 2001 From: ChildhoodAndy Date: Mon, 11 Aug 2014 14:27:58 +0800 Subject: [PATCH 015/123] design pattern revisited correction --- 02-Design Patterns Revisited.md | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/02-Design Patterns Revisited.md b/02-Design Patterns Revisited.md index 54e1f5d..afc0fe5 100644 --- a/02-Design Patterns Revisited.md +++ b/02-Design Patterns Revisited.md @@ -1,16 +1,23 @@ 再探设计模式 ============================ -《设计模式:可复用面向对象软件的基础》一书已经写了将近20年。站在我们的肩膀上,边喝酒边阅读这本书,你就有可能意识到,《设计模式》的确很古老了。对于软件这样一个迅速发展的行业而言,十分远古。这本书的持续流行讲述了无穷无尽的设计是如何同许多框架以及方法相关联的。 +《设计模式:可复用面向对象软件的基础》一书已经出版了将近20年。除非你站在我的肩膀上,_设计模式_(_Design Patterns_)xxxx(此句待纠正)。软件行业发展迅速,这本书确实有些古老了。这本书经久不衰说明比起许多框架和方法来说,设计模式更加永恒。 -然而我认为设计模式到了今天仍然重要,我们从过去几十年中学习到了许多东西。在这个章节中,我们将重温许多原始的四人帮写的设计模式。针对每一种模式,我都希望能写出一些有用、有趣的东西。 +然而我认为设计模式到了今天仍然重要,我们从过去几十年中学习到了许多东西。在这个章节中,我们将重温四人帮(Gang of Four)的几个原作设计模式。针对每一种模式,我都希望能写出一些有用、有趣的东西。 -我认为有些模式被过度使用了(单例模式),同时另一些却又被冷落(命令模式)。还有俩列在这是因为我们尤其想要探索它们与游戏的千丝万缕(享元模式和观察者模式)。最后,有时候我认为去发掘设计模式如何应用在大型编程项目中非常有趣(原型模式和状态模式)。 +我认为有些模式被过度使用([单例模式]()),而另一些却又被冷落([命令模式]())。书中还涉及到两个,我想探讨他们与游戏的相关性([享元模式](02.2-Flyweight.md)和[观察者模式](02.3-Observer.md))。最后,有时候我只是觉得了解设计模式在更大点的编程领域的表现是蛮有趣的([原型模式](02.4-Prototype.md)和[状态模式](02.6-State.md))。 ## 模式 -- 命令模式 -- 享元模式 -- 观察者模式 -- 原型模式 -- 单例模式 -- 状态模式 \ No newline at end of file +- [命令模式](02.1-Command.md) +- [享元模式](02.2-Flyweight.md) +- [观察者模式](02.3-Observer.md) +- [原型模式](02.4-Prototype.md) +- [单例模式](02.5-Singleton.md) +- [状态模式](02.6-State.md) + +=============================== +[上一节](01.1-Architecture, Performance, and Games.md) + +[目录](README.md#目录) + +[下一节](02.1-Command.md) From 85c3434507180d8b9cfc2cbfcd942d8a3155c6dd Mon Sep 17 00:00:00 2001 From: kislyl <1131985199@qq.com> Date: Mon, 11 Aug 2014 14:52:02 +0800 Subject: [PATCH 016/123] Update 03.2-Game Loop.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 除了"设计的一些考虑"之外的部分已修订。这一部分稍微高级一点,有些地方还需要大神们一起考量考量~。 --- 03.2-Game Loop.md | 72 +++++++++++++++++++++++------------------------ 1 file changed, 36 insertions(+), 36 deletions(-) diff --git a/03.2-Game Loop.md b/03.2-Game Loop.md index 48b2222..81e0ba4 100644 --- a/03.2-Game Loop.md +++ b/03.2-Game Loop.md @@ -3,23 +3,23 @@ # 目的 -实现来自用户输入和处理器速度在游戏时间进度上的分离。 +实现用户输入和处理器速度在游戏行进时间上的分离。 # 动机 -假如说有哪个模式是这本书无法删去的,那么非游戏循环模式莫属。游戏循环模式是游戏编程模式中的精髓。几乎所有的游戏都包含着它,无一雷同,相比而言那些非游戏程序则难见它的身影。 +假如有哪个模式是本书无法删去的,那么非游戏循环模式莫属。游戏循环模式是游戏编程模式中的精髓。几乎所有的游戏都包含着它,无一雷同,相比而言那些非游戏程序却难见它的身影。 -为了解循环模式是如何大有作为,我们先来快速回顾一下内存的发展史。在那个大家都还留着络腮胡的编程年代,程序就像你家里的洗碗机那样工作——你塞进一段代码给机器,按下按钮,等待,获得输出结果,完成。那就是批处理程序——活干完了,程序也就终止了。 +为了解循环模式是如何大有作为,我们先来快速回顾一下内存的发展史。在那个大家都还留着络腮胡的编程年代,程序工作起来就像你家里的洗碗机——你塞进一段代码给机器,按下按钮,等待,获得输出结果,完成。那就是批处理程序——活干完了,程序也就终止了。 > 注解 > 络腮胡:Ada Lovelace(十九世纪中期的数学家,世界上第一位程序设计师)和海军少将 Grace Hopper(二十世纪的海军将军和计算机科学家)都留着极具纪念意义的络腮胡 -今天你依然见得到它们,幸运的是今天的我们不再使用穿孔卡片来写它们了。书里的那些会转变成一堆标记性语言(Markdown)的Shell脚本,命令行程序,甚至是个小的Python脚本都属于批处理程序。 +今天你依然见得到它们,幸运的是今天的我们不再使用穿孔卡片来写代码。Shell脚本,命令行程序,甚至是将一堆标记性语言(Markdown)转变成这本书的那些小Python脚本都属于批处理程序。 ## CPU探秘 -最终,程序员们意识到这种把批处理代码丢给计算机然后离开几个小时后再回来取结果的方式在程序排错上根本慢得可怕。他们需要实时的反馈——于是交互式编程诞生了。最早的一批交互式程序就包括了游戏: +最终程序员们意识到,这种把批处理代码丢给计算机,离开几个小时后再回来查看结果的方式在程序排错上简直慢得可怕。他们需要实时的反馈——于是交互式编程诞生了。最早的一批交互式程序就包括了像下面这样的游戏: ``` YOU ARE STANDING AT THE END OF A ROAD BEFORE A SMALL BRICK @@ -34,7 +34,7 @@ YOU ARE INSIDE A BUILDING, A WELL HOUSE FOR A LARGE SPRING. > 洞穴冒险:上面这个被称为”洞穴探险”(Colossal Cave Adventure),史上首个冒险游戏。 -你可以和这个程序面对面地交谈。它等待你的输入,并对你的操作进行响应。你也许还会回应它的反馈,你们就这么轮流地一唱一和,就像你在幼儿园里所学的那样。当轮到你是,它就静静地呆在那儿啥也不做,就像: +你可以和这个程序面对面地交谈。它等待你的输入,并对你的操作进行响应。你也许还会回应它的反馈,你们就这么一唱一和,就像你在幼儿园里所学的那样。当轮到你时,机器就静静地呆在那儿啥也不做,就像: ```c++ while (true) @@ -50,7 +50,7 @@ while (true) ## 事件循环 -如果剥去现代的图形UI应用程序的外衣,你将发现它们和旧的冒险游戏是多么惊人地相似。你的文字处理器通常什么也不做地呆着直到你按下了某个键或者点击了鼠标: +如果剥去现代的图形UI应用程序的外衣,你将发现它们和旧的冒险游戏是如此地相似。你的文字处理器通常什么也不做地呆着,直到你按下了某个键或者点击了鼠标: ```c++ while (true) @@ -60,13 +60,13 @@ while (true) } ``` -这与文本指令的主要差异在于,事件循环程序等待用户的输入事件,包括鼠标点击和键盘按键。基本上它还是像旧的文字冒险游戏那样运作,阻塞着等待用户输入,这是个大问题。 +这与文本指令的主要差异在于,事件循环程序等待用户的输入事件,包括鼠标点击和键盘按键。基本上它还是像旧的文字冒险游戏那样运作,阻塞着自己等待用户输入,这是个大问题。 -不同于其他大多数软件,游戏即便在用户不提供输入时也一直在跑。假如你坐下来愣盯着屏幕,游戏也不会卡住。动画依旧在播放,各种效果也在闪动跳跃,假如你运气不佳,怪物们则可能在不断地啃咬你的英雄! +不同于其他大多数软件,游戏即便在用户不提供输入时也一直在跑。假如你坐下来愣盯着屏幕,游戏也不该卡住。动画依旧在播放,各种效果也在闪动跳跃,假如你运气不佳,怪物们则可能在不断地啃咬你的英雄! > 注解 -> 空闲状态:多数事件循环都包含一个”空闲”(“idle”)事件以保证在没有用户输入时也能间歇性地处理事务,这对于闪烁的光标或者一个进度条而言是很好的,但对于游戏而言远远不够。 +> 空闲状态:多数事件循环都包含一个”空闲”(“idle”)事件以便在没有用户输入时也能间歇性地处理事务,这对于闪烁的光标或者一个进度条而言已经足够了,但对于游戏而言远远不够。 这是实际游戏循环的第一个关键点:它处理用户的输入,但并不等待输入。游戏循环始终在运转: @@ -79,21 +79,21 @@ while (true) } ``` -上面是最基本的结构,我们稍后再改善它。processInput()处理其相邻两次调用之间的所有用户输入。接着update()让游戏(数据)模拟迭代一步,它执行游戏AI和物理计算(这是常见顺序)。最后render()对游戏进行渲染以将游戏内容展现给玩家。 +上面是最基本的结构,我们稍后再改善它。processInput()处理相邻两次循环调用之间的所有用户输入。接着update()让游戏(数据)模拟迭代一步,它执行游戏AI和物理计算(这是常见顺序)。最后render()对游戏进行渲染以将游戏内容展现给玩家。 > 注解 -> 见名知意,你可能已经猜到了,update()方法中正是个使用[Update模式](03.3-Update Method.md)的好地方。 +> 见名知意,你可能已经猜到了,update()方法里正是个使用[Update模式](03.3-Update Method.md)的好地方。 ## 时间之外的世界 -假如循环不因为输入而阻塞,那么试问:它运转得多快呢?游戏循环的每次执行通过某些值更新了游戏状态,从游戏世界中某个住户的视角来看,他们的时钟便往前走了一个单位。 +假如循环不因输入而阻塞,那么试问:它运转得多快呢?游戏循环的每次执行通过某些值更新了游戏状态,从游戏世界中某个人物的视角来看,他们的时钟便往前走了一个单位。 > 注解 > 帧:游戏循环的一次更新可以用术语”tick”(“tick”)或“帧”(“frame”)来描述。 -与此同时,玩家的实际时间也在流逝。假如用现实时间来衡量游戏循环的速度,我们就得到了游戏的”帧率”(FPS,frames per second)。假如游戏循环得很快,FPS的值便很高,游戏将会运行得十分快而流畅。反之,游戏就会拖拉得像个定格电影(stop motion movie)。 +与此同时,玩家的实际时间也在流逝。假如用现实时间来衡量游戏循环的速度,我们就得到了游戏的”帧率”(FPS,frames per second)。假如游戏循环得很快,FPS的值便很高,游戏将会运行得十分快而流畅。反之,游戏就会拖拉得像场定格电影(stop motion movie)。 对于现在这个粗糙的游戏循环,它以其尽可能快的速度在运转。两个因素决定了帧率: @@ -113,7 +113,7 @@ while (true) 而今很少有开发者对他们游戏所运行的硬件平台有深度的了解。取而代之的是,我们必须要让游戏智能地(在速度上)适配于多种硬件机型。 -这就是游戏循环模式的另一个要点:这一模式让游戏在一个硬件无关的速度常量下运行。 +这就是游戏循环模式的另一个要点:这一模式让游戏在一个与硬件无关的速度常量下运行。 # 游戏循环模式 @@ -123,13 +123,13 @@ while (true) 对于设计模式,宁可不用也不能错用,故每一章你都能看到这一部分,以便让我们冷静下来思考。设计模式的目标可不是为了让你毫无节制地往你的程序里塞代码。 -但这一模式有所不同。我能拍着胸脯说你会在你的游戏里使用它。假如你使用了游戏引擎,那么这一模式无需你亲手撰写,但它依然存在(于引擎中)。 +但这一模式有所不同。我拍着胸脯说你会在你的游戏里使用它。假如你使用了游戏引擎,那么这一模式无需你亲手实现,但它依然存在(于引擎中)。 > 注解 > 于我而言,这就是“引擎”和”库”之间的差别。使用库时,你自己把握游戏循环并在其中调用库函数,而使用引擎时它自己掌握着游戏主循环并调用你的代码。 -你可能会想,我的回合制游戏应该不需要这家伙吧?不,尽管回合制游戏中,游戏状态总是随着双方回合的轮转而更新,但游戏中视觉和听觉的模块却也一直在运转,即便你正在自己的回合犹豫着下一步行动时,动画和音效也依旧在运转。 +你可能会想,我的回合制游戏应该不需要这家伙吧?不,尽管回合制游戏中,游戏状态总是随着双方回合的轮转而更新,但游戏中视觉和听觉的模块却也一直在运转,即便当你正在自己的回合犹豫着下一步行动时,动画和音效也依旧在运转。 # 使用须知 @@ -137,7 +137,7 @@ while (true) > 注解 -> 做这些听起来不靠谱的统计,正是那些正牌机械或电气工程师不把我们当回事的原因吧! +> 谈论这些听起来不靠谱的统计,正是那些正牌机械或电气工程师不把我们当回事的原因吧! ## 你可能需要与操作系统的事件循环进行协调 @@ -149,7 +149,7 @@ while (true) # 例子 -做了这么长的介绍,游戏循环模式的代码实际上就很容易给出。我们将看见两个不同的实现版本,并比较它们的好坏。 +做了这么长的介绍,游戏循环模式的代码已经不言而喻。我们将看到两个不同的实现版本,并比较它们的好坏。 游戏循环驱动着AI,渲染,和其他游戏系统,但这并不是模式本身的关键,所以这里我们将这些部分都虚化。实际上render(),update() 等这些部分留给读者作为练习(值得一试!)。 @@ -166,7 +166,7 @@ while (true) } ``` -它的问题在于你无法控制游戏运转的快慢。在较快的机器上游戏循环可能会快得令玩家无法看清游戏在做些什么,在慢的机器上游戏则会一样变慢变卡。假如你还加入了重量级的模块或者进行AI,物理运算,游戏事实上会更卡。 +它的问题在于你无法控制游戏运转的快慢。在较快的机器上游戏循环可能会快得令玩家看不清游戏在做些什么,在慢的机器上游戏则会一样变慢变卡。假如你还加入了重量级的模块或者进行AI,物理运算,游戏实际上会更卡。 ## 小睡一会儿 @@ -192,7 +192,7 @@ while (true) } ``` -这里sleep()的方法确保即便过快地处理完一帧游戏也不会运转得太快。但这办法在游戏运行过慢时并无作为。假如一帧的更新渲染时间超过了16毫秒,睡眠的时间为负,假如我们有让时间逆流的电脑,那许多事情都容易多了,遗憾的是并没有。 +这里sleep()的方法确保即便过快地处理完一帧,游戏也不会运转得太快。但这办法在游戏运行过慢时并无作为。假如一帧的更新渲染时间超过了16毫秒,睡眠的时间为负——如果我们有让时间逆流的电脑,那许多事情都会很容易,遗憾的是并没有。 这时候游戏便慢下来。你可以通过减少每帧的工作量——减少图形处理量或者在AI上耍点小聪明,甚至直接砍了AI。但即便是在一台很快的机器上,这样做也会影响游戏的质量。 @@ -221,9 +221,9 @@ while (true) } ``` -在每一帧里,我们计算出自从上次进行更新所花费的实际时间,也就是变量elapsed。当我们更新游戏状态时,我们将这个时间值传入。接下来游戏引擎必须负责将游戏世界更新到这个时间增量的下一个状态。 +在每一帧里,我们计算出自上次更新至今所花费的实际时间,即变量elapsed。当我们更新游戏状态时,将这个时间值传入。接下来游戏引擎必须负责将游戏世界更新到这个时间增量的下一个状态。 -假设我们从屏幕左边向右边开了一枪。在固定时间迭代方法下,每帧中你根据子弹的速度移动它。在浮动时间迭代方法下,你通过时间差可以调整这个子弹的速度。随着迭代步长增加,子弹在每一帧越飞越快。于是子弹将在等同的实际时间中移动同样的距离,不论它花了20小步来完成的或4大步来完成。 +假设我们从屏幕左边向右边开了一枪。在固定时间迭代方法下,每帧中你根据子弹的速度移动它。在浮动时间迭代方法下,你通过时间差可以调整这个子弹的速度。随着迭代步长增加,子弹在每一帧越飞越快。于是子弹将在等同的实际时间中移动同样的距离,不论它花了20小步(较快的机器上)来完成的或4大步(较慢的机器上)来完成。 这办法看起来成功了: @@ -240,9 +240,9 @@ while (true) 假设在一个双玩家的网络游戏中,Fred使用的是强大的游戏机而George用的是他祖母的古董PC机,我们之前讨论的子弹在他们的屏幕上飞来飞去。在Fred的机器上,游戏运行得飞快,也就是说每一帧处理所需的时间都极短。让我们把帧填满:假设在Fred的机器上子弹飞过屏幕共执行了50帧,那么George那苦逼的机器可能只能在这样的时间里执行5帧。 -这意味着在Fred的机器上,游戏的物理引擎更新了子弹的位置50次,而George的机器只执行了5次。多数游戏采用浮点数,而它们会带来舍入误差。 每次你将两个浮点数相加,其返回的结果都可能出现左右偏差。Fred的机器做了比George机器10倍多的运算,所以他累计了更多的误差。在他们的机器上,子弹将在不同的位置消失。 +这意味着在Fred的机器上,游戏的物理引擎更新了子弹的位置50次,而George的机器只执行了5次。多数游戏采用浮点数,而它们会带来舍入误差。 你每次将两个浮点数相加,其返回的结果都可能出现左右偏差。Fred的机器做了比George机器10倍多的运算,所以他累计了更多的误差。在他们的机器上,子弹将在不同的位置消失。 -这只是变时迭代方法可能导致的麻烦问题之一,问题还多着呢。为了以实时来运行,游戏的物理引擎会做实际物理规则的近似。为了防止这近似计算”炸飞上天”,系统进行了减幅运算。这个减幅运算被小心地安排成以某个固定时长迭代进行。因此,物理引擎将变得不稳定。 +这只是变时迭代方法可能导致的麻烦之一,问题还多着呢。为了以实时来运行,游戏的物理引擎会做实际物理规则的近似。为了防止这近似计算”炸飞上天”,系统进行了减幅运算。这个减幅运算被小心地安排成以某个固定时长迭代进行。因此,物理引擎也将变得不稳定。 > 注解 @@ -258,7 +258,7 @@ while (true) > 这很大程度上是成立的。诸如动态模糊等效果可能受到时间迭代的影响,但假如它们出现一些偏差,玩家往往也注意不到。 -我们可以利用这一事实。我们将使用固定时间更新,因为它使得物理引擎和AI都更加稳定。但我们允许在渲染的时候进行一些机动的调整以释放出一些处理器时间。 +这一事实可以利用。我们将使用固定时间更新,因为它使得物理引擎和AI都更加稳定。但我们允许在渲染的时候进行一些机动的调整以释放出一些处理器时间。 它这样运作:距离上次的游戏循环已经过去了一段(真实的)时间。这一段时间就是我们需要模拟的游戏”当前时间”,以便赶上玩家的实际时间。我们通过一系列的定时步骤来实现它。代码大致如下: @@ -284,7 +284,7 @@ while (true) } ``` -上述代码可分为几部分:在每一帧的开始,我们基于实际流逝的时间更新变量lag。这一变量表示了游戏时钟相对现实时间落后的量。接着我们使用一个内部循环来更新游戏,每次以固定时间进行,直到它追赶上现实时间。一旦赶上,我们渲染并进行下一次游戏循环。你可以将上述过程画图如下: +上述代码可分为几部分:在每帧的开始,我们基于实际流逝的时间更新变量lag。这一变量表示了游戏时钟相对现实时间落后的量。接着我们使用一个内部循环来更新游戏,每次以固定时间进行,直到它追赶上现实时间。一旦赶上,我们渲染并进行下一次游戏循环。你可以将上述过程画图如下: ![](./res/game-loop-fixed.png) @@ -294,13 +294,13 @@ while (true) > 注解 -> 我把它就这么留在这,但你可以对其进行一些安全保护:当内部更新循环次数超出一定迭代上限时,让循环终止。这样游戏可能会变慢,但总比完全卡死好。 +> 我把它就这么留在这,但你可以对其采取一些安全措施:当内部更新循环次数超出一定迭代上限时,让循环终止。这样游戏可能会变慢,但总比完全卡死好。 幸运的是,我们给予了自己一些喘息的空间。我们通过将渲染拉出更新循环之外来实现了这一点。这一方法解放了大量的CPU时间。最后的结果是,游戏通过定时步长更新,实现了在多硬件平台上以恒定速率进行游戏模拟。只不过在低端机器上玩家会看到游戏窗口里出现跳帧的情况。 -## Stuck in the middle +## 留在两帧之间 -眼下还留有一个问题,也就是残留的延迟。我们以固定的时间步长更新游戏,但在随机的时间点进行渲染。这意味着从玩家的角度来看,游戏常会在两次更新之间展示出完全相同的画面。 +眼下还留有一个问题,也就是残留的延迟。我们以固定的时间步长更新游戏,但在随机的时间点进行渲染。这意味着从玩家的角度来看,游戏常会在两次更新之间展现出完全相同的画面。 让我们看看时间线: @@ -310,9 +310,9 @@ while (true) ![](./res/game-loop-timeline-close.png) -设想一个自当正横穿屏幕,在首次更新时,它在右侧而第二次更新将它移动到屏幕右端。渲染在两次更新之间的时间点进行。以我们现在的实现方式,它将依然在屏幕左端。这意味着动作看起来会显得卡顿而不流畅。 +设想一个子弹正横穿屏幕,首次更新时它在左侧,而第二次更新将它移动到屏幕右端。渲染在两次更新之间的某个时间点进行。以我们现在的实现方式,它将依然在屏幕左端。这意味着动作看起来会显得卡顿而不流畅。 -顺带一提,我们实际上知道渲染时相邻两帧之间的间隔长度:也就是lag。当这个值小于更新时间步长时,我们跳出更新循环,而不是当lag为0时。那么此时lag剩余的量呢?其实这个量就是我们进入下一帧的时间间隔。 +顺带一提,我们实际上知道渲染时相邻两帧之间的间隔长度:也就是变量lag。当这个值小于更新时间步长时,我们跳出更新循环,而不是当lag为0时跳出。那么此时lag剩余的量呢?其实这个量就是我们进入下一帧的时间间隔。 当进行渲染时,我们将其传入: @@ -324,15 +324,15 @@ render(lag / MS_PER_UPDATE); > 标准化:这里我们将它除以MS_PER_UPDATE是为了将值标准化。这样传入render()的值将在0(恰好在前一帧)到1(恰好在后一帧)之间(忽略更新时间步长)。通过这一方法,渲染引擎无需担心帧率。它仅仅处理0-1值之间的情况。 -渲染器知道每个游戏对象的属性以及其当前速度。假设子弹在距离屏幕左侧20像素的地方并以400像素每帧的速率向右移动,加入我们在两帧的正中间渲染,传入render()的参数值即为0.5。故它绘制了一帧半的子弹飞行情况,也就是在距离屏幕左侧220的位置。锵!流畅的动作。 +渲染器知道每个游戏对象的属性以及其当前速度。假设子弹在距离屏幕左侧20像素的地方并以400像素每帧的速率向右移动,假设我们在两帧的正中间渲染,传入render()的参数值即为0.5。故它绘制了下半帧的子弹飞行情况,也就是在距离屏幕左侧220的位置。锵!流畅的动作。 -当然,可能会遇到推断错误的情况。当我们计算下一帧时,我们可能发现子弹可能撞上了障碍物,或者减速了等等。我们只是设想其前一帧的位置以及下一帧可能所在的位置并在两者之间插值地渲染其位置。但除非物理引擎和AI更新完成,否则我们并不能确切知道子弹究竟会在哪。 +当然,可能会遇到推断错误的情况。当计算下一帧时,子弹可能撞上了障碍物,或者减速了等等。我们只是设想其前一帧的位置以及下一帧可能所在的位置并在两者之间插值地渲染其位置。但除非物理引擎和AI更新完成,否则我们并不能确切地知道子弹究竟会在哪。 故推断含有猜测的成分,有时将会出错。幸运的是,这些程度的修正通常并不引人注目。至少,比起你完全不做预测时的卡顿要不起眼得多。 # 设计的一些考虑 -尽管这章已经写得够长了,但我还是留下了许多额外的问题。一旦你考虑诸如与显示刷新速率的同步,多线程,GPU等因素,实际的游戏循环将会变得复杂许多。在这样的高级层面上,你可能需要考虑一下这些问题: +尽管这章已经写得够长了,但我还是留下了许多额外的问题。一旦你考虑诸如与显示刷新速率的同步,多线程,GPU等因素,实际的游戏循环将会变得复杂许多。在这样的高级层面上,你可能需要考虑以下这些问题: ## 谁来控制游戏循环,你还是平台? @@ -361,7 +361,7 @@ render(lag / MS_PER_UPDATE); 你最好只在PC游戏上这么做(尽管越来越多的玩家在笔记本上跑PC游戏)。你的游戏循环从不明确地让系统休眠。任何空余的循环都要用于避免FPS或者图形保真度的不稳定。 -这给予你最好的游戏体验,但它会吞噬电量。假如玩家在笔记本电脑上玩,他们需要一个很好的供电装置。 +这给予你最好的游戏体验,但它会吞噬电量。假如玩家在笔记本电脑上玩,他们需要一个很好的供电设备。 - 限制帧率: From 87b7ae347dcac256aa5cc4497d6508575eb7cdd1 Mon Sep 17 00:00:00 2001 From: zhizhen Date: Tue, 12 Aug 2014 10:33:24 +0800 Subject: [PATCH 017/123] correct --- 02-Design Patterns Revisited.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/02-Design Patterns Revisited.md b/02-Design Patterns Revisited.md index afc0fe5..5da234b 100644 --- a/02-Design Patterns Revisited.md +++ b/02-Design Patterns Revisited.md @@ -1,7 +1,7 @@ 再探设计模式 ============================ -《设计模式:可复用面向对象软件的基础》一书已经出版了将近20年。除非你站在我的肩膀上,_设计模式_(_Design Patterns_)xxxx(此句待纠正)。软件行业发展迅速,这本书确实有些古老了。这本书经久不衰说明比起许多框架和方法来说,设计模式更加永恒。 +《设计模式:可复用面向对象软件的基础》一书已经出版了将近20年。不过通过阅读本章,你将有机会重温和理解设计模式。软件行业发展迅速,这本书确实有些古老了。这本书经久不衰说明比起许多框架和方法来说,设计模式更加永恒。 然而我认为设计模式到了今天仍然重要,我们从过去几十年中学习到了许多东西。在这个章节中,我们将重温四人帮(Gang of Four)的几个原作设计模式。针对每一种模式,我都希望能写出一些有用、有趣的东西。 From cec34d04b91b5fc7ff44938b57711418a6c30c47 Mon Sep 17 00:00:00 2001 From: ChildhoodAndy Date: Tue, 12 Aug 2014 13:42:36 +0800 Subject: [PATCH 018/123] add command pattern article --- 02.1-Command.md | 328 +++++++++++++++++++++++++++++++++++- res/command-buttons-one.png | Bin 0 -> 71800 bytes res/command-buttons-two.png | Bin 0 -> 87860 bytes res/command-stream.png | Bin 0 -> 39925 bytes res/command-undo.png | Bin 0 -> 52169 bytes 5 files changed, 327 insertions(+), 1 deletion(-) create mode 100644 res/command-buttons-one.png create mode 100644 res/command-buttons-two.png create mode 100644 res/command-stream.png create mode 100644 res/command-undo.png diff --git a/02.1-Command.md b/02.1-Command.md index 508d625..db35028 100644 --- a/02.1-Command.md +++ b/02.1-Command.md @@ -1,2 +1,328 @@ -Command +命令模式 ============================ + +命令模式是我最喜爱的模式之一。在我写过的许多大型游戏或者其他程序中,都有用到它。正确的使用它,会让你的代码变得更加优雅。对于这个模式,Gang of Four 有着一个预见性的深奥说明: + +> 将一个请求(request)封装成一个对象,从而让你使用不同的请求把客户端参数化,对请求队列或者记录请求日志,可以提供命令的撤销和恢复功能。 + +我想我们一致认为这句子很生涩难懂。首先,它延伸了它试图建立的比喻场景。在软件世界之外,词语有很多意思,“客户(client)”就是一个_人_的意思-一个你与它做生意的人。我检查过,人们(people)是不可以“参数化”的。(译者注:作者在这里的意思是Gang of Four 的说明因为太具概括性,涵盖了软件开发之外的一些定义,使得句子很难理解。) + + +# 输入配置 + +每一个游戏都有一处代码块用来读取用户原始输入-按钮点击,键盘事件,鼠标点击,或者其他等等。它记录每次的输入,并将之转换为游戏中一个有意义的动作(action): + +![](./res/command-buttons-one.png) + +> 注解 + +> 不要经常按按钮B。 + +下面是个简单的实现: + +```c++ +void InputHandler::handleInput() +{ + if (isPressed(BUTTON_X)) jump(); + else if (isPressed(BUTTON_Y)) fireGun(); + else if (isPressed(BUTTON_A)) swapWeapon(); + else if (isPressed(BUTTON_B)) lurchIneffectively(); +} +``` +这个函数通常会通过[游戏循环](03.2-Game Loop.md)被每帧调用,我还确定你肯定清楚这个函数的作用。上面的代码在我们将用户的输入硬编码对应到游戏动作中时是有效的,但是许多游戏允许用户_配置_他们的按钮与动作的映射。 + +为了支持这个特性,我们需要把那些对`jump()`和`fireGun()`的直接调用转换为我们可以换出(swap out)的东西。”换出“(swapping out)听起来很像变量赋值,所以我们需要个_对象_来代表一个游戏动作。 + +我们定义了一个基类用来代表一个可触发的游戏命令: + +```c++ +class Command +{ +public: + virtual ~Command() {} + virtual void execute() = 0; +}; +``` +然后我们为每个不同的游戏动作创建一个子类: + +```c++ +class JumpCommand : public Command +{ +public: + virtual void execute() { jump(); } +}; + +class FireCommand : public Command +{ +public: + virtual void execute() { fireGun(); } +}; + +// You get the idea... +``` +在我们的输入处理中,我们为每个按钮存储一个指针指向他们。 + +```c++ +class InputHandler +{ +public: + void handleInput(); + + // Methods to bind commands... + +private: + Command* buttonX_; + Command* buttonY_; + Command* buttonA_; + Command* buttonB_; +}; +``` +现在输入处理成了下面这样: + +```c++ +void InputHandler::handleInput() +{ + if (isPressed(BUTTON_X)) buttonX_->execute(); + else if (isPressed(BUTTON_Y)) buttonY_->execute(); + else if (isPressed(BUTTON_A)) buttonA_->execute(); + else if (isPressed(BUTTON_B)) buttonB_->execute(); +} +``` + +以前每个输入都会直接调用一个函数,现在则会有一个间接调用层。 + +![](./res/command-buttons-two.png) + +简而言之,这就是命令模式。如果你已经看到了它的优点,不妨考虑将文章的剩余部分看成奖励吧。 + +# 关于角色的说明 + +我们刚才定义的命令类在上个例子中是有效的,但他们很受限。问题就是,他们假设存在的如`jump()`,`fireGun()`等这些顶级函数,是隐式的知道如何找到玩家的头像并且使得玩家像木偶一样进行动作处理。 + +这种假设耦合限制了这些命令的的效用。__JumpCommand__类_唯一_能做的事情就是使得 player 进行跳跃。让我们放宽限制。我们传进去一个我们想要控制的对象来取代自身寻找被命令的对象的调用函数: + +```c++ +class Command +{ +public: + virtual ~Command() {} + virtual void execute(GameActor& actor) = 0; +}; +``` +这里,__GameActor__是我们用来表示游戏世界中的角色的”游戏对象“类。我们将它传入`execute()`中,以便命令可以针对我们选择的角色进行调用,就像这样: + +```c++ +class JumpCommand : public Command +{ +public: + virtual void execute(GameActor& actor) + { + actor.jump(); + } +}; +``` +现在,我们可以使用这个类来让游戏中的任何角色进行来回跳动。在输入处理和记录命令以及调用正确的对象之间,我们缺少了一部分。首先,我们改变下`handleInput()`,像下面这样返回一个命令(commands): + +```c++ +Command* InputHandler::handleInput() +{ + if (isPressed(BUTTON_X)) return buttonX_; + if (isPressed(BUTTON_Y)) return buttonY_; + if (isPressed(BUTTON_A)) return buttonA_; + if (isPressed(BUTTON_B)) return buttonB_; + + // Nothing pressed, so do nothing. + return NULL; +} +``` +它不能直接执行命令,因为它并不知道该传入那个角色对象。命令是一个具体化的调用,这里正是我们可以利用的地方-我们可以延迟调用。 + +然后,我们需要一些代码来保存命令并且执行对玩家角色的调用。像下面这样: + +```c++ +Command* command = inputHandler.handleInput(); +if (command) +{ + command->execute(actor); +} +``` +假设`actor`是玩家角色的一个引用,这将会基于用户的输入来驱动角色,所以我们可以像第一个例子一样给角色赋予相同的行为。在命令和角色之间加入的间接层赋予了我们这样的能力:我们可以让玩家控制游戏中的任何角色,只需通过改变命令执行时传入的角色对象。 + +在实践中,这并不是一个常见的功能,但是有一种情况却经常见到。迄今为止,我们只考虑了玩家驱动角色(player-driven character),但是对于游戏世界中的其他角色呢?他们由游戏的AI来驱动。我们可以使用相同的命令模式来作为AI引擎和角色的接口;AI代码部分提供命令(Command)对象用来执行。(译者注:`command->execute(AI对象);`) + +AI选择命令,角色执行命令,它们之间的解耦给了我们很大的灵活性。我们可以为不同的角色使用不同的AI模块。或者我们可以为不同种类的行为混合AI。你想要一个更加具有侵略性的敌人?只需要插入一段更具侵略性的AI代码来为它生成命令。事实上,我们甚至可以将AI使用到玩家的角色身上,这对于像游戏需要自动运行的demo模式是很有用的。 + +通过将控制角色的命令作为第一类对象,我们便去掉了直接的函数调用这样的紧耦合。相反的,把它想象成一个队列或者一个命令流(queue or stream of commands): + +![](./res/command-stream.png) + +一些代码(输入处理(the input handler)或者AI)生成命令并将它们放置于命令流中,一些代码(发送者(the dispatcher)或者角色自身(actor))执行命令并且调用它们。通过中间的队列,我们解耦了一端的生产者和另一端的消费者。 + +# 撤销和重做(Undo and Redo) + +最后这个例子(译者注:作者指的是撤销和重做)是命令模式最有名的应用了。如果一个命令对象可以 _do_ 一些事情,那么应该可以很轻松的 _undo_(撤销) 它们。撤销这个行为经常在一些策略游戏中见到,在游戏中如果你不喜欢的话可以回滚一些步骤。在_创建_游戏时这是一个很常见的工具。如果你想让你的游戏设计师们讨厌你,最可靠的办法就是在关卡编辑器中不要提供撤销命令,让他们不能撤销不小心犯的错误。 + +如果没有命令模式,实现撤销是很困难的。有了它,小菜一碟啊。我们假定一个情景,我们在制作一款单人,回合制的游戏,我们想让我们的玩家能够撤销一些行动以便他们能够更多的专注于策略而不是猜测。 + +我们已经可以很方便的使用命令模式来抽象输入处理,所以每次对角色的移动要凤爪给你起来。例如,像下面这样来移动一个单位: + +```c++ +class MoveUnitCommand : public Command +{ +public: + MoveUnitCommand(Unit* unit, int x, int y) + : unit_(unit), + x_(x), + y_(y) + {} + + virtual void execute() + { + unit_->moveTo(x_, y_); + } + +private: + Unit* unit_; + int x_, y_; +}; +``` +注意到这个和我们上一个命令不太相同。在上个例子中,我们想要_抽象_出命令,执行命令时可以针对不同的角色。在这个例子中,我们特别希望将命令_绑定_到移动的单位上。这个命令的实例不是一般性质的”移动某些物体“这样适用于很多情境下的的操作,在游戏的回合次序中,它是一个特定具体的移动。 + +这凸显了命令模式在实现时的一个变化。在某些情况下,像我们的第一对的例子,一个命令代表了一个可重用的对象,表示_ a thing that can be done_(一件可以被完成的事情)。我们前面的输入处理程序隐式的针对一个单一的命令对象,并要求在右按钮被按下的时候其`execute()`方法被调用。 + +这里,这些命令更加具体。他们表示_a thing that can be done at a specific point in time_(一件可以在特定时间点完成的事情)。这意味着每次玩家选择移动,输入处理程序代码都会创建一个命令实例。像下面这样: + +```c++ +Command* handleInput() +{ + // Get the selected unit... + Unit* unit = getSelectedUnit(); + + if (isPressed(BUTTON_UP)) { + // Move the unit up one. + int destY = unit->y() - 1; + return new MoveUnitCommand(unit, unit->x(), destY); + } + + if (isPressed(BUTTON_DOWN)) { + // Move the unit down one. + int destY = unit->y() + 1; + return new MoveUnitCommand(unit, unit->x(), destY); + } + + // Other moves... + + return NULL; +} +``` +事实上,命令是一次性使用,只将来到我们的优势在第二。为了使命令撤消的,我们定义另一个操作的每个命令类需要实现: + +事实上,命令的一次性使用将会是我们可以利用的一个优势。为了撤销命令,我们定义了一个操作,每个命令类都需要来实现它: + +```c++ +class Command +{ +public: + virtual ~Command() {} + virtual void execute() = 0; + virtual void undo() = 0; +}; +``` +`undo()`方法会反转由对应的`execute()`方法改变的游戏状态。下面我们针对上一个移动命令加入了撤销支持: + +```c++ +class MoveUnitCommand : public Command +{ +public: + MoveUnitCommand(Unit* unit, int x, int y) + : unit_(unit), + xBefore_(0), + yBefore_(0), + x_(x), + y_(y) + {} + + virtual void execute() + { + // Remember the unit's position before the move + // so we can restore it. + xBefore_ = unit_->x(); + yBefore_ = unit_->y(); + + unit_->moveTo(x_, y_); + } + + virtual void undo() + { + unit_->moveTo(xBefore_, yBefore_); + } + +private: + Unit* unit_; + int xBefore_, yBefore_; + int x_, y_; +}; +``` +注意到我们在类中添加了一些状态。当单位移动时,它会忘记它刚才在哪。如果我们要撤销移动,我们得记住单位的上一次位置,正是`xBefore_`和`yBefore_`变量的功能。 + +为了让玩家能够撤销一次移动,我们保留了他们执行的上一个命令。当他们敲击`Control-Z`时,我们便会调用`undo()`方法。(如果他们已经撤销了,那么会变为”重做“,我们会再次执行那个命令。) + +支持多次撤销并不难。这次我们不再保存最后一个命令,取而代之的是,我们保存了一个命令列表和”current“(当前)命令的一个引用。当玩家执行了一个命令,我们将这个命令添加到列表中,并将”current“指向它。 + +![](./res/command-undo.png) + +# 类风格化还是函数风格化? + +此前,我说命令(commands)和第一类函数或者闭包相似,但是这里我举的每个例子都用了类定义。如果你熟悉函数式编程,你可能想知道如何用函数式风格实现命令模式。 + +我用这种方式写例子是因为 C++ 对于第一类函数的支持非常有限。函数指针无须过多阐述,仿函数(译者注:关于仿函数可以看[百科的介绍](http://baike.baidu.com/view/2070037.htm?fr=aladdin))看起来比较怪异,还需要定义一个类,C++11 中的闭包使用起来比较棘手因为要手动管理内存的缘故。 + +这并不是说在其他语言中你不应该使用函数来实现命令模式。如果你使用的语言中有闭包的实现,无论怎样,使用它们!在某些方面,命令模式对于没有闭包的语言来说是模拟闭包的一种方式。 + +举个例子,如果我们在用 JavaScript 编写游戏,我们可以像下面这样创建一个单位移动命令: + +```js +function makeMoveUnitCommand(unit, x, y) { + // This function here is the command object: + return function() { + unit.moveTo(x, y); + } +} +``` +我们也可以通过闭包来添加对撤销的支持: + +```js +function makeMoveUnitCommand(unit, x, y) { + var xBefore, yBefore; + return { + execute: function() { + xBefore = unit.x(); + yBefore = unit.y(); + unit.moveTo(x, y); + }, + undo: function() { + unit.moveTo(xBefore, yBefore); + } + }; +} +``` +如果你熟悉函数式风格,上面这么做你会感到很自然。如果不熟悉,我希望这个章节能够帮助你了解一些。对于我来说,命令模式的作用能够真正的显示函数式编程在解决许多问题时是多么的高效。 + +# 参考 + +- 你可能最终会有很多不同的命令类。为了更容易地实现这些类,定义一个具体的基类,里面有着一些方便的高层次的方法,这样派生的命令可以将它们组合来定义自身的行为,这么做通常是有帮助的。它会将命令的主要方法`execute()`变成[子类沙盒](04.2-Subclass Sandbox.md)。 +- 在我们的例子中,我们明确地选择了那些角色会执行一个命令。在某些情况下,尤其是在对象模型是分层的情况下,它可能没这么直观。一个对象可以响应一个命令,或者它可以决定于关闭一些从属对象。如果你这样做,你需要了解下[责任链(Chain of Responsibility)](http://en.wikipedia.org/wiki/Chain-of-responsibility_pattern)。 +- 一些命令如第一个例子中的`JumpCommand`是一些纯行为的代码块,无需过多阐述。在类似情况下,拥有不止一个这样命令类的实例会浪费内存,因为所有的实例是等价的。[享元模式](02.2-Flyweight.md)就是解决这个问题的。 + +> 注解 + +> 你可以将它用[单例模式](02.5-Singleton.md)实现,但是(翻译疑问) + + + +=============================== +[上一节](02-Design Patterns Revisited.md) + +[目录](README.md#目录) + +[下一节](02.2-Flyweight.md) diff --git a/res/command-buttons-one.png b/res/command-buttons-one.png new file mode 100644 index 0000000000000000000000000000000000000000..f4d5f39a0d56f8707cf836088ab2d72e220b3840 GIT binary patch literal 71800 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

sR2=^+3-@^oUz464sz z@`y!?GG{D9e;!m1T+Jn7xDsz7`l0&rpz}te7RMAax4>hr9_9pF0yF zw3eR-MsffK5OA+1`~x7=NV$2o6&R2WumTWLr3Bmlt=)4shg{GnpqkKysj zZO4ji5z`7b(yzIOLR;}fLq$HVc;zPSGH?+>K(Z`0WiYxzIYy^{h!Cu=*>+^1JH#4R zicnEQsOa>d*m>drVJjnj`sp6$+wFd$d7L6gL{Bu4YrpR?3qK(f?IUEyTH>9K%k#je zwrmmnrcQrzq%~C*ua?aK_)n=^taDTO3EFpMy@ZXGE@zhIs+$iP@}f9)_v`U`y1nFu zI-*d?n(UB;oVKKjMHcrZd^cy6zPJwvHCu|BPZ?^4RQVMI)K}?i-cYPSmYUhgA@F>W zngs-0?B)qlG^;I_!al(@*JaQZllrOEJRoRWLnOs_8EV)zwBG^Kb8fE3jRxoO

R> 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%0DJeL?U#=?+I1r{l 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 literal 0 HcmV?d00001 diff --git a/res/command-stream.png b/res/command-stream.png new file mode 100644 index 0000000000000000000000000000000000000000..3164b03ddf8119260e78a72ab8b1bdbbe9efd45e GIT binary patch literal 39925 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
uA#w8qTpsw``C+C5}R?ATGo4(`*K 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 Hu0mjfyM(0k literal 0 HcmV?d00001 diff --git a/res/command-undo.png b/res/command-undo.png new file mode 100644 index 0000000000000000000000000000000000000000..50e7233dd39b84ae73b67114b0df9f6b298f71fa GIT binary patch literal 52169 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
Sa;UnB4|* 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 literal 0 HcmV?d00001 From 94dc595beb47f637474e6321abdcb37e8e9b25e4 Mon Sep 17 00:00:00 2001 From: ChildhoodAndy Date: Tue, 12 Aug 2014 13:47:59 +0800 Subject: [PATCH 019/123] introduction correction --- 01-Introduction.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/01-Introduction.md b/01-Introduction.md index b183800..866fe33 100644 --- a/01-Introduction.md +++ b/01-Introduction.md @@ -19,15 +19,15 @@ 我们从来没有让它运行起来过,一年后,我们搬出了那个教室。(很久之后,我才真正了解了一点BASIC,我意识到它只是一个为桌面游戏使用的字符产生器,本身并不是游戏。)但木已成舟,从那之后,我立志要成为一个游戏开发者。 -在我十几岁时,我的家人搞了一台装有 QuickBASIC 的 Macintosh,之后又装了 THINK C。我几乎整个暑假都在 hack games。自我学习是缓慢而痛苦的。我学到了一些东西并顺手会运行起来-或许是个地图又或者是个小的猜谜游戏-但是随着程序的扩大,它越来越难了。 +在我十几岁时,我的家人搞了一台装有 QuickBASIC 的 Macintosh,之后又装了 THINK C。我几乎整个暑假都在 hack games。自学是缓慢而痛苦的。我学到了一些东西并顺手会运行起来-或许是个地图又或者是个小的猜谜游戏-但是随着程序的扩大,它越来越难了。 > 注解 -> 我的许多夏天都是在路易斯安那州南部的沼泽中捕蛇和乌龟来渡过的。如果户外不是这样酷热,有一个很好的机会,这将是一个爬虫学的书,而不是编程书。 +> 我的许多夏天都是在路易斯安那州南部的沼泽中捕蛇和乌龟来渡过的。如果户外不是这样酷热,很有可能,这将是一个爬虫学的书,而不是编程书。 起初,让一些东西显示在屏幕上对我来说是个挑战。后来,我想搞清楚如何写出更大点的程序。除了阅读一些关于“如何用C++编程”的书籍,我开始试图寻找一些关于如何组织程序的书籍。 -又过了几年,一个朋友给了我一本书:《设计模式:可复用面向对象软件的基础》。终于来了!这就是我从青少年开始便一直寻找的那本书!在一次会议上,我从头到尾读了一遍。我之前仍然在为我自己写的程序挣扎犯愁,但是看到别人也如此挣扎并提出了解决方案,我便解脱了。我感觉我终于有了一些武器而不再是赤手空拳了。 +又过了几年,一个朋友给了我一本书:《设计模式:可复用面向对象软件的基础》。终于来了!这就是我从青少年开始便一直寻找的那本书!在一次会面中,我从头到尾读了一遍。我之前仍然在为我自己写的程序挣扎犯愁,但是看到别人也如此挣扎并提出了解决方案,我便解脱了。我感觉我终于有了一些武器用来挥舞而不再是赤手空拳了。 > 注解 @@ -91,7 +91,7 @@ # 如何阅读这本书 -_游戏编程模式_分为三大部分。第一部分是序言和书的概括。这正是你现在阅读的章节以及下一章节。 +_游戏编程模式_分为三大部分。第一部分是序言和书的概括。这正是你现在阅读的章节以及[下一章节](01.1-Architecture, Performance, and Games.md)。 第二部分,再探设计模式,回顾了 Gang of Four 中的一些设计模式。在每个章节中,我会提到我对该模式的认识,以及我觉得如何将该模式运用到游戏中。 From f3ac4e1f8834b5f7ef6d7f1e48076c82380623b5 Mon Sep 17 00:00:00 2001 From: ChildhoodAndy Date: Tue, 26 Aug 2014 12:13:08 +0800 Subject: [PATCH 020/123] command chapter correction --- 02.1-Command.md | 61 ++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 58 insertions(+), 3 deletions(-) diff --git a/02.1-Command.md b/02.1-Command.md index db35028..c44e9ec 100644 --- a/02.1-Command.md +++ b/02.1-Command.md @@ -7,6 +7,31 @@ 我想我们一致认为这句子很生涩难懂。首先,它延伸了它试图建立的比喻场景。在软件世界之外,词语有很多意思,“客户(client)”就是一个_人_的意思-一个你与它做生意的人。我检查过,人们(people)是不可以“参数化”的。(译者注:作者在这里的意思是Gang of Four 的说明因为太具概括性,涵盖了软件开发之外的一些定义,使得句子很难理解。) +然后,句子的剩余部分就像你可能使用的模式的一串列表一样。不是特别明朗,除非你的用例恰巧在列表中。我对命令模式的精炼(pithy)概括如下: + +__命令就是一个对象化的方法调用。__(A command is a reified method call.) + +当然,“精炼”(pithy)通常意味着“令人费解的简洁”,所以这可能并不是一个好的改进。让我拆开来说下。“Reify”,或许你没听说过它,意思是“真实化”(make real)。另外一个术语 reifying 有着使一些事物成为“第一类”的意思。(译者注:你可能在其他书籍中见到说是“第一类值”的类似说法) + +> 注解 + +> “Reify”出自拉丁文“res”,意思为“thing”,加上英语后缀“-fy”,所以就成为了“thingify”,坦白说,这是个很有趣的单词。 + +这两个术语都意味着,将某个_概念_(concept)转化为一块_数据_(data)-一个对象-你可以认为是传入函数的变量等等。所以说命令模式是一个“对象化的方法调用”,我的意思就是封装在一个对象的一个方法调用。 + +这听起来像是一个“回调“(callback),”一等函数“(first-class function),”函数指针“(function pointer),”闭包“(closure)或者取决于你所使用的语言的”部分实用功能“(partially applied function),确实这些都有相似之处。The Gang of Four 之后这样阐述: + +> 注解 + +> 一些语言的_反射系统_可以让让你在运行时使用类型处理。你可以得到一个对象,它代表着某些其他对象的类,你也可以玩玩看类型可以处理哪些问题事情。换句话说,反射是一个具体化的类型系统。 + +``` +命令就是回调的一个面向对象的替代。(Commands are an object-oriented replacement for callbacks.) +``` + +这个比他们对模式的概括要好多了。 + +但是这些都比较抽象和模糊。我喜欢用一些具体点的东西来做为章节开头,并且我也鼓励这样。为了弥补这点,从这里开始,都是例子,它们非常适合命令模式。 # 输入配置 @@ -43,6 +68,11 @@ public: virtual void execute() = 0; }; ``` + +> 注解 + +> 当你有一个不返回任何值的一个单一方法接口,很有可能就会用到命令模式。 + 然后我们为每个不同的游戏动作创建一个子类: ```c++ @@ -89,6 +119,12 @@ void InputHandler::handleInput() } ``` +> 注解 + +> 注意到我们这里没有检查命令是否为`null`没?这里假设了每个按钮有某个命令对应关联。 + +> 如果你想要支持不处理任何事情的按钮,而不用明确检查是否为null,我们可以定义一个命令类,这个命令类中的`execute()`方法不做任何事情。然后,我们将按钮处理器(button handler)指向一个空对象(null object)代替指向null。这个模式叫[空对象(Null Object)](http://en.wikipedia.org/wiki/Null_Object_pattern)。 + 以前每个输入都会直接调用一个函数,现在则会有一个间接调用层。 ![](./res/command-buttons-two.png) @@ -154,17 +190,33 @@ AI选择命令,角色执行命令,它们之间的解耦给了我们很大的 通过将控制角色的命令作为第一类对象,我们便去掉了直接的函数调用这样的紧耦合。相反的,把它想象成一个队列或者一个命令流(queue or stream of commands): +> 注解 + +> 关于队列更多信息,见[事件队列](./05.2-Event Queue.md) + ![](./res/command-stream.png) +> 注解 + +> 为什么我感觉有必要通过图片来解释“流(stream)”呢?为什么它看起来就像一个管道(tube)一样? + 一些代码(输入处理(the input handler)或者AI)生成命令并将它们放置于命令流中,一些代码(发送者(the dispatcher)或者角色自身(actor))执行命令并且调用它们。通过中间的队列,我们解耦了一端的生产者和另一端的消费者。 +> 注解 + +> 如果我们把这些命令_序列化_,我们便可以通过互联网发送数据流。我们可以把玩家的输入,通过网络发送到另外一台机器上,然后进行重放。这是多人网络游戏很重要的一块。 + # 撤销和重做(Undo and Redo) 最后这个例子(译者注:作者指的是撤销和重做)是命令模式最有名的应用了。如果一个命令对象可以 _do_ 一些事情,那么应该可以很轻松的 _undo_(撤销) 它们。撤销这个行为经常在一些策略游戏中见到,在游戏中如果你不喜欢的话可以回滚一些步骤。在_创建_游戏时这是一个很常见的工具。如果你想让你的游戏设计师们讨厌你,最可靠的办法就是在关卡编辑器中不要提供撤销命令,让他们不能撤销不小心犯的错误。 +> 注解 + +> 这里可能是我的经验之谈。 + 如果没有命令模式,实现撤销是很困难的。有了它,小菜一碟啊。我们假定一个情景,我们在制作一款单人,回合制的游戏,我们想让我们的玩家能够撤销一些行动以便他们能够更多的专注于策略而不是猜测。 -我们已经可以很方便的使用命令模式来抽象输入处理,所以每次对角色的移动要凤爪给你起来。例如,像下面这样来移动一个单位: +我们已经可以很方便的使用命令模式来抽象输入处理,所以每次对角色的移动要封装起来。例如,像下面这样来移动一个单位: ```c++ class MoveUnitCommand : public Command @@ -215,8 +267,6 @@ Command* handleInput() return NULL; } ``` -事实上,命令是一次性使用,只将来到我们的优势在第二。为了使命令撤消的,我们定义另一个操作的每个命令类需要实现: - 事实上,命令的一次性使用将会是我们可以利用的一个优势。为了撤销命令,我们定义了一个操作,每个命令类都需要来实现它: ```c++ @@ -228,6 +278,11 @@ public: virtual void undo() = 0; }; ``` + +> 注解 + +> 当然了,在没有垃圾回收的语言如C++中,这意味着执行命令的代码也要负责释放它们申请的内存。 + `undo()`方法会反转由对应的`execute()`方法改变的游戏状态。下面我们针对上一个移动命令加入了撤销支持: ```c++ From 31739712b74086f51d14a7b09e1f6b5bc7dfa817 Mon Sep 17 00:00:00 2001 From: ChildhoodAndy Date: Tue, 26 Aug 2014 13:38:12 +0800 Subject: [PATCH 021/123] update command chapter --- 02.1-Command.md | 34 +++++++++++++++++++++++++++++----- 1 file changed, 29 insertions(+), 5 deletions(-) diff --git a/02.1-Command.md b/02.1-Command.md index c44e9ec..601f2da 100644 --- a/02.1-Command.md +++ b/02.1-Command.md @@ -21,16 +21,16 @@ __命令就是一个对象化的方法调用。__(A command is a reified metho 这听起来像是一个“回调“(callback),”一等函数“(first-class function),”函数指针“(function pointer),”闭包“(closure)或者取决于你所使用的语言的”部分实用功能“(partially applied function),确实这些都有相似之处。The Gang of Four 之后这样阐述: -> 注解 - -> 一些语言的_反射系统_可以让让你在运行时使用类型处理。你可以得到一个对象,它代表着某些其他对象的类,你也可以玩玩看类型可以处理哪些问题事情。换句话说,反射是一个具体化的类型系统。 - ``` 命令就是回调的一个面向对象的替代。(Commands are an object-oriented replacement for callbacks.) ``` 这个比他们对模式的概括要好多了。 +> 注解 + +> 一些语言的_反射系统_可以让让你在运行时使用类型处理。你可以得到一个对象,它代表着某些其他对象的类,你也可以玩玩看类型可以处理哪些问题事情。换句话说,反射是一个具体化的类型系统。 + 但是这些都比较抽象和模糊。我喜欢用一些具体点的东西来做为章节开头,并且我也鼓励这样。为了弥补这点,从这里开始,都是例子,它们非常适合命令模式。 # 输入配置 @@ -320,19 +320,43 @@ private: ``` 注意到我们在类中添加了一些状态。当单位移动时,它会忘记它刚才在哪。如果我们要撤销移动,我们得记住单位的上一次位置,正是`xBefore_`和`yBefore_`变量的功能。 +> 注解 + +> 这看起来挺像[备忘录模式](http://en.wikipedia.org/wiki/Memento_pattern)的,但是我发现备忘录模式用在这里并不能有效的工作。因为命令试图去修改一个对象状态的一小部分,为对象的其他数据快照是浪费内存。只手动存储改变的位码相对来说就廉价多了。 + +> [持久化数据结构](http://en.wikipedia.org/wiki/Persistent_data_structure)是另外一个选择。通过它们,每次对一个对象进行修改都会返回一个新的对象,保留原对象不变。通过这样明智的实现,这些新对象与原对象共享数据,所以比克隆整个对象的代价要小的多。 + +> 使用持久化数据结构,每个命令存储着命令执行前对象的一个引用,所以撤销意味着切换到原来老的对象。 + 为了让玩家能够撤销一次移动,我们保留了他们执行的上一个命令。当他们敲击`Control-Z`时,我们便会调用`undo()`方法。(如果他们已经撤销了,那么会变为”重做“,我们会再次执行那个命令。) 支持多次撤销并不难。这次我们不再保存最后一个命令,取而代之的是,我们保存了一个命令列表和”current“(当前)命令的一个引用。当玩家执行了一个命令,我们将这个命令添加到列表中,并将”current“指向它。 ![](./res/command-undo.png) +当玩家选择”撤销“时,我们撤销当前的命令并且将当前的指针移回去。当他们选择”重做“,我们将指针前移然后执行命令。如果他们在撤销之后选择了一个新的命令,列表中位于当前命令之后的所有命令被舍弃掉。 + +我第一次在一个关卡编辑器中实现了这一点,我感觉自己就像一个巫师一样。我很惊讶它是如此的简单而且效用是如此的好。我们需要一个规则来确保每个数据的更改会经由一个命令来实现,但一旦你这样做了,剩下的就容易了。 + +> 注解 + +> 重做在游戏中并不常见,但回放(re-play)却不是。一个很老实的实现方法就是记录每一帧的游戏状态以便能够回放,但是这样会使用大量的内存。 + +> 相反,许多游戏会记录每一帧每个实体所执行的一系列命令。为了回放游戏,引擎只需要运行正常游戏的模拟,执行预先录制的命令。 + # 类风格化还是函数风格化? 此前,我说命令(commands)和第一类函数或者闭包相似,但是这里我举的每个例子都用了类定义。如果你熟悉函数式编程,你可能想知道如何用函数式风格实现命令模式。 我用这种方式写例子是因为 C++ 对于第一类函数的支持非常有限。函数指针无须过多阐述,仿函数(译者注:关于仿函数可以看[百科的介绍](http://baike.baidu.com/view/2070037.htm?fr=aladdin))看起来比较怪异,还需要定义一个类,C++11 中的闭包使用起来比较棘手因为要手动管理内存的缘故。 -这并不是说在其他语言中你不应该使用函数来实现命令模式。如果你使用的语言中有闭包的实现,无论怎样,使用它们!在某些方面,命令模式对于没有闭包的语言来说是模拟闭包的一种方式。 +这并不是说在其他语言中你不应该使用函数来实现命令模式。如果你使用的语言中有闭包的实现,无论怎样,使用它们!在某些方面(In some ways),命令模式对于没有闭包的语言来说是模拟闭包的一种方式。 + +> 注解 + +> 我说在某些方面(In some ways),是因为即使在有闭包的语言中为命令构建实际的类或结构仍然是有用的。如果你的命令有多个操作(如可撤销命令),映射到一个单一函数是比较尴尬的。 + +> 定义一个实际的附带字段的类也有助于读者很容易分辨该命令中包含哪些数据。闭包自动包装一些状态是比较简洁,但他们太过于自动化了以至于很难分辨出它们实际上持有的状态。 举个例子,如果我们在用 JavaScript 编写游戏,我们可以像下面这样创建一个单位移动命令: From d10d67814c5723090f0ad6051d0cf98fa7551dd7 Mon Sep 17 00:00:00 2001 From: ChildhoodAndy Date: Tue, 26 Aug 2014 14:33:39 +0800 Subject: [PATCH 022/123] command chapter correction --- 02.1-Command.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/02.1-Command.md b/02.1-Command.md index 601f2da..f819b93 100644 --- a/02.1-Command.md +++ b/02.1-Command.md @@ -54,7 +54,7 @@ void InputHandler::handleInput() else if (isPressed(BUTTON_B)) lurchIneffectively(); } ``` -这个函数通常会通过[游戏循环](03.2-Game Loop.md)被每帧调用,我还确定你肯定清楚这个函数的作用。上面的代码在我们将用户的输入硬编码对应到游戏动作中时是有效的,但是许多游戏允许用户_配置_他们的按钮与动作的映射。 +这个函数通常会通过[游戏循环](03.2-Game Loop.md)被每帧调用,我还确定你肯定清楚这个函数的作用。如果我们将用户的输入硬关联对应到游戏的动作(game actions),上面的代码是有效的,但是许多游戏允许用户_配置_他们的按钮与动作的映射。 为了支持这个特性,我们需要把那些对`jump()`和`fireGun()`的直接调用转换为我们可以换出(swap out)的东西。”换出“(swapping out)听起来很像变量赋值,所以我们需要个_对象_来代表一个游戏动作。 @@ -121,7 +121,7 @@ void InputHandler::handleInput() > 注解 -> 注意到我们这里没有检查命令是否为`null`没?这里假设了每个按钮有某个命令对应关联。 +> 注意到我们这里没有检查命令是否为`null`没?这里假设了每个按钮有某个命令与之对应关联。 > 如果你想要支持不处理任何事情的按钮,而不用明确检查是否为null,我们可以定义一个命令类,这个命令类中的`execute()`方法不做任何事情。然后,我们将按钮处理器(button handler)指向一个空对象(null object)代替指向null。这个模式叫[空对象(Null Object)](http://en.wikipedia.org/wiki/Null_Object_pattern)。 @@ -129,13 +129,13 @@ void InputHandler::handleInput() ![](./res/command-buttons-two.png) -简而言之,这就是命令模式。如果你已经看到了它的优点,不妨考虑将文章的剩余部分看成奖励吧。 +简而言之,这就是命令模式。如果你已经看到了它的优点,不妨看完本章的剩余部分。 # 关于角色的说明 我们刚才定义的命令类在上个例子中是有效的,但他们很受限。问题就是,他们假设存在的如`jump()`,`fireGun()`等这些顶级函数,是隐式的知道如何找到玩家的头像并且使得玩家像木偶一样进行动作处理。 -这种假设耦合限制了这些命令的的效用。__JumpCommand__类_唯一_能做的事情就是使得 player 进行跳跃。让我们放宽限制。我们传进去一个我们想要控制的对象来取代自身寻找被命令的对象的调用函数: +这种假设耦合限制了这些命令的的效用。__JumpCommand__类_唯一_能做的事情就是使得 player 进行跳跃。让我们放宽限制。我们传进去一个我们想要控制的对象而不是用命令对象自身来调用函数: ```c++ class Command @@ -204,7 +204,7 @@ AI选择命令,角色执行命令,它们之间的解耦给了我们很大的 > 注解 -> 如果我们把这些命令_序列化_,我们便可以通过互联网发送数据流。我们可以把玩家的输入,通过网络发送到另外一台机器上,然后进行重放。这是多人网络游戏很重要的一块。 +> 如果我们把这些命令_序列化_,我们便可以通过互联网发送数据流。我们可以把玩家的输入,通过网络发送到另外一台机器上,然后进行回放。这是多人网络游戏很重要的一块。 # 撤销和重做(Undo and Redo) @@ -395,7 +395,7 @@ function makeMoveUnitCommand(unit, x, y) { > 注解 -> 你可以将它用[单例模式](02.5-Singleton.md)实现,但是(翻译疑问) +> 你可以将它用[单例模式](02.5-Singleton.md)实现,但是 friends don’t let friends create singletons。 From a33abd70e89f0208e1011239353310fdcb9a7cfe Mon Sep 17 00:00:00 2001 From: ChildhoodAndy Date: Mon, 1 Sep 2014 10:30:57 +0800 Subject: [PATCH 023/123] add update-method translation --- 03.3-Update Method.md | 503 ++++++++++++++++++++++++++++++++++- res/update-method-remove.png | Bin 0 -> 78736 bytes res/update-method-uml.png | Bin 0 -> 149319 bytes 3 files changed, 501 insertions(+), 2 deletions(-) create mode 100644 res/update-method-remove.png create mode 100644 res/update-method-uml.png diff --git a/03.3-Update Method.md b/03.3-Update Method.md index 9521f99..7a5f886 100644 --- a/03.3-Update Method.md +++ b/03.3-Update Method.md @@ -1,2 +1,501 @@ -Update Method -============================ +更新方法 +======================== + +# 目标 + +通过并发地通知所有对象同时进行帧更新,以模拟出一组相互独立的对象。 + +# 动机 + +玩家所操控的强大女武神在执行一个任务,目标是要从法师之王长眠的埋骨地里盗取极品珠宝。她试探性地接近法师那充满魔法的地穴入口,并受到攻击——可啥守卫也没有,并没有什么被诅咒的雕像向她发射光线,也没有亡灵士兵在入口巡逻。她长驱直入,轻取战利品,然后你赢了,然后游戏结束。 + +嗯,这真没劲。 + +这个地穴需要一些守卫来和我们的英雄纠缠。首先,我们希望一个重生的骷髅兵让它在门口来回巡逻。我想你已经猜到了程序的框架,要让这家伙来回巡逻,代码大致如下: + +> 注解 + +> 假如法师之王希望有更机智的表现,那么他需要复活一些仍有心智的家伙们 + +```c++ +while (true) +{ + // Patrol right. + for (double x = 0; x < 100; x++) + { + skeleton.setX(x); + } + + // Patrol left. + for (double x = 100; x > 0; x--) + { + skeleton.setX(x); + } +} +``` + +当然这代码的问题是,怪物虽然来回走着,但玩家却看不到它。程序被一个死循环锁住,这显然是个很差劲的游戏体验。我们所希望的是骷髅兵每一帧走一步,以保证在骷髅守卫巡逻时.游戏能持续地进行渲染并对玩家的输入做出反应。如: + +> 注解 + +> 当然,游戏循环(Game Loop)是本书介绍的另一种设计模式 + +```c++ +Entity skeleton; +bool patrollingLeft = false; +double x = 0; + +// Main game loop: +while (true) +{ + if (patrollingLeft) + { + x--; + if (x == 0) patrollingLeft = false; + } + else + { + x++; + if (x == 100) patrollingLeft = true; + } + + skeleton.setX(x); + + // Handle user input and render game... +} +``` + +我之所以在此写出前后两个版本,是为了告诉读者代码是如何变复杂的。向左右巡逻本是两个相互独立的循环,无疑它依赖于循环的执行来保持对骷髅兵巡逻方向的跟踪。为达到逐帧处理的目的,我们必须逐帧跳出游戏循环并随后(在下一帧时)返回循环内以继续,在此必须借助变量`patrollingLeft`以在循环内外维持对方向的跟踪。 + +但这至少奏效,所以我们先继续。一堆无脑的骨头可不会对你的女武神造成什么威胁,所以接下来我们为它加入一些魔法状态,这将是它能频繁地够向我们的女武神释放闪电和火光,让她措手不及。 + +时刻记得我们的风格——“用最简单的思路写代码”,于是我们这么写: + +```c++ +// Skeleton variables... +Entity leftStatue; +Entity rightStatue; +int leftStatueFrames = 0; +int rightStatueFrames = 0; + +// Main game loop: +while (true) +{ + // Skeleton code... + + if (++leftStatueFrames == 90) + { + leftStatueFrames = 0; + leftStatue.shootLightning(); + } + + if (++rightStatueFrames == 80) + { + rightStatueFrames = 0; + rightStatue.shootLightning(); + } + + // Handle user input and render game... +} +``` + +你会发现这代码的可维护性不高。我们保持了一堆其值不断增长的变量,并不可避免地将所有代码都塞进游戏循环里,每段代码处理一个游戏中特殊的实体。为解决这些问题并让所有实体同时运转,我们把它们给糊成一团了。 + +> 注解 + +> 一旦当你的构架可以确切地用“糊作一团”来形容,那你可遇到麻烦了。 + +你可能对我们将用使用来解决上述问题的设计模式有所体会了:游戏中的每个实体必须封装其自身的行为。这将使游戏循环保持整洁并便于往循环中增加或移除实体。 + +为了做到这一点,我们需要一个抽象层,为此定义一个 update()的抽象方法。游戏循环维护对相集合,但它并不知道这些对象的具体类型。它所知道只是它们都会被更新。这将每个对象的行为从游戏循环以及其他对象那里分离了出来。 + +每一帧,游戏循环遍历游戏集合并调用它们的update()。这在每一帧都给于每个对象一次更新自己行为的机会。通过逐帧调用update方法,这些对象的表现得到同步。 + +> 注解 + +> 有些爱挑刺的人会说,它们并不是真正意义上的行为同步,因为一个对象更新时其他对象都不在更新——让我们后面再来深入这个问题。 + +游戏循环保持一个动态的对象集合,故向关卡里添加或移除对象是方便的——只要往集合里增加或移除就好。问题已经解决,我们甚至可以将关卡文件用某种文件格式存储,以供我们的关卡设计师们使用。 + +# 更新方法模式 + +游戏世界维护一个对象集合。每个对象实现一个更新方法来在每一帧模拟自己的行为。而游戏循环在每一帧对集合中所有的对象调用其更新方法以实现同步的游戏世界更新。 + +# 使用情境 + +假如把游戏循环比作有史以来最好的东西,那么更新方法模式就是让它锦上添花。许多游戏样本都通过这样或那样的形式来使用这一设计模式,以构造出许多鲜活的游戏实体来与玩家进行交互。像游戏里的太空战士,龙,火星人,幽灵或者运动员们,他们正适合使用这一设计模式。 + +然而,假如这个游戏更加抽象,那些移动的对象并不像是生物而更像是西洋棋子,那么这一模式就不那么适用了。在一个类似西洋棋的游戏里,你并不需要同时模拟所有对象,而且你很可能也没必要让棋子们逐帧地更新自身。 + +> 注解 + +> 或许你无须逐帧更新它们的行为,但即便是在棋类游戏中,你可能也需要逐帧更新它们的动画。这一设计模式同样可以帮到你。 + +更新方法模式在如下情境最为适用: +- 你的游戏中含有一系列对象或系统需要同步地运转。 +- 各个对象之间的行为几乎是相互独立的。 +- 对象需要随时间进行模拟。 + +# 使用须知 + +这一设计模式相当简单,所以它并没有什么值得发现的惊喜。当然,每行代码也都有它的意义在。 + +## 将代码划分至单帧之中使其变得复杂 + +比较先前的两个代码块,第二个显得更加复杂。二者都只是让骷髅守卫来回行走,但第二个代码块将控制权分派给了游戏循环的每一帧。 + +这一变化几乎在处理用户输入,渲染以及其它游戏循环所关心的事情时是必不可少的,所以第一个例子并不实用。当它的价值在于让我们牢记将你的表现性代码进行如此的分割将面临着。 + +> 注解 + +> 我所说“几乎”,是因为有时你也可以兼得鱼与熊掌。你可以直接为你的对象行为编码而不使这些函数返回,同时让这样一系列的对象与游戏循环保持同步运转。 + +> 要想实现这一点,你就必须使用多线程来让这些对象同时运转。假如一个对象可以在处理时中途暂停并继续,你可以用更强制的方式来执行而不必完全让函数结束返回。 + +> 实际中的线程往往对我们的例子而言过于繁重,但假如你的语言支持轻量的并发性组件诸如生成器,协程,Fibers(Node.js),那可以考虑使用它们。 + +> Bytecode设计模式是在应用程序层创建多线程的另一种选择。 + +## 你需要在离开每帧前存储游戏状态以便下一帧继续 + +在第一段示例代码中,我们并无任何指明守卫移动方向的变量。它是完全取决于当前执行的是哪一段代码。 + +当我们将其改造为逐帧更新的形式时,我们需要创建一个patrollingLeft变量来跟踪这个行走方向。当我们脱离内部代码,我们就无法获知行走的朝向,所以说我们需要存储足够的帧信息以便下一帧能够继续执行。 + +State设计模式在这里通常能帮上忙,因为状态机(正如其名)存储了那些能够让你在下一帧继续的游戏信息。 + +## 对象全部都在每一帧进行模拟,但并非真正同步 + +在本设计模式中,游戏循环在每一帧遍历对象集并逐个更新对象。在`update()`的调用中,多数对象能够访问到游戏世界的其他部分,包括那些正在被更新的其他对象。这意味着,游戏循环遍历更新对象的顺序意义重大。 + +假如A对象位于对象列表中B对象的前面,那么当A更新时,它将会看到B停留在在前一帧的状态。但当B更新时,它看到的却是A在这一帧的新状态,因为A在这一帧已经被更新了。尽管从玩家的视角来看,所有的事物都同时在运转,但游戏的核心仍然是回合制的——只不过这时两回合之间的间隔只有一帧的时间。 + +> 注解 + +> 假如由于某些原因你不希望自己的代码如此有序,你可能会需要Double Buffer模式的帮助。这一模式将使得A,B的更新顺序不再重要,因为它们都能够获取到前一帧的状态。 + +考虑到游戏逻辑,更新分先后顺序这是件好事。平行地更新所有对象会将你导向语义死角,设想西洋棋盘上黑白棋子同时移动,它们都想往一个当前空白的位置移动,这该怎么办? + +序列化地更新解决了这一问题——每次更新增量式地改变游戏世界,从一个有效的状态到下一个,不会产生对象状态的歧义而需要去进行调解。 + +> 注解 + +> 这同样在在线游戏模式起作用,因为你需要一串序列化的动作数据来在网际间进行传输。 + +## 在更新期间修改对象列表时必须谨慎 + +当你使用这一模式时,大量的游戏表现将在这些更新方法中完成。这里面常常包含着从游戏中增加或移除对象的代码。 + +例如,假设一个骷髅卫兵被杀死时会掉落一个物品,对于一个新对象,你通常可以直接将它加入到列表的尾部而不会产生问题。循环继续,最终你能够在循环的末尾找到这个新对象并更新它。 + +但这意味着在这个新对象产生的那一帧它也有机会进行更新,而此时玩家尚未看到这个物品。假如你不希望这样的情况发生,一个简单的办法就是在遍历之前存储当前对象列表的长度,而在这一次循环仅更新列表前面这么多的对象: + +```c++ +int numObjectsThisTurn = numObjects_; +for (int i = 0; i < numObjectsThisTurn; i++) +{ + objects_[i]->update(); +} +``` + +上例中,objects_是游戏中可更新对象的数组而numObjects_是它的长度。当增加新的对象时,这个长度变量增长。我们将长度在循环的一开始缓存在numObjectsThisTurn变量中,从而使这一帧的循环迭代在遍历到任何新增对象之前停止。 + +一个令人担忧的问题是在迭代时移除对象。你希望让一只肮脏的野兽从游戏中消失,而这时候需要从对象列表中移除它。假如在对象表中,它碰巧位于你当前所更新的对象之前,你可以投机地跳过它。 + +```c++ +for (int i = 0; i < numObjects_; i++) +{ + objects_[i]->update(); +} +``` + +这一简单的循环通过对象下标索引的递增来更新每个对象。下面的示例图中左侧展示了当我们更新女主角时对象数组的变化。 + +![](./res/update-method-remove.png) + +我们更新她时,i等于1,她斩杀了肮脏的野兽所以它从数组中被移除。而女武神移动到i为0的位置,而倒霉的农夫被前移到1的位置。在女武神更新结束后,i增长到2。如上图右侧所示,倒霉的农夫在循环中被跳过并且永远也不会更新了。 + +> 注解 + +> 一个简便的解决方法是当你更新时从表的末尾开始遍历。此方法下移除对象,只会让已经更新的物品发生移动。 + +> 另一个方法是在移除对象时多加小心,并在更新任何计数器时把被移除的对象也算在内。还有一个办法是将移除操作推迟到本次循环遍历结束之后。将要被移除的对象标记为“死亡”,但并不从列表中移除它。在更新期间,确保跳过那些被标记死亡的对象, + +> 接着等到遍历更新结束,再次遍历列表来移除这些“尸体”。 + +> 假如在更新循环中你加入了多线程,采用延迟修改的方法较好,因为这可以避免更新期间线程同步带来的巨大开销。 + +# 例子 + +这一模式十分浅显,从例子里我们就能看出其要点。这并不意味着它没用,而正因为它的简单才使得它好用——它是一个简明而不加任何修饰的解决方案。 + +但为了更具体地阐明此方法,我们还是来看一个基本的实现例子。让我们从这个代表着骷髅和雕像的Entity类来开始吧: + +```c++ +class Entity +{ +public: + Entity() + : x_(0), y_(0) + {} + + virtual ~Entity() {} + virtual void update() = 0; + + double x() const { return x_; } + double y() const { return y_; } + + void setX(double x) { x_ = x; } + void setY(double y) { y_ = y; } + +private: + double x_; + double y_; +}; +``` + +在这个类里我并没有加入太多东西,只有那些后面能用到的成员。实际的项目中还将包含有诸如图形和物理的部分。而上面的类中最重要的部分就是这一设计模式所要求的update()抽象方法。 + +游戏维护一系列这样的实体,在我们的例子中,我们将它们置入一个代表游戏世界的类中: + +```c++ +class World +{ +public: + World() + : numEntities_(0) + {} + + void gameLoop(); + +private: + Entity* entities_[MAX_ENTITIES]; + int numEntities_; +}; +``` + +> 注解 + +> 在一个实际的游戏项目中,你可能会用到一个实际的集合类,但在此我仅使用普通的数组来让事情简单些。 + +一切准备就绪,遍历实体逐帧更新的游戏实现如下: + +```c++ +void World::gameLoop() +{ + while (true) + { + // Handle user input... + + // Update each entity. + for (int i = 0; i < numEntities_; i++) + { + entities_[i]->update(); + } + + // Physics and rendering... + } +} +``` + +> 注解 + +> 见名知意,这就是游戏循环(Game Loop)模式的例子。 + +## 子类化的实体?! + +肯定有些读者现在很不舒服,因为我在这里对主要的Entity类采用了继承的方式来定义不同的行为。假如你碰巧遇到的问题,我将会提供一些文章。 + +随着游戏产业从最初6502汇编语言和VBLANK(老式的阴极射线管)显示器的海洋到OOP(面向对象)上岸,开发者们陷入了一场软件架构的狂热,其中之一就是对继承的使用。高耸而错综复杂的类继承高塔被建立起来,遮天盖地。 + +而事实证明继承真是个恐怖的想法,没人能够在不拆解的情况下维护一个庞大的继承关系,甚至连GoF(最杰出的的4个软件设计师,合著有《设计模式:可复用面向对象软件的基础》一书)都在1994年发现了这一点,并写道: + +> Favor ‘object composition’ over ‘class inheritance’.(组合对象,而不是继承类) + +> 注解 + +> 在你我之间,我想子类继承远的问题离我们甚远。我几乎避开了它,但执着于避免使用继承就和执着于使用它一样糟。你完全可以适度使用它而不必完全禁用。 + +当游戏产业中的人们纷纷意识到类继承糟糕的一面时,Component设计模式应运而生。借此,update()方法能够置于实体的组件之中而非依附Entity本身。这将帮助你避为了定义和复用不同表现的实体类而构建出复杂的实体类继承关系。取而代之的是用各种组件来组装这些子类。 + +假如我在实际开发一款游戏,我也会这么做。但这一章并不讨论组件模式而是update()方法,我尽可能简洁并快速地表达出它们,而将这个方法直接放在Entity类里并进行一两个子类的继承就是最快的方法。 + +> 注解 + +> 组件模式请看[这里](./05.1-Component.md) + +## Defining entities定义实体 + +回到正题,我们最初的动机是要定义一个骷髅守卫,和能放出电光石火的魔法雕像。从我们的骷髅朋友开始吧。为了定义其巡逻行为,我们通过恰当地实现`update()`方法来创建新的实体类。 + +```c++ +class Skeleton : public Entity +{ +public: + Skeleton() + : patrollingLeft_(false) + {} + + virtual void update() + { + if (patrollingLeft_) + { + setX(x() - 1); + if (x() == 0) patrollingLeft_ = false; + } + else + { + setX(x() + 1); + if (x() == 100) patrollingLeft_ = true; + } + } + +private: + bool patrollingLeft_; +}; +``` + +如你所见,我们所做仅仅是从游戏循环中复制代码并将它粘贴到Skeleton类的`update()`方法中。一个小差异在于这里`patrollingLeft_`被变成了一个类成员而非局部变量。借此便能保证,这一变量在`update()`方法调用期间有效。 + +我们对Statue类如法炮制: + +```c++ +class Statue : public Entity +{ +public: + Statue(int delay) + : frames_(0), + delay_(delay) + {} + + virtual void update() + { + if (++frames_ == delay_) + { + shootLightning(); + + // Reset the timer. + frames_ = 0; + } + } + +private: + int frames_; + int delay_; + + void shootLightning() + { + // Shoot the lightning... + } +}; +``` + +再一次,最大的改动就是从游戏循环中移出一些代码以及对变量重命名。这样一来,我们让代码更加简洁——在原来不可避免杂乱的代码中,本会出现许多存储不同雕像帧计数器和开火频率的局部变量。 + +既然这些都已经被移动到Statue类之中,你可以随心所欲地创建Statue的实例,而它们各有自己的计时器。这正是本设计方法背后的本意——现在向游戏世界中添加实体更加容易了,因为每个实体都携带着所有自己所必须的东西,自给自足。 + +这一模式让我们避免了在扩展游戏时采用继承。这一模式反倒让我们可以单独地使用数据文件或者关卡编辑器来扩展游戏世界。 + +> 注解 + +> 还有人关心UML图么?如果还有那上图就对应着我们所创建的类结构的UML图。 + +![](./res/update-method-uml.png) + +## 逝去的时间 + +这是游戏核心的设计模式,但我只是做了其最常用部分的提炼。至此,我们都假设每次对update()的调用都让整个游戏世界向前推进相同(固定)的时间长度。 + +我更喜欢这种方式,但多数游戏使用变时长的方式。那样做,每次游戏循环可能会占用更多或更少的时间,具体取决于其处理更新和渲染前一帧所的开销。 + +> 注解 + +> Game Loop 这一章详细地讲述了定时和变时步长的优劣。 + +这意味着每次`update()`的调用需要知道虚拟时钟所流逝的时间,于是你常会看到流逝的时间会被作为参数传入。例如,我们可以像下面那样让骷髅卫兵处理一个变时步长更新: + +```c++ +void Skeleton::update(double elapsed) +{ + if (patrollingLeft_) + { + x -= elapsed; + if (x <= 0) + { + patrollingLeft_ = false; + x = -x; + } + } + else + { + x += elapsed; + if (x >= 100) { + patrollingLeft_ = true; + x = 100 - (x - 100); + } + } +} +``` + +现在,骷髅移动的距离随着时间间隔而增长。你同样能看到处理变时步长时额外增加的复杂度。骷髅可能在很长的时间差下超出其巡逻范围,我们需要小心地对这一情况进行处理。 + +# 设计的一些考虑 + +这样一个简单的设计模式,并无太多可选项。但它还是有两个按钮可供选择~ + +## update方法依存于何类中? + +你所要做的最显著而又最重要的决定就是该把update()放哪。 + +1.实体类(父类)中 + +假如你已经创建了实体类,那么这是最简单的选项。因为这不会往游戏中增加额外的类。假如你不需要很多种类的实体,那么这种方法可行,但实际项目很少这么做。 + +每当希望实体有新的表现时就创建子类,这会积累大量的类而导致项目难以维护。你最终会发现你希望通过一种单一继承层次的优雅映射方式来复用代码模块,那时候你就该傻眼了。 + +2.组件类中 + +假如你已经使用了Component模式,那么傻瓜也知道怎么做了——让每个组件更新其自身。和更新方法模式一样地将每个游戏实体从游戏世界中分离出来,组件方法也让各个组件部分分离开来。渲染,物理,AI可以各自顾好自己。 + +3.代理类中 + +将一个类的表现代理给另一个类这涉及到其他几种设计模式。应用State 设计模式可以让你通过改变一个对象的代理来改变其行为。[Type Object设计模式](./04.3-Type Object.md)可以让你在多个同类型的实体之间共享行为表现。 + +假如你使用上述任一种设计模式,那么自然而然地需要将`update()`方法置于代理类中。这么一来,你可能在主(父)类中仍保留`update()`方法,但它成为非虚的方法并将指向代理类对象的update方法,如: + +```c++ +void Entity::update() +{ + // Forward to state object. + state_->update(); +} +``` + +这么做让你能在代理类之外定义新的行为方式。正像使用[Component模式](./05.1-Component.md)那样,这为你开辟了灵活定义新类和新的行为方式的途径。 + +## 那些未被利用的对象该如何处理? + +你常需要在游戏中维护这样一些对象:不论出于何种原因,它们暂时无需被更新。它们可能被禁用,被移除出屏幕,或者至今尚未解锁。假如大量的对象处于这种状态,这可能会导致CPU每一帧都浪费许多时间来遍历这些对象同时又对他们毫无作为。 + +一种方法是单独维护一个需要被更新的“存活”对象表。当一个对象被禁用时,将它从其中移除。当它重新被启用时,把它加回表中。这样做,你只需遍历那些实际上有作为的对象。 + +- 假如你使用单个集合来存储所有游戏对象: + - 你在浪费时间。对于暂时无用的对象,你需要检查它们”是否死亡”的标志,或者调用一个空方法。 + +> 注解 + +> 除了浪费CPU循环来检查对象是否被激活并跳过它,空指针问题还可能搞坏你的缓存区。CPU通过加载读取RAM中的数据到更快的单片缓存来加载内存,这是在投机地假设在一段时间内你读取的内存是连续的情况下进行的。当你跳过一个对象时,你可能会跳过缓存区(存储当前这个对象)的末尾,而让CPU再去寻址到另一块内存。 + +- 假如你维护一个独立的存储现存活跃对象的集合: + - 你使用额外的内存来维护第二个集合。因为往往你需要一个主集合来维护所有的对象,以便在需要所有对象时用到它。这么说来,这个额外的集合在技术上是多于的。当游戏对速度的要求比对内存的要求高时(往往是这样的),这样的取舍还是值得的。 + - 另一种缓和此问题的办法是,同样维护两个集合,但另一个只维护那些未被激活的对象,而不是维护所有对象。 + - 你必须保持两个集合同步。当对象被创建或者销毁(并非临时禁用而是销毁)时,你必须记住同时修改主集合和活跃对象集合。 + +这里该使用什么方法,取决于你对非激活对象数目的预估。其数目越多,就越需要创建一个独立的集合来在存储他们以便在游戏循环时避免处理这些非激活对象。 + +# 参考 +- 这一模式加上[Game Loop](./03.2-Game Loop.md)和[Component](./05.1-Component.md)模式,组成了多数游戏引擎的核心部分。 +- 当你开始考虑实体集合或循环中组件在更新时的缓存效能,[Data Locality模式](./06.1-Data Locality.md)将会帮助它们运转得更快。 +- [Unity](http://unity3d.com/)的引擎框架在许多类模块中使用了这一模式,包括[MonoBehaviour](http://docs.unity3d.com/Documentation/ScriptReference/MonoBehaviour.Update.html)类。 +- 微软的[XNA](http://creators.xna.com/en-US/)平台在Game和GameComponent类中均使用了这一模式。 +- [Quintus](http://html5quintus.com/)的基于JavaScript的游戏引擎在其主Sprite类中使用了这一模式。 diff --git a/res/update-method-remove.png b/res/update-method-remove.png new file mode 100644 index 0000000000000000000000000000000000000000..4ed3a24baa833ef60765c2590ae4194edc06cc17 GIT binary patch literal 78736 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� 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

7Uw^;`n9NfI{qI$EqO!!s;wy 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

VobiBu3KY2jF%UTwf-K_-9Zin(m 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

9WXmV7$W#-jb80CbxJt=rQR4Pb^+jay}UX z3J5NljxmG-WC)SPiU1(=lD{7^%xPl418c_t0)p4=S6Ar$`Jb1RI9X@R6A;ck_-VUB z8tYu?_l(4)BQmDh2r`j+ivCZvnvm~4&MMY?0q>ukN%bzn>STsjy_hA3u=5f#dgihi zHxA6Yv5}C}u<7!amz_N&o05*KJBgaUZ#9yuW+$rCaVU54dc@rl$~6oS zz!9j!*@6K=kD&0*Xb=!;P~a8pVSo_@y?gryfUp-VWVl9QzAtc{(XtqznO55``b?BU zvba-QR^MgT+SBpQW6MPb281dFu@}#M6=-GJU%klp{Quk-$tY0GYz#PsD57cOzm^#O zWaD*;Jz1`D8clTGsv{kqn72MM@n{i}r=-=vR!ufm{Z6ccBIx9HNt$n&Y?#cO*>+Bm z4BO^=aCs|wBWvG?fv7;-UT@oWR{{tjCUV-Dey=Yaupf?q$y!at7`9-!a z#dpVnzr5=yl|S)|C!)!$uP68FA6kv2GSHs670-=}eJu54$fM)|3Id3W$JTVre{;7) z_8kBO!+-#;UMwC88JgJ(dWE`9=vi7}?qPrwp%`c~y7_$r;+Hvu=KQmo-TM3b)(eTg zOrLj_Op(PiOZLo`J=12+T*dCeTIZ9MfB34W)>^iCPk+v`vy!Uh?56*cTJ|HD6k(-& z0^-Tf>K8#muvt(>F>h8}tR|Pr+7<007ppw^U2@6ntX25&#@;tr zmBZUTizBAjt9yw2vzujhPsYr$wUQ6FmqebKNO>w*w@Bps&@S1+GF7s1o2^UAYTi&j zmANl&_({L}J0((P-zRe;E@~}FhM5Y#md`woZEHC{wUA3$vuy)xl~BhhE#zX=FkCI! zbVv-Tw=_UNKtqPzGz<`Y0Ye6!h_-y&EOkP)zHKMxfC0j9gA#Q+!|GS#et2p|0v}~q z&=h|Amn!!ATJ@zjX^q3_{_xz-TJ7jhZK}L*hVa}u+@+TGn58*KHb_iR`H})Yo{2Yk zcrtjcJ4Mvq?MahAO~ks%!&+@whDLsv?2?Q0?tV#_djiS*gQr z?5YoSC}kDfdvS&U!R+ZCcC&3pi>J;>)Z~d=KaqsOGp}cPdrCr`FW%+gWj=#ME%kM@ zdvEPw*f05Po(0riH&#uT{iu(9a9geBPzRt7tLEHby?)knfB>P+LgqRkaApKkNB0;G z01${Rp_`MrB>@Bk2LeLdT}J?+IR(xfW9EneLj9zUq23k5UIc27l2(cRMf>td2Td|M zRXg0*)6dn2tsQzY@_HR*`HrUvu#CD*QhwIXrv!~FPZVMsr^}wmYg^*w#LZJu;r^yr zEUHV`xH?UKolG<*7Yq63K*XGBHpSC~37Udn#k4(>X%n4SMcYK6AP!y8b@ymWVymTV zP7~#Rv>9ex`3z}t>*jth!$j%^8$KJlfz55D+RhCEcS_+K6K#fM8_a zCI|=v1BA~QLc5wgU+Cow>F42>9=I!wz$xQLU2NKQKN}2Ml@&p)(TDChljbRk&RP=H zEFCZRt&%V2J`oDX50xk`rs!O=h`hwCk{R}{66eFossr)rl$fwRq>!(8F~n22XSR2by#)i$@Kk+b}a{i{UZPN|oD$gysN?QRaYe_VT=hjK zF?ROQN6GBNw~&JM2l@Gf0_n8--Fq@_RV=;2^Vo*8sYceH>5oJQ;-NX%X3c3L7T`R~ zbW7*{@w^pLug{Z*iQRjn~u(X)iYM;bXu0m;~Zl z^y37&HUB*k1ONmR5&#HXI<*D`1gxJD*{IRw!Ec+SZsm-2UW2#s~^%c>l?i~aXWMdIbs0G4w)4$igNQi2`c>Rp<`b{<+|ts@_<)n>z1 zhL?7+oL$Pq_xFR7av>M1d7!*0fdcSzr73a}IUU}R2j=`hW-?v5=Vd_P$}S?mrrR@luSm!+igKf_141)4d#GE2M>MQY zed44dPk~%Nhb)m&pzn*;Rfu_2a9-EY+JGU$4o_JH7=pM$i}fPj#sq8^Oy@Zp%TpWW02*BohR|CqwRHp#Dxod_2z~hVCUJ@R2oQD%5IT9| z=lfgk3N1F`Xz-Q^Ej& z8+)J}!q~zvz*!erycaUPBtcjX;`CE zbOr>3j^z;CdN4h8T8dRYfMnYq4FQC_I?K&=Z?O zB?kfsLi5(odYk%dfFX=XPYGZMtW?Bu2x5EyLom(e?n=9m7t{3#>ALnA3f!5JRX1d`i_tsGqXB-+vBY4@l7p0R%eag*zvZPlccGDj>)} zjvXsDS5d%1fY32OpcA_V6c8*@#OF8>nCr}9?UbO8fwv~~bs+-Rf4CPB0R$6KYS%W4 z0Yc0U>@+wMszV51m7#29G^l+lgZD58DlP*;bAP}Pn%*=92rO~O0O2ql3XdJP0YFjQ zcKlt2(3l~t&xNEDZh}G>LLD{$vR?)StveJl@CY?5chhTQZ1pUA{VhM@FqTMS32&3H5ogK`h06=Kn8E}`n zRhSN;xeTT$m;tY+I&nZ~tsKaJl+ixfVEr{9MBXyGeokuJGsX~VWf46D2pI|)I=9s? zkI9;V;5`x^6OYohA`GGP=&rUb1RAx+0{U+h5P0hmb_MBm0|22Hlx+_k8v+Q!Sr6tA ziUt9}9AMee(FXwmLIfvz_5&zvcG(>K{dovYTMQ7Yw!T3pQP?x2KFMHGG4gI^2oR!- zJY4S#LbgxM!&?xyLC>e?UfbUT1Ul%DOjxpIyMX|q!6Lt^W!dX;v8S_G77H1?Tc61^ zi}*WOb~Gp;pi>)%Rv1GtY5zVT*lZv`FeyU_LQg=c4$1sHHe-qccC}upoo^);=%$C^ zt>XV(fZ(BCw%D=eg_bg20{jw#Cs4B>h3W>xb}msKiL{I1PCK-;1$YT z^|THMI({Dz4u#lv=a2!5u_{klg*tdGi=}}K0jy)xrZ7NgytxRvf{7IY1Y_bK zR2d>vG~kUQ;Cu(sZUfmhVn;i+mXrWtuNWZgkSpV{FdE6E(kqW+0DU_$M*;%`SFjvH z_lQiGzxLA4#YM}2;4wgGX|E6XMtoQQG9X0dvA}BR z(jY)E8VySJ9nB$tA%iTmSq21IkmJClqNKZ^F|O$k0D;$-E}tr%r3mJAT0as72#o;& z%9kCn8^~K?>!1B52}a|{p^%h#46p^mITKxkPHAW&*u7YGnK1tk>+1k7GT0F;V6Lt2!`$d^(B z>~=(@%LYN_>G04xhIJ4_=zjtTbEhQ&2nWX6swo8n1g-&qfDkc2=n-QGeV~9~Y#c~G z<*)$+1fFJ%j9}qy&PbL52ZX-!&auA<2)!0ihcHq`o10LF$I&4cGDHXvC~ONF0fgRv zKd9zwKyd7h5kP1blXl94m86y(_-aXDU}@&n^RK%kS0i7zDkwLWp7M%@}@ zt|LWkj4KWZOrF;Pp^jalfIy!#1_*iw8A8bhY;G!;|86aVfZ#wOZf8=yK9gw{Lca?L z>;@o)z>{|{K;Q-2%YeZ9gofIX&xC6LrT$GopvSY_F+dpJVSpe@Um>@_N{7D+2xe~s zP{f$wQ$-{E@RtFhMGf{cXwY1T$ymrRb}SFV%Xw>Gy@IR-_=9doW(Ziw&=0Ka*qgTN zjriPEkFMA2)#~yMQowfB*ytHo&ln z0RqvY?*qcFfskRYg#i(C=)681OwPyYn$}5JNz09Vb8=zGnC!O&pj%?_av6oqbsp{j z0bziEz#DHdK=2tF(q=d)!PJ(+M*}UJX$c)a#*;4~K#(jX1_&TS$QyVMdj=W8A4r#P zbWCo`fN&E)0F#R3zi;ifcmW248>>fez!g~4vuYdjX0yHBZe#T#w>EfY>gua`5P}O6 z5Eg$%mS(rQe$%&ci}6;G$u`y38}L+bA}d&bNW5g5%=?BNb!(81;nsA)F2Iv*Zp*j8 zuZ!TKmdZMW3NeHYyaz_+RY0Kg-EO?7<#xM$__%Mke*1p`1^}7Pk@p9HPk{gc002ov JPDHLkV1m3jXuALa literal 0 HcmV?d00001 diff --git a/res/bytecode-literal.png b/res/bytecode-literal.png new file mode 100644 index 0000000000000000000000000000000000000000..7112e21bdf8d957ca8c584ade23fdda6d9ae44f5 GIT binary patch literal 62021 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 literal 0 HcmV?d00001 diff --git a/res/bytecode-numbers.png b/res/bytecode-numbers.png new file mode 100644 index 0000000000000000000000000000000000000000..e7aef8d13c67b04f17af2e65267749f575cc3312 GIT binary patch literal 38720 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

)(Y*F8_&9W<1$wRV;5#wQ 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 D(VMV) literal 0 HcmV?d00001 diff --git a/res/bytecode-stack-2.png b/res/bytecode-stack-2.png new file mode 100644 index 0000000000000000000000000000000000000000..5380a90238d916027b42cea4e9ba369f05d7cfd2 GIT binary patch literal 36770 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 literal 0 HcmV?d00001 diff --git a/res/bytecode-stack-3.png b/res/bytecode-stack-3.png new file mode 100644 index 0000000000000000000000000000000000000000..62dd790d275a976f9add94aadc58901ef0b910e6 GIT binary patch literal 39634 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 literal 0 HcmV?d00001 diff --git a/res/bytecode-ui.png b/res/bytecode-ui.png new file mode 100644 index 0000000000000000000000000000000000000000..ef02877b9778930db94bbfe67d4d4de563443fc7 GIT binary patch literal 178987 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 z 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 LNkvXXu0mjfpBg6X literal 0 HcmV?d00001 From 68279c87c544944b8ae01d50326d859c737a4264 Mon Sep 17 00:00:00 2001 From: "Henry.T" Date: Thu, 18 Sep 2014 02:00:31 +0800 Subject: [PATCH 032/123] =?UTF-8?q?4.1=E5=AD=97=E8=8A=82=E7=A0=81=20?= =?UTF-8?q?=E7=BF=BB=E8=AF=91=E4=B8=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 04.1-Bytecode.md | 113 ++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 112 insertions(+), 1 deletion(-) diff --git a/04.1-Bytecode.md b/04.1-Bytecode.md index 35c97e9..5499900 100644 --- a/04.1-Bytecode.md +++ b/04.1-Bytecode.md @@ -1,2 +1,113 @@ -Bytecode +字节码 ============================ + +## 意图 +通过将行为编码成虚拟机指令,而使其具备数据的灵活性。 + +## 动机 + +> 我曾参与一款有600万行C++代码的游戏。比较起来火星探测车“好奇号”的控制软件的代码量还不及它的一半。 + +制作游戏很有趣,但也不容易。现在的游戏需要庞大复杂的数据库。主机厂商和应用商店有严格的质量要求,一个造成崩溃的Bug就可能导致你的游戏无法发布。 + +与此同时,我们期许能榨干平台所能提供的全部性能。我们要不遗余力地进行优化,以跟上游戏所推动硬件进步。 + +为了获得高稳定性和效率,我们会选择像C++这样的重量级语言。它们兼具充分利用硬件的能力以及可以阻止或拦截Bug的强类型系统。 + +我们可以为此感到骄傲,但它也有代价。多年的专业训练才能造就一个精通的程序员,随后你又必须面对庞大的代码库。大型游戏的编译时间可以短到“喝杯咖啡”,也可以长到“自己煮咖啡豆、磨咖啡豆、倒咖啡、打奶泡、练练拿铁的拉花”。 + +除了这些挑战外,游戏还有个讨厌的约束:有趣。玩家需要的是既新奇又具平衡性的体验。这就需要持续迭代。如果每个小修小改都都得一个工程师去动底层代码,然后等待漫长的重编译,那实际上你已经毁了整个创作流程。 + +### 魔法大战! +比如说,我们在开发一款基于魔法的战斗游戏。两个对峙的法师不断向对方丢法术,直到其中一个取得胜利。我们可以在代码中定义法术,但这意味着每次修改都需要工程师介入。当一个设计师想要改些数字,试试感觉,这需要重新编译整个游戏,重启然后重新进入战斗。 + +在游戏发布之后,我们得像其他游戏一样去更新它,包括修正Bug以及添加内容等。如果所有的法术都被硬编码,一次更新就等价于发一次可执行文件的补丁。 + +进一步来说,如果要支持MOD,要让用户自己创建法术。如果它们都在代码里面,那这些用户都需要有完整的编译工具链去构建游戏,我们得公开所有源码。况且,如果他们的法术有Bug,其他玩家可能受到殃及而造成游戏崩溃。 + + +### Data > code +很明显,我们引擎所使用的编程语言不适合解决这个问题。我们需要把法术从游戏核心移动到安全沙箱中。我们要给让它们易于修改,易于重新加载并且在物理上与游戏的可执行文件相分离。 + +我不知道你怎么看,这种形式在我看来更像是种*数据*。我们可以在单独的数据文件中定义行为,游戏引擎可以以某种方式加载并“执行”它们。这样一来就达到了我们的目的。 + +我们只需要弄明白“执行”这些数据的方法。怎样才能让文件中的字节表示行为呢?有好几种方法。参照一下[解释器](http://en.wikipedia.org/wiki/Interpreter_pattern)模式,你就能对此模式的优缺点全貌有个大致了解。 + +### 解释器模式 +本来这个模式我可以写成一整章的,但是有四个家伙已经替我说了。所以,这里我仅做一些简介。我们从一个语言开始——你可以类比编程语言——你要去执行它。举个例子。它支持下面的数学表达式: + +```c++ +(1 + 2) * (3 - 4) +``` + +然后,你拿出表达式中的每个片段、语言语法中的每个规则,将它们变成对象。数字的对象就是它们的字面值。 + +![](./res/bytecode-numbers.png) + +简单来说,它们是在原始数值的基础上,做了个小封装。运算符也是对象,它们拥有对操作数的引用。如果你使用括号来控制优先级的话,这个表达式又变成了一棵小对象树: + +> 这个“变化”究竟是什么?很简单——解析。解析器接受输入文本字符串,然后将它变成抽象的语法树,即一组用于表示文本语法结构的对象。 + +> 把上述内容堆积起来,你就拥有了半个编译器。 + +![](./res/bytecode-ast.png) + +解释器模式与创建语法树无关,它只关心如何执行它。它的处理很聪明,树中的每个对象都是表达式或子表达式。在面向对象风格中,表达式会计算它们自己的值。 + +首先,定义一个所有表达式都要实现的基础接口。 + +```c++ +class Expression +{ +public: + virtual ~Expression() {} + virtual double evaluate() = 0; +}; +``` + +然后为每一个语法定义实现这个接口的类。其中,最简单的是数字: +```c++ +class NumberExpression : public Expression +{ +public: + NumberExpression(double value) + : value_(value) + {} + + virtual double evaluate() + { + return value_; + } + +private: + double value_; +}; +``` + +一个字面数字表达式的值就等同于它的数值。加法和乘法要稍微复杂一些,因为他们包含子表达式。它们需要先递归计算出所有子表达式的值,之后才能计算出它们自己的值。像这样: + +```c++ +class AdditionExpression : public Expression +{ +public: + AdditionExpression(Expression* left, Expression* right) + : left_(left), + right_(right) + {} + + virtual double evaluate() + { + // Evaluate the operands. + double left = left_->evaluate(); + double right = right_->evaluate(); + + // Add them. + return left + right; + } + +private: + Expression* left_; + Expression* right_; +}; +``` + From a8b0348a3001f73618dadf854c279f8b5cc58b6b Mon Sep 17 00:00:00 2001 From: hongxiaoqiang Date: Thu, 18 Sep 2014 17:15:26 +0800 Subject: [PATCH 033/123] =?UTF-8?q?=E5=AD=90=E7=B1=BB=E6=B2=99=E7=9B=92?= =?UTF-8?q?=E6=A8=A1=E5=BC=8F=E5=AE=8C=E6=95=B4=E7=89=88=E5=88=9D=E7=89=88?= =?UTF-8?q?=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 04.2-Subclass Sandbox.md | 343 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 342 insertions(+), 1 deletion(-) diff --git a/04.2-Subclass Sandbox.md b/04.2-Subclass Sandbox.md index bccb339..9cb9852 100644 --- a/04.2-Subclass Sandbox.md +++ b/04.2-Subclass Sandbox.md @@ -62,4 +62,345 @@ - 你想使这些继承类以及程序的其他代码之间的耦合最小化。 #记住 -“继承”一词最近在一些程序圈子里被视为诟病,其中一个原因是基类会越来越增长。 +“继承”一词最近在一些程序圈子里被视为诟病,其中一个原因是基类会滋生越来越多的代码。这个模式尤其受这个因素的影响。 + +由于子类是通过它们的基类来实现剩下的游戏,基类最终会与所有子类需要交互的系统产生耦合。当然,这些子类也与他们的基类绑定。这个蜘蛛网式的耦合使得在不破坏什么的情况下改变基类是很困难的 -- 你遇到了[脆弱的基类问题](http://en.wikipedia.org/wiki/Fragile_base_class)。 + +从另一个角度来说你所有的耦合都被聚集到了基类,子类现在明显地与其他世界更加独立了。理想状态下,你的绝大部分操作都在子类中。这意味着你的大量的代码库是独立的,并且更易于维护。 + +如果你仍然发现这个模式正把你的基类推向一碗巨大的代码汤里的话,请考虑把一些提供的操作提取到一个基类能够管理的独立的类中。这里[组件模式](./05.1-Component.md)能够有所帮助。 + +#示例代码 +由于这是一个如此简单的设计模式,并没有多少的示例代码。这不意味着这没有用 -- 这个模式的实现关乎的是其意义而不是其复杂度。 + +我们将从我们得Superpower基类开始: +```c++ +class Superpower +{ +public: + virtual ~Superpower() {} + +protected: + virtual void activate() = 0; + + void move(double x, double y, double z) + { + // Code here... + } + + void playSound(SoundId sound, double volume) + { + // Code here... + } + + void spawnParticles(ParticleType type, int count) + { + // Code here... + } +}; +``` +函数activate()就是沙盒函数。由于它是虚拟和抽象的,子类必须要覆盖它。这对于需要创建一个力量子类而使工作正常进行的人们来说是清晰地。 + +另外的保护函数move(), playSound()和spawnParticles()都是保护操作。这些就是子类需要在activate()函数实现时将调用的函数。 + +我们没有在这个示例中实现提供的操作,但是一个实际的游戏需要有真实的代码在那儿。这个函数是Superpower在游戏中与其他系统耦合的函数 -- move()函数也许会调用物理引擎代码,playSound()将与音效引擎通讯等等。由于所有的这些都是在基类的实现中,这就使得所有的耦合都封装在Superpower自己中。 + +好啦,现在让我们放出我们的放射性蜘蛛并创建一个力量。这就有一个: +```c++ +class SkyLaunch : public Superpower +{ +protected: + virtual void activate() + { + // Spring into the air. + playSound(SOUND_SPROING, 1.0f); + spawnParticles(PARTICLE_DUST, 10); + move(0, 0, 20); + } +}; +``` +> 注解 + +> 好啦,也许能够跳跃并不是力量的所有,但是这里我尝试保持事情基础。 + +这个力量把超级英雄弹向空中,播放一段恰当的音效并踢开一缕拂尘。如果所有的超级力量都如此简单 -- 仅仅是音效,粒子效果和动作的组合,那么我们就不再需要这个模式了。反而,Superpower可以有一个activate()的烘烤的实现,这个activate()是访问音效ID,粒子类型和移动的部分。但是这个在仅当所有的力量基本上以同样的方式来工作仅仅在数据上有一些差异的地方才有效。让我们更详细的看一下: +```c++ +class Superpower +{ +protected: + double getHeroX() + { + // Code here... + } + + double getHeroY() + { + // Code here... + } + + double getHeroZ() + { + // Code here... + } + + // Existing stuff... +}; +``` +这里我们添加了一个方法用于获取英雄的位置。我们得SkyLaunch子类现在可以使用这些: +```c++ +class SkyLaunch : public Superpower +{ +protected: + virtual void activate() + { + if (getHeroZ() == 0) + { + // On the ground, so spring into the air. + playSound(SOUND_SPROING, 1.0f); + spawnParticles(PARTICLE_DUST, 10); + move(0, 0, 20); + } + else if (getHeroZ() < 10.0f) + { + // Near the ground, so do a double jump. + playSound(SOUND_SWOOP, 1.0f); + move(0, 0, getHeroZ() - 20); + } + else + { + // Way up in the air, so do a dive attack. + playSound(SOUND_DIVE, 0.7f); + spawnParticles(PARTICLE_SPARKLES, 1); + move(0, 0, -getHeroZ()); + } + } +}; +``` +由于我们可以使用一些状态,现在我们得沙盒函数可以做一些实际的有趣的控制流。这里仍然仅仅是一些简单的if语句,但是你可以做任何你想做的事情。通过使沙盒函数成为一个包含任意代码的切实丰富的函数,天空将无极限。 + +> 注解 + +> 起初,我建议对力量采用数据驱动的方式。此处就是一个你决定不采用它的原因。如果你的行为是复杂和紧急的,定义数据将更困难。 + +#设计决策 +正如你所见,子类沙盒模式是一个相当“柔弱的”的模式。它描述了一个基本的思想,但是它没有一些繁杂的机制。这就意味着你每次应用它的时候将作一些有趣的决定。以下有一些需要考虑的问题。 + +##需要提供什么操作? +这是最大的问题。这深深地影响了这个模式的感觉以及它的表现如何。从最小的一个极端来说,基类不提供任何操作。它仅仅有一个沙盒函数。为了实现它,你将不得不调用基类之外的系统。如果从这个角度来说,你可能不能公平地说你正在用这个模式。 + +从另一个极端来说,基类提供了子类需要的所有操作。子类仅仅与基类耦合并且不调用任何外部系统。 + +> 注解 + +> 具体来说,这意味着每个子类的源文件仅仅需要一个#include -- 针对基类的一个。 + +在这两个点之间,有一个宽广的中间空间,在这个空间里,一些操作通过基类提供,另外一些则通过定义它的外部系统直接访问。你提供越多的操作,子类与外部系统耦合越少,但是基类就耦合得越多。它去掉了继承类的耦合,但是它是通过把耦合聚集到基类自己来实现的。 + +如果你有一堆与外部系统耦合的继承类的话,那么就赢了。通过把耦合向上移到一个提供的操作,你就把它聚集到了一个地方:基类。但是你这样做得越多,一个类就变得越大和越来越难于维护。 + +因此你应该在哪里画一条线?这里有一些随手的规则: +- 如果一个提供的操作仅仅被一个或者少数的子类使用,你不用花销太多。你正在给基类增加复杂度,这将影响每个子类,但是仅仅少数的类从中受益。 + +使这个操作与其他操作保持一致或许是有意义的,或者使这些特殊情况的子类直接调用外部系统或许更简单清晰。 + +- 当你调用游戏中一些其他部分的函数的时候,如果那个函数不修改任何状态的话将会带来更少的破坏。它仍然创建了耦合,但是这是一个“安全”的耦合,因为在游戏中它不带来任何破坏。 + +> 注解 + +> "安全"这里加引号是因为从技术上来说,即使是访问数据也能引起问题。如果你的游戏是多线程的,你可以在数据被修改的同时读取数据。如果你不小心,最终得到的将是假数据。 + +> 另一个令人不快的情况是如果你的游戏状态是严格准确的(许多在线游戏为了保持玩家同步)。如果你访问一些同步游戏状态之外的东西,你将引起非常疼痛的非确定性bug。 + +那样调用确实是改变状态,另一方面,与代码库部分更深层次的绑定,你需要对它有更多的了解。这使得它们适合于成为在更可见基类中提供的操作。 + +- 如果一个提供的操作的实现仅仅调用一些外部系统,那么它并没有增值多少。在这种情况下,直接调用外部系统更为简单。 + +然而,极其简单的转向调用也仍有用 -- 这些函数通常访问基类不想直接暴露给子类的状态。例如,让我们看看Superpower提供的这个: +```c++ +void playSound(SoundId sound, double volume) +{ + soundEngine_.play(sound, volume); +} +``` +它仅仅在Superpower中转向调用一些soundEngine_区域。这样的好处是把这种区域封装在Superpower,因此子类不能访问它。 + +##是否函数应该被直接提供,还是通过包含它们的对象来提供? +这个设计模式的挑战在于最终你的基类塞满了大量的函数。你能够通过转移一些函数到其他类中来缓解这种情况。在基类中提供的函数然后仅仅返回这些对象之一。 + +例如,为了使一个力量播放音效,我们能够直接添加这些到Superpower中: +```c++ +class Superpower +{ +protected: + void playSound(SoundId sound, double volume) + { + // Code here... + } + + void stopSound(SoundId sound) + { + // Code here... + } + + void setVolume(SoundId sound) + { + // Code here... + } + + // Sandbox method and other operations... +}; +``` +但是如果Superpower已经变得臃肿不堪,我们或许想避免这样做。反而,我们创建一个SoundPlayer类来暴露这种功能: +```c++ +class SoundPlayer +{ + void playSound(SoundId sound, double volume) + { + // Code here... + } + + void stopSound(SoundId sound) + { + // Code here... + } + + void setVolume(SoundId sound) + { + // Code here... + } +}; +``` +然后Superpower提供它的访问: +```c++ +class Superpower +{ +protected: + SoundPlayer& getSoundPlayer() + { + return soundPlayer_; + } + + // Sandbox method and other operations... + +private: + SoundPlayer soundPlayer_; +}; +``` +把提供的操作分流到一个像这样的辅助类中能给你带来一些东西: +- 减少基类的函数数量。在这里的例子中,我们从三个函数变成仅仅一个获取函数。 + +- 在帮助类中的代码通常更容易维护。像Superpower这样的核心基类,不管我们是以最好的意图,都由于大量的依赖它们而难于修改。通过把功能转移到一个耦合更少的第二候选类,我们可以使它的代码在不破坏的情况下更易于访问。 + +- 减少了基类和其他系统之间的耦合。当playSound()直接是一个在Superpower上的函数时,无论实现中调用了什么音效代码,我们基类就直接地与SoundId绑定了。把它转移到SoundPlayer减少了Superpower对单个SoundPlayer类的耦合,SoundPlayer会封装其他的依赖。 + +##基类如果获取需要的状态? +你的基类经常需要一些数据来封装和保持对子类的隐藏。在我们的第一个例子中,Superpower类提供了一个spawnParticles()方法。如果这个方法的实现需要一些粒子系统对象,它如何获得一个? +- 把它传递到基类构造函数: +最简单的方案是让基类把它作为一个构造函数参数: +```c++ +class Superpower +{ +public: + Superpower(ParticleSystem* particles) + : particles_(particles) + {} + + // Sandbox method and other operations... + +private: + ParticleSystem* particles_; +}; +``` +这安全地保证了每个superpower在它构造的时候有一个粒子系统。但是让我们看看一个子类: +```c++ +class SkyLaunch : public Superpower +{ +public: + SkyLaunch(ParticleSystem* particles) + : Superpower(particles) + {} +}; +``` +这里我们看到了问题。每个继承类将需要一个构造函数,这个构造函数调用基类的构造函数并传递那个参数。这样就给每个子类暴露了不想让它们知道的一些状态。 + +同样也存在维护负担。如果稍后我们在基类中添加另一份状态,每个继承类的构造函数将不得不被修改来传递它。 + +- 进行二级初始化: +为了避免通过构造函数传递所有的东西,我们可以把初始化拆分为两个步骤。构造函数将不带参数仅仅创建对象。然后,我们调用一个直接定义在基类中的函数来传递它需要的余下部分数据。 +```c++ +Superpower* power = new SkyLaunch(); +power->init(particles); +``` +这里注意我们没有为SkyLaunch的构造函数传递任何东西,它并没有与我们希望在Superpower保持隐藏的东西产生耦合。采用这种方法困难的地方在于你必须确保你记得调用init()。如果你忘记了,你将拥有一个潜藏的半创建状态不能工作的力量。 + +你可以通过封装整个过程到单个函数中来修改它。像这样: +```c++ +Superpower* createSkyLaunch(ParticleSystem* particles) +{ + Superpower* power = new SkyLaunch(); + power->init(particles); + return power; +} +``` + +> 注解 + +> 通过一点小技巧比如私有构造函数和友元函数,你可以保证createSkylaunch()函数是唯一能够实际创建力量的函数。通过那种方式,你就不会忘记任何的初始化步骤。 + +- 使状态静态化: +在之前的例子中,我们用一个粒子系统来初始化每个Superpower实例。当每个力量需要它们唯一的状态时这是有意义的。但是让我们看看粒子系统是一个[单例](./02.5-Singleton.md),每一个力量都将共享同样的状态。 + +在这种情况下,我们可以使这个状态对基类来说是私有的,同样也是静态的。游戏将仍然不得不保证初始化了状态,但是它仅仅需要针对整个游戏初始化Superpower类一次,而不是每个实例。 + +> 注解 + +> 记住一个单例仍然有许多的问题。你已经使一些状态在大量的对象之前共享(所有的Superpower实例)。粒子系统被封装,因此它不是全局可见,这很棒,但是仍然使得合理化力量更困难因为它们可以侵入同一个对象。 +```c++ +class Superpower +{ +public: + static void init(ParticleSystem* particles) + { + particles_ = particles; + } + + // Sandbox method and other operations... + +private: + static ParticleSystem* particles_; +}; +``` +此处注意init()和particles_ 都是静态的。只要游戏调用Superpower::init()稍早调用一次,所有的力量都可以访问粒子系统。与此同时,Superpower实例可以通过调用正确的继承类构造函数被自由创建。 + +更棒的是,现在particles_ 是静态变量,我们不必为每个Superpower实例储存它,因此我们使得类占用更少的内存。 + +- 使用服务定位器: +之前的选项需要外部代码明确地记住把基类需要的状态在使用之前推进去。那给周围代码的初始化工作带来了负担。另外一个选择是让基类通过把它需要的状态拉进去来处理。实现这个的一个方法是使用[服务定位器](./05.3-Service Locator.md)模式。 +```c++ +class Superpower +{ +protected: + void spawnParticles(ParticleType type, int count) + { + ParticleSystem& particles = Locator::getParticles(); + particles.spawn(type, count); + } + + // Sandbox method and other operations... +}; +``` +这里,spawnParticles()需要一个粒子系统。它从服务定位器获取了一个,而不是通过外部代码获取。 + +#也看看 +- 当你使用[更新函数](./03.3-Update Method.md)模式的时候,你的更新函数通常也是一个沙盒函数。 + +- 这个模式一个[模板函数](http://en.wikipedia.org/wiki/Template_method_pattern)模式的一个反面角色。在这两个模式中,你使用一些列原始操作实现一个函数。通过子类沙盒模式,函数在继承类中,原始操作则在基类中。通过模板函数,基类有函数,原始操作被继承类实现。 + +- 你也能够在[外观模式](http://en.wikipedia.org/wiki/Facade_Pattern)中看到一种变化。那个模式把一些不同的系统隐藏在一个简单API后。通过子类沙盒,基类扮演了一个隐藏整个游戏引擎使子类不可见的外观。 + +=============================== +[上一节](04.1-Bytecode.md) + +[目录](README.md#目录) + +[下一节](04.3-Type Object.md) From 27f1b5dbb4f094f4455292c43bc38d9c1486bb93 Mon Sep 17 00:00:00 2001 From: hongxiaoqiang Date: Thu, 18 Sep 2014 18:22:56 +0800 Subject: [PATCH 034/123] =?UTF-8?q?=E5=9C=A8=E6=A0=BC=E5=BC=8F=E4=B8=8A?= =?UTF-8?q?=E4=BD=9C=E7=AC=AC=E4=B8=80=E6=AC=A1=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 04.2-Subclass Sandbox.md | 51 ++++++++++++++++++++++------------------ 1 file changed, 28 insertions(+), 23 deletions(-) diff --git a/04.2-Subclass Sandbox.md b/04.2-Subclass Sandbox.md index 9cb9852..bd0f703 100644 --- a/04.2-Subclass Sandbox.md +++ b/04.2-Subclass Sandbox.md @@ -200,29 +200,29 @@ protected: 因此你应该在哪里画一条线?这里有一些随手的规则: - 如果一个提供的操作仅仅被一个或者少数的子类使用,你不用花销太多。你正在给基类增加复杂度,这将影响每个子类,但是仅仅少数的类从中受益。 - -使这个操作与其他操作保持一致或许是有意义的,或者使这些特殊情况的子类直接调用外部系统或许更简单清晰。 + + 使这个操作与其他操作保持一致或许是有意义的,或者使这些特殊情况的子类直接调用外部系统或许更简单清晰。 - 当你调用游戏中一些其他部分的函数的时候,如果那个函数不修改任何状态的话将会带来更少的破坏。它仍然创建了耦合,但是这是一个“安全”的耦合,因为在游戏中它不带来任何破坏。 - -> 注解 - -> "安全"这里加引号是因为从技术上来说,即使是访问数据也能引起问题。如果你的游戏是多线程的,你可以在数据被修改的同时读取数据。如果你不小心,最终得到的将是假数据。 - -> 另一个令人不快的情况是如果你的游戏状态是严格准确的(许多在线游戏为了保持玩家同步)。如果你访问一些同步游戏状态之外的东西,你将引起非常疼痛的非确定性bug。 - -那样调用确实是改变状态,另一方面,与代码库部分更深层次的绑定,你需要对它有更多的了解。这使得它们适合于成为在更可见基类中提供的操作。 + + > 注解 + + > "安全"这里加引号是因为从技术上来说,即使是访问数据也能引起问题。如果你的游戏是多线程的,你可以在数据被修改的同时读取数据。如果你不小心,最终得到的将是假数据。 + + > 另一个令人不快的情况是如果你的游戏状态是严格准确的(许多在线游戏为了保持玩家同步)。如果你访问一些同步游戏状态之外的东西,你将引起非常疼痛的非确定性bug。 + + 那样调用确实是改变状态,另一方面,与代码库部分更深层次的绑定,你需要对它有更多的了解。这使得它们适合于成为在更可见基类中提供的操作。 - 如果一个提供的操作的实现仅仅调用一些外部系统,那么它并没有增值多少。在这种情况下,直接调用外部系统更为简单。 - -然而,极其简单的转向调用也仍有用 -- 这些函数通常访问基类不想直接暴露给子类的状态。例如,让我们看看Superpower提供的这个: -```c++ -void playSound(SoundId sound, double volume) -{ - soundEngine_.play(sound, volume); -} -``` -它仅仅在Superpower中转向调用一些soundEngine_区域。这样的好处是把这种区域封装在Superpower,因此子类不能访问它。 + + 然而,极其简单的转向调用也仍有用 -- 这些函数通常访问基类不想直接暴露给子类的状态。例如,让我们看看Superpower提供的这个: + ```c++ + void playSound(SoundId sound, double volume) + { + soundEngine_.play(sound, volume); + } + ``` + 它仅仅在Superpower中转向调用一些soundEngine_区域。这样的好处是把这种区域封装在Superpower,因此子类不能访问它。 ##是否函数应该被直接提供,还是通过包含它们的对象来提供? 这个设计模式的挑战在于最终你的基类塞满了大量的函数。你能够通过转移一些函数到其他类中来缓解这种情况。在基类中提供的函数然后仅仅返回这些对象之一。 @@ -295,7 +295,8 @@ private: ##基类如果获取需要的状态? 你的基类经常需要一些数据来封装和保持对子类的隐藏。在我们的第一个例子中,Superpower类提供了一个spawnParticles()方法。如果这个方法的实现需要一些粒子系统对象,它如何获得一个? -- 把它传递到基类构造函数: +- __把它传递到基类构造函数:__ + 最简单的方案是让基类把它作为一个构造函数参数: ```c++ class Superpower @@ -325,7 +326,8 @@ public: 同样也存在维护负担。如果稍后我们在基类中添加另一份状态,每个继承类的构造函数将不得不被修改来传递它。 -- 进行二级初始化: +- __进行二级初始化:__ + 为了避免通过构造函数传递所有的东西,我们可以把初始化拆分为两个步骤。构造函数将不带参数仅仅创建对象。然后,我们调用一个直接定义在基类中的函数来传递它需要的余下部分数据。 ```c++ Superpower* power = new SkyLaunch(); @@ -347,7 +349,8 @@ Superpower* createSkyLaunch(ParticleSystem* particles) > 通过一点小技巧比如私有构造函数和友元函数,你可以保证createSkylaunch()函数是唯一能够实际创建力量的函数。通过那种方式,你就不会忘记任何的初始化步骤。 -- 使状态静态化: +- __使状态静态化:__ + 在之前的例子中,我们用一个粒子系统来初始化每个Superpower实例。当每个力量需要它们唯一的状态时这是有意义的。但是让我们看看粒子系统是一个[单例](./02.5-Singleton.md),每一个力量都将共享同样的状态。 在这种情况下,我们可以使这个状态对基类来说是私有的,同样也是静态的。游戏将仍然不得不保证初始化了状态,但是它仅仅需要针对整个游戏初始化Superpower类一次,而不是每个实例。 @@ -355,6 +358,7 @@ Superpower* createSkyLaunch(ParticleSystem* particles) > 注解 > 记住一个单例仍然有许多的问题。你已经使一些状态在大量的对象之前共享(所有的Superpower实例)。粒子系统被封装,因此它不是全局可见,这很棒,但是仍然使得合理化力量更困难因为它们可以侵入同一个对象。 + ```c++ class Superpower { @@ -374,7 +378,8 @@ private: 更棒的是,现在particles_ 是静态变量,我们不必为每个Superpower实例储存它,因此我们使得类占用更少的内存。 -- 使用服务定位器: +- __使用服务定位器:__ + 之前的选项需要外部代码明确地记住把基类需要的状态在使用之前推进去。那给周围代码的初始化工作带来了负担。另外一个选择是让基类通过把它需要的状态拉进去来处理。实现这个的一个方法是使用[服务定位器](./05.3-Service Locator.md)模式。 ```c++ class Superpower From 3be594f84ade11e9d3eeb280bf05d4a9cfcdcaaa Mon Sep 17 00:00:00 2001 From: "Henry.T" Date: Thu, 18 Sep 2014 22:55:03 +0800 Subject: [PATCH 035/123] =?UTF-8?q?4.1=E5=AD=97=E8=8A=82=E7=A0=81=20?= =?UTF-8?q?=E8=99=9A=E6=8B=9F=E6=9C=BA=E5=99=A8=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 04.1-Bytecode.md | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/04.1-Bytecode.md b/04.1-Bytecode.md index 5499900..d52f973 100644 --- a/04.1-Bytecode.md +++ b/04.1-Bytecode.md @@ -111,3 +111,38 @@ private: }; ``` +显然,只要几个简单的类,就能够表达任何复杂的算术表达式了。我们只用创建几个对象,并将它们正确得关联起来。 + +> Ruby在大概15年前就是这么实现的。到了1.9版本,它们改成了本章所说的字节码。看我替你省了多少时间! + +这个模式虽然简单漂亮,但是也有些问题。回头看看上面的插图,你看到了些什么?很多小盒子,以及它们之间的箭头。代码用一个微小对象构成的曼生分形树来表达,会造成一些很不舒服的结果: +- 从磁盘加载需要实例化并串联成堆的小对象。 +> 如果你想自己算算的话,别忘了算上虚函数表。 +- 些对象和它们之间的指针占用大量内存。在32位机上,即使不考虑对其,这个小小的表达式也要占用68字节。 +> 要了解更多关于缓存以及它如何影响性能的原理,看看[数据局部性](06.1-Data%20Locality.md)这一章。 +- 从每个指针遍历出表达式会杀了你的数据缓存,而虚函数调用也会对指令缓存造成很大压力。 + +总结一下,该怎么说呢?慢啊!大量的编程语言不采用解释器模式,就是因为它又慢又占内存。 + +### 虚拟机器码 +回到我们的游戏。当它运行的时候,玩家的电脑不会在运行时遍历一个C++语法结构树。我们已经提前将它编译成CPU可以直接执行的机器码了。那么为什么要采用机器码呢? +- 高密度。它是坚实持续的数据块,不会浪费任何一个bit。 +- 线性。指令被打包在一起顺序执行。不会在内存中跳跃访问(当然了,除非你确实在做流程控制) +- 底层。每个单独的执行都只做一件小事,各种有趣行为都是它们的组合。 +- 高速。综上所述(当然还得算上机器码由硬件实现这一点了),机器码跑起来像风一样。 + +听上去不错,但我们不想用机器码去编写各种法术。让用户提供在游戏里执行的机器码,简直是自找麻烦,这会带来很多安全问题。我们只能在机器码的效率和解释器模式的安全性之间取一个平衡。 + +> 这就是为什么很多主机和iOS禁止程序在运行时生成或载入机器码的原因。这是个拖后腿的规定,因为最快的编程语言就是基于这个原理实现的。它们包含一个“just-in-time”编译器,或者叫JIT。它能飞快地把语言翻译成优化的机器码。 + +我们不要去加载执行真正的机器码,而去定义自己的虚拟机器码,会怎样呢?我们会在游戏中实现一个模拟器。它于机器码相似——高密度、线性、相对底层——同时它完全接受游戏安全的管理。 + +> 在编程语言的语境下,“虚拟机”和“解释器”都有自己的含义,这里我把它们穿插进来了。如果要说四人帮的解释器模式的话,我会强调“模式”这个词,以避免混淆。 +我们将这个小模拟器称为虚拟机(简称VM),这个虚拟机所执行的二进制“机器码”称为字节码。它具备从数据定义事物的灵活性和易用性,它也比解释器模式这种高级呈现方式更高效。 + +听上去挺吓人的。我在本章里剩下的目标,就是要给你展示一下,如果你控制好自己的功能清单,这个方案非常可行。即使最终你自己也没把这个模式用起来,至少你能对Lua以及别的采用这个原理的语言有更好的了解。 + +## 模式 + + + From 6dcdbd23617d36443cd6b0d4c81b1f60b8bc36c3 Mon Sep 17 00:00:00 2001 From: "Henry.T" Date: Wed, 24 Sep 2014 02:01:45 +0800 Subject: [PATCH 036/123] =?UTF-8?q?4.1=E5=AD=97=E8=8A=82=E7=A0=81=20?= =?UTF-8?q?=E6=A8=A1=E5=BC=8F=E3=80=81=E4=BD=95=E6=97=B6=E4=BD=BF=E7=94=A8?= =?UTF-8?q?=E3=80=81=E6=B3=A8=E6=84=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 04.1-Bytecode.md | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/04.1-Bytecode.md b/04.1-Bytecode.md index d52f973..f4a0487 100644 --- a/04.1-Bytecode.md +++ b/04.1-Bytecode.md @@ -143,6 +143,26 @@ private: 听上去挺吓人的。我在本章里剩下的目标,就是要给你展示一下,如果你控制好自己的功能清单,这个方案非常可行。即使最终你自己也没把这个模式用起来,至少你能对Lua以及别的采用这个原理的语言有更好的了解。 ## 模式 +**指令集**定义可以执行的底层操作。用**字节序列**来定义它。**虚拟机**逐条执行指令栈上的指令。通过组合指令,可以获得很多高级行为。 + +## 何时使用它 +这是本书中最复杂的模式,要把它放进你的游戏里没那么容易。仅当你的游戏中需要定义大量行为,并且它的编程语言没法处理好下列事情时: +- 编程语言太底层了,编写起来繁琐易错 +- 因编译时间太长或工具问题,导致迭代缓慢 +- 它太相信编码者。你想确保定义的行为不会让程序崩溃,就得把它们放进安全沙箱里。 +当然,这个列表符合大多数游戏的情况。谁不想提高迭代速度,让程序更安全?但那是1有代价的。字节码比本地码要慢,所以它并不适合用作对性能要求极高的核心部分。 + +##注意 +> 对我来说游戏开发有同样的吸引力,我在努力创建虚拟世界,让别人进来玩或做创意。 +建立你自己的语言或内嵌系统是一件很有吸引力的事。这里我只做个最小化示例,但在现实中,它会像野草一样疯长。 + +> 比如所有的模板语言 +每次我看到有人定义一中小语言或脚本,他们会说“别担心,它会很小巧”。没法控制的是,他们会不断往里面添加小功能,直到它变成一个成熟的语言。但不像其他语言,它的发展是一些临时功能的有机组合,就像个精致的棚屋小镇。 + + +当然,做个成熟的语言没什么错。只要保证你目标明确。否则,就控制好你的字节码要表达的东西,在它超出你控制之前设定好范围。 + + From 2dcf085e0156ebf6a8cfaabafacdbda8dadcf7cd Mon Sep 17 00:00:00 2001 From: "Henry.T" Date: Mon, 29 Sep 2014 00:55:57 +0800 Subject: [PATCH 037/123] =?UTF-8?q?04.1=20=E5=AD=97=E8=8A=82=E7=A0=81=20?= =?UTF-8?q?=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 04.1-Bytecode.md | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/04.1-Bytecode.md b/04.1-Bytecode.md index f4a0487..27adc9c 100644 --- a/04.1-Bytecode.md +++ b/04.1-Bytecode.md @@ -152,7 +152,7 @@ private: - 它太相信编码者。你想确保定义的行为不会让程序崩溃,就得把它们放进安全沙箱里。 当然,这个列表符合大多数游戏的情况。谁不想提高迭代速度,让程序更安全?但那是1有代价的。字节码比本地码要慢,所以它并不适合用作对性能要求极高的核心部分。 -##注意 +## 注意 > 对我来说游戏开发有同样的吸引力,我在努力创建虚拟世界,让别人进来玩或做创意。 建立你自己的语言或内嵌系统是一件很有吸引力的事。这里我只做个最小化示例,但在现实中,它会像野草一样疯长。 @@ -162,7 +162,26 @@ private: 当然,做个成熟的语言没什么错。只要保证你目标明确。否则,就控制好你的字节码要表达的东西,在它超出你控制之前设定好范围。 +### 你需要个前端 +低级的字节码对性能提升很大,但你没法让你的用户直接编写它们。我们将行为从代码中移出来的一个原因是想要用更高级的方式表达它。C++已经很底层了,如果想让你的用户高效得编写汇编——这根本不是种进步! +> 一个反例是有名的[RoboWar](http://en.wikipedia.org/wiki/RoboWar)。在这个游戏里,玩家使用一种类似汇编的语言编写小程序,来控制机器人。我们这里也会讨论指令集这种方式。 +> 这是我的第一篇汇编类语言的指南。 +就像四人帮的解释器模式一样,它假定你能够以某种方式生成字节码。通常,用户会在更高级的层次上编辑,一个工具负责将它转换成虚拟机能够理解的字节码。这个工具的名字,就是编译器。 + +我知道,听上去很可怕对不对。所以这里我先提出来了。如果你没有足够的资源去完成一个编辑工具,那么字节码不适合你。但你先别急继续往下看,也许没你想象中那么坏。 + +### 你会想念调试器的 +编程很难。我们知道自己想让机器做什么,但是我们很难用正确的方式与之沟通——我们会写出bug。为此,我们搜集了一大堆工具来找出代码错在哪里,如何去改正。我们有调试器、静态分析器、反编译工具等等。所有这些工具都是为某种已经存在的语言而设计的:机器码或者是高级语言。 + +当你定义自己的字节码虚拟机时,你就没法用这些工具了。当然了,你可以用调试器步进到虚拟机的代码里,但那只能告诉你虚拟机在做什么,与它正在解释的字节码没什么关系。它也没法替你把字节码映射回对应的原始高级语言。 + +如果你定义的行为很简单,你可以勉强回避掉做各种辅助调试工具的事儿。但是随着内容规模增长,你得规划好如何让用户能实时看到他们的字节码有什么效果。这些功能可能不会随游戏发布,但是它们能确保你的游戏可以发布。 + +> 当然,如果你想让游戏支持MOD,你就得发布这些功能,这相当重要。 + +## 简单的代码 +在上面几节讨结束之后,你可能会很好奇如何直接实现它。首先,要为虚拟机设计一个指令集。在真正考虑,字节码之类的东西前,可以先把它们当成是API。 From 963add0a19be462c1992599d2854a9aa6b001044 Mon Sep 17 00:00:00 2001 From: zhizhen Date: Wed, 8 Oct 2014 09:51:07 +0800 Subject: [PATCH 038/123] add first section --- 02.2-Flyweight.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/02.2-Flyweight.md b/02.2-Flyweight.md index c71ced8..ce06b09 100644 --- a/02.2-Flyweight.md +++ b/02.2-Flyweight.md @@ -1,2 +1,4 @@ -Flyweight +享元模式 ============================ +云雾散去,露出一片巨大而又古老、绵延的深林。数不清的远古铁杉,高出你而形成一个绿色的大教堂。叶子像彩色玻璃窗一样,将阳光打碎成一束束金黄色的雾气。巨大的树干之间,你能辨认出巨大深林的距离。 +对于作为游戏开发者的我们来说,这是一种超凡脱俗的梦境设置,这样的场景我们经常通过一个模式来实现,它的名字可能并不常见,那就是享元模式。 \ No newline at end of file From 259cb2ef63caf255c22c5f96c70cc526507d9453 Mon Sep 17 00:00:00 2001 From: zhizhen Date: Wed, 8 Oct 2014 11:18:56 +0800 Subject: [PATCH 039/123] first session --- 02.2-Flyweight.md | 62 +++++++++++++++++++++++++++++++++-- res/flyweight-tree-model.png | Bin 0 -> 73272 bytes res/flyweight-trees.png | Bin 0 -> 84762 bytes 3 files changed, 60 insertions(+), 2 deletions(-) create mode 100644 res/flyweight-tree-model.png create mode 100644 res/flyweight-trees.png diff --git a/02.2-Flyweight.md b/02.2-Flyweight.md index ce06b09..19bdb1c 100644 --- a/02.2-Flyweight.md +++ b/02.2-Flyweight.md @@ -1,4 +1,62 @@ 享元模式 ============================ -云雾散去,露出一片巨大而又古老、绵延的深林。数不清的远古铁杉,高出你而形成一个绿色的大教堂。叶子像彩色玻璃窗一样,将阳光打碎成一束束金黄色的雾气。巨大的树干之间,你能辨认出巨大深林的距离。 -对于作为游戏开发者的我们来说,这是一种超凡脱俗的梦境设置,这样的场景我们经常通过一个模式来实现,它的名字可能并不常见,那就是享元模式。 \ No newline at end of file +云雾散去,露出一片巨大而又古老、绵延的深林。数不清的远古铁杉,高出你而形成一个绿色的大教堂。叶子像彩色玻璃窗一样,将阳光打碎成一束束金黄色的雾气。巨大的树干之间,你能在远出制作出巨大的深林。 +对于我们游戏开发者来说,这是一种超凡脱俗的梦境设置,这样的场景我们经常通过一个模式来实现,它的名字可能并不常见,那就是享元模式。 + +### 构成深林的树 +我能用简短的语句描述绵延不绝的深林,然而在一个虚拟现实游戏中去实现它却又是另一回事。当你看到各种形状不一的树填满整个屏幕时,在图形程序员眼里看到的,却是每隔60分之一秒就必须渲染进GPU的数以百万计的多边形。 + +我们谈到成千上万的树,每一颗的几何结构又都包含了成千上万的多边形。即便你有足够的内存来描述这片深林,到了需要渲染的时候,这些数据还必须像搭乘巴士一样从CPU传输到GPU。 + 每一颗树都有一堆与之相关联的数据: + + * 交织成网状的定义了树的主干、树枝以及树叶的多边形。 + * 树皮和树叶的贴图。 + * 它在深林中的位置以及朝向。 + * 大量的参数像大小、颜色等,这样每棵树看起来都不一样。 + + 如果你将它在代码中表述出来,那么你将得到下面的东西: + + class Tree + { + private: + Mesh mesh_; + Texture bark_; + Texture leaves_; + Vector position_; + double height_; + double thickness_; + Color barkTint_; + Color leafTint_; + }; + +数据很多,并且网格和贴图数据还挺大。整个深林的物体在一帧中被扔进去GPU就太多了,所幸的是,有一个很古老的窍门来处理这个。 +关键的是,即便深林中有成千上万的树,它们大部分看起来相似。它们大部分都用同样的网格和贴图。这就意味着远近许多物体间都有着许多共性。 +![](./res/flyweight-trees.png) +我们通过把物体分块能很明显地模拟这一切,首先,我们取出所有树共有的数据放到一个单独的类: + + class TreeModel + { + private: + Mesh mesh_; + Texture bark_; + Texture leaves_; + }; +游戏只需要一个这样的类,因为没有道理在内存中存有成千上万个同样的网格和贴图。因此,每一个树的实例,都用一个指向共享的TreeModel这个类的引用。这就意味着,在Tree这个类里有这么一个指针: + + class Tree + { + private: + TreeModel* model_; + + Vector position_; + double height_; + double thickness_; + Color barkTint_; + Color leafTint_; + }; + +你可以这样形象地描述: +![](./res/flyweight-tree-model.png) +这样能很好的在主内存中存储物体,不过这却对渲染没太大帮助。在树林搬到屏幕上之前,它必须自己搬运到GPU,我们必须用显卡能理解的方式来表达资源共享。 + +### 一千个实例 \ No newline at end of file diff --git a/res/flyweight-tree-model.png b/res/flyweight-tree-model.png new file mode 100644 index 0000000000000000000000000000000000000000..a73eea85734f20c4af8676f55a03c24aa8b557f3 GIT binary patch literal 73272 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%0A=_>Y^VkF~%+1S~LP|EK((;@lbMUG- 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⪼!NF?VeFHqp#7q076 z<-G-fITQJ(95Vw@&WmGW=OCuYOrsKAb=Zl2UXCQP3`XNXWLk z-z#QEJ*!k;?_k~kKCDVL$#y@sHe$d1=(#DV-xdhfVox}Pt-kO)^~)#M7HgX^4=kSTZ9uJb{Jx(ZW~b{W>63!n;Dgq(?`Lf*#fN%!(# z;3t|iy>3;{YRtyVQ-$Ix&Gs`(dYkYECqR`msb%)Sm;7^Be zT0Kj?nA&McC2$nw@=#X9Vw^|XJuy&6&_s^`H-<<5h)1Klb&q#gsu^C2Wn(F`85g3mi#tZ=L5QSwzLN0vt5%YvHrU9c%m*2+7U8`V4|B^yxd1`w(Wy2KfV{^ zk53Y%|C}E`9p`?FMt=PlOJ+(7o7R+T?QqY`k z{hEBgJA{>Piuy%x0e042#KtgAx#<~iEJE&wp@x`EWQ2J5u7;5Ax%fCCxBjlZoNzNk z??-QL7}kqe08iNZs7rrk*oN-<$1@qq@`z?Z?($Jl^`!hz2w9yjAu1tdRK;Rgk1bBN za^a><;$C$blrs!MI1fU|-fAmdAkStvAa;=KGov}vcP>~Yw}Ad=v_BMZ>mVim#=?;+72A z(wnLt(=per7daD8!}bbTg%s0Lw@x1;@9nO~`GXTz^tztz;Sl!2IqiMOnoDwON*tY8 z6^Gz}&d$YUm(}mJD~Q+~Ttb%{Ym`S5Kpj_^xu5HP61IQbP@MyA*vOA^H>7BbImkaIVju{trc~i^ z0@#_JD^(;5B-jFPTMoCyoU;ErRoZQXdLu@s8;x>k!?boDZ`&06_5fC0-Ov`_;mhRM zArP}*B=vWqK>U(2pmZJfv~kC>LzP*}jA6l|Y)z+YA2@uzmR!yJ7%7Cc@NI!Rrg2if z*4jx-_N|nV%O73dc&tfCjX&2!ge`w4OYCoDRL%WN%%&3$AW~wU(!BXSWgwChDgz`g zi{d&_)a5-7K|GABDznFk8+$3FEkaw*d;jcm&soG}R@Dd7n?L>NiLdt}CAthmO^y=w zeUkZ}Td@}<+54DCsL^#I73Qeq)IwFctVlP|b^dn$U;S{VbGvo=B+2-nDo z;b6Py5YmZTFLYHnA!R3n6%c?tfOxQYt-%;;#;l&XFWU=}EF$8%)8m3EMW40g={jsX zQnxG4a;V+hgjf!DQO=s8Oxpj|A@H~xMKmsm8I5ia>WW9RTVNuwh}mCP0`D0?wqI5G zo(SO~m3>}}ec7jaAD4lZH}+n8JZnwOI8*sr_B_R>zj{oEu!F*3o=Vz|4;^3U*HHr6 z1g1>~$+_ZI8K*Sz+2Nsc!AwxhD(iyRQw`rcN#;5Y06Iv+dp`x|Wbm%$kb=w!%Dl#1 zy;I>ovK}h&uaXOO`rCVM|KD^-5#&cA{iP5gfx`+aWgyfG;tY<^#W%mF3^op?P(Nm( zw$E4lS%CAiUxBa*{0DEo}=dv&FtHXx=+dFn=FV&9Pa& z?U`k4)3)klRD$yHcCFYznizW`_rVi|4uVl;OMRS!#Iuz%bl*zo(_M;7&J zR0bR3hRzHrQd)kxAuAuJeDoDIZEv?Z{~=q> zfY*S=ISWpKy*u0vp}U^j&H->9@8zf%K2wpiA*Cu~_Ag|@V zllpyTNw9GI@wXF9MKYP@R8jFzl}*M;oUbQZi0PCTP1~L>Su^H&IpnCca*IhBsKxFo z=1fZeyF-XuJRc$*LPx=@L-L@%R{hS6Uy{pLoeV}fgkxe7g^Z+n|Bkr`gKl-MA)q!D zj-Wal0Kf{NdBriFPo2)9=tkec>$*sw&8-Sl2-wq49O8b?WVL z6rwP27Z-)D_o#th{+qthHr6}bvk(!pT@{suydJd|d)SXsDL`W9(=9z+E8)Cgr_1S- zwArxeUA=!?A`%o6M>ZfzxAy1ZCdw;O4uPU0QXNT6IfU$g&gzMGcfppxRuI?ovIt{p zW^p!6L3)j2!a-}Rtm4k-+8SiTSjez&PBlmi02_e3lwGHURJhA+L<Oo<90$)^{T zLwidZa7AYgFie>9>3VCkY)rCzgk&Wfa`;QzX7GPyIh6T0wrPuDe<;@_H8|xxY^s^_ z&iGYm70>~Ero0ntKWY`_5QucnAKRifzdHmXWuS=}Pa!h@1ST2!b&c;kd&!s_p2hYG&t%B2< zYcqrWP|Y>Cd9WP!Hfp?mtF-OB&;IkZlggUZDj&kzrN^+86j_Zs3zvIT%AlikbSOE2 zKrK2szLotp++>T>1wI;x?0Gg@b@?~EZ``rZALZMh2h@8?Pp4CgMdiMl@#kSMCB!N^ zf-`TT9_jDHP2`5*IPwwo-iba`3a-^304yXXF^dMN0g!WRjpKlw>@Nz>jE01?gURGm)dr?P~OQzLbR(5Lw#fg zuDbn3NXHl#{@h&wtB-_3U~viQ`91iTVDlN+cRn`R*jz3>@2m6mQfP4voh`1@^?ZeZ zU*Hq4J<3N%jwSt4RHQTuO_VK0P?zKQ)1NMLZD*s=bAxkf0!-auhAp`l+;OFi#46jw zs}O_-QLd-e4AeJu>8p+`}nw+RbX+*w8+!AX2bLFDS zMbsHgiC;&2Q1n=-entrBLmt3FRsES)7p1Sa>-BQG_Lub1LqI)46g{WOn4J4do2Db$ zA|&mYvJY*W+}aV6^$dddYOUq{Sp0?RjS>a&%jOQUHqWy5dhWkF=Y&Lor3BT#@sWSu zf7~)vVyNP1UW!FUg~yGW=TwlNiaXtS2LXGkm&qLM z@=`j6@SWS*vWXXVUJju?#-PKnKyBwBE`Sg`JI9$5RT83hDVeyLQmWv1JH7&{CmiBr zu=abYoR|KTT$&VZ3&L!c+|sd4vwW_t;m(o|iFcmw67TIh%KPUM{rxxxC-nqKL|C3K z*N;%1atQsgLx|iz(jT8?Le!G%?Ggi6zqcJ7pCdcM4h@#7omJQ}>y&bA0=y2E?j+}3 z$DNdn2Q4bY+=TUVoU_t3Q(Vo3b2CGH_~lC_u3R>vfR9+e zI2op)y%CqKkBLe6_Kj5v zqBYXh>l(Wi%yH{A5;_6^{Hm&T4K7i5>xE&QDeq@NIrY~G5lU8+!zCIQ*%n|w5l|!3 zH$x5hHxZczg}AAad!iptuCFFVc@Fo`1gdeNVzMvwF^q%tm-%Yc1DJUZ$w1qdd6TAT zn_LoPlnsy=fT3d-55PpzG$-!+<^sMYy>zGZsi?L|ufAHdBx=tLS)Zl)Eh8O> zkr%=Q;;On-eTSHHqx5hN3cf7hUV6yvA^baII)RWMOKyRqTGR|^nfasfNaZaq>Vy-I ztR)b)GQW3L{t*rd2@4$;V2NoXDsj}`qn}V+ZFM;}w{iyl!-ecPd#QT&Wnw< z`aGomO>#V@EvGl+gc?|K#atB?HJtw-u0Q{sITjy!%i)wap)w-TnR zqRwli7AB>br+>~sd>q3l5MEX282_G74#7rky`yeE!H%U&lzJmXZJg-GAD%1in7>^o znKYM6(lp69SKWqPx9o`gLWzh_ZDvW%0zhIgwztcv`?`V_N~&~A(PyazgHiK`)Zh>! zYmw&&7Zc0oCUTeVIF#Do7h)66td49unkb-7JkA?&c&MollDeje4CSzHW#V>P>hiI> z;4>Ipl1`#r1ALUob{P+1Msn)E_ZFmoev&fOf=QEgiv3MQX`#tn5y;3n&; zMP@w?fy+u%RZ&l75?8-Fb^xt{nJ&$2wc|ZI^8HjliPA6{?!$Umotio7!tGB)R8-9=braW#nsEL#IJ#s(8{Z3635$i!II-+oK zv4PmWbL^TjN(;@zRV?Ud!xl8a777lV>V;>AtWUX^d^H4L}X>0^?ZKc&R zc=!XV%y-gr+!Vzw75F>Xal?BjJ+k(KL=J(DdhZlMph#6J=H9np2S2@JaqYqAnkG$d zwC|-p{d#%+JaGRqrQ>fuB+1eQ; zt*M1#0saC>F4#M+V#J|34&jVT8x&wxBRERi^ zp^mJ(mG2b!0efwi)2T^Meec&tq2Hs>@u+Mh2bpNxbybwD>7F16>Z1(mKE_2+>bi-_ zC)sX|(JQRWr)ZD*gG1O16Br8)wPO`S+x8H?Ylztsgm2z?K&wv6v$Hl>Kd~UVEx=T5 zWv1E~0I@ar2lzSUU+SqkP3Sb1-!Tu+Ju#0zt}jq5og>Yy;{)Qp*rxlVkI_*=&ed+( z5e~bl&{c_ZQJr~x&9YkxA+^n4N6{XCz@$9G^c?=lTcpF|97|RrWgVk+iF?0sW_8Hg zheJ5>{WWn*h^dwSNyIA$048a2)(^d};|Cy#&8Fm5yg2e>?BJ9AmCl{s3AjDcD?lT) z#8@0fe@5yUR}H{$FlS~^I?}=oPUo;uSCEAAzUcdYs?NRai_i&QJEgkXS5qx2UUM*U z!By}Q90KclrHrm?tJLePI|8TU)5XtGr80uLd{kCvaS&3)X~+{9EKzzefU2+OThnCE z0vxU`8}>M$ToVG!3Gx9TcXPSI|0-6A$@Z_DXcIg<$H{ia33;xxmi2t%d3C$on(|mq zKobsu+O$62^V6lM`o8e*%{{8B+kPqC@qWMJ1_@6~&>IYGQ#SWgXPo*7=^*zZSs{vOwxV6Yx?;?E$2kMv7eM_l)`F z1NXm7tCmAHK-Qf!H+R|2(=BQyVQPrQ3@Qq+PU3XGFsDLyA;OE+|kjNgFjT zu72XL>3K`7`gUM;5q^efVVJ3LycIe25Ud0IM@*gIJaAvJu9MzcZy>w&HW>JVQ3k(i zEK?BcHQX*eSroTo?45R76~9~dmCkzND6)jMwIQIX=;E>=br8=95KNQ+iE~95O-&W$ z$Z0{e{a?Klq7*{&-fL-#^}!Fqwi@r75?^}hCJNbx%1AOL`kYm|-G zVCy*Yz>b8eDAE-rTJ`zqsGOKinMlqgF|bC=I8&T?0%NM*NB&lyJ9>lg1zsg8unOBDb-`P8Sg8>smz=Iub(QmYT^lGRoOe`zQ!G0W#DN zhjJj)384yaJWiG8^}JYI{G_e305Cl!Qk^x@>6!IX6Tq2v2>Lo`K=)wy?`Kf^xP~_oVHFXxsUbsuSkoFO0vSva4h;!!(uycKu=PJnl>YYCquCF?2YiS@^=bYnQysQ~B#@4eVfBc5i zFc*R@|BlNupXuOaQf(4qJrgy{@Z)%HpD)uQ#1jxU%IN=9Fg-Xy#AWxtBZN5C05u6o z_z|l9Er?mF5K}?RsChIMmCBJ0Ax?~lIK@m?hp8&*$laTN!^MjzELrQxB3ic)w;^k{ z(g?+|29M=rSPH_VCbsili<$DUQ~+9+6Gozq}Z{Cb=Jl4h41v?iX~mh z^cR*rYs`PXLh8Iyc`U)b);|>GbZ@WN@>N5ZCD<~`y{&z8=$Z{9i**d&{3$ewM3>c9&_#frj`QKTfGAv7> zu-m4YvJ+~}n%aRy^B&+j*tC_b3jom>>Jg0q+CwM`9xD8wQ$?kMsQQX2kNg>}*ejX~ z#B>3ta&Q}k2&aFT=y~1AdwcoSn((b$M;Q&Zh2YR3uqnyg7M0!Fw7KDE84AQ^ZQEqc zslm-mWlsp+xGqQ2Kaua1#q_RZ)>wBP>im_DIE+#IM?bPnje2Z9z z@YM}w%FJsd^a7_D&f!^ORM#mdM8~Dql`w%TFX7SvKJZG`%GAPzD!5Kg5Z6_Zxb3ad zkmM`)y0Tsx!1FkiUYm)ZI&77E9JL~Qqdck_L$=66WDd)kRb@4E|4XQ+LW=!9{WYgk zC~l{8-L>-VM>!11H*tf|lM%;&ikkA|Q3OXS+#i$yS=>a3imOFh;tf)>03oIwt^hG>((1Fi(goZW$!n%GOrS0<;ePssXqeDhXua~uzL!Msvmo`e2Fyn@;N!b1SHkR2l z`JWL2i`qs@{g{hWEha0{;q5yWV#hg<fETb+YAU;2p)S@qqu zP@?d%l2-Ii^Ui@wK-pOwGFO1=xdjhl0(yA879 zTQ;we$g`%+(kx4_ms`@{4Ba?1=Qh8bPD1|Cc&EsNL~ye|E0xX(vx%y+Qq}AuhY*Jl zB5TA{-u1Uz$(|=1m7f%hKS9@b zym!3l0KGc_VZG~gC++!EaIk2FMfSJL^j8AZ5#?iZbO+f{i{~Hpkp=KI^RfN&o~k%` zpgs;G;?p^Y5FHI_`YZCP0pD6?#-KYz{8XLjrAi=wuxr z41>u^!z3VX$N9O^^XfMlv@9Umt~?VQt_$U%Y8C=EThH;a(lqMkIB z_{!ruNOZ`l2e5!~F`wYpejg6iui^ZkFG<;OeN7HIW$;n1hml<3E>RBPG-*MmDCYIB>!Pu5*&U zQ=P=ofosJ)v&NyIVKqsJRZap(KNp<>L|XUQEt@)z4RUQDbg!-hJau)6+S*qTjB~1N zPISG9Vs96x$V??)>nSh`rzidPI7W&iQv0j**M{Mn@gWM8o~g4+jJ)_5Ky?tn^d%X# z+yMTYp04)$0MNxXK#37nssT!zE{ZiQqfSCZ9rCDCIrq#U$OjEj*h;S@B;ix&9j;$z z5WzduUm35wsvv@&JBD_TR7B>yMqi?k7W4k<#Jqy_Q7{I@|Bp6*5$vO>AV^C##z#_Q z4+=VO$kQdWOBgQw!+n#3*euE+93WOY_`YAb%2rT5WEcA65g?e_JN_#vSZB{Yai{aC z`_0EF6=iIZ>$oUNpNT0`M${s=8@xbyth?jj3WRp!EJSK%wV7}ov*1!xXUyB-EaDPp z&y=XWoNDQ<#_{|B*j{mmtGm^one#6SG1R>`Q8m`NXE%IyCRE#wKyHNSuZkmYlB|d4 zONK??t=y`MOvD{kNr{y5xQFxj+G)&}HO)h^L@lCr!bDu%oa$5kJzdvv-SA#s2e1l`uIV#|r;lw@~>m^4vw;{_~k$2KuMM95xK zU4|q4-xWr4Fnwe7EIhb7*Fr``3<5g`YKbk6LI|#)0OL%dAN)@sQ$-%f$W+dJTe`Jk zQ-RHHg6h|h6j;LTQWEX|R_yV^oGT1t>%Va^R0>Xw&QWs?ucf?YoGMRmXfR!zc;6Iv zmx+s`7@9t629AoP{O2M96I0yn_}|?lNd=9oe|KT=2xa=ycqnyPb9+$`; zf|7ZjHA&MpNpkw-K=;J+CW@(4w{Ibr02o8%+g5#vIjG`VM@g30FGKy@_{_FGv5TWx z5?K^AT1=3r$?l4dL2uL~KLH5Y5ker|pNhIHN<5Zuk2bC$CjUXFQSBnk+Fs4K#VNwA zRwC|}n5bv=iP(vQLa##e_q=Iu;!6<(%I)g7HZw9@e7^9L?bpwg5o?gi(u4XgW~WH# zYWi=kjVQDR!bkcz81oYq=bK2R`w^A&|6Y6Xi#i zm#pxxqHKFwJb?}6ns`(zfvWr0DhellcH-hT=EJ(|d36lfPs^Lr7bl#;{?rp7EUeDumbA5K#gQafKn`gUFi6i9wQ9+qL`}VkQ;>)k8g>&H0LBq+gsCMDQ{uj4EdP&f1G|QKvD6Wnv%p#3jo5} zzxO7DD9a{#Y-DxN?n*~P`9k*=aZiV8+qwVCA+Q&(tI&Re)j=ug;J@0)PSs8-09Abu zzIWcaPKZv5-g@5!ceT8daM=A>)P~Eh5{4C5<7D4!(G>-9fxPTHuTZ8Eo~7pi<8hu| znN{?1f96<>L!bs>h(JSbPo@fvaZHtGCFXK}uvYW*Cax!HoR{!ul+DELnx6XO3m|32 z9&fVi6NC&aH!vT`{=cCJw*d@*L@7vgXBm_0*QF+|V;<_~ ze(~-H*s^xbFvvS_J%lo-LypY2P^H6UCXVJ3QXNQUr(YFUh_f(Z+Vba z@UrXRAqdlPX&tw<>4K4xh0ZdA6F3^~HBQ;!guT+ss6AsfReTdaJL<@BBc-CU5K5w* zu*2{jxm``X*|Aq~pW4+Y6>&h!E$L-3iOa31Bw(yl4;M`}UMP02iz?+&vtVy`(p1-R z$X6UhYz&~-?Nt?3{6Ta+^gla!6IDZ?PS66V>Un9xaQ)iJld?kk&D@cYr{~p*+%Ygp zrg5z@n5L^3&b}Jq0XnGK_j=+^bPlXpNH3W60Sq|=<#ARn;Jh3IHvn#dsep`rjV5ZC zVjsOwr2Gz120UobvAFI(HK5wXaj{HXzk}k3ysxk@r{Q(=V+klb%WkJr#rgFH|8$qM zNrzN4*}N>Wyl45EqQjwYb4c9BcDyB@tje5;o6n;Pjub!eQ?>ovtk*XZ*#8?q^+P^n zW*wpP?@peoP{sMrm0ykXp??fH>JE!_O0hq=Zzw&o-8hQg*f?1&;Ql{E@{$0EX5sA<)0z=^;0wHeb`cS_}h%gGwiFa8|Ab1 z&(IEKY8ACunb0XBPKfyY>#hsSIXhBWpd@N|Of7G&ADklcY!}JqBM`z2W6r}$SZ6o} z4>%nFA5O$To*f|7^&T*I$9eB{s6_B@$b$&CfXde9pgHBK^(vNI&QF)styJd13iytiY&WaniBiw zL;1QV{$(@#uy+V$xmEUu_5Z$K9ZAUKkV17j2It<&`|+YNiatf~vJX9Zf*K>IWAlv? zbNlBBVwle=rj6q@*e)8YfuLalE}pSWge@GRwSzM;kkxGEpPM6zs zPSQ(~wQbwvW!|P^Hs(WiyS8a^a!r<;&bLc{J)N(Yb9F-1jI_mUVwKn1TY@4ko0`_4 z4nKwXh;(Ak94^2Ay6I>Cb3>=uM4i?BE3)l>^NLlCR-;f$PIVB}xrRv3I%kYE2C{Z0 z9o$gqAX)E(khQjUUJ9WZAj1AW3+EXQ8M>a+{ePZiYKzyK>coqE5zPsTcS0>kkDE_% zQMx7dfj~+ZRbtf?@k>XYaH^U?WKcYg4ejCQ<8$0x-(lHW^hE@sDffhe9kLJxs(*;6Ap{xO0rpTQhUdo>nxyk>m{#?b0wt==WFo2P_7PA zT4A^g9d}YPYn8?V+~SEDsn)N_efC(Ris7TXEbyNG~TL0$96;bX^NM@!+^{s&&34~{ZoSS+;9qvAQCoAt)sK~1K|#`f5iS`^EkxXblFUib3RBVeRK$nC6g%*dJ4DwX2C>j0f= zCubn>7b|!f1jHrT~t8oz1O;D~fnscjWxrvd@r~fG1Fi}O2K)|=2+Hjs6ctJX$ zqu57vR55_kTBkBg9pxi+6g_|)IfOXgCgIPm%TD)4}m=(3D!%gmF+kW##_{z z)-#=zy`qUvr+)<@)ah4oKr-^f4u_g~EOIX)@j=i}b=>l=E^ZJzL=8T%&%^;1Il)BS z-`Yi`YgDn6YD}vr4SedI)IUt2)=9a^7!j{X?T(5q5&=E#k1+5@!3}cKgS1|B z#`RKGUG3`LGvP#6%ZjNH@iVtr;WAtUvV`bl9lplrUr7i8e|nbyK?X}F(^Sr*QlAd3#QaoAw9+?cvkrVaq`jdUC^JLBS7NuZfZ9);pPccF3}Q(l5C19G2uCn16d2jD$)&Ug{HtN_9@ zDV&wHHE{XHI@}|%o>1@~RARQ_`|ICr@>Fw|z?Zr@N*L&A5=u$c#ua#oRIfZ<)urMF z?pXlXK{ccM3BkqlSh5}Tpn@Aa`8i$S3LL;Nezba@yW0g-1fh}WV>nYF- zv9?8f<`x1sn79SJKB*e_Mko_hr+p{82^X@Kxd2D4W$i>g1uwX$MKFbfpw2rn^?fHq zjWk##ec;-`1+l;;Z5_aVW7YIgme$9WPM+{BeU?18hZD2c;1k&D!43Ws%~C0YjT@^I z$5s0ASaqLH8AMb)%pc#%gW~>dP%4gW7FUg7KW}Mg#5gI7TdYZD?r~)aUPl27J$J~J z!Htc8r{R7Z&8!WY>3U|eIS9zsEb7rBXaM9IJfw1p`$@=3);NCJThD7}of57?^~svq zV6_gYJ}-a<;as5L> zwe60N(DA$}uE9JsZHh@p*r6j_GBJd5K%~(B(2%E!iqx}-qcwl#%roM$sO=mfE@f~L z4uNgq5Cxxcyad8EYQ=-AMMAsP@L3D^ywkyGA({4tfDpqSxIph!upGW3t+kMAVQ4q5 zW~K&{R#QOTDAifilg64LApI#!#rZ+Oc&oJ^%vS0F2}(uWXtba*tT-*7=ST4l5h(cx zLVn>7kh}pZTJv?Pqvzr(heSjEIO)9nO^|jEj^G2CxGf44H1$!{H-bY=jl59Rn4ek0 zjK|5DM3(YCeGN-UD-{*T$dndAapnMktIDIZ^-d#QhBME3KQZqV>%5h|<`AwG;A+OX zg@293>GTPb^8j~U<9-Rlj@}MoYXpRppXrpiG;Zf4|2%V2I-h`O#KxyUg}mp(N!}oW zjXSD;dTiN_qZv2dO65aD;qCL5$=h|tEZ0N0P7!B_om=GA3>{T^Ai6752Zh2@zh%bs zvtc|gWjJvCXnnSRjYtX(6CiBVegF(yYZQ>deXUL^COhW5MOFAJ3a>}jq})Se{LC#At_Y}iVs9J#OxtjrNrJz6@s{3ot|R6J#UGApG~%L11fLI zW#^f*{7*DXr3_v7^>6!^BNW-aJXP=v#$?PtcOF$01-Yr1sG=lM$@xCw1i7f9BKt+t zd#xe-{A%pQAz)M6SgmRYrmce079zN2%G*wJDFA-UYo$1ZbU*_945>HDy46N$!)F~S zgPKxU(4%+=E-DC#-xe}_Q3^Y{!ARO`iL+D1Roi(~!F2BsAa1@w1d18pzD{h?-F!8R zN;=7*SoahD9Ph6m!v}X_swm4Q2hi)Nj9SI5u!~z@Kv9W4Cn)Ss0>YkFhIYzSjbe<7 zIbltxYd86-=B5WIFDlkyY27jIJOp!D0cPi2$53(xqCOb;d$1)mS84*(eJ7mw_dLd_ z_Y%4EVZ_Mp@8!F1&5+WO=W(UmeM70am-}Bp5#=Zr_}k`9xZGzJM3hXa;eWzg6J3VC z__*0SgDm|cr})ngVl38|;KbvaY01p$mpH1Aq>Ig=2s@l>VEfvq-%~6}JG9FeoC+BbV?V$MbOb$ns~; z>#sMbXd9H0Dm98qkjM8a_~{k8P_wcWiSD&#BwoTWwF{Fdf`};8_czl(hmc>^ovvB? zSqg$hu4jrXDpDhZQxxipoM0k3^ZY1fu)<88kezXXcNkW=o~v<|(jz~}Z~QL?8#u0=(0 zS!JACrDk4Z8ZZ6*ULGDSvbImut@^n2cIWCf!>;zlsW^x5Vxk(H4ExHr5>*^(RG;XD zf8x_8_nkgw_VZC790EB);G%wv=%7$QGEUgW*1zUult2nq?4{ge+(1b5cm$C$#0}I@ z>NLm1&Xy=El1pe@Tyc$Js_Y-mYtEp^ltKOTF6+}JK|T9iTrT$Co}36?Jnr;=oEvJM zI+&M;lSdo{s!!#k9uCnH2yxPzRJ-GANfQIvzgEgI^|PkRzb=_dpk&O<@#O3RYLm+c$VqSA~2*qBhdRX0+i3(n1y(|2P zIoeJ7_E3PH>S4vHlAjSu8v;&uGYgJd3<5)jD zt4eV1z3f@!TqRK>{!JKt2Uw49Fr}nQ34aj|p^g)JJEjrw@?P=?A4$op5s#Xx)Vz$p zRfwYHH`hiAbSz)WUbf6;|9nYeF+&|kYd!#r`Rb#Npd^KiWFJ+j2~mP)q#TQW|5mny zu33@Nm=IV{Qd%hjv(jshdKNm=zA{p%u3}Eg9;~`>q2kgr%PXNLA*9p3vqETG<_Hm} z=9QjUFTjdD9B6F}Zh~BNZW%dhYNLQIkDAY>lqnfiQjb!mq-lACLpc6z!!cg9ghQjc z|B<_8ABC&p+NasPW8%j1%Rg%f)RNfnz~-wseSY6&3quq_pwdA0^DFXU_Ebd#w4<8! zEK)G|pYa@yAFs8t4(z#>o-4+|R)cq}lBVaO6II2kGw-D9WnidK=R_r$53;j;#aZof zb4=}|c9oFI;n3_<*A9iPyir_(T`*P&TuJfyoqnbOFeaE6(=iH$E_&k zaih^hcAFnAFd}<|ks2K2nxEDGTz2uiToZ@L-C0`zXm{Hx%F922B*CYox+_G<`lw8H z{>R3u1tGlOP!;^;bWJX|+x6TuY1W=@NddPA;_9i%l1tkhJKXgyL(*Lvh7)v#1>EL> z0yGT8qT!Dc3Avs1A#_}VnLBNr>6GwR=&Gtwy3Tvuodu?jwW_L)NvF8dHaHHUo6R#j zIL&hIS$g|hY@A+;W0|lsLOkAeMbq>`RPy)Jtn7`+)x+bUYdcy_T z>6j1jPo8D?|M-VIAM+9ZJ1^;amL%5&f4j9_$;|EtyW|jzrQvlKIK*}wlyk;$7Xthy zXOwiI(>O~9@qBWHHWIf+b(-^zYiBgKK`Q{rw#P-U`eRK%^QdA5G0Q*|6+hERnTeCP zpfrqP9Rg8Qq^J$Yu1QnrIgx2l`p?H-N_X`BxBQcmprrI7sjYb8pIf7|2RJB)aup9@ zAu?q!JHL0wm6z=|r6ywXmD1xPM9n_mE-MB@aXBRgI;a~=jEGU` zIl-*@nP(=FYkxZD_cA>t$pdBX7o-w|0;;G;i5?JG#XKCsW)5H;*+S?gS^~;{qt=&VjWF2j=ZrS@Mv0sU_omziVo_7bMz za9_0W{WTfWCLgjt=07ZcX&4~hXIay>&FR|Qj*n0m#mG(WWyT^3TRQ4cQlbqiiVjLe z($6uSkz#03sBQce^KSRCI!#O>q!cuTHuVt2cvuiwI$**K|HKI(V?ol5n# z@jdat(8)K?lzpjOdAuL#<-KDY{8g5^7~$y=Hv;|-GSEJX_*vmtNC25^0w zwJBnENb9oI4g@guhu6HNP1<`Q`kv@%P&K2twRrhQ zb%lTVk;t`#WcC=B858q~pE=ZI`Ao)%W4X8`hmjvT?oCFv{}0ABvu6pb{q(}r-ZDx` ztd4RB&mgo60XAPgaDJ}(>-l=RB`E~!c5K@;19KmTaU^T?;IDbsQa$3d}@F=qO)n=Q9q$@H01t5Obrt|5TCw^LT{!_B0jE zB}vmub-D(O#KTl15YSJ4TSptz#Ju#^rZ~g*CH@4)*N$U8>?8Hwygvr;r_JZX_V?v; z+fP7v&+`!=#idP~*hK}&9gss8- z>mrJZE=n0)^-;mUq!bQ*@wFWVnK zGm2xu{;|e_Yh$~stWM`pM_z zqpLal5u#|98)~MZOao*Swa6j7ej`fBPym{V0+boFydBWfgadUjFF?>4-09i6|E;XJ z_!u9=6K zoyPUyzuzUf?bmjK)rap*Q2qA)E&7F53hFD0;FsljQ+hS9mE2~(S8reSKmF(JN&;bY zL~G76?W2g$LqsXVthoizSw`!RkOhFc7OLlk523X}&{-&I1~v`At(zC&UM~or?`n$Od-5lXyfEGJvRbXk*thgEL-^lrtK)Gf?2~i3E_aKK-PIyn z6Y|P|lSG0tz_L-wVE=A2zq+^A`H3}1cG7&Cb2QqeZ3-xeIRta=RK>rHoAivGxL zy<09eyUqT1I<8KK4;(@g;ZGESLBk%Yg~$M7K%Bn_xpV%?h!#f(CyP-d5Z%uFCvpER zAE+MDpdFdj=~o%;MFDMlkI*M>u2BqL?^nwM!FEc=zqmGD4c{d1a#;_yd#ctHc-Pf& zD4P?suZ|prEtt-*06^oA&Bn*rSlvR@G zY9V#X5c?mp!=Dq{yvX<#-#bD|M|^Hp!Tf zH*Mpy9ZP+TTVmUBLjDSu-)rcnulF90?0ot%-+vo2c?$ApZX4|CI;(u%Y!-{fZm~b_ z&&$J3H55s^P2FwGv^Jx9Q85yn5Of}$tc?$|dM7&K;8Az#oHD_<1>u?9@^V=1mrHWm z)q4BumQDfLX*A0;c^trgI1tal{5D$Wu$ljjXtnISS~<_i_Vv+eLDc2k{>yds(z$W?XyeXZ;9f!rFls}38pxGcLR zH&Twv>-D%k(EqN-Q+0X|jyu)a)H+}_koEou8-P9SFCqBXysy}sLwy4V(UDs zMifOTzv*Kj&`%h^b;f(I*irB=pQ7GYHg^ed*5#|3%?^vq^`lueQ0xVbbvW-;M3#-( z;IA@`wA<9X&6%kOguxF?U>sP=YaT1y-i`EIV&s{iJbqlB-&5_MS~R07>V)R_JJtGW z$qaC<8ju)IH(&YvUHALTYOyE$b>7&nGnVy{QL;L!f}fvK1p4~qK2OZhem?WzEbZUu z4ehLNKaA-L@vWvk3#9^Kcnavrl4ZB9)fA*`7iryuh(> z1aEIW*5>SI!3A34VmgsSK)T{zqxFPOzp)j~a3HLu{|Aj18KLR5$g`u6*7|O>?A313 z?KTSv`|BeG`_uM`Z~WBe*#4AdId2;3EQ1lBe$4qhw68$UbNc$FTtp_mz0;nDe2i6& z)@#ZX_PgDZz&$rq&n9j*!@|M8&`*4?2(o)Z1WTaHhAK5OiWEp0!u)SU)VA{Jq|dF( zFy!qnv4mTrwGORm3BSkIQik5=GiB+fWmIfKXmiOeC8BMrb!vJp;yJ~zz&$Jz2#Z6t zQN%EkE!G4MALX7;ZJ)9Cgd)5CS|6(Qa!0s+ zxjZtqH;lRR#+VJE{BB{sk#Uf*PZ2G8L<=@gndBbq?DU`QsD2~a&Z0FID5LB(gl*Q(6SfSGd6fF^rJlSrB>L8qDwl z$*eK2W1;MTIg!`n;jlc{m;GXM-fWWIa4zuPmIZ&VhDTA_3R4i4!=z9Ps z?f^pYqG@*Z!SeR@i=*%1vZ{{9?dq^T>{o=8kLwjz)hQek#OD0{#q8nNV=iI*&F^;F zgV;C}+)n((>hyI12w}xZa$N>daik|u7fE{iQ)uO~;cE8gsM7?gqx!6qjl26deavdQ z+~F*%AvoDWjVN*maI4d&!A&7LB2vn3M9ayPOy&VD4Fz>n@Yy(G9Y1#nKq(ukVmzgr zi|grkHU36p`1;MDynQi93A2_MIgEi_O)>piRmTI5KCpBsxtG;($sESTrLNC;klM4& za#}0#PdW({~g;l<$AhA0`$Ji*5rInAu1#T9%a*4uuveAXa~hoYwY~JUK!J_tkoPQxdu99u76V?|M8Fmaps6>RRz6#cs1X*MUbQ^j+u1jo(T0TNiVz z2J&Qx&n1iX=-ZG71x5(K@`ayQJ3J$@v8ttcsxZiOGGW8%P5wnSbqKq!b+!BaEEm~G z<|htL-R_CHr3~~DymrAgDYPXO-^OfI2qm~&`(&IkF>j2{b-&};+34!J?>1SPta&3$ zowO}Y>m9{HfD?m|uPPH@l?u@Tj|(az@CGg=7*-y2a96Xl;kOiO@?CU-K#TuF zj>Y2xgvsR^JA{s)i}|<5$J{o z31rQ-Z?bNkHeMy8Q?RD3i?P1dwILK>P088E)YH!diX7xSnD%qy4ZR!_gCeW%b+$gr zG_*{i0Ie{Jq5{qKaGdqFY^`L+WZ6+$M*%vimaIII^=3;?(c}LO5@Sad$5=kOCbj z%-K&T$P}#FI+10g`Rqo<&Ihgum6k!1kP*UV?u|5}Dh-hBd%BX7QwLUICP1!k-()K8 zrwHL$UT2&#cv*x6DZ>agRnOOZqNcR|I;HpSsr{6D_Zix~4%g%H4@_NlH!~r7RYCjc zd;3!VBxw>c?l~r)2*i4apmxHo3T@@8O(=!{5wBO6VzJy-3@<1q_g4~a=kB>$><_{0I+w$jc63!I$?|Q9CUY}*_ z&R}ylPCn?E5fsxiQu=|&QMMQ6y@eXr=OXUJve%Q80X5PP3GjWzPTqT>D5wpmzj#N< z_AV=}SUsKzaTPM&R6$Nu< zsL@@GtXre9^?{5#D#9q4yZ{+n&dHxG!QOgs2z_FdZ^>m1@7llKk&blIM0-TgLkmTu zJ}vMoG!LtROiq$b-)dAY@)FR2Y6w7iX9LFAMwi5WfQQ6P;1t2CNV?#dD zN$Mj=Z!yYz%p5T(h|qYH?GQ1tVFo9oE`z82rqaGN-)H+rM2h!W_Q$btAPkIHV<2RV z`4`J+WPawwjB5yxnF?Ach|lzRC%c)cfZOj~RpbyNT_#U9?#RizjwfmAlxi2QYz0j)xlwH=Wvo0c_bQQNT<9aZjp&s}~1ot;ca{+C0j)^FKUFDtG+ zp^@0>9GOC9Zou=(H+HhB@U+1Zlo z=*~72Qx{uvCTWBB6y76?0{i*EVPrQhs2|VtG~QUF_0M1{()-i7>b(f8WMasux$=^> zr%+fx4lBwSq(RoZ4M=GkK(K;RhS`1+`rNWY_LI#_qIP)OkG$=z$BjUmNc@QD0W2-HGBr=6#XFAKPYz)}KNE|_BU<1P8d==?R2=bdKhnIeA)uug zLShnVNfw!{p=t(@2LczLQ|npAi5CIB=Iwj78J{|E3ecoG>Wz*`OYSsH8Okq&upGH$ zcT=$o-1@Lu$0n3ew9nDCMwQldp|^Fa>m2efIcrl%n|h%OMfRvEqWhkb_tZDWsZxAH zUp*ZC`s*~AjhQGiAEt%}fG#5SgC-kN>>M{hm(xX0MwPqSGmI4WV*s0U<~Qoy;;wmxNF2b!yyf;gmsN*45I zbAzo!HglhgF4|W*H3LjcFb%gDN@&|yW(%i53k zGC&fba5fRN9j#1C29lOU%qlbO#!Wp_l;M%LeT5yLI-~=kZ(@}yIyPVLnnpXHxwh_O zFh&`ASeQBrtDX3VtH1)3tV!r(Yb=!L zS+A`_;gLp>pObE46c!bc#PIwHXFKTx`KD|bSyAEISCtkI>lM(Nt6wh8PD`qJt_U0zM|t;qoTlLk=!HF&xIg)h^7zw<^Z z`&Js|hTwI4X=@{z{pG2pKPhq_rf>50t+@Jy;o|n^mt-Cqy$TKv{E?4a|btxfk*fW{62zWW7iMQ5HqfuLR7m-iTDqI#5FhjVJ>g zN_ooh!&4%Vcq3&p*@YNFOSyY2CWo@w#9^X{A-yIbSaN5(oV)BOxQDhay^hKz?b^`S zHA~eFbv_u@VCMKl0(=Tk>rrTaXmOoyTV!~B#N)#OK4reW%nBE-Hct*=Qj=Rx;ls^q zt$tVd*CT9o9h73$%?)zxpFTGy2&di1J#4?W=QlF`^(1Gw%ul?)MjIe@f-4C!W0XY! zM2i%eXIv8M#|RmuR<@5*n4oA;12j$~Iqp*OEEqcoNHBUUEFMcKIsMH$?@Lro@x5GbdW8a9zP$|np89Z{V!06v z2&ZYV)lX)4{#A=S{YvT%qbk7SYuJ8w^D^t>90-6S# z7N0+qX8xvvHE%-pkv)T=;%j1(m(7=>DO6BYY-DZ6zgN;a_4p0LrE~Y}JERgy6C=TF zLfK@MCimHxSWavSwyWEaYUA5FcAHR>d0SrWT2zc}1cv$ z6WMpeJUL43+dx0$81J)daldfTQ}=&22D50Sv7Wd3dH%?4z4Rks9ww1lJuRJBkKc;= zv4iS*x~{7qJtYFV!}5gt0b3G!SYHo=OLg_lA?#B1OP6lUPhQWH#n~^7jNt}VHovHi zoZxSFKgegZX%@wkgwlGp=3R&AU%~yU;Q5 zj}!kaD|0`fvPj+`S#3G=5FiNDjG@5J#&bQ>sdTJyfe!17JXTiuvKiL};roqg<7$f;<@5P`sj zF0M(Ld_mDI1!+RfO;nVV2giQF-S)(hQS(g*p-*e*C${C*c^Ou$T95|nElwH62q9ZG`KKS>-JQk|ioZ*j_xajH zH9Y9sf#*rN?54;VlGoPvj^H|hZqBq5FMngfC|>+#633>PGmo<=uVO>7+)v&UD8xV& zaNr*`atPbmwj)sU0`3RM)joAAH z$@iZ6hm+x^pG(Phw5FK2DccD#;tED0)My}1u8WuYe@lDc+uMlfV@RwYKqq|4xc5PkL1XhG;jn>9^8+06u zU+I>P1&2u2HcUqhGYGoTqM~Bo&D&uHL}^f^Kh8513u4EL=xJ`c;d3{32(RgB=ERy} zgOqyS4y#!1?{|H-oLfn2aX-ELNdazpuuhZjJ&BZ()n9&}9`|(()s&=nmsYx&>6!mL zu#Eir{^4dw|87#hKTUjJGhNJZd`cOr>HXO~7R{aLqIk+>mXGBWdw%`RH;Ne?!XR3| zS}r#AkJ)%{c4-)@04MJ{`PlV<5N2+wtgfD9DI(zbBCadqP`{jZEELz8l0zgE9~|L#E4UzZEN zgP*XpClh1uqz4bQCx>9a?&~p!PUikKtz!(|PSZuoQ^Y#0I8t8YzP={+d^xO;U2m&_ zTr}tuEEailW~gxDPVQxJ@~7_#LY@&QbgL6w8+Vu_FGhAsP>PGDj}! z3_P2rnoOBG`2p6F{5}+n5x@kKM&wLD(?Y=)6={MfWpL0Tbno;#p2EYN`gvL;+_u_We1LfvEQB6LeTCGlNwraCIP3Se3JFfO$+wrZQypzkM!u~X*eI3(v9$;(p zwZCx@s>}Idj}()a`*h_h{*ugO@gOPihwEM=gmFo|nkrCC-{f@?wh4!wpUl>5zmDhq z_ww*j>2E(YLoGR!C0(`M4bA-S6|Syzx7#ndmQWc`LpV-cfJN;}*_c0C^9BGuSdNaW z5}(#N6kII@R05kf6}+C```bn{Z=&yC4s^@b^W)FoY5EP_KT}uthr_;kQ5E~H+~vy) zpV8%4<+0nV{U)W7b!``?>Q<**jziY*@x?dE;9iNZCJv!}DibVcz4dWC%h0)pku7_3 zxTWIP(2vvdLA{Ez{7$P$v2Qi%1e|Ya z!uJa-zfQwFP?z24k`K%7wyzvlGp!-4CU;_%hk(Rog{$I`dVxq>_G4WYh3JS1VE7=k zY(!l~Z~nvD$ltG4O*`LH)VRLtS5%P&WA!2oj4#);7_tF+2tv73w8>nigYRYA?Z(`~ zVcA0*Bx(>sKs(<7_6M2)E&~dej1hq-21Z)$DqM3U5;|{wrk| zJ6^8IU76NURY!6a!#i}g3{mCIr5yIu8 z9Q<$d1=t$dqJxI>o#)?v>eloBeuiU4zE_?nWmPuxb)@U-i&9p*cxxCoMMs?}(~&y_ z&@2P{CXhow7g$CG1zHL2<+9hfxU6m`Y4xbBPh$if&(n3i9+oh!A8(kKm0s^JR=t{! zn^ux0ib)e$r1f_U?#t=Q2xoDxqz}uJ&)-&K?Cl8b?;Bxx8RY1qyXRLMebRdB5XSTW zs`C%4__ogTeW%jt`(GCHR@xoQp$)zL?P{@Dw8J~+i?V&H$&Z8AvmnBRYP0^@w$F8x z2PnCDShpPVmhDX3$ab{zpgUg4b+7jIn~C$pLyjCm*n)NN!r`0#t%RBY6o>8GidHfW ztp{_ZB#hiwi9CX&LLF5KeJMOrXA6b+t{XOpMb{U{MEZVH(-$sqqrW6_2sSfaps+Sp zZFmpV`IHC@M)-F{jyD{FjNbK<-F_HO-1<>2VvUOD7+oJGHMuac zgEa1G^l2IZ@|dOYXewO3&Ao6BBomW*x94e!6aD`;Eb@z0by~kE_o}9ysq&^0$J6S&3brKvNO6DeI{nSxXIA~a zw_h4EY+m`$mR_YunUUhz6-9{G8XtY=Q4YjT>G#kJ{3ru`bRcpEdpA9Zy%Ms^F{&}%FTx!*7VsQtaJ_pSZYJ>E_A zHF^cTc`BET4)qfcD!-g%SlxiK<|gOOy^XjThckEMhG&`GVO!n$`a@+u?yIRR(Kt_i zQXl#$VGi(NJ7$tUR&KpOjWVDP^}fe&d_Nt>IDzr!^k^wi`1OScY66eJ_Q^O$?k-wg zBH{9~<86+Kb))-GGSm4eWHYgVX}nyMRfS`C9~OE*{h_$q(Cz4bfgW5Dl6wZDiyssf zk%>a$KGx-)#Ur4G8D&c`0;DcKmy7frp|1P8QCGa~tvh{5f8>8uw}E8y zQWs$Q{#y$Ak1#r7PYtx$yT!J{3mu;F4|l$-mY2(Zf1~96yqnW_J<~KjFO$amlhN$P z#60&CCbz50e%M-n2k5?ia;M)g$XL7P_ZZi=YgDhs1H|Ln$@8j~Nq1%1{s-X(*3Bg# zUfmWjf0qgOTfVY9u*z;C56u&8lTWz>6P;~iZ7H~#WK2@dWJ1wrR*x7RI?x90J%dj52q$u{+9qIQm?*DCar+ z9+2M;6FXmDOLYU_l*JBUb+P>^EH1{+x+m70hhG`mR@X#Eef-lQ#IdI0XmVnlNOyx{ zxz6ak?Qhe3$H)9nHHl=CRB1Qq2E9!Ur+BL|HhwWj&*XcAc<1gRSI^jn~WXzYL3?twC!Z7J~s|IdfE+|URU54We z7;_%8{S3cie!cCe+ulR>^%1D2x$eZ)y3=+9TAn5@cH_75GjUOKNx#~^htz)sfYIGj zlj}RV;^WyB?%t%CP_LlT48k_U*4A6$ja;vezGS0aF@-Fa?3dMUdQbPV&{;7XPYB(I zlp_7Ez`2-d-CcB2aTWD6d0(?dMFmvNl4xWQ&L*}ZhX640OEFK35P$$H5;e z7-TCf0KswhOD*qKRbU!Hb8`sCpC;e+n`Jk02SUTlvT%GrWYI;38$`-nmQ|y){v(hU;*>ZMwQI#j{grG?{y7!)?(7 zzkAf39uti>lhF?c90Dw{$w+pMY{LR-N&3%zBX$S?2B5s9@iJ$YMCDC{ia-%WZ=a$s zTj@Xy?AW~Wz+<~OHxIAs(o?`^DgKsUpy@K%O)yk1%dg*c z>q|0?nXcsKr?{~nqkyUZnKU_{QQt&QDa)!;sAe>Jn*E;7y7eBI56bqfiVvP?Av+fW zg>^FXHU=FOH>*^#EI8dd=QX*7)~i^n=scI_$+CvZ`p;WKn?vop@?=vSQ-PUnFjgny z=Aqao6gW*EHVPG1I0q?1l+_Rb55dc3y^urb=9?~MJ5lX=EHw*@<}MJp{IR3@^i6Tu zY`6IvPuu~-;T~h}BaLzUg4{MGuyb+}pFxwE2J&0i{)dUQ*gqV?Y3c6ad|#Qr-R_ia z_av9T8hZ;ZYYJZ}Dn!wyM!E-ugCCd%6wN?5;m^^@{;23_SmDP2YzW!Cha3 z<^0Yjb({Th|JtFkLuj4@P4{&gU$^DJ{b6SDPG zt`m93i5?4|voc%&Us%&sH9>_&$CAk2dF@jvu~B5vx-g#a+p~?zmQY-(Yp$5vOyGfX zOBI!7KGd+gNe!q?4Fj{2t3M_tMH$~8O}D-)0;;B%;3(uFAVljWDT9+~pMtrfRDT8p zd$>Cmp_?FU1R{nJ&{078MmLA>EA!z5gmu^#(>S^qRUFqhiT-MRsBYrEi=RZ{x*iBZ z-%%`)!5!E+e78b2Th{z$R`Fw>?2|*QM%lsR{qHC9!?{{=I(HekK3p|8b#KR~scWrI z+tCrHD6VezXb^oK#{ap$!)u?krl?+&vn*Gs69vw5&DSv1F(!)5nqq&7sU?rEijKjv zo~!P6i~cT;_3KPcro|6a&elXF@HD9*ystGgJzQ3nGBi_!u%7+u>E&cI1idIPL*H|v z-MDG<`c(i<1QY&F*gr%w8USV?4F~`_z-Qx$!fp}@evqOICytw|p9#O~sPr)WOEr4# z;x;I}x~{9+HD)csVZNaHerr!4Wune9vwDiBMd*^G!@8nhwd&q94D~HN&2mxnvJKY_ zD`vljhTH2+>>H-VP}EM8h!48T19()FxD#rR;XY1uBe|B-(yjLqJl|NEsc}@_>w&Y?NOC%mK=P>h(H!6wlGX0tofUbLJ>=2naBB zBKj1i>=Q+={rcy_>RW?B?e@p(nlSqA=UeW)B>Q~Y0A!cU#^J`}_vwk7#eUK0*OBt6 z!3flKVtd07VRWn+b2H05(O;uw8H?6vle4yU4yHGqwZ?k-#xAgeZo2CTI|}|xkLiZJ zZjWuS0EU*4 zg7PeAJED--emJUxQwBKF=p>~Flt3X`23oyci)t#(c3u#{_308ntMAyu@mf{u%X>%l zGM+Jfq&zn%YBg|a!mu zWcO(|xm=SP!c$^4iP~tNF(RU+_X<3h?Swrwj(O>+B`LIQR5*NdrT3Er|{*>uR0`wD4^I#C%&iIK$=FjpNIy=1n z$$FJ@8Ag`YeKf7hft6{4bB*iUT9sB?9bFxIo5(E`YbdJkcD?3*rysNpA!cT|lQE$a zGHHlSwM(Az>`74(Z4*E@2i$@2?839^B2pmiMi|Y*9h;MLQb+=Le=cPE@CKvRxF<*FJD;bwh00-8%)f0N2qtt znWAF4Fw4U-k|qyUhG7*hRk*CY(Zxm2D;{Ig&f6H;+V{D(-;@3>Yi(6dWc(>*I-|ZV zDcOOl5-BapiIaIAUspo_)$Pqyt5-D;fZTowmmS}MF~T{Gr^mFjo}Q%3wwt$ru55Eq zKQGS%q!>H^vWFA>$eXU>~Vk zHk1(mAa34fRoF%vtJF|YFAbO1$PVelQS7B`(5sR?eWSF5MhK@D%NyKSV}{~9bLHA0 zAh*udnj`c;iNCL49o`)M5l{27%b+TXDi$D!KFM?JCnH4|dCuJ*H2yX<`bjVSiN#Wl zrIt$i?DRa&f_m2>j5(Zk>JY}mO}#7y_uZ{(-xifjlyW$i7J4vj_@Gg$cTIBau=RY zvEK8(_2_j9k>^S?S#@kP0cG}UcE{V6Lr++o&^g)pu&M7py6)nzM8>gm1Q-%s;3pB_ zH&Z2q1pz~DJ%seM4`GxeYuQ9ynIAx(P^5NG4k1mi z$l@J@pd1|powIeZC~b4zEtdO5#dd!@tiRUBYQ4URE5CSrb4aRnRnbqcmdo>bw^$vn zRaG5U*Y)W%(9o)BO4Ui=xKIcg&==Ydm$Lm`RD9*outNaVBK2$QpmTm$?KafFo6eFE z_}Y0>*R@O5WZxv|2$4(m#}>ZPo7@8iPQAy#G)o8-x&mWj83<2E9d@ zve}0?WO5#d;y0u6Vac**YAchQf|9Fb)Tn7U|$<7#Fyt9LiLtqBNooPQdj0{oEE6(?aw1;(E&#Yc4tM+ zDu9ZE^<}x=Z1$$z@j2XO=QedHX0adggZ*@TD?K@c!|m;(f_tWlCptSkqsw>mwnC^>KN*T$UG`y7T!=3B-Q6UM?@IV|A*& zpLr9lK24m;*dbKNA0#%1k|(iFg3 z?X;&{mGbb&dAz6i-t%xeTm8_R8&)$@Wce0-R)5vT(Z04UD@!Dq`fW821_37?O<)16 z6@ST+RBx5?kXQv$iV9PQP^p<;=_k|w`lCJ?-SOS!vN{~A?UitLwSB~DGO+C+1zWA@ z8>}BweI2{qaY{^@RM3{ZZ2n45I!yrocIpIfd~k;N>*JA4n+583wky3q^NdDU&tA;& zH^^VsyV`V%%YL!%7H4u5m;HW0kNxtxIxMEAZ^ToO0%_R z+t;=7C5B`vsHQ@pop3xWU${9CfiicrVG?|=o;No4=@#2RZB1|Ix4p(BGEr2GX`YLU zt9JqoTnUB*_{Nv3kYT!s9giN{ueF-JTw^y(=z&#zLu2*sd|qBD4?m3&`;+P3k@_=~ zU(TV~!ze(X#_oWA%X)RFt`~~!`>aj2N>p@AwZxtZ;IqO$xe_5-FNvu{Iu*qo*%Z2y8v!)x?H7s~x!}4%gt*dG^wAF_!|2kPNH|2w-A>Kbq z0W2kdswhF=7XALxnG!Z!pmf@wH@R?w>xC8Ewc}pC%NjVz=FK9=`(-j9stfr*v-i8H z<||DQfByITSAXG=@fs*LXx6o0#vV6|gKeGDE;OmcRu`*$%M&&OKBLpjjew9Mhb$F} zr~g;Ugb;^mx#Dfzq~NpFWza*Ac_pZT7(}5y2Zh7_ulXVj-)0vZ9a*F@hK64-Y2{efs;!l^J}7My&(Ime4ncWx2<#ISxo~zF!`2dYV+|5(cMsv*plo@W@jKi^Okh`lR8IbP!!m@m&1d(X>PLsGm9CYhWQMG{Bns)S(eu;wxH z(g^Kx+iUB5Q-X`$b+`3T1D>3|vP12;54W@{IID(IhSG?v7uD-b5+MX#qz+-W?Fg=7 z5!Hy@`FXkHC}nuOe`R+Erq@u!|7pGb)bwvof!Dq=w%^_%KBe^Q!}7?>&Iv^9_Q%C; z*PUzn|Jt@@*DdyMCuXSdhVHi#0jeUCL`D4SAmiGoi3{Ia<|Bfn3EqqKx6%|$IT6h-3|DjH?Q-r@y#$?6X=`n$G+?NNE9~n zo6NItox|%{2H%J>Aq3P>FwvsJgNgx&>DR#Jj(fqYfzO@mcTu$`quw8vi`8{`xsplK zgV299aB@zg_We-K=kKnL>(zkk_jPYKA=#+A<3=$7(0%5bP`?;$#X}>kXf_dy_Mx@i zAk@p!^RX(h`yJL@F#Gf2a9Ax5!!0?kAArpCngE{ek{{>%{2V!!NHl%;oQF3uCGVt?OrzBWfx{(8gi`&Rs&8v8qY#=v|th&v|^(S*{MI; z1%uX%c9aI(3pWqZ8CBe!LvBr4p1Bx9PI-S=v$pnho?-iwi5>6x{qIO%yZJX#L^6kn z+J-a>=dVAauf4hf3M02D$-7{vZ#SZIg&YFvK!8(x_6H5RvfP;3ENU*UY;HF;?{0AC9yuQ;q;Wr`Yv~?Lqs{P{&l|D%ZN#+7P1Hr&MH23v#xi~MEmvwcZ z!2I=G1DQtnuWHmW`EAo&O+7LHvAPc95Y_5JL zD3y7UEsnAO(}_WfqpuLH!dX2CP-qU=%a{RZ8oZ5?>=qRRE?`SK(zON?O!l7x3nZaq zK9kl|vDf=uAyZ}}+cM_fuD?!9aa{6P62a~3YER+P7+qRr?QYT3tQVbH)8_MeN7hOf zTb<^E_9SdSpg9}-2=cE9(yxz~%VM$r2G1?8h8%s=xIe4!qo>^y{jklvg)H_B>t@z@ zNNelee!r+$JZYEG<+5Kc7OTr5E$Yz)0U;&UvKp+H#d8_6Hod1%^Zdd<`_#?U5M;D# zL^%Yp3$0Z_+?U*lO0&SloWJH5GdPjvN|NohK~lD0|2C=4_27o0$oAr(7 z@U>=M6vf~5U5wy#A9(t~VA>x)bC*UlDWB^^^=<7bR!#5BunEdi@E}?nvD!C6eRsJ>%)MY>djB!0SeMF=FUS9`7s>=wI04{Vkic3TcP_W_kC&xTtdWJxEg&(3is zRj1IHf0D_oAq!|k!5J-reVsC(l`xI0v@G1mi7IG_mH`&Qf?~jK-XS1@PLS=QyT1?5 zT#I~J9gnBu@^D-&ma79l2qeDsfs-hJ9 za9Hk){%zkyG-QZQe{27G+RI~$baWd3hqHM7PG?C!4wmD+Y%EYTqYbAI+-D1w_@~jn zda%_Abs1!h73AoEq8#D_MOaj<1YQgA5N2M@lC512i_2kksJIF?3)@)___{o-7WHA5 zR5+hqS(yH@ob^7{{Q4p+&WGx_S`UK^4Ed`E&4Iga^sQxgi&|*h{UJs~ZZE~K+wJm@ zQ7U|MKs6Xulbq}*-0#4vXQR&sID2S!3JPGd&XI7uxSh8EB>wW@)HnZA7A=!Tz{1M3 z%FzXG-_{zKUf}uPc;I=0rmnNynfkn|_lxCuK_Q!x-^2AlXqZb=`^9;)Gs&3Jo4R=0 z8W!*W{s=)+2B98!lTtbQ>yCn`J}|0h#Ydfo_f`Z7h=dV|jMWryA$Ul4}*`6ZM zc?laQfvrl$?Dw+sszetVZgqMsvg%~?3W#nR(d|T!M)Wk)Sf~7XeH?=5O?P)ZPxRcx zzJqS=pq)-br>kOK&1uV&m+gs*?`zfyJ5;PSdfJYjy1r%Jx4&20>tVGzvL@;EK!D+J z-Yj>k>z+H}$9tE4d-`F`jr_%p%Q&X-oVMT2e0em|IDfs+K6qK} z8NoLv99U5Q+%r6JXcl?b`T&f?;acQy7^-|vUp^sB|iS&y%OA8jOh&gzJ^peJu%p zlU<$9`>NVgvaqKwFBH3v%ftS#S`TXf$73~=+Za=vRux(7oexvp2{`mkvd`u6y1MN5 z`;DqE-JcS{uhOAmt5_g!t?83&484yl|NrW^S|1ks<#M@SUYBRe8P4^q5tS^2<4RO9 zm2E76qF}NW&q8N`@>nRi>u{O!^Sl7K7%f`_`{6RxKhA0tN>YKV@!WRgJx^g+uYPM# z#fIZNuV_}zwz|=(w@C%#dmlVs=B6v;6v!3Cdv!h46j|dpLYUk|2gW0;&!^+uDOR(` zyEJ`s-dWw$9i3Y1qDeZR_f2m~SYA>;10x&RaH#a*Wh_RpQ5vltQJ>|hZD66C1y2y(6w|HL0$09Lg;VkM@>Oo;bC9fiZS7mI; zeNw6=kI>e7SQ^6)VYoJ-`R=TT4iE&)iA z5nmPXBEi@_|8@A-EJCnLxN3)9*L_6}UyDo0( zHt5O^0QVjzxSN2wqmUn$>+M_w;R|V4k-X5gegGiO17-PhsPrMt_)jepXBQ=tF(MHKcs zgoLpu+yLZ7?;k1dw=!9zp#HhDK;9Zwvf(J=ueYJ`3o+2TqWfAG~Q8K}!ybTy*PnQ2*sZDfqMB-_}X zWE%4_VO-=Rg+nsP){tSK(PB`JY382>X!dCGOt_c_d21_L{|rq4A$6G?VEOmx=dY9C zTuC9?wr!&e16ZwPLT*K-E#+kV5EQe~R0U`|b}|SlD+aU(C(3+3(vz`XWZ5WqfpuJ< z%TUnLW$;F1XR;Tz9nqM-EM^0tI`=nzt#udpm5e*^+sEWcxu=AG-Hr8dr ziJ(OVsdp&nkxiwcwxdjX^V9tz|0S*lwLB+7g!)rmzaP7}74is47w-e}^O&6Aq6)m# zB^y?uu5(`}pL%O!2&IX>QQD|jw|y{V;#~hvyf&(7bP2vFr5)M2qF>=Wfq-;#9@@BH z7iD;985sgydM7d(#LxjF_y2=oJ3!EhvO24mVPJ^wWor|Kb3?GFT0~}uUJL;$v=LPn zVYTd1q9Ss5ao`3q8-`)dYf5I#M)SVjE+^C3zSvrG|Ffxw6;WMwCRzF;1eTei*lshK zI5`CJHDvL*IK~0NIZywm26F9-_lolAS50|^v7m6;5oskjnWIKqJ&^L+d^|_P7yyl< zke6ij5i6^43-KkIN<-)YR5}3H3B4K+){>qeFY+TWO1b&Fd57qnaJZXhRp0nvRBwwa zln@0=#@a;Q)T&izY#{(2`j~>%x}`Y3(*#9J){Uj(P4M3L=lWLrSD!&s*;L>w#0s=U22#5q&WCV8bu~9fTD0zt@TMNQA^FJ5Xg7b&6tp2ZT zf-EQUdN!4ecD~jsmFTpN6oXyonog-U85;<&)3>81Tjvm6+CV>~$R|<;PQRj2P0hT9 zx}z^#=qydxC{hvwrh|^H6s6s=rrXoE2mE%JpYdm zl!{S%-oMx@9>U@pTA)`aO&v`D=bSWQA|YbRv=;uhDm~KZq$6%z*RUW3$igPbPAAVgFZe=96|TT$`+gh zDY2AA&JK-Pp+(w7wvV}qA`q`+={YDW{&bFR1-M}no@4s(Qoc|`=UwW?1=g($zHYsy zT!^hV8;a(pRc*}V5R!EvM6RY=qtpyKLT(p1J0)9M59qUqt^(S6pmK6Fbks>wLqMn++-V1nDrkkEOM*Da8Vv`@Qg=1~kBmo#m>g4y zB~UCQvoC>fn&PD0^G`I+X*x5yc!K(@Z_{^1kuOLT@KsSECH`pwiH?5Cfc=7Kd5x9z zJ3#am9=u*SF(R7<2I!}JMu1U&d}Q!wW%6nWoq^r5p%q==b|-o@BtuXK$?Zf%MO3js z9vP+Qpv;E^FYV}Ld@q6_YYvXUTcFFLQYgw=Q^?#+E>_cjORJst(YuBseez8pcRC1K z@%3zV`F5+Sf8A zD1@bw=uT_EPcE_2%wI}7eNnj4Z~%%ny5Q#cxp>@drAr-0G} zI0`7`(Xz(%j4cUi_FlFc3kgmD!Luk!UVaw zR3bMeAn5lq&QDj0KjsKSp0UdEL8eL?I-J3?_`=P1?=rVxh1xPF)M=dM% zqFz&ccj1S+iP3r{#<1RWqG(O9J+&rxxvu+UYok@R#wv32L-cpG^=+Z-oi5T%%(mYE z!AKy@pk)Cdiq>R8_al^ELvo`*WQR(~ITtb9(Ftl~ve)5t4FObCkah=f)ZWNMe-Wz+ zZH<=A!v;|?01hknqBnA@Aq-0Kn%n7=e{(ZUb0VISw~;`4j7h7gQw~wv609YRuT6HX zF0p7ED48z^I;}70 z3u;=pYU}siBicrb=nKO66QnaHyDy+M2P!dtM~pi&?k-Om6Cs(!DUK9qA}=*$)@B1 zkq&t+s4gy(-+=>^N>VDz8_`9cA2)UGGZOey%J6();P5JF!phdxzzL>aba>DQ05XT; zp08t5AecUM(Sss{N6=u)r)0A{l6E+1&^mx?q=RM6X#dsad5{>H+nc`x=^Ows-f_fZSc0U%5uR;@5Za+==ZjhPP(e+jmEyUH}_ZUNHQK5EEgdy zMwzfmk%?RYnmvLzPPTN}$OM{{jCG41K~#=M$u?j-H?j`U%sO~j5LJ>q8{M)$q>0^~ z3d8a)R#`U;na0!?Unm&2)^YL78?s8~wz;N>i453>Ch%B`jxO?FoN9C`WHGI!e`4tv zML_83wgY$xhpj;dh^CZUQ4or?331q62hI^A-VQwpV17^W-0j*D(j+n05 zAut3WhmdWgs2`Z!%G2dT08#fvbbx4V05NF;#8bdgMQjuR&j5!G3LD58Vu+uN*nFtF zl4L$ciNawcWEjaxO;9LP=FwVF7UG2)=4BKwJ=0~7$$E@GpySarN}4H$bHRsVID2=& z*$}vb)-;yI;Ec5?QzlbmqQ_TMiOk#)t8EK)7%*B~un_tE(C@U484WAs{u z;(Uo#Cj#W5Y1?F?_5G%$`;${r)dB2vGR zb(o8cM2)ua%ElIvWh0eXAk`w|`wMlQkd8tU!D=+$0a7KDMWOA)|9^{||SFuwj={hw@wMpl&%N(DJ4Q-04SZ@gf1n+GkLnqMj zYIiycLMU;Rt@%l^PzfRp+FJ&0XGWt`vW^~5%s}~^aK!~I2FUoyU>7E&og@i9#+w*} zsCELoE20(zcq54MEL6Gzj~DeFcV|-7i^y!)^7HyVRFoj1qju9r5q6O zfQtK|`CLmN7~(Uvpp*yZPlPH2$e@x;f)W`9^43VFH;6EYlg+1?A}UKL+2jGjpEA)f zk>(3E_X>Fo*=ej(*h*suo<0o4$UXewEKKK`s^t{&7=kQzKK z$s9tbMd(3x3Y=`b16sE5X-ZZ@kjd#eBccjLStTCMqM}ZwEM-8rqKF(qk%h~*yTz)% zPrkyQ3xJS9?jRaa1>US{MU^Cgvz$zo4G2srSxE~5iy+HFg6NVUgF?lhB1(E7#XimE-~9^txZuUlYJt87E5cIwyT}0 z>!|JE;k- z7Q%`zd;t8J5TtdI@`92zoNf-yIi7S2fl~Iy_aSIIFm_Ao8R zr(NBbI`z43o4O7uw@Jrj8(*?v3V`;m36%c$@68eL@U)V|QQ1F6a%QX>oqiAw(P)a2 zEfht1xPVNihK;@A;@|HAkzSa0&oA>7J?ttR3t`^7F~^aC+dZJ90pje zZCo_E#N=w6BI{RwoB~9mL&Fw-Ec$kzI|MJw!HaAUDOf6(Wm}zK(@P}X z0r~#INl5TOC6^y3sh)4Wm#NVKUL;J+&}?53rApzilFJaG9TV?eu&GgswPXin3Gai6 z+Bgcu!J3>qU$oaOA*+MUE_AgGc4t~`nxt)xIqS}6uLLECg@mI0z!kft^w$r9=Gn3Ijac^Ml8ggiv5m0^D`LpU(yaWaRXWUQ;vGP-B{ zfo?z&<#S3l6NMC$rbpp>Y%bi0_Ka#{2`*WevT57aH*GZ5#avi*&ge|myyXm$`H=)#&6DC(Q#ecSF-|NjRBt(itb{;f2nGm&_nPmXs5Nsh(GNK>c5g0`= z8zFThdZ0xK3NVaV%VL+2b!mfaFU-GJ_d>xJ5shWb9ntB3azDdwQTH5bn1CmXVw;Uv53d9E?SnNeLkk=AwaEwaU^F^%=+1{GI1(t0^DFb>M=n2#tkll(>1~?}c zMV}3Jj%4z^fO3euH4+6AZv30WpEnX6r_Vg#nrp{NvW}FM+e}6sR8&5-#g-VA`w>$g?cB_7l8<&h^!Y?Y7h;x6K$55Ee7xeYv~`VHX%CB&*=mto~el@ z`jR#MRTrD;%$R(WS*Rw2I;re=J+liG(E08+eh{Z*969fIRX2Yrv#d@jq@RNQf=RZ% z16cQqkoZ?o(aKT=Eu)PqnFa^!Y|UFnk;QXBOe(-;5c&a36(s`}Xlt}^s0&S{wQp1K z)%cY>Z+Oy8h{@AIGp)B=N4GU4=FS+EyWX0OZEUMs%HngR%v=>~Dcr=C+yiT4gwzm- za@yZUYLEac>aKvwTR_E%?JoO2*bu_s%+|yQ-HRNIaxT=|9qDQ>i$F#m__|~ zpkId;)F8@rKw2b&B|`|I?*Bg?N`Det|1?oATd63d z(^xHXP4S&Qq#spcl8m7#Oqdb&53=fDNS`?b^~ih`#q;E2)+Mo+WKV`%O2Z0to&jy} zNe32=r$DW2QYF&OPW8ZGD4HNU^OtntKKa0rO|_S0SW1*k!$l(V*Q6EBO9|UUN)p=; zTHl~TM|gR&m53jLEE`dUf(T}zrVDy_A!Asy768`oi|9C_bA`z5K(J?0Fdc3pSK9)M zzO#B{pa4up+bSJ8+czz}IqtvFQSkJSwvKv}lGUD$M#&|FLOvoHcIGT$JG9EjZyW#% zv=JLlRj7Y`6d>hTH2)s!!$A+E;S|O_CPp-HWS2#K+ja#z2!hy0vIQ?lSOuU5G^YVn8_>ZsU>%PC*H`jGgfe_& zEsA--vf*N4C2|NsCO@oX^V?3894bIyZ~mn~_7uo4Yt`m(2BQ+(|5Yr;pi3BY{2@p&kfEuwvt1t`n?`nKU z27VleX7Y7~Y$Mr}OruQK_Qh_Rys4Qqm%Z85-nAPFICfKvj%{jnag^xW-fU(+yKhBK z9RXxtr9woy+*sIuy1al^>?Ye=3_reBT1hOn3aySefg(tykWnHCP(!j4An=T8VE z6v%`DKzbfOb_m}D^g*evQ6-hs^qKPT-ezsN#U9C!HGMCtr0EZxVsWkIy{@_Lbxnre z){#OS<@inZO~Xlj@V0idhXn1-jiOp4OwWbk5THJpC>R__mdUFjKT<@BXG)e(qs%_b z+~;pz$_cF6b15>o4Td|pX;Q$Y%Dp1HV5yU-04;;^j_K0&?F-!Y1s)M@Ai7S zea_r3z>TNsD3=cE);VY8Sly7hau?cA^bW?9x;H!5Q_4<`t8<-cQ`i{Y`Q*&rI@2k~ zL$q~gV^eHvGVh2f$f2;g(0nf%;{!Z~;( znewA>mm7GKUPfO-e&jbEQGXmPXxU}5L(l4AKe62Ng||2pRgqWvcLFmw$;6gsZEED5?f-s|#ewK_^F1 zIt0~3<;lZ)6Z%l6CM2sVct^tC$tCUU%r@ZCW|LIzjP?}6Et|PDx3fCb3!Yxu)bnNm zRxt|o@qwf(68=JCi?VJd%(GShug|KM(MZA5(8vo~p&4bN67)^2jK79%Toj=nEnGj+ z{!548-yW6yK1#O0*@RWciBlpGFlB{cO$=Qcsn?`xFv&?nl zCG9-0=Dc^08k^1Y2N?~Kr}sbz5ktq1keq*-!Gl=|RZzp$r4D~dDdz;repe51AZlvTGTy2j+xq%O9e zFn*wSZ|jnaHYrdLuWPS)MxB8B&fXNKUYtD-5@z7Top6BCiPrByS~CEAvQa7&O^~=O zx~Ir(HL^n|Yw@G`6riRA`Sc=HHW*=r0!=a)04S4EKd3)0DiUyTevpguF{)HtF_eSz z)S0$EZ9?zcoSZSi5Q5hwMAJ4UC~LiLd74G@N=GtFtyFAP4SO`mnz{1M5!wI=1hz0J2Y8!||Eow;uvO$tjotn>523<5#@L)#9I7P4mH3qVqMad!;9|qdQ%_qQ>rQkv;8?n7)(g2+gyI3&0F?m2?7Wsm z41h{QC*!9{7ZVFPuwcj#m8H>Djv~trvhDL;hDV}sGkq`dktK;<4Aml==Jx>@n67d7 zt9s$^f=p-wID~?B9l!r8$6p~;2_fSRTzlcd5^zbhkmzS+=};|G$U^HDJJIn+SuxOD z8Ik(c2QC>=wv`N6AT>Jh0FDre{L5A@>W`)!|0BQv1vp-)TwGy#00000NkvXXu0mjf DhiKk_ literal 0 HcmV?d00001 diff --git a/res/flyweight-trees.png b/res/flyweight-trees.png new file mode 100644 index 0000000000000000000000000000000000000000..43b50e15b0b41b78ffcfffe4a3ead7d4569e8217 GIT binary patch literal 84762 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 z Date: Wed, 8 Oct 2014 11:20:52 +0800 Subject: [PATCH 040/123] fix --- 02.2-Flyweight.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/02.2-Flyweight.md b/02.2-Flyweight.md index 19bdb1c..d0ec21c 100644 --- a/02.2-Flyweight.md +++ b/02.2-Flyweight.md @@ -14,9 +14,9 @@ * 它在深林中的位置以及朝向。 * 大量的参数像大小、颜色等,这样每棵树看起来都不一样。 - 如果你将它在代码中表述出来,那么你将得到下面的东西: - - class Tree +如果你将它在代码中表述出来,那么你将得到下面的东西: + + class Tree { private: Mesh mesh_; From eb4d87939ab22bd6e2c950b9ac6993389494d421 Mon Sep 17 00:00:00 2001 From: "Henry.T" Date: Fri, 10 Oct 2014 00:32:09 +0800 Subject: [PATCH 041/123] update_bytecode --- 04.1-Bytecode.md | 183 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 183 insertions(+) diff --git a/04.1-Bytecode.md b/04.1-Bytecode.md index 27adc9c..c75af94 100644 --- a/04.1-Bytecode.md +++ b/04.1-Bytecode.md @@ -185,3 +185,186 @@ private: 在上面几节讨结束之后,你可能会很好奇如何直接实现它。首先,要为虚拟机设计一个指令集。在真正考虑,字节码之类的东西前,可以先把它们当成是API。 +### 法术API +假设我们要直接用C++代码去实现各种法术,我们需要让代码调用哪些API呢?为了定义法术,引擎中要定义哪些基础操作呢? + +绝大多数法术会改变巫师的一个状态,我们就从这里开始: + + void setHealth(int wizard, int amount); + void setWisdom(int wizard, int amount); + void setAgility(int wizard, int amount); + +第一个参数定义受到影响的巫师,比如说用0代表玩家,用1代表对手。这样以来,治疗法术就能够施加到玩家自己的巫师身上,同时也可以伤害到对手。毋庸置疑,这三个小函数会神奇得支持非常广泛的法术效果。 + +然而如果法术只是静默得改变状态,游戏逻辑上不会有问题,但是玩这样的游戏会让玩家无聊到哭的。我们来做些调整: + + incantationvoid playSound(int soundId); + void spawnParticles(int particleType); + +这些不会影响到玩法,但是会增加游戏的深度。我们还会添加摄像机抖动、动画等等。但是这些就足够我们开始了。 + +### 法术指令集 +现在让我们看看如何将这些程序API转换成数据能够控制的形式。我们会从一个小的点开始,直到完成整件事情。首先拿掉这些函数中所有的参数。假设所有的_()函数都会让某个参数变成最大值。类似的,FX函数们会播放一个硬编码的音效或者特效。 + +在这个前提之下,法术就是一系列的指令。每个指令定义一个你想要执行的操作。我们可以枚举他们: + + enum Instruction { + INST_SET_HEALTH = 0x00, + INST_SET_WISDOM = 0x01, + INST_SET_AGILITY = 0x02, + INST_PLAY_SOUND = 0x03, + INST_SPAWN_PARTICLES = 0x04 + }; + +为了将法术编码成数据,我们存储一枚举数组,我们的函数列表很短,他们的枚举值可以放进一个数组里面,这意味着法术的代码都是一个字节列表——所谓的字节码。 + +一些字节码虚拟机使用多个字节去存储单个指令,这需要有更加复杂的解码规则。实际上常见芯片上的机器码,比如x86,就更加复杂了。 + +但是单字节对于[Java Virtual Machine]() 以及 Microsoft .NET 平台的基石[Common Language Runtime]()来说已经很够用了,所以对我们来说已经可以了。 + +执行一条指令时,我们首先找到对应的基础方法,然后哦调用正确的API: + + class VM { + public: + void interpret(char bytecode[], int size) { + for (int i = 0; i < size; i++) { + char instruction = bytecode[i]; + switch (instruction) { + // Cases for each instruction... + } + } + } + }; + +把这段代码写进去,你就完成了你的第一个虚拟机。可惜它还不够灵活。我们没办法去定义一个能够伤害到对手或者降低某个属性的法术。我们只能播放段声音而已。 + +为了多一点真正语言的感觉,我们这里需要加入参数。 + +## 栈机 + +要执行一个复杂的嵌套表达式,你从最内层的子表达式开始。计算完的内层表达式的结果,就变成了包含它们的外层表达式的参数,以此类推,直到整个表达式计算完毕。 + +解释器模式将它显式建模成一个嵌套对象树,但是我们想要获得指令列表的高速度。我们同时要保证,自表达式的结果能够正确的传入外层表达式。但由于我们的数据是被展平的,我们得通过指令的顺序去控制。我们会采用与你的CPU相同的方式——一个堆栈。 + +这个架构毫无疑问应该叫做栈机。例如Forth、PostScript和Factor这类编程语言将这个模型直接暴露给了用户。 + + class VM { + public: + VM() : stackSize_(0) {} // Other stuff... private: + static const int MAX_STACK = 128; + int stackSize_; + int stack_[MAX_STACK]; + }; + +这个虚拟机包含了一个内部数值栈。在我们的例子中,与指令相关的唯一数据类型是数字,所以我们可以使用一个整数数组。当一段数据要求指令一个一个执行下去时,实际上依次处理了堆栈元素。 + +字面意思,数值可以被压入或者弹出这个堆栈。因此,让我们添加些方法来实现这个功能: + + class VM { + private: + void push(int value) { + // Check for stack overflow. + assert(stackSize_ < MAX_STACK); + stack_[stackSize_++] = value; + } + int pop() { + // Make sure the stack isn't empty. + assert(stackSize_ > 0); + return stack_[--stackSize_]; + } + // Other stuff... + }; + +当哪一个指令需要输入参数时,它会按照下面的方式从堆栈中弹出来: + + switch (instruction) { + case INST_SET_HEALTH: { + int amount = pop(); + int wizard = pop(); + setHealth(wizard, amount); + break; + } + case INST_SET_WISDOM: + case INST_SET_AGILITY: + // Same as above... + case INST_PLAY_SOUND: + playSound(pop()); + break; + case INST_SPAWN_PARTICLES: + spawnParticles(pop()); + break; + } + +为了向堆栈中添加一些数值,我们需要一个新的指令:字面值。它表示一个字面上的整数数值。但是它又从哪里获得这个值呢?这里究竟该如何避免无线循环呢? + + +这个小技巧就是利用指令流是一个字节序列--我们可以将数字直接塞进字节数组。我们用如下方式定义一个字面数字的指令类型: + + case INST_LITERAL: { + // Read the next byte from the bytecode. + int value = bytecode[++i]; + push(value); + break; + } + +这里,我为了避免关注代码的实现细节,仅读取了 一个单字节整数,但是在真实实现中,你肯定想要实现一个能支持你所需要的完成范围的字面整数。 + +它读取了字节码流中的下一个字节,将它当作一个数字写入堆栈。 + +为了能够对堆栈的工作方式有个直观感受,我们把一系列的指令放在一起,看看他们如何被解释器执行。我们从一个空栈开始,解释器指向第一个指令: + +首先,它执行第一个 INST_LITERAL。他会读取从bytecode(0)开始的下一个字节,并将它压入堆栈。 + +然后,它执行第二个 INST_LITERAL。它读取数字10,并将其压入堆栈。 + +最后,它执行 INST_SET_HEALTH。它会出栈10并将其存储为数量,然后出栈0将其存储为巫师。之后,使用这两个参数调用setHealth()。 + +嗒哒!我们完成了一个将玩家巫师的生命值设定为10点的法术。现在,我们就拥有了足够的灵活性,来把任何巫师的状态设定到任何想要的值。我们也可以播放不同的音效以及发粒子。 + +但是,这感觉更像是数据结构。我们没法做到,例如,将巫师的生命提高其法力值的一半。我们的设计师想要制定法术的计算规则,而不仅仅是数值。 + + +###行为 = 组合 + +如果将我们的虚拟机看做是一种编程语言,它所支持的仅仅是些内置函数,以及它们的常量参数。为了让字节码感觉更像是行为,我们得加上组合。 + +我们的设计师想要创建一些表达式,能够将不同的值通过有趣的方式组合起来。举个简单的例子,他们想让一个法术对某种属性造成一个相对量的变化,而不是改变到一个绝对的量。 + +那就需要考虑状态的当前值。我们已经有了写入状态的指令,但还得加上些读取它们的指令: + + case INST_GET_HEALTH: { + int wizard = pop(); + push(getHealth(wizard)); + break; + } + case INST_GET_WISDOM: + case INST_GET_AGILITY: + // You get the idea... + +显然,它对堆栈做了双向操作。它首先出栈一个参数,来确定要获取哪个巫师的状态,然后找到这个状态值并入栈。 + +这使得我们能够编写任意拷贝状态值的法术。我们能够创造一个将巫师的敏捷设定为其智力甚至是复制对手生命值的古怪巫术。 + +好了一点,但是仍然很有限。接下来,我们需要算术。是时候让我们牙牙学语阶段的虚拟机学会做1+1了。我们得添加些新的指令。到现在为止,你应该已经发现它的规律并能够猜到它会是怎样的了。下面是加法: + + case INST_ADD: { + int b = pop(); + int a = pop(); + push(a + b); + break; + } + +和其他的指令一样,它出栈了一些数值,做了一些处理,然后将结果入栈。到现在为止,每个指令都提高了一点儿我们对表达式的支持,但这是个很大的跨越。它看起来不起眼,但我们能够处理各种复杂的,深层嵌套算术表达式。 + +让我们看看一个稍微复杂点的例子。比如说,要制作一个法术,能够将玩家法师的生命设定成他们敏捷和智力的平均值。在代码里面,是这样的: + + simplicitlyetHealth(0, getHealth(0) + (getAgility(0) + getWisdom(0)) / 2); + +你可能会认为我们需要指令来控制这个表达式里面由于括号造成的显式分组。但堆栈已经隐式支持它了。下面是手工求值的方法: + + +获取并保存法师当前的生命值。获取并保存法师的当前敏捷度。对智慧做同样的操作。获取后两个值,将他们相加并保留结果。除以2后保留结果。取回巫师的生命并加到结果里面去。获取结果,并赋值到巫师的生命属性。 + +你看到那些”保留“和”取回“了吗?每个“保留”对应于一个push,每个“取回”对应于一个pop。这意味着我们可以轻易将其转换为字节码。例如,第一行获取巫师的当前生命值: + +LITERAL 0 GET_HEALTH From 8c57100f5906cba264a73b89cd9e2f30fb2d4007 Mon Sep 17 00:00:00 2001 From: hongxiaoqiang Date: Wed, 15 Oct 2014 08:47:38 +0800 Subject: [PATCH 042/123] =?UTF-8?q?=E6=B7=B1=E5=BA=A6=E5=AE=A1=E6=A0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 04.2-Subclass Sandbox.md | 48 ++++++++++++++++++++-------------------- 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/04.2-Subclass Sandbox.md b/04.2-Subclass Sandbox.md index bd0f703..d110675 100644 --- a/04.2-Subclass Sandbox.md +++ b/04.2-Subclass Sandbox.md @@ -5,9 +5,9 @@ 使用一个基类提供的操作集合进而在子类中定义行为 #动机 -每个小孩都有一个成为超级英雄的梦想,但是很不幸,宇宙射线在地球上供应不足。游戏能够让你无限逼真的模拟成为一个超级英雄。因为我们得游戏设计师从来不会说,“不”, 我们的超级英雄游戏没有数百也起码有数十种不同种类英雄需要的超级力量。 +每个小孩都有一个成为超级英雄的梦想,但是很不幸,宇宙射线在地球上供应不足。游戏能够让你无限逼真的模拟成为一个超级英雄。因为我们的游戏设计师从来不会说,“不”, 我们的超级英雄游戏没有数百也起码有数十种不同种类英雄需要的超级力量。 -我们的计划是我们将有一个Superpower基类,然后,我们将有一个实现各个超级力量的继承类。我们将在团队中的程序员中分摊设计文档并进行编码。当我们完成的时候,我们将有一百个超级力量的类。 +我们的计划是将有一个Superpower基类,然后,我们将有一个实现各个超级力量的继承类。我们将把设计文档分摊给团队中的程序员并进行编码。当我们完成的时候,我们将有一百个超级力量的类。 > 注解 @@ -15,21 +15,21 @@ > 像模式Type Object, Bytecode 和 Interpreter 或许能有所帮助。 -我们想让我们的玩家沉寖在一个复杂多变的世界里。无论他们小时候梦想过的什么力量,在我们的游戏我们都需要。这就意味着这些超级力量子类能够几乎做任何事情:播放音效,产生视觉效果,与AI交互,创建和销毁其他游戏实体以及产生物理效果。他们可以使用任何的代码库。 +我们想让玩家沉寖在一个复杂多变的世界里。无论他们小时候梦想过的什么力量,在我们的游戏里我们都有。这就意味着这些超级力量子类能够几乎做任何事情:播放音效,产生视觉效果,与AI交互,创建和销毁其他游戏实体以及产生物理效果。他们可以使用任何的代码基。 -让我们释放我们的队伍,让他们写超级力量的类的话,会发生什么呢? +让我们解放我们的团队,让他们写超级力量的类的话,会发生什么呢? -- 会充满大量的冗余代码。由于不同的力量将有所不同,我们可以预料到大量的重复。他们中的许多将以同样的方式来产生视觉效果和播放音效。当你完成冰冻射线,热射线,第戎芥末射线这些射线时,会发现他们极其相似。如果人们在实现它们时没有整合起来,那么将会有大量的冗余代码和付出。 +- 会充满大量的冗余代码。由于不同的力量将有所不同,我们可以预料到大量的重复。他们中的许多将以同样的方式来产生视觉效果和播放音效。当你完成冰冻射线,热射线,第戎芥末射线这些射线时,会发现他们极其相似。如果人们在实现它们时没有整合起来,那么将会有大量重复的代码和付出。 - 游戏引擎的每个部分将与这些类产生耦合。在没有更好方法的前提下,人们将写出调用子系统的代码,这些子系统从来不打算与超级类直接绑定。如果我们的渲染器被组织成一些漂亮优雅的分层,只有其中的一层能够被图形引擎之外的代码使用,我们可以打赌最后将留下侵入到他们所有层的超级力量代码。 -- 当这些外部系统需要改变的时候,任意的一些超级力量代码将有很大的概率被破坏。一旦我们的不同种类的超级力量类与游戏引擎的各式各样的部分产生耦合的时候,必然发生的是改变这些系统将影响力量类。这将是很无趣的,因为你的图形,音效,UI程序员可能并不想非得是游戏程序员。 +- 当这些外部系统需要改变的时候,任意的一些超级力量代码将有很大的概率被破坏。一旦我们的不同种类的超级力量类与游戏引擎的各式各样的部分产生耦合的时候,必然发生的是改变这些系统将影响力量类。这将是很无趣的,因为你的图形,音效,UI程序员可能并不想非得成为游戏程序员。 -- 定义所有超级力量遵守的约束条件将是困难的。例如说我们想保证所有我们超级力量播放的音效得到合理的排队和优先级处理。如果我们一百个类都自己直接地条用音效引擎的话,这将是很难实现的。 +- 定义所有超级力量遵守的约束条件很困难。例如说我们想保证所有我们超级力量播放的音效得到合理的排队和优先级处理。如果我们一百个类都自己直接地调用音效引擎的话,这将是很难实现的。 -我们需要的是给每个实现一个超级力量的游戏程序员一系列可用的基本元。你想要你的力量播放音效吗?这里提供你的playSound()函数。你想要粒子效果吗?这里有spawnParticles()。我们将保证这些操作覆盖你所有的需求,这样一来你就不用#include任意的头文件以及探入代码库的余下部分。 +我们需要的是给每个实现一个超级力量的游戏程序员一系列可用的基本元。你想要你的力量播放音效吗?这里提供你的playSound()函数。你想要粒子效果吗?这里有spawnParticles()。我们将保证这些操作覆盖你所有的需求,这样一来你就不用#include任意的头文件以及探入代码基的余下部分。 -我们通过把这些操作设置成Superpower基类的保护方法来实现这种效果。把他们放在基类就能让每一个力量子类直接简单地访问方法。把他们设置为保护状态(并且可能非虚拟的)通讯,这样他们就针对性地被子类调用。 +我们通过把这些操作设置成Superpower基类的保护方法来实现这种效果。把他们放在基类就能让每一个力量子类直接简单地访问。把他们设置为保护状态(并且可能是非虚拟的)通讯,这样他们就只能针对性地被子类调用。 一旦我们有了这些可玩的玩具,我们需要一个地方来使用它们。因此,我们将定义一个沙盒方法,这是一个子类必须实现的抽象保护方法。在有了这些之后,为了实现一种新的力量,你: @@ -39,19 +39,19 @@ 我们现在能够通过使这些操作尽可能的高层来解决代码冗余的问题。当我们发现在大量子类中存在重复代码,我们可以把它向上移到Superpower中作为一个可用的新操作。 -我们已经通过把耦合限制在一个地方来解决耦合问题。Superpower最终将与不同的游戏系统耦合,但是我们的一百个子类不会。反而,他们仅仅与基类耦合。当这些游戏系统中的一个变化时,对Superpower进行修改可能是必须的,但是这些大量的子类不应被动。 +我们已经通过把耦合限制在一个地方来解决耦合问题。Superpower最终将与不同的游戏系统耦合,但是我们的一百个子类不会。反而,他们仅仅与基类耦合。当这些游戏系统中的一个变化时,对Superpower进行修改可能是必须的,但是这些大量的子类不应被改动。 -这个设计模式会催生一种浅而宽的类层次架构。你的继承链不会深,但是会有大量的类挂在Superpower上。通过生成一个有大量直接子类的单个类,我们在代码库里就有只有一个点的杠杆。我们在Superpower中所付出的时间和关爱都将对游戏中大量的类带来益处。 +这个设计模式会催生一种浅而宽的类层次架构。你的继承链不会深,但是会有大量的类挂在Superpower上。通过生成一个有大量直接子类的单个类,我们在代码基里就有只有一个点的杠杆。我们在Superpower中所付出的时间和关爱都将对游戏中大量的类带来益处。 > 注解 -> 近来,你发现人们对面向对象语言的继承进行批判。继承是有问题的 -- 在代码库中没有比基类与子类之间更深的耦合了 -- 但是我发现宽的继承树比深的要表现的更好。 +> 近来,你发现人们对面向对象语言的继承进行批判。继承是有问题的 -- 在代码基中没有比基类与子类之间更深的耦合了 -- 但是我发现宽的继承树比深的要表现的更好。 #模式 一个__基类__定义了一个抽象的__沙盒方法__和一些__提供的操作__。通过设置他们为保护状态能够明确他们是被子类使用。每个继承的__沙盒子类__通过提供的操作来实现沙盒函数。 #什么时候使用 -沙盒模式是一种运用在大量代码库里甚至游戏之外的非常简单通用的模式。如果你有一个非虚拟的保护函数,那么你很有可能正在使用类似该模式的东西。沙盒模式在以下情况比较适用: +沙盒模式是一种运用在大量代码基里甚至游戏之外的非常简单通用的模式。如果你有一个非虚拟的保护函数,那么你很有可能正在使用类似该模式的东西。沙盒模式在以下情况比较适用: - 你有一个带有大量子类的基类。 @@ -59,14 +59,14 @@ - 在子类之间有重叠的代码,你想让他们之间更容易地分享代码。 -- 你想使这些继承类以及程序的其他代码之间的耦合最小化。 +- 你想使这些继承类与程序的其他代码之间的耦合最小化。 #记住 “继承”一词最近在一些程序圈子里被视为诟病,其中一个原因是基类会滋生越来越多的代码。这个模式尤其受这个因素的影响。 由于子类是通过它们的基类来实现剩下的游戏,基类最终会与所有子类需要交互的系统产生耦合。当然,这些子类也与他们的基类绑定。这个蜘蛛网式的耦合使得在不破坏什么的情况下改变基类是很困难的 -- 你遇到了[脆弱的基类问题](http://en.wikipedia.org/wiki/Fragile_base_class)。 -从另一个角度来说你所有的耦合都被聚集到了基类,子类现在明显地与其他世界更加独立了。理想状态下,你的绝大部分操作都在子类中。这意味着你的大量的代码库是独立的,并且更易于维护。 +从另一个角度来说你所有的耦合都被聚集到了基类,子类现在明显地与其他世界更加独立了。理想状态下,你的绝大部分操作都在子类中。这意味着你的大量的代码基是独立的,并且更易于维护。 如果你仍然发现这个模式正把你的基类推向一碗巨大的代码汤里的话,请考虑把一些提供的操作提取到一个基类能够管理的独立的类中。这里[组件模式](./05.1-Component.md)能够有所帮助。 @@ -101,7 +101,7 @@ protected: ``` 函数activate()就是沙盒函数。由于它是虚拟和抽象的,子类必须要覆盖它。这对于需要创建一个力量子类而使工作正常进行的人们来说是清晰地。 -另外的保护函数move(), playSound()和spawnParticles()都是保护操作。这些就是子类需要在activate()函数实现时将调用的函数。 +另外的保护函数move(), playSound()和spawnParticles()都是提供的操作。这些就是子类需要在activate()函数实现时将调用的函数。 我们没有在这个示例中实现提供的操作,但是一个实际的游戏需要有真实的代码在那儿。这个函数是Superpower在游戏中与其他系统耦合的函数 -- move()函数也许会调用物理引擎代码,playSound()将与音效引擎通讯等等。由于所有的这些都是在基类的实现中,这就使得所有的耦合都封装在Superpower自己中。 @@ -121,7 +121,7 @@ protected: ``` > 注解 -> 好啦,也许能够跳跃并不是力量的所有,但是这里我尝试保持事情基础。 +> 好啦,也许能够跳跃并不是力量的所有,但是这里我尝试保持事情简单。 这个力量把超级英雄弹向空中,播放一段恰当的音效并踢开一缕拂尘。如果所有的超级力量都如此简单 -- 仅仅是音效,粒子效果和动作的组合,那么我们就不再需要这个模式了。反而,Superpower可以有一个activate()的烘烤的实现,这个activate()是访问音效ID,粒子类型和移动的部分。但是这个在仅当所有的力量基本上以同样的方式来工作仅仅在数据上有一些差异的地方才有效。让我们更详细的看一下: ```c++ @@ -146,7 +146,7 @@ protected: // Existing stuff... }; ``` -这里我们添加了一个方法用于获取英雄的位置。我们得SkyLaunch子类现在可以使用这些: +这里我们添加了一个方法用于获取英雄的位置。我们的SkyLaunch子类现在可以使用这些: ```c++ class SkyLaunch : public Superpower { @@ -176,14 +176,14 @@ protected: } }; ``` -由于我们可以使用一些状态,现在我们得沙盒函数可以做一些实际的有趣的控制流。这里仍然仅仅是一些简单的if语句,但是你可以做任何你想做的事情。通过使沙盒函数成为一个包含任意代码的切实丰富的函数,天空将无极限。 +由于我们可以使用一些状态,现在我们的沙盒函数可以做一些实际的有趣的控制流。这里仍然仅仅是一些简单的if语句,但是你可以做任何你想做的事情。通过使沙盒函数成为一个包含任意代码的切实丰富的函数,天空将无极限。 > 注解 > 起初,我建议对力量采用数据驱动的方式。此处就是一个你决定不采用它的原因。如果你的行为是复杂和紧急的,定义数据将更困难。 #设计决策 -正如你所见,子类沙盒模式是一个相当“柔弱的”的模式。它描述了一个基本的思想,但是它没有一些繁杂的机制。这就意味着你每次应用它的时候将作一些有趣的决定。以下有一些需要考虑的问题。 +正如你所见,子类沙盒模式是一个相当“柔弱的”的模式。它描述了一个基本的思想,但是它没有一些繁杂的机制。这就意味着你每次应用它的时候将做一些有趣的决定。以下有一些需要考虑的问题。 ##需要提供什么操作? 这是最大的问题。这深深地影响了这个模式的感觉以及它的表现如何。从最小的一个极端来说,基类不提供任何操作。它仅仅有一个沙盒函数。为了实现它,你将不得不调用基类之外的系统。如果从这个角度来说,你可能不能公平地说你正在用这个模式。 @@ -194,7 +194,7 @@ protected: > 具体来说,这意味着每个子类的源文件仅仅需要一个#include -- 针对基类的一个。 -在这两个点之间,有一个宽广的中间空间,在这个空间里,一些操作通过基类提供,另外一些则通过定义它的外部系统直接访问。你提供越多的操作,子类与外部系统耦合越少,但是基类就耦合得越多。它去掉了继承类的耦合,但是它是通过把耦合聚集到基类自己来实现的。 +在这两个点之间,有一个宽阔的中间空间,在这个空间里,一些操作通过基类提供,另外一些则通过定义它的外部系统直接访问。你提供越多的操作,子类与外部系统耦合越少,但是基类就耦合得越多。它去掉了继承类的耦合,但是它是通过把耦合聚集到基类自己来实现的。 如果你有一堆与外部系统耦合的继承类的话,那么就赢了。通过把耦合向上移到一个提供的操作,你就把它聚集到了一个地方:基类。但是你这样做得越多,一个类就变得越大和越来越难于维护。 @@ -211,7 +211,7 @@ protected: > 另一个令人不快的情况是如果你的游戏状态是严格准确的(许多在线游戏为了保持玩家同步)。如果你访问一些同步游戏状态之外的东西,你将引起非常疼痛的非确定性bug。 - 那样调用确实是改变状态,另一方面,与代码库部分更深层次的绑定,你需要对它有更多的了解。这使得它们适合于成为在更可见基类中提供的操作。 + 那样调用确实是改变状态,另一方面,与代码基部分更深层次的绑定,你需要对它有更多的了解。这使得它们适合于成为在更可见基类中提供的操作。 - 如果一个提供的操作的实现仅仅调用一些外部系统,那么它并没有增值多少。在这种情况下,直接调用外部系统更为简单。 @@ -289,7 +289,7 @@ private: 把提供的操作分流到一个像这样的辅助类中能给你带来一些东西: - 减少基类的函数数量。在这里的例子中,我们从三个函数变成仅仅一个获取函数。 -- 在帮助类中的代码通常更容易维护。像Superpower这样的核心基类,不管我们是以最好的意图,都由于大量的依赖它们而难于修改。通过把功能转移到一个耦合更少的第二候选类,我们可以使它的代码在不破坏的情况下更易于访问。 +- 在帮助类中的代码通常更容易维护。像Superpower这样的核心基类,不管我们是否以最好的意图,都由于大量的依赖它们而难于修改。通过把功能转移到一个耦合更少的第二候选类,我们可以使它的代码在不破坏的情况下更易于访问。 - 减少了基类和其他系统之间的耦合。当playSound()直接是一个在Superpower上的函数时,无论实现中调用了什么音效代码,我们基类就直接地与SoundId绑定了。把它转移到SoundPlayer减少了Superpower对单个SoundPlayer类的耦合,SoundPlayer会封装其他的依赖。 @@ -347,7 +347,7 @@ Superpower* createSkyLaunch(ParticleSystem* particles) > 注解 -> 通过一点小技巧比如私有构造函数和友元函数,你可以保证createSkylaunch()函数是唯一能够实际创建力量的函数。通过那种方式,你就不会忘记任何的初始化步骤。 +> 通过一点小技巧比如私有化构造函数和友元函数,你可以保证createSkylaunch()函数是唯一能够实际创建力量的函数。通过那种方式,你就不会忘记任何的初始化步骤。 - __使状态静态化:__ From a1c106e30ee949ede93c96fc2fed66a0abc5339f Mon Sep 17 00:00:00 2001 From: kislyl <1131985199@qq.com> Date: Mon, 20 Oct 2014 10:17:54 +0800 Subject: [PATCH 043/123] Update 02.1-Command.md --- 02.1-Command.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/02.1-Command.md b/02.1-Command.md index bc32739..9933d85 100644 --- a/02.1-Command.md +++ b/02.1-Command.md @@ -3,9 +3,9 @@ 命令模式是我最喜爱的模式之一。在我写过的许多大型游戏或者其他程序中,都有用到它。正确的使用它,会让你的代码变得更加优雅。对于这个模式,Gang of Four 有着一个预见性的深奥说明: -> 将一个请求(request)封装成一个对象,从而让你使用不同的请求把客户端参数化,对请求队列或者记录请求日志,可以提供命令的撤销和恢复功能。 +> 将一个请求(request)封装成一个对象,从而让你使用不同的请求,请求队列或请求日志来参数化客户端,同时支持请求操作的撤销与恢复。 -我想我们一致认为这句子很生涩难懂。首先,它延伸了它试图建立的比喻场景。在软件世界之外,词语有很多意思,“客户(client)”就是一个_人_的意思-一个你与它做生意的人。我检查过,人们(people)是不可以“参数化”的。(译者注:作者在这里的意思是Gang of Four 的说明因为太具概括性,涵盖了软件开发之外的一些定义,使得句子很难理解。) +我想你也和我一样觉得这句话晦涩难明。首先,它分割了自己试图建立的物象。在软件世界之外,词语有很多意思,“客户(client)”就是一个_人_的意思-一个你与它做生意的人。我检查过,人们(people)是不可以“参数化”的。(译者注:作者在这里的意思是Gang of Four 的说明因为太具概括性,涵盖了软件开发之外的一些定义,使得句子很难理解。) 然后,句子的剩余部分就像你可能使用的模式的一串列表一样。不是特别明朗,除非你的用例恰巧在列表中。我对命令模式的精炼(pithy)概括如下: From 52651faba428a5a6f08314e024228f46952d08e7 Mon Sep 17 00:00:00 2001 From: kislyl <1131985199@qq.com> Date: Mon, 20 Oct 2014 16:00:46 +0800 Subject: [PATCH 044/123] =?UTF-8?q?06.1-Data=20Locality=E7=BF=BB=E8=AF=91?= =?UTF-8?q?=E5=88=9D=E7=A8=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 06.1-Data Locality.md | 390 +++++++++++++++++++++++++++++++++++++++++- 1 file changed, 388 insertions(+), 2 deletions(-) diff --git a/06.1-Data Locality.md b/06.1-Data Locality.md index 85d44d5..c8e7e24 100644 --- a/06.1-Data Locality.md +++ b/06.1-Data Locality.md @@ -1,2 +1,388 @@ -Dirty Flag -============================ +# 数据区域化 +## +## 目的 +通过合理组织数据利用CPU的缓存机制来加快内存访问速度。 +## 动机 +我们被骗了。 他们总拿着CPU速度增长的年度报表来让人以为摩尔定律不只是历史观测的结果甚至是某种真理!我们做软件的就这么毫不费力地看着自己的程序光凭着新硬件的优势就莫名地飞奔起来! +![](http://gameprogrammingpatterns.com/images/data-locality-chart.png) +芯片确实变快了(但现在滞缓趋势),但硬件巨头们并没有提及另一些事情——我们当然能更快地处理数据,但我们并不能更快地获取这些数据。 + +>注解: +>处理器和RAM的速度分别与它们在1900年的速度有关。如你所见,CPU的速度飞速增长,但RAM访问速度却增长迟缓。上图数据来自John L. Hennessy, David A. Patterson, Andrea C. Arpaci-Dusseau借由Tony Albrecht的“[Pitfalls of Object-Oriented Programming](http://seven-degrees-of-freedom.blogspot.com/2009/12/pitfalls-of-object-oriented-programming.html)”统计于《Computer Architecture: A Quantitative Approach》一书中 + + 为使你超快的CPU进行大量的计算,实际上它需要从主存中取出数据并置入寄存器中。如你所见,RAM的存取速度远远跟不上CPU的速度,根本就没沾过边。 + + 今天的硬件设备可能要花去数百次的循环来从RAM中获取一个字节的数据。加入许多指令需要访问数据,且每次需要数百次循环来获取这数据,要是我们的CPU在等候数据的这段时间里的99%都处于忙碌状态,该怎么办? + + 实际上,当今的CPU会花去惊人的时间片段来等候内存传输数据,但这也还没糟到谷底。为进行解释,让我们进行一次稍长的比喻吧... + +>注解: 叫它RAM(随机存储器)的原因是,不同于光盘驱动器,理论上你可以超越其他任何存储介质的速度访问到RAM中任何一块内存数据,你无需担心光盘上需要连续读取的问题——或者至少你至今这么认为。正如我们所将看到的,RAM不再是可以任意地随机访问了 + +#数据仓库 +设想你是一个小办公室里的会计。你的工作是采集一盒子的单子并对它们进行一些核查统计或其他的计算。你需要根据一些晦涩到的会计专业逻辑来对这样的一系列打了标签的盒子进行处理。 + +>注解:我似乎不该拿个自己完全不在行的工作来打比方... + +多亏你的努力工作,出色的才能以及进取心,你可以在(比方说)一分钟内完成一个盒子里的所有任务。当然,这里有个小问题。这些盒子都被分别存放于一个一栋楼里的不同地方。为了拿到这些盒子,你必须询问仓储人员来获取这些盒子。他去开来叉车并在过道之间寻找直至找到你想要的那个盒子。 + +这花了他一整天的时间来取一个盒子。不像你,他很快就要在这个月结束后走人了,这意味着不论你办事效率有多高,你一天只能搞定一个盒子。而你剩余的时间,就只能坐在办公椅上思考自己怎么就干了这样一份吸食灵魂的工作。 + +某天,一堆工业设计师出现了。他们的任务是提高工作效率,比如提高流水线效率啥的。在观察你工作了几天之后,他们注意到以下几点: + +- 往往当你完成某个盒子里的任务时,你所需要的下个盒子就放在仓储间中与这盒子所属的同个架子上。 +- 开着叉车来取个小盒子真是蠢哭了。 +- 其实在你的办公室角落里有一些空闲的空间。 + +>注解:对刚访问数据的邻近数据进行访问的术语叫做引用局部性。 + +他们想到了一个聪明的办法。不论何时当你向仓库管理员提出一个盒子的需求时,他将取来一整车的盒子:他为你带来你所要的盒子,并将与它相邻的那些盒子也都一起带来。他并不知道你是否需要他们(当然,基于他的职业道德,能容忍一次搬这么多),他只是尽可能地让盒子填满叉车并带来给你。 + +他卸下这些盒子并给你。先不管工作所在地的安全性,他把叉车直接开进你的办公室并把盒子都卸到那个空闲的角落里。 + +现在当你需要一个新盒子时,你首先从你办公室角落的那些盒子里找。假如找到那就太棒了,你只需要几秒的时间把它拿过来然后继续算你的算数。假如一台叉车能容纳50和盒子并且碰巧你所需要的50个盒子都在其中,你就可以完成比从前多50倍的工作了! + +但假如你需要的盒子不在叉车里,那你就必须把一个已经处理完的盒子退回去。由于你的办公室只能容纳一车的盒子,所以你的仓管同志会来帮你带回那个盒子并为你带来一个新的。 + +## CPU的叉车 +奇怪的是,上面的过程与当今计算机内CPU的工作原理类似。也许这不太显然,你却扮演者CPU的角色。你的桌面是CPU的寄存器,装着单子的盒子是你所要处理的数据。仓库是你机器的RAM,那个讨厌的仓管员是从主存往寄存器中拉取数据的总线。 + +假如我在三十年前写这一章,比喻恐怕就此结束。但随着处理器速度的飞跃(以及RAM速度的落后),硬件工程师开始寻找解决方案,而他们想到的就是CPU缓存技术。 + +当代计算机在其芯片内部的内存十分有限。CPU从芯片中读取数据的速度要快于它从主存中读取数据的速度。它很小,以便于嵌在芯片上,而且由于它使用更快的内存类型(静态RAM或称SRAM),所以更贵。 + +当代计算机有多级缓存,也就是你所听到的那些“L1”,“L2”,“L3”等等。它们的大小按照其等级递增,但速度也越来越慢。在本章中,我们并不区分缓存的层级([hierarchy](http://en.wikipedia.org/wiki/Memory_hierarchy)),但知道还是有必要的。 + +这一小块内存被称为缓存(特别地,芯片上的那块叫做你的L1缓存),在我那个啰嗦的比喻里,它的角色就是那装满盒子的叉车。任何时候当你需要RAM中的数据时,它自动将一整块连续的内存(通常在64到128字节)取出来并置入缓存中。这块内存被称为缓存线cache line)。 +![](http://gameprogrammingpatterns.com/images/data-locality-cache-line.png) +假如你需要的下一个数据恰巧在这个块中,那么CPU直接从缓存中读取数据,这比命中RAM要快多了。成功地在缓存中找到数据被称为一次命中。假如它没有找到数据而需要访问主存,那么称之为未命中。 + +>注解: 让我对比喻中的一些细节做下解释。在你的办公室里,仅有能容纳一辆叉车或者说缓存线的空间。实际中的缓存包含了一系列的缓存线。其工作原理在此超纲,但你可以搜索“[缓存关联性](http://en.wikipedia.org/wiki/CPU_cache#Associativity)”来脑补。 + +当缓存未命中时,CPU就停止运转:它因为缺少数据而无法执行下一条指令。CPU坐在地上进行几百次空循环发呆,直到取得数据。我们的任务就是避免这一情况发生。设想你正试图通过改进一些关键性的游戏代码来提高性能,比如下面这样: + +```c++ +for (int i = 0; i < NUM_THINGS; i++){ sleepFor500Cycles(); things[i].doStuff();} +``` +对这段代码你首先可以做些啥?是的,显然循环里的函数调用开销很大。这样的调用等价于缓存未命中带来的性能损失。每次跳入主存中,就意味着往你的代码里塞了一段延时。 + +## 啥?数据即性能? +着手写这一章时,我花了些时间整理了一些类似游戏的小程序,他们能制造最好和最坏的缓存使用情况。我想为缓存的徒劳无功划定基准,以便能第一时间确知它究竟造成了多少性能损失。 + +当我对一些程序进行测试时,大为吃惊。我无法形容问题之夸张,耳听为虚眼见为实!我写了两段代码来进行相同的运算,二者唯一的差别在于它们造成的缓存未命中次数不同。而较慢者竟然在速度上比另一段代码慢了50倍! + +>注解: 你需要注意许多警告。尤其是,不同的计算机有不同的缓存步骤,所以我的机器可能与你的机制不同,而专用的控制台游戏与PC又有很大不同,当然在移动设备上的差别也不言而喻。总之因人而异 + +这真让我开了眼界。我曾经以为性能是代码的一部分,而非数据。一字节的数据并无快慢之分,它只是一个静态的事物。但由于缓存机制的存在,你组织数据的方式直接影响了性能。 + +现在的挑战是将上面这些转为本章节的相关内容。对缓存使用的优化是个大话题。我还从没有涉及过指令缓存。请记住,代码也是在内存中的,并且需要被载入到CPU中才能够被执行。那些更精通于这课题的人能够为此写出一整本书来。 + +>注解: 事实上,就有人为此写了本书:[Richard Fabian的Data-Oriented Design](http://www.dataorienteddesign.com/dodmain/) + +不论你是否已经读了这本书,我这介绍一些基本的技巧,以便你在关于数据结构是如何影响程序性能这一问题上展开思考。 + +这些都可以归结为一件简单的事情:不论芯片何时读取多少内存,它都整块地获取缓存线。这快缓存线你的可用数据越多,程序就跑得越快。所以优化的目标就是将你的数据结构进行组织,以使需要处理的数据对象在内存中两两相邻。 + +>注解: 这里需要一个关键性的假设:单线程。假如你在多线程中对当前数据附近的内存进行修改,如果每个线程在不同的缓存线上处理数据,那么速度会更快,但如果两个线程对同一缓存线上的数据进行改动,那么两条线程上的代码都不得不花些开销来对它们的缓存进行同步。 + +换句话说,假如你的代码正在处理Thing,接着Another,然后Also这三个数据,你就希望它们在内存里是这样布局的: +![](http://gameprogrammingpatterns.com/images/data-locality-things.png) +请注意,并没有Thing,Another或Also指向的指针。这就是它们的实际数据,在各自恰当的位置,一个接一个线性排列。只要CPU读取完Thing,它将接着开始读取Another 和Also,(具体取决于他们的大小以及缓存线的尺寸)。当你开始对它们进行处理时,他们已经在缓存中准备就绪了。你的芯片和你都笑了。 + +## 数据区域化模式 +当代CPU带有多级缓存以提高内存访问速度。这一机制加快了对最近访问过的数据其邻近内存的访问速度。通过增加数据区域化来利用这一点以提高性能:保持数据位于连续的内存中以供你的程序进行处理。 +## 使用情境 +如同多数优化措施,指引我们使用数据区域化模式的第一条准则就是找到出现性能问题的地方。不要在那些代码库里非频繁执行的部分浪费时间,它们不需要本模式。对那些非必要的代码进行优化将使你的人生变得艰难——因为结果总是更加复杂且笨拙的。 + +由于此模式的特殊性,你可能还希望确定你的性能问题是否是由缓存未命中引起的,如果不是,那么这个模式也帮不到忙。 + +最简单的估算办法就是人为地添加一系列的测量工具以计量一段代码执行所花费的时间,最好能够使用一些精确的计时器。为了获悉缓存的使用情况,你需要一些更复杂的手段——你希望能够确知有多少次的缓存未命中,并对它们进行定位。 + +幸运的是,有现成的工具来做这些工作。在正式深入你的数据结构前,些时间来架构一个这样的工具并搞懂那些统计数据的含义(相当复杂!)是值得的。 + +>注解: 然而不幸的是这些工具多数十分昂贵。假如你在一个主机游戏开发团队里,大概你已经有这些工具的证书啦。 +假如你不在这样的团队里,[Cachegrind](http://valgrind.org/docs/manual/cg-manual.html)是个很不错且免费的选择。它将你的程序置于一个虚拟CPU上运行并进行分层级的缓存,最终展示这些缓存的表现。 + +如前所述,缓存未命中将影响到你的游戏性能。由于你无法花费大量的时间预先对缓存的使用进行优化,是该想想再设计的过程中如何让你的数据结构变得更加缓存友好。 + +## 使用须知 +软件架构的一大特征是抽象化。本书的很大一部分讨论的是如何将代码进行分块并对在各个块之间进行解耦,以使它们变得更易于修改。在面向对象的语言中,这往往意味着接口化。 + +在C++中,使用接口则意味着要通过指针或引用来访问对象。而使用指针进行访问也就是要在内存里这儿那儿地跳转,这就引发了本设计模式在极力规避的缓存未命中现象。 + +>注解: 接口的另一个要点就是虚方法的调用。而这要求CPU检索一个对象的虚表(vtable)并找到表所指向的实际方法以进行函数调用。所以你又得追踪指针了,又要缓存未命中了。 + +为了做到缓存友好,你可能需要牺牲一些之前所做的抽象化。你越是在程序的数据区域上化下功夫,你就越要牺牲继承,接口以及这些手段所带来的好处。要时刻记得没有银弹(译者注:一句话说就是技术上什么包治百病且立竿见影的良药,[参见这里](http://www.cnblogs.com/cute/archive/2012/09/27/2705253.html)),只有充满着挑战的牺牲与交换。当然拆东墙补西墙也是很有趣的事情! + +## 例子 +假如你真的钻研到数据区域化优化的深处,你将发现有无数种办法,将你的数据结构拆解成片段以供CPU更好地进行处理。为了让你知道如何下手,我将在对几个最常见的组织数据的方法各做一个简单的实例。我们将在特定的游戏引擎环境下来完成它们,但(正如其他设计模式一样)要牢记只要符合条件,这一技术在任何情境中都是通用的。 + +## 连续的数组 +让我们从一个处理一系列游戏实体的游戏循环([Game loop](./03.2-Game Loop.md))开始。每个实体通过组件模式([Component](./05.1-Component.md))被拆解为不同的部分:AI,物理,渲染。`GameEntity`类如下: +```c++ +class GameEntity{public: GameEntity(AIComponent* ai, PhysicsComponent* physics, RenderComponent* render) : ai_(ai), physics_(physics), render_(render) {} AIComponent* ai() { return ai_; } PhysicsComponent* physics() { return physics_; } RenderComponent* render() { return render_; }private: AIComponent* ai_; PhysicsComponent* physics_; RenderComponent* render_;}; +``` +每个组件都包含一系列相关的状态属性,或许是一些向量或矩阵,且组件具有一个更新这些状态的方法。在此其细节并不重要,但我们可以根据这些粗略设想出如下的组件结构: + +>注解: 正如其名,这些例子正是来自[Update Method](./03.3-Update Method.md)模式。甚至连render()方法也采用这一模式,只是换了个名字而已。 + +```c++ +class AIComponent{public: void update() { /* Work with and modify state... */ }private: // Goals, mood, etc. ...};class PhysicsComponent{public: void update() { /* Work with and modify state... */ }private: // Rigid body, velocity, mass, etc. ...};class RenderComponent{public: void render() { /* Work with and modify state... */ }private: // Mesh, textures, shaders, etc. ...}; +``` +游戏维护一个很大的指针数组,它们包含了对游戏世界中所有实体的引用。每次游戏循环我们需要做以下工作: + +1.为所有实体更新AI组件。 + +2.为所有实体更新其物理组件。 + +3.使用渲染组件对它们进行渲染。 + +许多游戏实体将这样进行实现: +```c++ +while (!gameOver){ // Process AI. for (int i = 0; i < numEntities; i++) { entities[i]->ai()->update(); } // Update physics. for (int i = 0; i < numEntities; i++) { entities[i]->physics()->update(); } // Draw to screen. for (int i = 0; i < numEntities; i++) { entities[i]->render()->render(); } // Other game loop machinery for timing...} +``` +在你耳闻CPU缓存机制之前,上面的代码看不出什么毛病。但现在,我想你已经察觉到有些不妥了。这样的代码不仅伤害着缓存,甚至将它来回给搅成了一团浆糊。看看它都干了些啥吧: + +1.数组存储着指向游戏实体的指针,因此对于数组中的每个元素而言,我们需要遍历这些指针(所指向的内存)——这就引发了缓存未命中。 + +2.然后游戏实体又维护着指向自己组件们的指针,再一次缓存未命中。 + +3.接着我们更新组件。 + +4.再然后我们回到步骤1,对游戏里每个实体的每个组件都这么干。 + +最可怕的是我们不知道这些对象在内存中的布局情况,我们完全任由内存管理器摆布。由于实体随着时间被分配、释放,堆空间会倾向于变得随机离散化。 +![](http://gameprogrammingpatterns.com/images/data-locality-pointer-chasing.png) +>注解: 在每帧里,游戏循环需要把上图所有的箭头都跑一遍来获取它所关心的数据。 + +假如我们的目标是在游戏地址空间进行快速纵览(比如“256兆RAM的四晚廉价游套餐”!),那还是蛮划算的。然而我们的目标却是让游戏更快地运转,并且在整个主存中游荡可不是个理想的办法。还记得`sleepFor500Cycles()`这个函数吗?我们上面代码在效率上相当于无时无刻地在调用这家伙! + +>注解: 在遍历一系列指针上耗费时间,可以用术语”[指针雕镂](http://blog.csdn.net/arethe/article/details/5962350)”(pointer chasing)来表述。然而它却没有名字上听起来那么好笑。 + +让我们做一些改进吧。首先可以发现的是,我们追踪游戏实体的指针是为了找到这个实体内指向其组件的指针以便访问这些组件。GameEntity类本身并没有什么要紧的状态或者方法。游戏循环仅关心这些组件。 +为了对这一堆游戏实体以及散乱在地址空间各个角落的组件做改进,我们将从头来过——我们有一个容纳着各类组件的大数组:存放所有AI组件的一维数组,当然还有存放物理和渲染组件的数组,如下: + +```c++ +AIComponent* aiComponents = new AIComponent[MAX_ENTITIES];PhysicsComponent* physicsComponents = new PhysicsComponent[MAX_ENTITIES];RenderComponent* renderComponents = new RenderComponent[MAX_ENTITIES]; +``` +>注解: 在关于使用组件模式我最反感的一点就是component这个词的长度... + +这里需要强调一下,这些是存储组件的数组而非组件指针的数组。数组里直接包含了所有组件的实际数据,逐个字节地在内存中分布。游戏循环可以直接遍历它们: + +```c++ +while (!gameOver){ // Process AI. for (int i = 0; i < numEntities; i++) { aiComponents[i].update(); } // Update physics. for (int i = 0; i < numEntities; i++) { physicsComponents[i].update(); } // Draw to screen. for (int i = 0; i < numEntities; i++) { renderComponents[i].render(); } // Other game loop machinery for timing...} +``` +>注解: 我们会注意到在新的代码里我们已经不再使用”->”操作符,假如你希望增强数据的区域性,就尽可能想办法去掉那些间接性的(尤其是指针的)操作吧。 + +我们抛弃了所有指针跟踪。我们采用直接对三个连续数组进行遍历的办法来取代在内存中进行跳跃性的访问。 +![](http://gameprogrammingpatterns.com/images/data-locality-component-arrays.png) +这一方法往空闲的CPU中输入一块连续的字节,在我的测试中它为更新循环带来了比之前版本快50倍的速度。 + +有趣的是,我们这么做并没有放弃太多的封装性。当然,现在游戏循环直接对组件进行遍历更新而不是通过遍历游戏实体,但在此之前它还是必须遍历游戏实体来确保它们是按照正确的顺序被更新的。尽管如此,每个组件本身依然具有很好的封装性。它持有自身的数据和方法。我们只是改变了使用它的方式而已。 + +这也并不意味着我们需要放弃GameEntity类。我们可以将它放在一边,并保持它身上对组件的那些指针。它们只是指向这三个数组而已。而当你在游戏的其他部分中需要传入一个类似游戏实体概念的对象及其所有内容时,依然可以使用它们。重要的是减少了性能开支的游戏循环避开了这些游戏实体而直接访问了其内部的数据。 + +## 包装数据 +假设我们在制作一个粒子系统。顺着上一部分的思路,我们将所有的粒子置入一个大的连续数组中,我们也将它做成一个类来看看: + +>注解: `ParticleSystem`类是根据[Object Pool](./06.3-Object Pool.md)模式为某个类型的对象集合创建的类。 + +```c++ +class Particle{public: void update() { /* Gravity, etc. ... */ } // Position, velocity, etc. ...};class ParticleSystem{public: ParticleSystem() : numParticles_(0) {} void update();private: static const int MAX_PARTICLES = 100000; int numParticles_; Particle particles_[MAX_PARTICLES];}; +``` + +同时粒子系统的一个简单的更新方法如下: + +```c++ +void ParticleSystem::update(){ for (int i = 0; i < numParticles_; i++) { particles_[i].update(); }} +``` + +但实际上我们并不需要总是更新所有的粒子。粒子系统维护一个固定大小的对象池,但它们并不总是同时都被激活而在屏幕上闪烁。下面的方法会更加合适: + +```c++ +for (int i = 0; i < numParticles_; i++){ if (particles_[i].isActive()) { particles_[i].update(); }} +``` + +我们赋予`Particle`类一个标志来表示其是否处于激活状态。在更新循环中,我们挨个粒子地检查其标志。这使得该标志随着对应粒子的其他数据一起被加载到缓存中。假如粒子并未被激活,那么我们就跳向下一个。这时将该粒子的其他数据加载到缓存中就是一种浪费。 + +活跃的粒子越少,我们就会越多次地在内存中跳转。假如粒子数组太大而活跃的粒子又太少,我们就回到了浪费缓存的起点。 + +将对象存入连续的数组,但我们实际处理的那些对象却并不连续时,这个办法就无效了。假如为了这些非活跃的粒子而要在内存中跳来跳去,那么我们就回到了问题的起点。 + +>注解: 懂得底层编程的人也许能看到更多的问题。为所有的粒子执行if判断将会引发CPU的[分支预测失准](http://en.wikipedia.org/wiki/Branch_misprediction)和[流水线停顿](http://publib.boulder.ibm.com/infocenter/zvm/v5r4/index.jsp?topic=/com.ibm.zvm.v54.dmsc5/stall.htm)。当代CPU中,单条指令实际上需要好几次时钟周期来完成。为了让CPU保持忙碌,指令被处理成流水线模式以便多条指令可以被并行地处理。 +> +为实现流水线模式,CPU必须猜测哪些指令接下来将会被执行。在顺序结构的代码中这很简单,但在控制流结构中,就麻烦了。当它执行相关的if语句时,它该猜测粒子是处于激活状态继而为其调用update()方法呢,还是猜测它未被激活而跳过它呢? +> +为了回答这个问题,芯片就进行分支预测——它分析前一次你的代码走向,然后猜想嗯这次也该这么走。但要是这些粒子按顺序一个激活一个未激活穿插地排列,那么预测就总是失败。 +> +当预测失败时,CPU要对先前投机执行的指令进行撤销(流水线清理)并重新执行正确的指令,这样的性能损耗在计算机运转过程中是很常见的,而这也是为什么你有时也会看到开发者们在关键代码中避开控制流语句。 + +再看看这小节的标题,我想你可能已经猜到了答案。我们将根据这个标志对粒子进行排序,而不是去判断这些标志。我们总是将那些被激活的例子维持在列表的前端。假如我们知道它们都处于激活状态,就根本不必去检测标志了。 + +我们也可以时刻跟踪被激活粒子的数目。这样我们就可以美化一下代码了: +```c++ +for (int i = 0; i < numActive_; i++){ particles[i].update();} +``` + +现在我们不跳过任何数据。每个塞进缓存的粒子都是被激活的,也都正是我们要处理的。 + +当然我可没说你得在每帧对整个粒子集合进行快速排序,这样是得不偿失的。我们希望的是时刻保持数组有序。 + +假设数组已经排好序——并且一开始所有的粒子都处于非激活状态。数组仅当某个粒子被激活或者反激活时处于乱序状态。我们很容易就能对这两种情况进行处理:当粒子被激活时,我们通过把它与数组中第一个未激活的例子进行交换来将其移动到所有激活粒子的末端: + +```c++ +void ParticleSystem::activateParticle(int index){ // Shouldn't already be active! assert(index >= numActive_); // Swap it with the first inactive particle // right after the active ones. Particle temp = particles_[numActive_]; particles_[numActive_] = particles_[index]; particles_[index] = temp; // Now there's one more. numActive_++;} +``` +反激活粒子就只要反其道而行之: + +```c++ +void ParticleSystem::deactivateParticle(int index){ // Shouldn't already be inactive! assert(index < numActive_); // There's one fewer. numActive_--; // Swap it with the last active particle // right before the inactive ones. Particle temp = particles_[numActive_]; particles_[numActive_] = particles_[index]; particles_[index] = temp;} +``` + +许多程序员(包括我在内)都很厌恶在内存中移动数据。把内存里的字节移来移去让人觉得比为指针分配内存开销更大。但当你再加上遍历指针的开销时,会发现我们的直觉有时会失灵。在某些情况下,假如你能保持缓存数据满,在内存中移动数据的开销是很小的。 + +>注解: 这将是当你做这类决定时可以参考的一个贴士 + +结论就是,我们可以保持粒子依照其激活状态有序,而无需保存激活状态本身。这可以通过粒子在数组中的位置和`numActive_`计数器来确定。这使得我们的粒子结构变小,也就意味着缓存线上能存储更多数据,从而提高速度。 + +当然并非万事都称心如意。正如你从API文档中看到的,我们在此放弃了许多面向对象的思想。`Particle`类不再控制其自身的状态,你也无法对粒子对象调用诸如`activate()`之类的方法因为它确定自身在数组内的索引(即无法确定自身激活状态)。而所有与激活粒子相关的代码都必须通过粒子系统来执行。 + +对于这样的情况,我倒是不介意`ParticleSystem`和`Particle`之间的紧关联。概念上我将它们视为由两个物理类组成的一个整体。当然这么说来,喷射和销毁粒子都是粒子系统的工作。 + +## 热/冷分解 +这是最后一个帮助你代码变得缓存友好的技术案例。假设我们为某个游戏实体配置了AI组件,其中包含了一些状态:它当前所播放的动画,它当前所走向的目标位置,能量值等等...总之这些是它在每帧都要检查和修改的量。如下: + +```c++ +class AIComponent{public: void update() { /* ... */ }private: Animation* animation_; double energy_; Vector goalPos_;}; +``` + +而它还存储着一些并非每帧都用到的处理意外情况的量。比如存储一些关于当这家伙被开枪打死后掉落宝物的数据。掉落数据仅仅在实体的生命周期结束时才被使用,我们将其置于上面的那些状态属性之后: + +```c++ +class AIComponent{public: void update() { /* ... */ }private: // Previous fields... LootType drop_; int minDrops_; int maxDrops_; double chanceOfDrop_;}; +``` + +假设我们采用前述方法,当更新这些AI组件时,我们遍历一个已经包装好,且连续的数组中的数据。然而这些数据中包含着所有的掉落信息。这使得每个组件都变得更庞大,也就导致我们在一条缓存线上能放入的组件更少。我们将引发更多的缓存未命中,因为我们遍历的总内存增加了。对每帧的每个组件,其掉落物品的数据都要被置入缓存,尽管我们根本不会去碰它们。 + +对此问题的解决办法我们称之为”热/冷分解”。其思路为将我们的数据结构划分为两部分。第一个部分为“热数据”,也就是我们每帧需要用到的数据,另一部分为”冷数据”,也就是并不会被频繁用到的那些剩余的数据。 + +这里我们的热数据为主AI组件。它是我们处理的关键,所以我们不希望通过指针来访问它。冷组件可以放到一边,但我们还是需要访问它,所以就为它分配一个指针,如下: + +```c++ +class AIComponent{public: // Methods...private: Animation* animation_; double energy_; Vector goalPos_; LootDrop* loot_;};class LootDrop{ friend class AIComponent; LootType drop_; int minDrops_; int maxDrops_; double chanceOfDrop_;}; +``` + +现在当我们遍历AI组件时,载入到缓存中的那些数据就是我们实际要处理的(当然指向冷数据的那部分的指针是一个小小的意外) + +>注解: 可以通过维护两个平行的数组分别存放冷热数据,来抛弃这个指针,接着我们可以让两个数组中同一组件的索引保持一致,以便通过热数据数组的索引来访问对应的冷数据 + +然而你将会开始对冷热觉得有些模糊。我这里的例子其数据的冷热之分是明显的,但实际游戏中很少有这样鲜明的划分。如果某些实体在某个模式下需要这部分数据而在其他模式下无需这些数据该怎么办?或者它们只是在某个等级阶段使用这些数据呢? + +做这样的优化就像是在挖老鼠洞和黑色艺术之间徘徊。我们很容易花费大量陷在对数据与速度的测试上,但要相信你的努力总会换来收获的。 + +## 设计中的一些考虑 +这种设计模式更适合叫做一种思维模式。它提醒着你,数据的组织方式乃是游戏性能的一个关键部分。这一块的实际拓展空间很大,你可以让你的数据区域化影响到游戏的整个架构,又或者它只是应用在一些核心模块的数据结构上。 + +对这一模式的应用,你最需要关心的就是该何时何地使用它。而随着这个问题我们也会看到一些新的顾虑。 + +>注解: Noel Llopis在他的[著作](http://gamesfromwithin.com/data-oriented-design)中称此为”面相数据的设计模式”,这让许多人开始思考如何在游戏中利用缓存。 + +## 你如何处理多态? +就这一点,我们此前避开了子类进程和虚方法,并假设我们已经将同质的对象都很好地置入了数组,此时我们知道它们每个的尺寸都一样大。然而多态和方法的动态调用也是非常有用的工具,我们如何来在二者之间进行协调? + +- 避开继承 + + 最简单的方法就是避开子类化,或者说至少在你进行缓存优化的地方避开继承。软件工程中也较为排斥重度的继承。 + + >注解: 如果想避开子类继承而保持多态的灵活性,那么可以使用[Type Object](./04.3-Type Object.md)模式。 + + - 这安全而容易。你知道自己正在处理什么类,而且显然所有的对象其尺度都是一样的。 + + - 这样速度很快。方法的动态调用意味着在vtable中寻找实际需要调用的方法,并通过指针来访问实际代码,由于此操作在不同硬件平台呈现很大的性能差异,故动态调用意味着一些开销。 + + >注解: 当然还是那句话,反事没有绝对。在许多情况下,c++编译器需要使用间接引用来调用一个虚函数。但在某些情况下,当编译器知道调用者的确切类型时,它会进行非虚拟化来静态调用正确的方法。非虚拟化在诸如Java和JavaScript这类实时编译语言中更为常见。 + + - 这样灵活性差。当然,我们使用方法动态调用的原因正是在于它能够给与我们强大的对象多态能力,让对象表现出不同的行为。假如你希望游戏中的不同实体拥有各自的渲染风格或者特殊的移动与攻击等表现,虚方法正是为此而准备的。想要避免使用虚方法而做到这一点,那你可能就要维护一个庞大的switch逻辑块,很快你就会陷入混乱。 + +- 为不同的对象类型使用相互独立的数组。 + + 我们使用多态来实现在对象类型未知的情况下调用其行为。换句话说,我们有个装着一堆对象的包,我们希望当我们一声令下时它们能够各做各的事情。但这带来的问题是,为什么从一个龙蛇混杂的背包开始,而不是维护一系列按照类型分放的集合? + + - 这样的一系列集合让对象紧密地封包。由于每个数组仅包含一个类型的对象,也就不存在填充或者其他古怪了。 + + + - 你可以进行静态的调用分发。你能按照类型将对象划分,也就不再需要多态了,你可以进行常规的,非虚的方法调用。 + + - 你必须时刻追踪这些集合。假如你有许多不同类型的对象,那么逐个维护这些数组集合的繁杂工作将是复杂而代价高昂的。 + + - 你必须注意每一个类型,由于你要维护每个类型的对象集合,你无法从这些类型集合中解耦它们。多态的一个神奇作用就在于它是可扩展的,通过使用接口来进行外部操作,多态将调用这些接口的代码从潜在的那些类型(它们均实现这一接口)中完全地解耦出来。 + +- 使用指针集合 + + 假如你不担心缓存的性能,那么这自然是个好办法。你只需维护一个指向基类或接口的指针数组,你可以很好地利用多态性,而且对象的大小也无须一致。 + + - 这样做灵活性高。只要能适配接口,访问这个集合的代码就能够处理你关心的任何类型的对象。这是完全可扩展的。 + + - 这样做并不缓存友好。当然,我们在此讨论其他方案的原因就在于解决这样指针间接访问数据的缓存不友好局面,然而请记住,如果这些代码并不对性能苛求,使用多态是完全没问题的。 + +## 游戏实体是如何定义的? +假如你将本模式与[Component](./05.1-Component.md)模式一起使用,你将会拥有一系列相邻的组件数组来组成你的游戏实体。游戏循环直接对组件数组进行迭代,也就是说实体本身是不重要的,当然在游戏的其他代码模块你还是可能会需要这些概念性的实体。 + +接下来问题是这该如何表现?实体如何跟踪自己的组件? + +- 假如游戏实体通过类中的指针来索引其组件: + + 我们的第一个例子看起来就是如此。这是相对普通的面向对象的办法。你有一个GameEntity类,而它内部有指向其组件的指针。由于它们只是指针,故它们并不知道那些组件在内存中的确切位置或者它们是如何组织的。 + + - 你可以将组件存于相邻的数组中。由于游戏实体并不关心组件的存储,你可以将它们组织到一个封包过的数组中来对迭代过程进行优化。 + + - 对于给定实体,你可以很容易地获取它的组件。只需通过指针访问即可。 + + - 这样在内存中移动组件很困难。当组件被启用或禁用时,你可能会希望将这些组件进行移动以保持那些激活的组件总排在数组的前端并彼此相邻。假如你移动一个与某实体通过裸指针关联的组件,你可能一不小心就会弄坏这一指针关联。你必须确保同时对实体的相应指针进行更新。 + +- 假如游戏实体通过一系列ID来索引其组件: + - 在内存中移动指向组件的裸指针是一大挑战。你可以使用更抽象的表示来取代指针:一个能够检索到指定组件的ID或索引。 + + ID的实际语义以及索引的过程完全取决于你。可能是简单地为每个组件存储一个唯一ID并进行数组遍历,也可能是在一个哈希表上将ID对组件所在的数组索引进行映射。 + + - 这更加地复杂。你的ID系统无需做到过度复杂,但总得比直接使用指针要麻烦。你需要实现并调试它,当然用id记录也需要额外的内存空间。 + + - 这样做更慢。要想比遍历裸指针速度更快是很难的。通过实体获取其组件的过程将涉及到哈希查找等问题。 + + - 你需要访问组件管理器。最简单的想法就是用一些抽象的ID来定义组件。你可以通过它来获取到实际的组件对象。但为了做到正确索引,你必须让这些id有办法对应到组件上。这也就是存储着你组件数组的那个管理类所要做的。 + + 使用裸指针,假如你有一个游戏实体,你就可以找到其组件。而使用ID的方法,你则需要同时对游戏实体和组件进行注册。 + + >注解: 你可能会想,我只需要写个单例就完事了!嗯,只能说部分情况是的。你可以先点开[这篇文章](./02.5-Singleton.md)看看。 + +- 假如游戏实体本身就只是个ID + + 这是一些新的游戏引擎所采用的风格。一旦你将你游戏实体的所有行为和状态从主类移动到组件中,那游戏实体还剩什么呢?结果是剩不了什么,游戏实体唯一做的就是将自己与其组件绑定。它的存在就意味着其AI,物理和渲染组件构成了这个游戏世界中的实体。 + + 这一点很重要,因为组件之间要进行交互。渲染组件需要知道实体位于何处,而这个位置信息就很可能位于其物理组件中。AI希望移动实体,于是它需要对物理组件施加一个力。在一个实体内,需要为每个组件提供一个访问其兄弟组件的办法。 + + 某些聪明人意识到我们所需要的就是个ID。这使得组件能知道它所属的实体是哪个,而不是让实体来确定其组件位置。当AI组件需要其同属实体的物理组件时,它只需访问与自身相同实体ID的那个物理组件即可。 + + - 你的游戏实体类完全消失了,取而代之的是一个优雅的数值包装。 + + 实体变得很小。当你需要传入一个实体的引用时,你只需传入一个数值。 + + 实体类本身是空的。当然这一方法的负面是你必须把所有东西都扫出游戏实体。你不再有地方来存放那些非组件构成的实体状态和行为。这样做更加依赖于Component模式。 + + - 你无须管理其生命周期。由于现在实体只是某些内置类型的值,它们无需进行显式的分配或释放。实际上当某个实体的所有组件都销毁时,这个实体也就随之自动消失了。 + + - 检索一个实体的所有组件会很慢。这与前一个方案的问题类似,但处于相反的一面。为某个实体寻找其组件,你需要对一个对象进行ID映射,这个过程会带来开销。 + + - 这一次性能方面也存在着问题。组件在更新过程中频繁与其兄弟组件交互,于是你需要频繁地检索组件。一个解决方案是将实体的ID对应为其组件所在数组的索引。 + + 假如所有的实体都包含相同的组件集,那么你的组件数组之间是完全平行的。AI组件数组中的第三个组件将与物理组件数组中的第三个组件对应着同一个实体。 + + 请牢记,这个办法迫使你保持这些数组平行。当你希望对数组进行排序或者按照某种规则进行封包时就很难做到平行了,你的某些实体可能禁用了物理引擎,而其他的实体不可见。在保持它们平行的情况下,你无法兼顾物理组件和渲染组件来同时满足这两种情况。 + +## 参考 + +- 本章节的许多内容涉及到[Component](./05.1-Component.md)模式,而此模式中的数据结构是在优化缓存使用时几乎最常用的。事实上,使用组件模式使得这一优化更加简单。因为实体一次只是更新他们的一个域(AI模块,物理模块等等),将这些模块划分为组件使得你可以将一系列实体合理地划为缓存友好的几部分。 +- 但这并不意味着你只能选择组件模式实现本模式!不论何时你遇到涉及大量数据的性能问题,考虑数据的区域化都是很重要的。 +- Tony Albrecht著的“[Pitfalls of Object-Oriented Programming](http://research.scee.net/files/presentations/gcapaustralia09/Pitfalls_of_Object_Oriented_Programming_GCAP_09.pdf)”一书大概是介绍关于游戏内数据结构设计来实现缓存友好性的材料中最被广泛阅读的了。它使得许多人(包括我!)意识到这样对数据结构的设计是多么地重要。 +- 与此同时,Noel Llopis就同一话题撰写了一篇广为流传的[博客](http://gamesfromwithin.com/data-oriented-design)。 +- 本设计模式几乎完全地利用了一个同类型对象的连续数组。随着时间流逝,你将会往这个数组中添加和移除对象。[Object Pool](./06.3-Object Pool.md)模式恰恰阐释了这一内容。 +- [Artemis](http://gamadu.com/artemis/)游戏引擎是首个也是最为知名的对游戏实体使用简单ID的框架。 \ No newline at end of file From 0c6bfd92e650cd677d9bc7b7e6037f6d4c123b04 Mon Sep 17 00:00:00 2001 From: kislyl <1131985199@qq.com> Date: Mon, 20 Oct 2014 16:40:05 +0800 Subject: [PATCH 045/123] Update 06.1-Data Locality.md --- 06.1-Data Locality.md | 221 +++++++++++++++++++++++++++++++++++++++--- 1 file changed, 205 insertions(+), 16 deletions(-) diff --git a/06.1-Data Locality.md b/06.1-Data Locality.md index c8e7e24..49bdc2c 100644 --- a/06.1-Data Locality.md +++ b/06.1-Data Locality.md @@ -61,7 +61,11 @@ 当缓存未命中时,CPU就停止运转:它因为缺少数据而无法执行下一条指令。CPU坐在地上进行几百次空循环发呆,直到取得数据。我们的任务就是避免这一情况发生。设想你正试图通过改进一些关键性的游戏代码来提高性能,比如下面这样: ```c++ -for (int i = 0; i < NUM_THINGS; i++){ sleepFor500Cycles(); things[i].doStuff();} + for (int i = 0; i < NUM_THINGS; i++) + { + sleepFor500Cycles(); + things[i].doStuff(); + } ``` 对这段代码你首先可以做些啥?是的,显然循环里的函数调用开销很大。这样的调用等价于缓存未命中带来的性能损失。每次跳入主存中,就意味着往你的代码里塞了一段延时。 @@ -119,14 +123,54 @@ for (int i = 0; i < NUM_THINGS; i++){ sleepFor500Cycles(); things[i].doStuff() ## 连续的数组 让我们从一个处理一系列游戏实体的游戏循环([Game loop](./03.2-Game Loop.md))开始。每个实体通过组件模式([Component](./05.1-Component.md))被拆解为不同的部分:AI,物理,渲染。`GameEntity`类如下: ```c++ -class GameEntity{public: GameEntity(AIComponent* ai, PhysicsComponent* physics, RenderComponent* render) : ai_(ai), physics_(physics), render_(render) {} AIComponent* ai() { return ai_; } PhysicsComponent* physics() { return physics_; } RenderComponent* render() { return render_; }private: AIComponent* ai_; PhysicsComponent* physics_; RenderComponent* render_;}; +class GameEntity +{ +public: + GameEntity(AIComponent* ai, + PhysicsComponent* physics, + RenderComponent* render) + : ai_(ai), physics_(physics), render_(render) + {} + + AIComponent* ai() { return ai_; } + PhysicsComponent* physics() { return physics_; } + RenderComponent* render() { return render_; } +private: + AIComponent* ai_; + PhysicsComponent* physics_; + RenderComponent* render_; +}; ``` 每个组件都包含一系列相关的状态属性,或许是一些向量或矩阵,且组件具有一个更新这些状态的方法。在此其细节并不重要,但我们可以根据这些粗略设想出如下的组件结构: >注解: 正如其名,这些例子正是来自[Update Method](./03.3-Update Method.md)模式。甚至连render()方法也采用这一模式,只是换了个名字而已。 ```c++ -class AIComponent{public: void update() { /* Work with and modify state... */ }private: // Goals, mood, etc. ...};class PhysicsComponent{public: void update() { /* Work with and modify state... */ }private: // Rigid body, velocity, mass, etc. ...};class RenderComponent{public: void render() { /* Work with and modify state... */ }private: // Mesh, textures, shaders, etc. ...}; +class AIComponent +{ +public: + void update() { /* Work with and modify state... */ } +private: + // Goals, mood, etc. ... +}; + +class PhysicsComponent +{ +public: + void update(){ /* Work with and modify state... */ } + +private: + // Rigid body, velocity, mass, etc. ... +}; + +class RenderComponent +{ +public: + void render() { /* Work with and modify state... */ } + +private: + // Mesh, textures, shaders, etc. ... +}; ``` 游戏维护一个很大的指针数组,它们包含了对游戏世界中所有实体的引用。每次游戏循环我们需要做以下工作: @@ -138,7 +182,28 @@ class AIComponent{public: void update() { /* Work with and modify state... */ } 许多游戏实体将这样进行实现: ```c++ -while (!gameOver){ // Process AI. for (int i = 0; i < numEntities; i++) { entities[i]->ai()->update(); } // Update physics. for (int i = 0; i < numEntities; i++) { entities[i]->physics()->update(); } // Draw to screen. for (int i = 0; i < numEntities; i++) { entities[i]->render()->render(); } // Other game loop machinery for timing...} +while (!gameOver) +{ + // Process AI. + for (int i = 0; i < numEntities; i++) + { + entities[i]->ai()->update(); + } + + // Update physics. + for (int i = 0; i < numEntities; i++) + { + entities[i]->physics()->update(); + } + + // Draw to screen. + for (int i = 0; i < numEntities; i++) + { + entities[i]->render()->render(); + } + + // Other game loop machinery for timing... +} ``` 在你耳闻CPU缓存机制之前,上面的代码看不出什么毛病。但现在,我想你已经察觉到有些不妥了。这样的代码不仅伤害着缓存,甚至将它来回给搅成了一团浆糊。看看它都干了些啥吧: @@ -162,14 +227,40 @@ while (!gameOver){ // Process AI. for (int i = 0; i < numEntities; i++) { 为了对这一堆游戏实体以及散乱在地址空间各个角落的组件做改进,我们将从头来过——我们有一个容纳着各类组件的大数组:存放所有AI组件的一维数组,当然还有存放物理和渲染组件的数组,如下: ```c++ -AIComponent* aiComponents = new AIComponent[MAX_ENTITIES];PhysicsComponent* physicsComponents = new PhysicsComponent[MAX_ENTITIES];RenderComponent* renderComponents = new RenderComponent[MAX_ENTITIES]; +AIComponent* aiComponents = + new AIComponent[MAX_ENTITIES]; +PhysicsComponent* physicsComponents = + new PhysicsComponent[MAX_ENTITIES]; +RenderComponent* renderComponents = + new RenderComponent[MAX_ENTITIES]; ``` >注解: 在关于使用组件模式我最反感的一点就是component这个词的长度... 这里需要强调一下,这些是存储组件的数组而非组件指针的数组。数组里直接包含了所有组件的实际数据,逐个字节地在内存中分布。游戏循环可以直接遍历它们: ```c++ -while (!gameOver){ // Process AI. for (int i = 0; i < numEntities; i++) { aiComponents[i].update(); } // Update physics. for (int i = 0; i < numEntities; i++) { physicsComponents[i].update(); } // Draw to screen. for (int i = 0; i < numEntities; i++) { renderComponents[i].render(); } // Other game loop machinery for timing...} +while (!gameOver) +{ + // Process AI. + for (int i = 0; i < numEntities; i++) + { + aiComponents[i].update(); + } + + // Update physics. + for (int i = 0; i < numEntities; i++) + { + physicsComponents[i].update(); + } + + // Draw to screen. + for (int i = 0; i < numEntities; i++) + { + renderComponents[i].render(); + } + + // Other game loop machinery for timing... +} ``` >注解: 我们会注意到在新的代码里我们已经不再使用”->”操作符,假如你希望增强数据的区域性,就尽可能想办法去掉那些间接性的(尤其是指针的)操作吧。 @@ -187,19 +278,49 @@ while (!gameOver){ // Process AI. for (int i = 0; i < numEntities; i++) { >注解: `ParticleSystem`类是根据[Object Pool](./06.3-Object Pool.md)模式为某个类型的对象集合创建的类。 ```c++ -class Particle{public: void update() { /* Gravity, etc. ... */ } // Position, velocity, etc. ...};class ParticleSystem{public: ParticleSystem() : numParticles_(0) {} void update();private: static const int MAX_PARTICLES = 100000; int numParticles_; Particle particles_[MAX_PARTICLES];}; +class Particle +{ +public: + void update() { /* Gravity, etc. ... */ } + // Position, velocity, etc. ... +}; + +class ParticleSystem +{ +public: + ParticleSystem() + : numParticles_(0) + {} + + void update(); +private: + static const int MAX_PARTICLES = 100000; + int numParticles_; Particle particles_[MAX_PARTICLES]; +}; ``` 同时粒子系统的一个简单的更新方法如下: ```c++ -void ParticleSystem::update(){ for (int i = 0; i < numParticles_; i++) { particles_[i].update(); }} +void ParticleSystem::update() +{ + for (int i = 0; i < numParticles_; i++) + { + particles_[i].update(); + } +} ``` 但实际上我们并不需要总是更新所有的粒子。粒子系统维护一个固定大小的对象池,但它们并不总是同时都被激活而在屏幕上闪烁。下面的方法会更加合适: ```c++ -for (int i = 0; i < numParticles_; i++){ if (particles_[i].isActive()) { particles_[i].update(); }} +for (int i = 0; i < numParticles_; i++) +{ + if (particles_[i].isActive()) + { + particles_[i].update(); + } +} ``` 我们赋予`Particle`类一个标志来表示其是否处于激活状态。在更新循环中,我们挨个粒子地检查其标志。这使得该标志随着对应粒子的其他数据一起被加载到缓存中。假如粒子并未被激活,那么我们就跳向下一个。这时将该粒子的其他数据加载到缓存中就是一种浪费。 @@ -220,7 +341,10 @@ for (int i = 0; i < numParticles_; i++){ if (particles_[i].isActive()) { pa 我们也可以时刻跟踪被激活粒子的数目。这样我们就可以美化一下代码了: ```c++ -for (int i = 0; i < numActive_; i++){ particles[i].update();} +for (int i = 0; i < numActive_; i++) +{ + particles[i].update(); +} ``` 现在我们不跳过任何数据。每个塞进缓存的粒子都是被激活的,也都正是我们要处理的。 @@ -230,12 +354,38 @@ for (int i = 0; i < numActive_; i++){ particles[i].update();} 假设数组已经排好序——并且一开始所有的粒子都处于非激活状态。数组仅当某个粒子被激活或者反激活时处于乱序状态。我们很容易就能对这两种情况进行处理:当粒子被激活时,我们通过把它与数组中第一个未激活的例子进行交换来将其移动到所有激活粒子的末端: ```c++ -void ParticleSystem::activateParticle(int index){ // Shouldn't already be active! assert(index >= numActive_); // Swap it with the first inactive particle // right after the active ones. Particle temp = particles_[numActive_]; particles_[numActive_] = particles_[index]; particles_[index] = temp; // Now there's one more. numActive_++;} +void ParticleSystem::activateParticle(int index) +{ + // Shouldn't already be active! + assert(index >= numActive_); + + // Swap it with the first inactive particle + // right after the active ones. + Particle temp = particles_[numActive_]; + particles_[numActive_] = particles_[index]; + particles_[index] = temp; + + // Now there's one more. + numActive_++; +} ``` 反激活粒子就只要反其道而行之: ```c++ -void ParticleSystem::deactivateParticle(int index){ // Shouldn't already be inactive! assert(index < numActive_); // There's one fewer. numActive_--; // Swap it with the last active particle // right before the inactive ones. Particle temp = particles_[numActive_]; particles_[numActive_] = particles_[index]; particles_[index] = temp;} +void ParticleSystem::deactivateParticle(int index) +{ + // Shouldn't already be inactive! + assert(index < numActive_); + + // There's one fewer. + numActive_--; + + // Swap it with the last active particle + // right before the inactive ones. + Particle temp = particles_[numActive_]; + particles_[numActive_] = particles_[index]; + particles_[index] = temp; +} ``` 许多程序员(包括我在内)都很厌恶在内存中移动数据。把内存里的字节移来移去让人觉得比为指针分配内存开销更大。但当你再加上遍历指针的开销时,会发现我们的直觉有时会失灵。在某些情况下,假如你能保持缓存数据满,在内存中移动数据的开销是很小的。 @@ -252,13 +402,33 @@ void ParticleSystem::deactivateParticle(int index){ // Shouldn't already be ina 这是最后一个帮助你代码变得缓存友好的技术案例。假设我们为某个游戏实体配置了AI组件,其中包含了一些状态:它当前所播放的动画,它当前所走向的目标位置,能量值等等...总之这些是它在每帧都要检查和修改的量。如下: ```c++ -class AIComponent{public: void update() { /* ... */ }private: Animation* animation_; double energy_; Vector goalPos_;}; +class AIComponent +{ +public: + void update() { /* ... */ } + +private: + Animation* animation_; + double energy_; + Vector goalPos_; +}; ``` 而它还存储着一些并非每帧都用到的处理意外情况的量。比如存储一些关于当这家伙被开枪打死后掉落宝物的数据。掉落数据仅仅在实体的生命周期结束时才被使用,我们将其置于上面的那些状态属性之后: ```c++ -class AIComponent{public: void update() { /* ... */ }private: // Previous fields... LootType drop_; int minDrops_; int maxDrops_; double chanceOfDrop_;}; +class AIComponent +{ +public: + void update() { /* ... */ } + +private: + // Previous fields... + LootType drop_; + int minDrops_; + int maxDrops_; + double chanceOfDrop_; +}; ``` 假设我们采用前述方法,当更新这些AI组件时,我们遍历一个已经包装好,且连续的数组中的数据。然而这些数据中包含着所有的掉落信息。这使得每个组件都变得更庞大,也就导致我们在一条缓存线上能放入的组件更少。我们将引发更多的缓存未命中,因为我们遍历的总内存增加了。对每帧的每个组件,其掉落物品的数据都要被置入缓存,尽管我们根本不会去碰它们。 @@ -268,7 +438,26 @@ class AIComponent{public: void update() { /* ... */ }private: // Previous fiel 这里我们的热数据为主AI组件。它是我们处理的关键,所以我们不希望通过指针来访问它。冷组件可以放到一边,但我们还是需要访问它,所以就为它分配一个指针,如下: ```c++ -class AIComponent{public: // Methods...private: Animation* animation_; double energy_; Vector goalPos_; LootDrop* loot_;};class LootDrop{ friend class AIComponent; LootType drop_; int minDrops_; int maxDrops_; double chanceOfDrop_;}; +class AIComponent +{ +public: + // Methods... + +private: + Animation* animation_; + double energy_; + Vector goalPos_; + LootDrop* loot_; +}; + +class LootDrop +{ + friend class AIComponent; + LootType drop_; + int minDrops_; + int maxDrops_; + double chanceOfDrop_; +}; ``` 现在当我们遍历AI组件时,载入到缓存中的那些数据就是我们实际要处理的(当然指向冷数据的那部分的指针是一个小小的意外) @@ -385,4 +574,4 @@ class AIComponent{public: // Methods...private: Animation* animation_; double - Tony Albrecht著的“[Pitfalls of Object-Oriented Programming](http://research.scee.net/files/presentations/gcapaustralia09/Pitfalls_of_Object_Oriented_Programming_GCAP_09.pdf)”一书大概是介绍关于游戏内数据结构设计来实现缓存友好性的材料中最被广泛阅读的了。它使得许多人(包括我!)意识到这样对数据结构的设计是多么地重要。 - 与此同时,Noel Llopis就同一话题撰写了一篇广为流传的[博客](http://gamesfromwithin.com/data-oriented-design)。 - 本设计模式几乎完全地利用了一个同类型对象的连续数组。随着时间流逝,你将会往这个数组中添加和移除对象。[Object Pool](./06.3-Object Pool.md)模式恰恰阐释了这一内容。 -- [Artemis](http://gamadu.com/artemis/)游戏引擎是首个也是最为知名的对游戏实体使用简单ID的框架。 \ No newline at end of file +- [Artemis](http://gamadu.com/artemis/)游戏引擎是首个也是最为知名的对游戏实体使用简单ID的框架。 From 995f43a64d736e22b0b3cb3eff98c5dbf8f2354a Mon Sep 17 00:00:00 2001 From: kislyl <1131985199@qq.com> Date: Tue, 21 Oct 2014 10:55:16 +0800 Subject: [PATCH 046/123] =?UTF-8?q?Double=20Buffer=E7=BF=BB=E8=AF=91?= =?UTF-8?q?=E5=88=9D=E7=A8=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 03.1-Double Buffer.md | 219 +++++++++++++++++++++++++++++++++++++++++- 1 file changed, 217 insertions(+), 2 deletions(-) diff --git a/03.1-Double Buffer.md b/03.1-Double Buffer.md index 8036c6f..21faed4 100644 --- a/03.1-Double Buffer.md +++ b/03.1-Double Buffer.md @@ -1,2 +1,217 @@ -Double Buffer -============================ +# 双缓冲模式 +## + +## 目的 +进行一系列序列化操作来表现出瞬发性或同步性。 +## 动机 +计算机的心脏里藏着凶残的序列化处理能力。其力量源于它们能够将庞大的任务分解为许多细小的步骤以便逐个处理。 尽管通常对于我们的用户而言,他们希望看到的是问题能够即刻被处理,或者多个任务能同时被执行。 + +>注解: 虽然线程和多核技术在不断进步,但即便在多核环境下,也仅有少数操作能真正同步地执行 + +举个典型的例子,每个游戏引擎所必会涉及的——渲染。当引擎为用户渲染出可见的世界时,它是分步骤来完成渲染任务的:远处的山峰,起伏的山脉,树木,这些被轮流渲染。假如用户也跟着逐步地观察引擎的渲染,那么这个连续游戏世界的幻像将会破碎。场景必须快速而平滑地进行更新,显示一系列完整的帧,而每帧都应当瞬间显示出来。 + +双缓冲模式解决了上述问题,但为便于理解,首先让我们回顾一下计算机是如何显示图形的。 + +##计算机图形系统工作原理概述 +诸如计算机显示屏的显示设备在每一时刻仅绘制一个像素。显示设备从左至右地扫描屏幕第一行的每个像素,并如此从上至下地扫描屏幕上的每一行。直到扫描至屏幕的右下角,它将重置回屏幕地左上角并如前述那样地重复扫描屏幕。这一扫描过程是如此地快速(大概每秒60次),以至于我们的眼睛无法察觉这一过程。于我们而言,扫描的结果就是一块静态的彩色像素区域,即一张图片。 + +>注解: 这样的阐述不太妥当——它过于简单了。假如你从事底层硬件开发我想你大概已经笑了,你可以轻松地跳过后面的部分,并完全能够理解本章余下的内容。但假如你并非这样的人物,那么在此我的目的是给予你足够的背景知识以便你能理解我们随后要讨论的设计模式。 + +你可以将上述过程想象成一根细小的软管在向显示区域不断喷洒出像素。单个颜色像素到达软管的末端,软管将它们喷射到显示区域中,每次往每个像素上喷洒一点。那么它如何知道哪个像素该往哪喷呢? + +在多数计算机中答案是:它从帧缓冲区(framebuffer)中获知这些信息。帧缓冲区是一块内存,是存储着像素的数组(它是RAM中的一个块,其中每两个字节表示一个像素)。当软管往显示区域喷洒时,它从这个数组中读取颜色值,每次读取1字节。 + +>注解: 字节值与颜色之间的特殊映射关系是通过系统中的像素格式以及色彩深度来描述的。在当今的多数控制台游戏平台,每个像素占32位:红绿蓝色彩通道各占8位,剩余的8位则用于其他多种用途。 + +基本上讲,为了让游戏在屏幕上显示出来,我们只需要往这个数组里写东西。我们熬夜折腾出来的那些先进图形算法,其根本都只是在往帧缓冲区里设置字节的值。但这里有个小问题。 + +前面我说计算机的处理是序列化的。假设计算机正在处理我们的一段渲染代码,我们便不希望计算机同时在做其他不相干的事。这几乎是对的,然而在我们的程序运行过程中间还是会穿插着许多其他的事情:比如当我们的游戏在运行时,显示设备会从帧缓存中读取内存中的像素信息。这就为我们带来了问题。 + +比如我们希望在屏幕上显示一张笑脸。我们的程序开始循环访问帧缓存并对像素进行渲染。出乎我们意料的是,显卡正是在我们往帧缓存中写入数据的同时进行数据读取的。一开始它扫描到那些我们已经写入的数据,笑脸便开始在屏幕上浮现,但它渐渐超过我们的写入速度而访问了帧缓存中那些未写入数据的部分——悲惨的结局,屏幕上留下了一个半成品,这是个能看得一清二楚的BUG。 +![](http://gameprogrammingpatterns.com/images/double-buffer-tearing.png) +>注解: 如图,我们在显卡设备开始从帧缓存读取数据的同时进行像素数据的写入(图16.1)。最终显卡赶上并超过了渲染器并访问了我们尚未写入数据的帧缓存区域(图16.2)。我们结束绘制(图16.3)时,那些在被显卡读取后才写入的数据就没有被它读取到。结果用户看到的是渲染的半成品(图16.4)。我称它是”哭丧脸“——笑脸的下半边像是被撕掉了一样。 + +这就是我们需要本设计模式的原因。我们的程序一次性渲染所有的像素,同时我们要求显示器也一次性将其显示出来——可能这一帧看不到任何东西,但下一帧显示的就是完整的笑脸。双缓冲解决了这一问题。下面我会以类比的形式来阐述。 + +##场景1,幕1 +设想我们的用户正在观看我们创作的一场表演。当第一个场景谢幕后第二个场景跟着上映,这时候我们需要切换场景。如果我们在场景后台控制舞台管理设备直接开始收起场景道具,那么场景在视觉上的连续性会被破坏。我们可以在收拾场景的同时将灯光变暗(这也正是影剧院所做的),而观众们依然知道黑暗中戏剧仍在继续。我们希望在剧幕之间不会产生间隙。 + +在资源允许的情况下,我们想到了这个好办法:我们建立两个舞台以便它们都能为观众所见。它们各有各的光源设置。我们称其为A舞台和B舞台。场景1正在A舞台上上演,同时舞台B正处在黑暗中并正由场景后台进行着场景2的准备。一旦场景1结束,我们就关掉A舞台的灯光并将灯光转移到B舞台,观众们便立即聚焦到新舞台并看到了第二幕场景上映。 + +与此同时,我们的场景后台正在清理舞台A,它清理场景1并为场景3做准备。一旦场景2结束,我们再将光线聚焦到A舞台上。我们在整场表演过程中重复上述过程,将黑暗中的舞台作为工作区来为下个场景做准备。每次场景切换,我们只是将灯光在两个舞台之间来回切换。我们的观众于是就看到了衔接流畅而无缝的场景转换。他们从不会看到舞台的后台。 + +>注解: 借助单面镜以及其他一些巧妙的布局,实际上你能够在同一个舞台进行场景之间的无缝切换。当灯光转移时,观众们可能会聚焦到另一个舞台上,但他们并不一定要转移视线。如何做到这一点就留给读者思考吧。 + +##回到图形上 +上面就是双缓冲的工作原理,你所见到的任何一款游戏其渲染系统中都重复着这样的过程,我们也是。如我们所类比的,双缓冲中的一个缓存用于展示当前帧,即A舞台。它就是显示硬件读取像素数据的地方,GPU对其进行扫描,整个缓冲区的数据都是它的。 + +>注解: 然而并非所有的游戏和控制台都这么做。早前比较简单的控制台游戏受到内存的局限,小心翼翼地将渲染与机器刷新操作进行同步来取代双缓冲,这可是要技巧的。 + +于此同时,我们的渲染代码正在往另一个帧缓冲区中写入数据,它就是我们黑暗中的B舞台。当渲染代码完成场景2的渲染时,它通过交换两个缓冲区来”切换光线”。这使得显卡驱动开始从第一个缓冲区转向第二个缓冲区以读取其数据。只要它掌握好时机在每次刷新显示结束时进行切换,我们就不会看到任何衔接的裂隙,且整个场景能一次性显示出来。这时候,旧的帧缓冲变得可用了,我们就开始往它的内存区域渲染入下一帧。这真棒! + +##双缓冲设计模式 +定义一个缓冲区类来代表一个缓冲区:一系列能被修改的状态。这块缓冲区能被一步步地修改,但我们希望任何外部的代码对该缓冲区的修改都是原子操作。为实现这一点,此类中维护两个缓冲区实例:当前缓冲区和后台缓冲区。 + +当要从缓冲区中读取信息时,总是从当前缓冲区读取。当要往缓冲区中写数据时,则总在后台缓冲区上进行。当改动完成后,则执行”交换”操作来讲当前缓冲区与后台缓冲区交换,以便让新的缓冲区为我们所见,同时刚被换下来的当前缓冲区则成为现在的后台缓冲区以供复用。 + +##使用情境 +这是个到需要时你自然会想起的设计模式之一。假如你的系统不支持双缓冲,那么显然是没法用了(比如会出现”撕裂”现象),或者显示将表现出异常。但是说”需要的时候你自然会想起”还是太宽泛了,更准确地说,当下面这些条件都成立时,适用双缓冲模式: + +- 我们需要维护一些能够不断被修改的状态量。 +- 同个状态可能会在其被修改的同时被访问到。 +- 我们希望改变状态的工作进程对正在访问这些状态的外部代码透明。 +- 我们希望能够读取到这些状态,而无需在其被写入时等待。 +##使用须知 +不同于其他大架构的设计模式,双缓冲模式的实现处于较底层。因此,它对代码库的影响较少——甚至多数游戏都不会在意这些差别。当然,下面这些附加说明还是值得一提的。 +##交换操作本身是耗时的 +双缓冲模式需要在状态写入完成后进行一个交换缓冲区的动作。这个操作必须是原子性的:也就是说任何代码都无法在这个操作其间对任何一块缓冲区内的状态进行访问。通常这个交换过程和分配一个指针的速度差不多,但万一交换花去了比修改初始状态更多的时间,那这模式就毫无助益了。 +##必须要有两个缓冲区 +使用此模式的另一结果是导致内存占用率增加。正如其名,此模式要求你在任何时刻都维护着两份存储着状态的内存区域。在内存受限的硬件上,这可是个很苛刻的要求。假如你无法分配出两份内存,你就必须想其他办法来避免你的状态在修改时被访问。 + +##例子 +说完理论,让我们来结合实践,看看它是如何工作的。我们将写一个及其简单的图形系统以供我们在帧缓存上绘制像素。在多数控制台和PC上,显卡驱动提供了这一底层部分的图形系统,而这里通过手动实现它,我们将能窥其全貌。首先是缓冲区: +```c++ +class Framebuffer +{public: Framebuffer() { clear(); } void clear() { for (int i = 0; i < WIDTH * HEIGHT; i++) { pixels_[i] = WHITE; } } void draw(int x, int y) { pixels_[(WIDTH * y) + x] = BLACK; } const char* getPixels() { return pixels_; }private: static const int WIDTH = 160; static const int HEIGHT = 120; char pixels_[WIDTH * HEIGHT];}; +``` +缓冲区拥有一些基本操作:将整个缓冲区清理为默认颜色,对指定位置的像素颜色值进行设置。它还包含了`getPixels()`函数,用于外部访问缓冲区持有的整个原始像素数组。我们并不会在例子中看到它,但实际中,显卡驱动会频繁地调用这个函数来将缓冲区的内存流式地输出到屏幕上。 + +我们在`Scene`类里包装这个原始的缓冲区。此类的任务在于对其缓冲区进行一系列的`draw()`函数调用来渲染出图形。 +```c++ +class Scene{public: void draw() { buffer_.clear(); buffer_.draw(1, 1); buffer_.draw(4, 1); buffer_.draw(1, 3); buffer_.draw(2, 4); buffer_.draw(3, 4); buffer_.draw(4, 3); } Framebuffer& getBuffer() { return buffer_; }private: Framebuffer buffer_;}; +``` +>注解: 具体来说,它画出了这样一幅杰作: +![](http://gameprogrammingpatterns.com/images/double-buffer-face.png) + +游戏在每帧通知场景进行绘制。场景清理缓冲区接着一次性地绘制一系列像素。它也通过方法`getBuffer()`提供了对内部缓冲区的访问,以便显卡驱动能够获取到它。 + +这听起来直接了当,但假如我们就这么结束了,那么就会出现问题:显卡驱动可以在任何时刻对缓冲区调用`getPixels()`,甚至是在下面这样的时机调用: +```c++ +buffer_.draw(1, 1);buffer_.draw(4, 1);// <- Video driver reads pixels here!buffer_.draw(1, 3);buffer_.draw(2, 4);buffer_.draw(3, 4);buffer_.draw(4, 3); +``` +当上述情况发生时,用户将看到笑脸的眼睛部分,但单对这一帧而言它的嘴巴却没了。在下一帧它又可能在其他某个地方受到干扰。结果是可怕的频闪图像。我们可以用双缓冲来修正它: +```c++ +class Scene{public: Scene() : current_(&buffers_[0]), next_(&buffers_[1]) {} void draw() { next_->clear(); next_->draw(1, 1); // ... next_->draw(4, 3); swap(); } Framebuffer& getBuffer() { return *current_; }private: void swap() { // Just switch the pointers. Framebuffer* temp = current_; current_ = next_; next_ = temp; } Framebuffer buffers_[2]; Framebuffer* current_; Framebuffer* next_;}; +``` + +现在`Scene`拥有两个缓冲区,它们置于`buffers_`数组中。我们并不直接从数组中引用它们,而是通过`next_`和`current_`这两个成员来指向数组。当我们绘图时,我们往next这个缓冲区(通过`next_`访问)里绘制,而当显卡驱动需要获取像素信息时,它总是从`current_`所指向的current缓冲区中获取。 + +由此,显卡驱动将不会访问到我们所正在进行处理的缓冲区。剩下的问题就在于在场景完成帧绘制后,对`swap()`方法的调用。它简单地通过交换`next_`与`current_`这两个指针的指向来交换两个缓冲区。当下一次显卡驱动调用`getBuffer()`函数时,它将获取到我们刚刚完成绘制的那块新的缓冲区,并将其内容绘制到屏幕上。再也不会有图形撕裂和不美观的问题了。 + +##并非只针对图形 +双缓冲模式所解决的核心问题在于对状态同时进行修改与访问的冲突。造成此问题的情况通常有两个,我们已经通过上述图形例子描述了第一种情况——状态直接被另一个线程的代码所直接访问或者打断。 + +还有另一种很类似且常见的情况。一个状态同时被两段代码进行修改。这会在很多地方发生:尤其是实体的AI和物理部分,在它与其他实体进行交互时会发生这样的情况,双缓冲模式往往能在此能奏效。 + +##没智商的AI +假设我们在为所有实体构建行为系统,这是个基于打斗漫画的游戏。游戏包含一个舞台,许多角色在其中追逐打闹。下面是我们的演员角色类: +```c++ +class Actor{public: Actor() : slapped_(false) {} virtual ~Actor() {} virtual void update() = 0; void reset() { slapped_ = false; } void slap() { slapped_ = true; } bool wasSlapped() { return slapped_; }private: bool slapped_;}; +``` +游戏需要在每一帧对演员实例调用`update()`以让其进行自身的处理。从用户的角度严格来说,所有的角色必须看起来是同步地进行更新。 + +>注解: 这是一个[Update Method](./03.3-Update Method.md)的例子 + +演员也可以通过”相互作用”与其他角色进行交互,这里的相互作用指他们可以互相扇对方巴掌。当更新时,角色可以对其他角色调用自身的`slap()`方法来扇巴掌并通过调用`wasSlapped()`方法来获知对方是否已经被扇过巴掌。 + +这些角色需要一个可以交互的舞台,我们下面构建它: +```c++ +class Stage{public: void add(Actor* actor, int index) { actors_[index] = actor; } void update() { for (int i = 0; i < NUM_ACTORS; i++) { actors_[i]->update(); actors_[i]->reset(); } }private: static const int NUM_ACTORS = 3; Actor* actors_[NUM_ACTORS];}; +``` +Stage允许我们往里添加角色,并提供一个简单的`update()`方法来更新所有角色。对于用户而言,角色开始同步地各自移动,但从内部看,一个时刻仅有一个角色被更新。 + +另一点需要注意的是,每个角色”被扇巴掌”的状态在其更新结束后立即被清空重置。这是为了确保一个角色只会对一个巴掌作出响应。 + +为了推动事情的进展,我们来为角色创建一个具体的子类。我们的内容很简单,它面对一个角色,不论谁给了它一巴掌,它就冲着这个角色扇巴掌。 +```c++ +class Comedian : public Actor{public: void face(Actor* actor) { facing_ = actor; } virtual void update() { if (wasSlapped()) facing_->slap(); }private: Actor* facing_;}; +``` +现在,让我们往舞台里放一些角色来看看会发生什么。对三个角色进行恰当的设置,使他们每个都面对着下一个,而最后一个面向第一个,组成一个圈。(译者注: 即构成一个小的单循环链表, facing_成员即为next) + +Stage stage;Comedian* harry = new Comedian();Comedian* baldy = new Comedian();Comedian* chump = new Comedian();harry->face(baldy);baldy->face(chump);chump->face(harry);stage.add(harry, 0);stage.add(baldy, 1);stage.add(chump, 2); + +现在舞台的布局如下图所示。箭头指明了角色所面朝的另一个角色,而数字表示角色在舞台数组中的索引号。 +![](http://gameprogrammingpatterns.com/images/double-buffer-slaps-1.png) +现在我们往harry脸上扇一巴掌来启动舞台,看看现在会发生些什么: +harry->slap();stage.update(); +切记`Stage`中的`update()`方法轮流对每个角色进行更新,所以假如我们浏览一遍代码,我们将推测舞台上表演的进展过程: +```c++ +Stage updates actor 0 (Harry) Harry was slapped, so he slaps BaldyStage updates actor 1 (Baldy) Baldy was slapped, so he slaps ChumpStage updates actor 2 (Chump) Chump was slapped, so he slaps HarryStage update ends +``` +在单独一帧内,我们最开始给Harry的一巴掌传递给了所有演员。现在为了让事情更复杂些,我们把舞台上的这些演员在数组中的顺序打乱但不改变他们脸的朝向。 +![](http://gameprogrammingpatterns.com/images/double-buffer-slaps-2.png) +我们将剩余的部分交给舞台自己处理,但要将上面添加三个角色的代码替换为以下: +```c++ +stage.add(harry, 2);stage.add(baldy, 1);stage.add(chump, 0); +``` +让我们再来实验看看会发生什么: +```c++ +Stage updates actor 0 (Chump) Chump was not slapped, so he does nothingStage updates actor 1 (Baldy) Baldy was not slapped, so he does nothingStage updates actor 2 (Harry) Harry was slapped, so he slaps BaldyStage update ends +``` +哦!完全不一样了。问题很明显,当我们更新角色时,我们修改它们的”被掴巴掌”状态,我们也在更新中同时读取这些状态。因此在同一次舞台更新循环中,状态的修改仅仅会影响到在其后更新的那些角色。 + +>注解: 假如你继续更新舞台,你将看到扇巴掌的动作开始在角色之间传递,每帧传递一个。在第一帧, Harry扇了Baldy一巴掌,下一帧Baldy扇了Chump一巴掌,如此递推。 + +最终的结果是某个角色可能不会在被扇巴掌的这一帧做出反应也不会在下一帧做出反应——这完全取决于两个角色在舞台中的顺序。这违背了我们对角色的需求:我们希望它们同步地运转,而他们在某帧更新中的顺序是不应该对结果产生影响的。 + +##缓存这些巴掌 +幸运的是,我们的双缓冲模式能帮上忙。这一次,我们将缓存一系列粒度更恰当的数据:每个角色的”被掴”状态,而不是先前的那两个巨大的缓冲区对象: +```c++ +class Actor{public: Actor() : currentSlapped_(false) {} virtual ~Actor() {} virtual void update() = 0; void swap() { // Swap the buffer. currentSlapped_ = nextSlapped_; // Clear the new "next" buffer. nextSlapped_ = false; } void slap() { nextSlapped_ = true; } bool wasSlapped() { return currentSlapped_; }private: bool currentSlapped_; bool nextSlapped_;}; +``` +现在每个角色有两个`slapped_`状态而不是一个。正如先前图形的例子一样,当前的状态用于读取,下一个状态用于写入。 + +`reset()`函数被`swap()`方法所替换。现在,在清除交换的状态之前,角色先将下一状态复制到当前状态中,使其成为当前状态,这里还需要在`Stage`中进行一些小改动: +```c++ +class Stage{ void update() { for (int i = 0; i < NUM_ACTORS; i++) { actors_[i]->update(); } for (int i = 0; i < NUM_ACTORS; i++) { actors_[i]->swap(); } } // Previous Stage code...}; +``` + +现在`update()`函数更新所有的角色接着对他们的状态进行交换。 + +这样的结果是,每个角色在其被扇巴掌的那一帧中仅会看到一个巴掌。这样一来,这些角色就会表现一致而不受他们在舞台上顺序的影响。对于用户和外部的代码而言,这些角色在一帧中就是同步更新的。 + +##设计的一些考虑 +双缓冲模式很直白,我们上面所看到的例子也几乎将你可能遇到的问题都涵盖到了。当实现这种模式时主要会有如下两点的讨论: + +##缓冲区如何进行交换? +交换缓冲区的操作是整个过程最关键的一步,因为在这一过程中我们必须封锁对两个缓冲区所有的读写操作。为达到最优性能,我们希望这个过程越快越好。 + +- 交换指向两个缓冲区的指针。 + + 这是我们图形例子中的做法,也是处理图形双缓冲最通用的解决方案。 + - 这很快。它无视缓冲区的大小,交换操作只是两个指针分配的动作。没办法让这个过程更加简化或更快了。 + - 外部代码无法永久存储指向某块缓冲区的指针。这是该方法主要的约束。因为我们并没有实际移动数据,我们实际上做的是周期性地告诉其他代码库去另外一些地方找缓冲区,就像我们最初所比的舞台那样。这意味着其他代码库无法直接存储指向某个缓冲区的指针,因为过一会儿它就可能指向错误的缓冲区了。 + - 这对于那些显卡希望帧缓冲区在内存中固定地址的系统来说尤其会造成麻烦。如果是那样,我们就不能采用这种办法。 + - 缓冲区中现存的数据会来自两帧之前而不是上一帧的。连续几帧里在交替的两个缓冲区中进行绘制而不在它们之间进行数据复制,如下: +```c++ + Frame 1 drawn on buffer AFrame 2 drawn on buffer BFrame 3 drawn on buffer A... +``` + - 你将会注意到当我们要绘制第三帧时,在缓冲区中的数据来自第一帧的,而不是来自最近的第二帧。在多数情况下,这并不是问题——我们往往在绘制前会清理整个缓冲区。但假如我们企图复用某些缓冲区现存的数据,那么就必须考虑到那些数据是比我们所预期的更提早一帧。 + >注解: 双缓冲一个经典的用法是处理动态模糊。当前帧与先前渲染帧的一部分进行混合,以便让产生的图像更接近于真实摄像机拍摄产生的效果。 +- 在两个缓冲区之间进行数据的拷贝: + + 假如我们无法对缓冲区进行指针重定向,那么唯一的办法就是将数据从后台缓冲区实实在在地拷贝到当前缓冲区。这就是我们在打斗喜剧里所做的。在这一情况下,我们选择此方法是因为其缓冲区仅仅是一个简单的布尔值标志位——它并不会比复制指向缓冲区的指针花去更长的时间。 + + 位于后台缓冲区里的数据与当前的数据就只差一帧时间。这是拷贝数据方法的优点,它就像打乒乓球那样一来一回通过两个缓冲区的翻转来推进画面。假如我们需要访问先前缓冲区的数据,此方法会提供更加实时的数据以供我们使用。 + + - 交换操作可能会花去更多时间。这当然是个大缺点。这里的交换就意味着拷贝内存中的整个缓冲区数据块。假如缓冲区很大,比如是一整个帧缓冲区,那么进行交换就会很明显地花去一整块时间。由于在交换期间无法对缓冲区进行任何读写操作,故这是个很大的局限。 + +##缓冲区的粒度如何? + +另一个问题在于缓冲区其自身是如何组织的:它是单个庞大数据块还是分布在某个集合里的每个对象之中?我们在图形的例子中使用了前一形式而演员类中使用了后者。多数时候,你所要缓存的内容将会告诉你答案,当然也会有些变数。例如,我们的演员也都可以将他们的信息集中存储在一个独立的信息块中,并让演员们通过他们的索引指向其中各自的状态。 + +- 假如缓冲区是单个大块 + + 交换操作很简单,因为全局只有一对缓冲区,只需要进行一次交换操作。假如你通过交换指针来交换缓冲区,那么你就可以交换整个缓冲区而无视其大小,只是两次指针分配而已。 + +- 假如许多对象都持有一块数据 + + - 交换较慢。为实现交换,我们需要遍历对象集合并通知每个对象进行交换。 + - 在我们的打斗喜剧中,这是没啥问题的,因为我们总需要清理后台”被扇巴掌”的状态——每帧都必须访问到每个对象所缓存的状态。假如我们不需要访问缓存的状态,那么我们就可以对其进行优化来使其达到与使用单块大缓冲区存储一系列对象状态一样的效率。——此时的办法就是使用”当前”和”下一个”指针的概念并以此建立对象之间的联系(译者注: 类似建立链表)。如下: +```c++ +class Actor{public: static void init() { current_ = 0; } static void swap() { current_ = next(); } void slap() { slapped_[next()] = true; } bool wasSlapped() { return slapped_[current_]; }private: static int current_; static int next() { return 1 - current_; } bool slapped_[2];}; +``` + - 演员们通过current_变量来访问状态数组。下个状态总是数组中的另一个索引,故我们可以通过next()来计算它。此时交换状态只需变换current_的索引。聪明的地方在于swap()现在是一个静态方法——只需要调用一次,则每个演员的状态都会被交换。 + +##参考 +- 你几乎能在任何一个图形API中找到双缓冲模式的应用。例如OpenGl中的`swapBuffers()`函数, Direct3D中的“swap chains”,微软XNA框架在`endDraw()`方法中也进行的帧缓冲区交换。 From 54ce0857e0209b9ac4eecc007e5c4372c1719d06 Mon Sep 17 00:00:00 2001 From: kislyl <1131985199@qq.com> Date: Tue, 21 Oct 2014 11:09:29 +0800 Subject: [PATCH 047/123] Update 03.1-Double Buffer.md --- 03.1-Double Buffer.md | 244 +++++++++++++++++++++++++++++++++++++++--- 1 file changed, 228 insertions(+), 16 deletions(-) diff --git a/03.1-Double Buffer.md b/03.1-Double Buffer.md index 21faed4..e93dcf3 100644 --- a/03.1-Double Buffer.md +++ b/03.1-Double Buffer.md @@ -72,13 +72,56 @@ 说完理论,让我们来结合实践,看看它是如何工作的。我们将写一个及其简单的图形系统以供我们在帧缓存上绘制像素。在多数控制台和PC上,显卡驱动提供了这一底层部分的图形系统,而这里通过手动实现它,我们将能窥其全貌。首先是缓冲区: ```c++ class Framebuffer -{public: Framebuffer() { clear(); } void clear() { for (int i = 0; i < WIDTH * HEIGHT; i++) { pixels_[i] = WHITE; } } void draw(int x, int y) { pixels_[(WIDTH * y) + x] = BLACK; } const char* getPixels() { return pixels_; }private: static const int WIDTH = 160; static const int HEIGHT = 120; char pixels_[WIDTH * HEIGHT];}; +{ +public: + Framebuffer() { clear(); } + void clear() + { + for (int i = 0; i < WIDTH * HEIGHT; i++) + { + pixels_[i] = WHITE; + } + } + + void draw(int x, int y) + { + pixels_[(WIDTH * y) + x] = BLACK; + } + + const char* getPixels() + { + return pixels_; + } +private: + static const int WIDTH = 160; + static const int HEIGHT = 120; + + char pixels_[WIDTH * HEIGHT]; +}; ``` 缓冲区拥有一些基本操作:将整个缓冲区清理为默认颜色,对指定位置的像素颜色值进行设置。它还包含了`getPixels()`函数,用于外部访问缓冲区持有的整个原始像素数组。我们并不会在例子中看到它,但实际中,显卡驱动会频繁地调用这个函数来将缓冲区的内存流式地输出到屏幕上。 我们在`Scene`类里包装这个原始的缓冲区。此类的任务在于对其缓冲区进行一系列的`draw()`函数调用来渲染出图形。 ```c++ -class Scene{public: void draw() { buffer_.clear(); buffer_.draw(1, 1); buffer_.draw(4, 1); buffer_.draw(1, 3); buffer_.draw(2, 4); buffer_.draw(3, 4); buffer_.draw(4, 3); } Framebuffer& getBuffer() { return buffer_; }private: Framebuffer buffer_;}; +class Scene +{ +public: + void draw() + { + buffer_.clear(); + buffer_.draw(1, 1); + buffer_.draw(4, 1); + buffer_.draw(1, 3); + buffer_.draw(2, 4); + buffer_.draw(3, 4); + buffer_.draw(4, 3); + } + + Framebuffer& getBuffer() { return buffer_; } + +private: + Framebuffer buffer_; +}; ``` >注解: 具体来说,它画出了这样一幅杰作: ![](http://gameprogrammingpatterns.com/images/double-buffer-face.png) @@ -87,11 +130,48 @@ class Scene{public: void draw() { buffer_.clear(); buffer_.draw(1, 1); 这听起来直接了当,但假如我们就这么结束了,那么就会出现问题:显卡驱动可以在任何时刻对缓冲区调用`getPixels()`,甚至是在下面这样的时机调用: ```c++ -buffer_.draw(1, 1);buffer_.draw(4, 1);// <- Video driver reads pixels here!buffer_.draw(1, 3);buffer_.draw(2, 4);buffer_.draw(3, 4);buffer_.draw(4, 3); +buffer_.draw(1, 1); +buffer_.draw(4, 1); +// <- Video driver reads pixels here! +buffer_.draw(1, 3); +buffer_.draw(2, 4); +buffer_.draw(3, 4); +buffer_.draw(4, 3); ``` 当上述情况发生时,用户将看到笑脸的眼睛部分,但单对这一帧而言它的嘴巴却没了。在下一帧它又可能在其他某个地方受到干扰。结果是可怕的频闪图像。我们可以用双缓冲来修正它: ```c++ -class Scene{public: Scene() : current_(&buffers_[0]), next_(&buffers_[1]) {} void draw() { next_->clear(); next_->draw(1, 1); // ... next_->draw(4, 3); swap(); } Framebuffer& getBuffer() { return *current_; }private: void swap() { // Just switch the pointers. Framebuffer* temp = current_; current_ = next_; next_ = temp; } Framebuffer buffers_[2]; Framebuffer* current_; Framebuffer* next_;}; +class Scene +{ +public: + Scene() + : current_(&buffers_[0]), + next_(&buffers_[1]) + {} + + void draw() + { + next_->clear(); + next_->draw(1, 1); + // ... + next_->draw(4, 3); + swap(); + } + + Framebuffer& getBuffer() { return *current_; } + +private: + void swap() + { + // Just switch the pointers. + Framebuffer* temp = current_; + current_ = next_; + next_ = temp; + } + + Framebuffer buffers_[2]; + Framebuffer* current_; + Framebuffer* next_; +}; ``` 现在`Scene`拥有两个缓冲区,它们置于`buffers_`数组中。我们并不直接从数组中引用它们,而是通过`next_`和`current_`这两个成员来指向数组。当我们绘图时,我们往next这个缓冲区(通过`next_`访问)里绘制,而当显卡驱动需要获取像素信息时,它总是从`current_`所指向的current缓冲区中获取。 @@ -106,7 +186,21 @@ class Scene{public: Scene() : current_(&buffers_[0]), next_(&buffers_[1]) ##没智商的AI 假设我们在为所有实体构建行为系统,这是个基于打斗漫画的游戏。游戏包含一个舞台,许多角色在其中追逐打闹。下面是我们的演员角色类: ```c++ -class Actor{public: Actor() : slapped_(false) {} virtual ~Actor() {} virtual void update() = 0; void reset() { slapped_ = false; } void slap() { slapped_ = true; } bool wasSlapped() { return slapped_; }private: bool slapped_;}; +class Actor +{ +public: + Actor() : slapped_(false) {} + + virtual ~Actor() {} + virtual void update() = 0; + + void reset() { slapped_ = false; } + void slap() { slapped_ = true; } + bool wasSlapped() { return slapped_; } + +private: + bool slapped_; +}; ``` 游戏需要在每一帧对演员实例调用`update()`以让其进行自身的处理。从用户的角度严格来说,所有的角色必须看起来是同步地进行更新。 @@ -116,7 +210,27 @@ class Actor{public: Actor() : slapped_(false) {} virtual ~Actor() {} virtual 这些角色需要一个可以交互的舞台,我们下面构建它: ```c++ -class Stage{public: void add(Actor* actor, int index) { actors_[index] = actor; } void update() { for (int i = 0; i < NUM_ACTORS; i++) { actors_[i]->update(); actors_[i]->reset(); } }private: static const int NUM_ACTORS = 3; Actor* actors_[NUM_ACTORS];}; +class Stage +{ +public: + void add(Actor* actor, int index) + { + actors_[index] = actor; + } + + void update() + { + for (int i = 0; i < NUM_ACTORS; i++) + { + actors_[i]->update(); + actors_[i]->reset(); + } + } + +private: + static const int NUM_ACTORS = 3; + Actor* actors_[NUM_ACTORS]; +}; ``` Stage允许我们往里添加角色,并提供一个简单的`update()`方法来更新所有角色。对于用户而言,角色开始同步地各自移动,但从内部看,一个时刻仅有一个角色被更新。 @@ -124,29 +238,68 @@ Stage允许我们往里添加角色,并提供一个简单的`update()`方法来 为了推动事情的进展,我们来为角色创建一个具体的子类。我们的内容很简单,它面对一个角色,不论谁给了它一巴掌,它就冲着这个角色扇巴掌。 ```c++ -class Comedian : public Actor{public: void face(Actor* actor) { facing_ = actor; } virtual void update() { if (wasSlapped()) facing_->slap(); }private: Actor* facing_;}; +class Comedian : public Actor +{ + public: void face(Actor* actor) { facing_ = actor; } + virtual void update() + { + if (wasSlapped()) facing_->slap(); + } + +private: + Actor* facing_; +}; ``` 现在,让我们往舞台里放一些角色来看看会发生什么。对三个角色进行恰当的设置,使他们每个都面对着下一个,而最后一个面向第一个,组成一个圈。(译者注: 即构成一个小的单循环链表, facing_成员即为next) +```c++ +Stage stage; + +Comedian* harry = new Comedian(); +Comedian* baldy = new Comedian(); +Comedian* chump = new Comedian(); -Stage stage;Comedian* harry = new Comedian();Comedian* baldy = new Comedian();Comedian* chump = new Comedian();harry->face(baldy);baldy->face(chump);chump->face(harry);stage.add(harry, 0);stage.add(baldy, 1);stage.add(chump, 2); +harry->face(baldy); +baldy->face(chump); +chump->face(harry); +stage.add(harry, 0); +stage.add(baldy, 1); +stage.add(chump, 2); +``` 现在舞台的布局如下图所示。箭头指明了角色所面朝的另一个角色,而数字表示角色在舞台数组中的索引号。 ![](http://gameprogrammingpatterns.com/images/double-buffer-slaps-1.png) 现在我们往harry脸上扇一巴掌来启动舞台,看看现在会发生些什么: -harry->slap();stage.update(); +```c++ +harry->slap(); +stage.update(); +``` 切记`Stage`中的`update()`方法轮流对每个角色进行更新,所以假如我们浏览一遍代码,我们将推测舞台上表演的进展过程: ```c++ -Stage updates actor 0 (Harry) Harry was slapped, so he slaps BaldyStage updates actor 1 (Baldy) Baldy was slapped, so he slaps ChumpStage updates actor 2 (Chump) Chump was slapped, so he slaps HarryStage update ends +Stage updates actor 0 (Harry) + Harry was slapped, so he slaps Baldy +Stage updates actor 1 (Baldy) + Baldy was slapped, so he slaps Chump +Stage updates actor 2 (Chump) + Chump was slapped, so he slaps Harry +Stage update ends ``` 在单独一帧内,我们最开始给Harry的一巴掌传递给了所有演员。现在为了让事情更复杂些,我们把舞台上的这些演员在数组中的顺序打乱但不改变他们脸的朝向。 ![](http://gameprogrammingpatterns.com/images/double-buffer-slaps-2.png) 我们将剩余的部分交给舞台自己处理,但要将上面添加三个角色的代码替换为以下: ```c++ -stage.add(harry, 2);stage.add(baldy, 1);stage.add(chump, 0); +stage.add(harry, 2); +stage.add(baldy, 1); +stage.add(chump, 0); ``` 让我们再来实验看看会发生什么: ```c++ -Stage updates actor 0 (Chump) Chump was not slapped, so he does nothingStage updates actor 1 (Baldy) Baldy was not slapped, so he does nothingStage updates actor 2 (Harry) Harry was slapped, so he slaps BaldyStage update ends +Stage updates actor 0 (Chump) + Chump was not slapped, so he does nothing +Stage updates actor 1 (Baldy) + Baldy was not slapped, so he does nothing +Stage updates actor 2 (Harry) + Harry was slapped, so he slaps Baldy +Stage update ends ``` 哦!完全不一样了。问题很明显,当我们更新角色时,我们修改它们的”被掴巴掌”状态,我们也在更新中同时读取这些状态。因此在同一次舞台更新循环中,状态的修改仅仅会影响到在其后更新的那些角色。 @@ -156,14 +309,54 @@ Stage updates actor 0 (Chump) Chump was not slapped, so he does nothingStage up ##缓存这些巴掌 幸运的是,我们的双缓冲模式能帮上忙。这一次,我们将缓存一系列粒度更恰当的数据:每个角色的”被掴”状态,而不是先前的那两个巨大的缓冲区对象: + ```c++ -class Actor{public: Actor() : currentSlapped_(false) {} virtual ~Actor() {} virtual void update() = 0; void swap() { // Swap the buffer. currentSlapped_ = nextSlapped_; // Clear the new "next" buffer. nextSlapped_ = false; } void slap() { nextSlapped_ = true; } bool wasSlapped() { return currentSlapped_; }private: bool currentSlapped_; bool nextSlapped_;}; +class Actor +{ +public: + Actor() : currentSlapped_(false) {} + + virtual ~Actor() {} + virtual void update() = 0; + + void swap() + { + // Swap the buffer. + currentSlapped_ = nextSlapped_; + + // Clear the new "next" buffer. + nextSlapped_ = false; + } + + void slap() { nextSlapped_ = true; } + bool wasSlapped() { return currentSlapped_; } + +private: + bool currentSlapped_; + bool nextSlapped_; +}; ``` 现在每个角色有两个`slapped_`状态而不是一个。正如先前图形的例子一样,当前的状态用于读取,下一个状态用于写入。 `reset()`函数被`swap()`方法所替换。现在,在清除交换的状态之前,角色先将下一状态复制到当前状态中,使其成为当前状态,这里还需要在`Stage`中进行一些小改动: ```c++ -class Stage{ void update() { for (int i = 0; i < NUM_ACTORS; i++) { actors_[i]->update(); } for (int i = 0; i < NUM_ACTORS; i++) { actors_[i]->swap(); } } // Previous Stage code...}; +class Stage +{ + void update() + { + for (int i = 0; i < NUM_ACTORS; i++) + { + actors_[i]->update(); + } + + for (int i = 0; i < NUM_ACTORS; i++) + { + actors_[i]->swap(); + } + } + + // Previous Stage code... +}; ``` 现在`update()`函数更新所有的角色接着对他们的状态进行交换。 @@ -183,8 +376,12 @@ class Stage{ void update() { for (int i = 0; i < NUM_ACTORS; i++) { - 外部代码无法永久存储指向某块缓冲区的指针。这是该方法主要的约束。因为我们并没有实际移动数据,我们实际上做的是周期性地告诉其他代码库去另外一些地方找缓冲区,就像我们最初所比的舞台那样。这意味着其他代码库无法直接存储指向某个缓冲区的指针,因为过一会儿它就可能指向错误的缓冲区了。 - 这对于那些显卡希望帧缓冲区在内存中固定地址的系统来说尤其会造成麻烦。如果是那样,我们就不能采用这种办法。 - 缓冲区中现存的数据会来自两帧之前而不是上一帧的。连续几帧里在交替的两个缓冲区中进行绘制而不在它们之间进行数据复制,如下: + ```c++ - Frame 1 drawn on buffer AFrame 2 drawn on buffer BFrame 3 drawn on buffer A... + Frame 1 drawn on buffer A + Frame 2 drawn on buffer B + Frame 3 drawn on buffer A + ... ``` - 你将会注意到当我们要绘制第三帧时,在缓冲区中的数据来自第一帧的,而不是来自最近的第二帧。在多数情况下,这并不是问题——我们往往在绘制前会清理整个缓冲区。但假如我们企图复用某些缓冲区现存的数据,那么就必须考虑到那些数据是比我们所预期的更提早一帧。 >注解: 双缓冲一个经典的用法是处理动态模糊。当前帧与先前渲染帧的一部分进行混合,以便让产生的图像更接近于真实摄像机拍摄产生的效果。 @@ -208,8 +405,23 @@ class Stage{ void update() { for (int i = 0; i < NUM_ACTORS; i++) { - 交换较慢。为实现交换,我们需要遍历对象集合并通知每个对象进行交换。 - 在我们的打斗喜剧中,这是没啥问题的,因为我们总需要清理后台”被扇巴掌”的状态——每帧都必须访问到每个对象所缓存的状态。假如我们不需要访问缓存的状态,那么我们就可以对其进行优化来使其达到与使用单块大缓冲区存储一系列对象状态一样的效率。——此时的办法就是使用”当前”和”下一个”指针的概念并以此建立对象之间的联系(译者注: 类似建立链表)。如下: + ```c++ -class Actor{public: static void init() { current_ = 0; } static void swap() { current_ = next(); } void slap() { slapped_[next()] = true; } bool wasSlapped() { return slapped_[current_]; }private: static int current_; static int next() { return 1 - current_; } bool slapped_[2];}; +class Actor +{ +public: + static void init() { current_ = 0; } + static void swap() { current_ = next();} + + void slap() { slapped_[next()] = true; } + bool wasSlapped() { return slapped_[current_]; } + +private: + static int current_; + static int next() { return 1 - current_;} + + bool slapped_[2]; +}; ``` - 演员们通过current_变量来访问状态数组。下个状态总是数组中的另一个索引,故我们可以通过next()来计算它。此时交换状态只需变换current_的索引。聪明的地方在于swap()现在是一个静态方法——只需要调用一次,则每个演员的状态都会被交换。 From 86b73815ec730d83978d26b50068e825b12109b6 Mon Sep 17 00:00:00 2001 From: kislyl <1131985199@qq.com> Date: Tue, 21 Oct 2014 11:11:18 +0800 Subject: [PATCH 048/123] Update 03.1-Double Buffer.md --- 03.1-Double Buffer.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/03.1-Double Buffer.md b/03.1-Double Buffer.md index e93dcf3..1f4cc0b 100644 --- a/03.1-Double Buffer.md +++ b/03.1-Double Buffer.md @@ -383,6 +383,7 @@ class Stage Frame 3 drawn on buffer A ... ``` + - 你将会注意到当我们要绘制第三帧时,在缓冲区中的数据来自第一帧的,而不是来自最近的第二帧。在多数情况下,这并不是问题——我们往往在绘制前会清理整个缓冲区。但假如我们企图复用某些缓冲区现存的数据,那么就必须考虑到那些数据是比我们所预期的更提早一帧。 >注解: 双缓冲一个经典的用法是处理动态模糊。当前帧与先前渲染帧的一部分进行混合,以便让产生的图像更接近于真实摄像机拍摄产生的效果。 - 在两个缓冲区之间进行数据的拷贝: @@ -423,7 +424,8 @@ private: bool slapped_[2]; }; ``` - - 演员们通过current_变量来访问状态数组。下个状态总是数组中的另一个索引,故我们可以通过next()来计算它。此时交换状态只需变换current_的索引。聪明的地方在于swap()现在是一个静态方法——只需要调用一次,则每个演员的状态都会被交换。 + +- 演员们通过current_变量来访问状态数组。下个状态总是数组中的另一个索引,故我们可以通过next()来计算它。此时交换状态只需变换current_的索引。聪明的地方在于swap()现在是一个静态方法——只需要调用一次,则每个演员的状态都会被交换。 ##参考 - 你几乎能在任何一个图形API中找到双缓冲模式的应用。例如OpenGl中的`swapBuffers()`函数, Direct3D中的“swap chains”,微软XNA框架在`endDraw()`方法中也进行的帧缓冲区交换。 From 977e89b4d24748722b3ae874d259c2d06f665de7 Mon Sep 17 00:00:00 2001 From: kislyl <1131985199@qq.com> Date: Tue, 21 Oct 2014 11:12:08 +0800 Subject: [PATCH 049/123] Update 03.1-Double Buffer.md --- 03.1-Double Buffer.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/03.1-Double Buffer.md b/03.1-Double Buffer.md index 1f4cc0b..3d1b8e2 100644 --- a/03.1-Double Buffer.md +++ b/03.1-Double Buffer.md @@ -385,7 +385,9 @@ class Stage ``` - 你将会注意到当我们要绘制第三帧时,在缓冲区中的数据来自第一帧的,而不是来自最近的第二帧。在多数情况下,这并不是问题——我们往往在绘制前会清理整个缓冲区。但假如我们企图复用某些缓冲区现存的数据,那么就必须考虑到那些数据是比我们所预期的更提早一帧。 + >注解: 双缓冲一个经典的用法是处理动态模糊。当前帧与先前渲染帧的一部分进行混合,以便让产生的图像更接近于真实摄像机拍摄产生的效果。 + - 在两个缓冲区之间进行数据的拷贝: 假如我们无法对缓冲区进行指针重定向,那么唯一的办法就是将数据从后台缓冲区实实在在地拷贝到当前缓冲区。这就是我们在打斗喜剧里所做的。在这一情况下,我们选择此方法是因为其缓冲区仅仅是一个简单的布尔值标志位——它并不会比复制指向缓冲区的指针花去更长的时间。 From c8734fa74d6bc79cf2b4b7119bbcadd138c2b359 Mon Sep 17 00:00:00 2001 From: kislyl <1131985199@qq.com> Date: Tue, 21 Oct 2014 11:13:07 +0800 Subject: [PATCH 050/123] Update 03.1-Double Buffer.md --- 03.1-Double Buffer.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/03.1-Double Buffer.md b/03.1-Double Buffer.md index 3d1b8e2..10e3b47 100644 --- a/03.1-Double Buffer.md +++ b/03.1-Double Buffer.md @@ -387,7 +387,7 @@ class Stage - 你将会注意到当我们要绘制第三帧时,在缓冲区中的数据来自第一帧的,而不是来自最近的第二帧。在多数情况下,这并不是问题——我们往往在绘制前会清理整个缓冲区。但假如我们企图复用某些缓冲区现存的数据,那么就必须考虑到那些数据是比我们所预期的更提早一帧。 >注解: 双缓冲一个经典的用法是处理动态模糊。当前帧与先前渲染帧的一部分进行混合,以便让产生的图像更接近于真实摄像机拍摄产生的效果。 - + - 在两个缓冲区之间进行数据的拷贝: 假如我们无法对缓冲区进行指针重定向,那么唯一的办法就是将数据从后台缓冲区实实在在地拷贝到当前缓冲区。这就是我们在打斗喜剧里所做的。在这一情况下,我们选择此方法是因为其缓冲区仅仅是一个简单的布尔值标志位——它并不会比复制指向缓冲区的指针花去更长的时间。 From b69f46a2076db7d3417e308dc3579face5da53fa Mon Sep 17 00:00:00 2001 From: kislyl <1131985199@qq.com> Date: Tue, 21 Oct 2014 11:15:03 +0800 Subject: [PATCH 051/123] Update 03.1-Double Buffer.md --- 03.1-Double Buffer.md | 6 ------ 1 file changed, 6 deletions(-) diff --git a/03.1-Double Buffer.md b/03.1-Double Buffer.md index 10e3b47..2135dad 100644 --- a/03.1-Double Buffer.md +++ b/03.1-Double Buffer.md @@ -377,12 +377,6 @@ class Stage - 这对于那些显卡希望帧缓冲区在内存中固定地址的系统来说尤其会造成麻烦。如果是那样,我们就不能采用这种办法。 - 缓冲区中现存的数据会来自两帧之前而不是上一帧的。连续几帧里在交替的两个缓冲区中进行绘制而不在它们之间进行数据复制,如下: -```c++ - Frame 1 drawn on buffer A - Frame 2 drawn on buffer B - Frame 3 drawn on buffer A - ... -``` - 你将会注意到当我们要绘制第三帧时,在缓冲区中的数据来自第一帧的,而不是来自最近的第二帧。在多数情况下,这并不是问题——我们往往在绘制前会清理整个缓冲区。但假如我们企图复用某些缓冲区现存的数据,那么就必须考虑到那些数据是比我们所预期的更提早一帧。 From ff1ee48111b65a01fc406546bcebaf685e2e5e57 Mon Sep 17 00:00:00 2001 From: kislyl <1131985199@qq.com> Date: Tue, 21 Oct 2014 11:16:05 +0800 Subject: [PATCH 052/123] Update 03.1-Double Buffer.md --- 03.1-Double Buffer.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/03.1-Double Buffer.md b/03.1-Double Buffer.md index 2135dad..10e3b47 100644 --- a/03.1-Double Buffer.md +++ b/03.1-Double Buffer.md @@ -377,6 +377,12 @@ class Stage - 这对于那些显卡希望帧缓冲区在内存中固定地址的系统来说尤其会造成麻烦。如果是那样,我们就不能采用这种办法。 - 缓冲区中现存的数据会来自两帧之前而不是上一帧的。连续几帧里在交替的两个缓冲区中进行绘制而不在它们之间进行数据复制,如下: +```c++ + Frame 1 drawn on buffer A + Frame 2 drawn on buffer B + Frame 3 drawn on buffer A + ... +``` - 你将会注意到当我们要绘制第三帧时,在缓冲区中的数据来自第一帧的,而不是来自最近的第二帧。在多数情况下,这并不是问题——我们往往在绘制前会清理整个缓冲区。但假如我们企图复用某些缓冲区现存的数据,那么就必须考虑到那些数据是比我们所预期的更提早一帧。 From 14cd0accfbac51ef82e7f551c5f2a47fa448ca93 Mon Sep 17 00:00:00 2001 From: kislyl <1131985199@qq.com> Date: Tue, 21 Oct 2014 11:16:51 +0800 Subject: [PATCH 053/123] Update 03.1-Double Buffer.md --- 03.1-Double Buffer.md | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/03.1-Double Buffer.md b/03.1-Double Buffer.md index 10e3b47..5ab3c69 100644 --- a/03.1-Double Buffer.md +++ b/03.1-Double Buffer.md @@ -377,16 +377,10 @@ class Stage - 这对于那些显卡希望帧缓冲区在内存中固定地址的系统来说尤其会造成麻烦。如果是那样,我们就不能采用这种办法。 - 缓冲区中现存的数据会来自两帧之前而不是上一帧的。连续几帧里在交替的两个缓冲区中进行绘制而不在它们之间进行数据复制,如下: -```c++ - Frame 1 drawn on buffer A - Frame 2 drawn on buffer B - Frame 3 drawn on buffer A - ... -``` - 你将会注意到当我们要绘制第三帧时,在缓冲区中的数据来自第一帧的,而不是来自最近的第二帧。在多数情况下,这并不是问题——我们往往在绘制前会清理整个缓冲区。但假如我们企图复用某些缓冲区现存的数据,那么就必须考虑到那些数据是比我们所预期的更提早一帧。 - >注解: 双缓冲一个经典的用法是处理动态模糊。当前帧与先前渲染帧的一部分进行混合,以便让产生的图像更接近于真实摄像机拍摄产生的效果。 +>注解: 双缓冲一个经典的用法是处理动态模糊。当前帧与先前渲染帧的一部分进行混合,以便让产生的图像更接近于真实摄像机拍摄产生的效果。 - 在两个缓冲区之间进行数据的拷贝: From 4c35185f8da7a30067248ae14c2a5ce49ad248c3 Mon Sep 17 00:00:00 2001 From: kislyl <1131985199@qq.com> Date: Tue, 21 Oct 2014 16:03:05 +0800 Subject: [PATCH 054/123] Update 01-Introduction.md --- 01-Introduction.md | 44 ++++++++++++++++++++++---------------------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/01-Introduction.md b/01-Introduction.md index 3e74e5e..3e6203e 100644 --- a/01-Introduction.md +++ b/01-Introduction.md @@ -13,53 +13,53 @@ > 如果计算机打印足够多的次数,或许它会神奇的变成现实哦。(译者注:这里指的是计算机反复打印第10行代码的语句`BOBBY IS RADICAL!!!`,作者开玩笑的说会变成现实。) -即便如此,整个过程还是比较艰辛。我们不懂得如何去编程,所以一个小的语法错误便让我们感到很费解。如果程序不工作了,通常都会这样,我们便会重新开始。 +即便如此,整个过程还是比较艰辛。我们不懂得如何去编程,所以一个小的语法错误便让我们感到很费解。程序出毛病是家常便饭,而那是我们只能重头再来。 -在这些书页的后面,我们遇到了一个真正的怪物:一个程序,它密密麻麻的代码占去了好几页。我们过了一会终于鼓足勇气来尝试它,但是它实在让人无法接受-列表的标题是“隧道与巨人”("Tunnels and Trolls")。我们不知道它是做什么的,但是听起来像是个游戏,还有什么比你自己编写一款电脑游戏更酷么? +在有了这些小程序的经验积累之后,我们遇到了个大BOSS:一个代码密密麻麻占去好几页纸的程序。我们光是鼓起勇气决定去尝试它就花了不少时间,光是它的标题“隧道与巨人”("Tunnels and Trolls")就令人捉摸不透。这听起来像是个游戏,而还有什么事比亲手编写一款电脑游戏更酷? -我们从来没有让它运行起来过,一年后,我们搬出了那个教室。(很久之后,我才真正了解了一点BASIC,我意识到它只是一个为桌面游戏使用的字符产生器,本身并不是游戏。)但木已成舟,从那之后,我立志要成为一个游戏开发者。 +我们从没让它实际运行起来过。一年后,我们搬出了那个教室。(后来随着我更多地接触BASIC,才意识到它只是一个为桌面游戏使用的角色生成器,而并非整个游戏。)但木已成舟,从那之后,我立志要成为一个游戏开发者。 -在我十几岁时,我的家人搞了一台装有 QuickBASIC 的 Macintosh,之后又装了 THINK C。我几乎整个暑假都在 hack games。自学是缓慢而痛苦的。我学到了一些东西并顺手会运行起来-或许是个地图又或者是个小的猜谜游戏-但是随着程序的扩大,它越来越难了。 +在我十几岁时,我的家人搞了一台装有 QuickBASIC 的 Macintosh,之后又装了 THINK C。我几乎整个暑假都在那上面倒腾游戏。自学是缓慢而痛苦的。我希望能让程序轻松地跑一些功能-一张地图或者是个小的猜谜游戏-但是随着程序的扩大,这越来越难了。 > 注解 > 我的许多夏天都是在路易斯安那州南部的沼泽中捕蛇和乌龟来渡过的。如果户外不是这样酷热,很有可能,这将是一本爬虫学的书,而不是编程书。 -起初,让一些东西显示在屏幕上对我来说是个挑战。后来,我想搞清楚如何写出更大点的程序。除了阅读一些关于“如何用C++编程”的书籍,我开始试图寻找一些关于如何组织程序的书籍。 +起初,我的挑战在于让程序跑起来。后来,我开始思考如何让程序做一些超越我脑袋所想的工作。除了阅读一些关于“如何用C++编程”的书籍,我开始试图寻找一些关于如何组织程序的书籍。 -又过了几年,一个朋友给了我一本书:《设计模式:可复用面向对象软件的基础》。终于来了!这就是我从青少年开始便一直寻找的那本书!在一次与他的会面中,我从头到尾读了一遍。我之前仍然在为我自己写的程序挣扎犯愁,但是看到别人也如此挣扎并提出了解决方案,我便解脱了。我感觉我终于有了一些武器用来挥舞而不再是赤手空拳了。 +又过了几年,一个朋友给了我一本书:《设计模式:可复用面向对象软件的基础》。终于来了!这就是我从青少年开始便一直寻找的那本书!我们刚碰面,我就把书从头到尾读了一遍。我之前仍然在为我自己写的程序挣扎犯愁,但是看到别人也如此挣扎并提出了解决方案,我便解脱了。我感觉我终于有了一些武器用来挥舞而不再是赤手空拳了。 > 注解 -> 这是我们第一次见面,5分钟自我介绍之后,我坐在他的沙发上,并在接下来的几个小时里,我在聚精会神的阅读,完全忽视了他。从那时起,我想我的社交应该至少要提高一点点了。 +> 这是我们第一次见面,5分钟自我介绍之后,我坐在他的沙发上,并在接下来的几个小时里,我聚精会神地阅读而完全忽视了他。我感觉那时候自己的社交能力还是稍有那么一丁点提升的。 -在2001年,我得到了我梦想中的工作:Electronic Arts 的软件工程师。我迫不及待的想看下真正的游戏,以及工程师是如何组织他们的。像 Madden Football 这样的大型游戏到底是一个什么样的架构?他们是怎么用一套代码库在不同平台上运行的? +在2001年,我得到了我梦想中的工作:EA(Electronic Arts) 的软件工程师。我迫不及待的想看下真正的游戏,以及工程师是如何组织它们的。像 Madden Football 这样的大型游戏到底是一个什么样的架构?他们是怎么让一套代码库在不同平台上运行的? -破解开放的源码是一个震撼人心和令人惊奇的体验。那里有着优秀的图形、人工智能、动画和视觉效果的代码。我们公司有人知道如何榨取CPU的每一个周期并得宜善用。我甚至认为一些不可能的东西,这些家伙午餐前就能搞定。 +破解开放的源码是一个震撼人心和令人惊奇的体验。图形、人工智能、动画和视觉效果等各个方面的代码都十分出众。我们公司有人懂得如何榨取CPU的每一个周期并得以善用。甚至一些我认为不可能的东西,这些家伙一个早上就能搞定。 -但这种优秀代码的结构往往是事后想出来的。他们太专注于功能以至于忽视了组织架构。模块之间耦合很严重。新功能只要哪里能够适用就被放到代码库里。我的幻想破灭了,在我看来,就像很多程序员,从来没有研究过_设计模式_,从来不了解[单例模式](02.5-Singleton.md)一样。 +但这种优秀代码的结构往往是事后想出来的。他们太专注于功能以至于忽视了组织架构。模块之间耦合很严重。只要是有作为的新功能都会被扔进代码库里。我的幻想破灭了,在我看来,恐怕很多程序员,从没翻过_设计模式_,不曾了解[单例模式](02.5-Singleton.md)。 -当然,情况不是真的很糟糕。我已经想象游戏程序员坐在到处是白板的象牙塔中,从容地讨论代码架构细节数周直到结束。现实的情况是,我一直在寻找的代码正是赶着最后期限的人写出来的。他们竭尽了全力,而且,我逐渐意识到,他们最好的努力结果往往是很不错的。我花在游戏代码上的时间越长,我发现隐藏在表面的宝藏越多。 +当然,实际并非想象的那么糟。我曾设想游戏程序员们坐在放满白板的象牙塔中,从头到尾的几周时间里都在想当然地讨论代码架构细节。实际上,我所见到的代码是出自那些被上司催着进度的人之手。他们竭尽了全力,而且,我逐渐意识到,他们竭尽全力的结果往往是很棒的。我越深入这些代码,便越是这么觉得。 -不幸的是,“隐藏”却通常很好的描述了这种情况。在代码中埋藏着宝藏,但许多人却只是从上面走过。我看到同事在努力重塑良好的解决方案时,他们需要的例子正是他们脚下的那些代码库。 +不幸的是,“隐藏”一词恰恰反映了这样的情况:宝藏埋在代码深处,而许多人只从地表踏过。我看到同事在努力重塑更好的解决方案时,他们所寻求的办法正藏在他们脚下的代码库之中。 -这样的问题正是这本书要在解决的问题。我挖掘并研磨出我在游戏中发现的最好的设计模式,将它们呈现在这里,让我们可以花时间来发明新的东西,而不是重新发明他们。 +这样的问题正是这本书所关注的。我挖掘并打磨出自己在游戏中所发现的最好的设计模式,在此一一呈现给大家,以便我们将时间节省下来发现新大陆,而不是重新造轮子。 -# 书店所售书籍 +# 市面上的书籍 -目前市面已经有数十多个游戏编程的书籍。为什么还要再写一本? +目前市面已经有数十多本游戏编程的书籍。为什么还要再写一本? -我见过的大多数游戏编程书籍分为两类: +我见过的大多数游戏编程书籍无非下列两类: -- __关于特定领域的书籍__。这些针对性较强的书籍给你的游戏开发会带来一些具体的视角。他们会教你3D图形,实时渲染,物理模拟,人工智能,或音频。这些是很多游戏程序员自己的职业生涯过程中专注的领域。 +- __关于特定领域的书籍__。这些针对性较强的书籍为你的游戏开发打开一个独特而深刻的视角。他们会教你3D图形,实时渲染,物理模拟,人工智能,或音频处理。这些是多数游戏程序员在自己的职业生涯中所专注的领域。 -- __关于整个游戏引擎的书籍__。相反,这些书尝试阐述整个游戏引擎的不同部分。它们被组织起来形成一个完整的引擎来适用于一些特定类型的游戏,通常是3D第一人称射击游戏。 +- __关于整个游戏引擎的书籍__。相反,这些书尝试涵盖整个游戏引擎的各部分。它们被组织起来形成一个完整的引擎以适用于一些特定类型的游戏,通常是3D第一人称射击游戏。 -我喜欢这两种类型的书,但我觉得他们留有一些空白。很少有特定领域的书会告诉你的代码块如何与游戏的其他部分交互。你可能在物理和渲染方面是一个巫师(译者注:这里指的是在某个领域特别擅长的人),但是你知道如何优雅的将他们配合在一起? +我喜欢这两类书,但我觉得它们仍留有一些空白。特定领域的书很少会写你的代码块如何与游戏的其他部分交互。你可能擅长物理和渲染(译者注:这里指的是在某个领域特别擅长的人),是你知道如何优雅的将它们拼合起来? -第二类书籍覆盖了这些,但我通常发现整个引擎的书太单一,太泛泛之谈。特别是随着移动和​​休闲游戏的兴起,我们正处在大量不同类型游戏被创造的时期。我们不再只是克隆 Quake(译者注:雷神之锤,第一个真3D实时演算的FPS游戏)了。当你的游戏不适合这个模型时,指导完成一个引擎的图书并不是一个合适的选择。 +第二类书籍写到了这些,但我通常发现这类书都太单一,太泛泛而谈。特别是随着移动和休闲游戏的兴起,我们正处在充斥着大量不同类型游戏的时代。我们不再只是克隆 Quake(译者注:雷神之锤,第一个真3D实时演算的FPS游戏)了。当你的游戏不适合这个模型时,这类阐述单个引擎的书籍就不再合适了。 -相反,这里我想要做的,就是更多的“向导”。在这本书中,每个章节都是一个独立的想法,而你可以将它应用到你的代码里。通过这个方式,你可以混合使用他们来让他们在你制作的游戏中发挥最好的效果。 +相反,这里我想要做的,更倾向于“引导”。在这本书中,每个章节都是一个独立的思想,而你可以将它应用到你的代码里。藉此,你可以混用它们以令其在你制作的游戏中发挥最好的效果。 > 注解 @@ -143,4 +143,4 @@ bool update() =============================== [目录](README.md#目录) -[下一节](01.1-Architecture, Performance, and Games.md) \ No newline at end of file +[下一节](01.1-Architecture, Performance, and Games.md) From 37ac8a674735b701decf6623c0670a9c799dbfed Mon Sep 17 00:00:00 2001 From: kislyl <1131985199@qq.com> Date: Tue, 21 Oct 2014 16:33:10 +0800 Subject: [PATCH 055/123] Update 01-Introduction.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 就是让文字变得更流畅一点的修改而已。 --- 01-Introduction.md | 42 +++++++++++++++++++++--------------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/01-Introduction.md b/01-Introduction.md index 3e6203e..2c54c68 100644 --- a/01-Introduction.md +++ b/01-Introduction.md @@ -65,61 +65,61 @@ > 这种“向导”风格的另外一个例子,就是广受大家喜爱的《游戏编程精粹》系列。 -# 与设计模式的相关性 +# 设计模式相关 -任何名字中带有“模式”的编程书籍显然蕴藏着和经典图书《设计模式:可复用面向对象软件的基础》有着一种关系。这本书由 Erich Gamma,Richard Helm,Ralph Johnson 和 John Vlissides 完成。(俗称“Gang of Four”--四人组) +任何名字中带有“模式”的编程书籍都和经典图书《设计模式:可复用面向对象软件的基础》脱不了干系。这本书由 Erich Gamma,Richard Helm,Ralph Johnson 和 John Vlissides 完成。(俗称“Gang of Four”--四人组) > 注解 -> 设计模式本身也是受到前人的灵感。使用模式语言来描述开放式解决问题的想法来自[《A Pattern Language》](http://en.wikipedia.org/wiki/A_Pattern_Language),由 Christopher Alexander(以及Sarah Ishikawa,Murray Silverstein)完成。 +> 设计模式一书本身也源自前人的灵感。使用模式语言来描述开放式解决问题的想法来自[《A Pattern Language》](http://en.wikipedia.org/wiki/A_Pattern_Language),由 Christopher Alexander(以及Sarah Ishikawa,Murray Silverstein)完成。 > 他们的书是关于架构(就像真正的建筑结构有着建筑和围墙之类的东西),但他们希望他人会使用相同的结构来描述在其他领域的解决方案。设计模式(Design Patterns)是 Gang of Four 在软件领域的一个尝试。 -把这本书命名为“游戏编程模式”,我并非暗示 Gang of Four 的书不适用于游戏。恰巧相反,在[再探设计模式](02-Design Patterns Revisited.md)一节中覆盖了众多设计模式,但强调了他们是如何被应用到游戏开发中的。 +本书以“游戏编程模式”命名,并不是说 Gang of Four 的书不适用于游戏。恰恰相反,在[再探设计模式](02-Design Patterns Revisited.md)一节中覆盖众多来自GoF著作的设计模式,同时强调了在游戏开发中的运用。 -相反,我觉得这本书也适用于非游戏软件。我也可以把这本书命名为 _More Design Patterns_,但我认为游戏制作例子更吸引人。难道你真的想要阅读的一本关于员工记录和银行账户例子的书么? +从另一面说,我觉得这本书也适用于非游戏软件。我也可以把这本书命名为 _More Design Patterns_,但我认为游戏制作例子更吸引人。难道你真的想要阅读的一本关于员工记录和银行账户例子的书么? -话虽这么说,这里介绍的模式是在其他软件中是有用的,我觉得他们是特别适合于软件开发,就像在游戏中经常遇到的挑战一样: +话虽这么说,这里介绍的模式在其他软件中是有用的,我觉得他们是特别适合于软件开发,就像在游戏中经常遇到的挑战一样: -- 时间和顺序往往是一个游戏的架构的核心部分。事情必须发生在正确的顺序和正确的时间。 +- 时间和序列化往往是一个游戏的架构的核心部分。事情必须依照正确的顺序和正确的时间发生。 -- 开发周期被高度压缩,一些程序员需要能够快速构建和迭代一组丰富的不同的行为,而不牵连到他人或者查遍整个代码库。 +- 开发周期被高度压缩,程序员们需要能够快速构建和迭代一组丰富且相异的行为,同时不牵涉到他人或者弄乱代码库。 -- 所有这些行为被定义后,它便开始互动。怪物撕咬英雄,药水混合在一起,炸弹炸到敌人和朋友类似这样。这些交互必须被很好的完成,同时代码库需要保持干净不能纷乱无章犹如交织错乱的毛线球一样。 +- 所有这些行为被定义后,游戏便开始互动。怪物撕咬英雄,药水混合在一起,炸弹炸到敌人和朋友...诸如此类。这些交互必须很好地进行下去,同时代码库需要保持干净不能纷乱无章得像个交织错乱的毛线球。 -- 最后,性能是游戏的关键。游戏开发者是在不断比赛着看谁能够充分利用平台的性能。游戏周期处理的不同可能意味着数以百万计销售的A级游戏或者掉帧以及愤怒的评论的区别。 +- 最后,性能是游戏的关键。游戏开发者们总在不断比赛着看谁能够充分利用平台的性能。游戏周期处理的不同可能意味着产品是成为数以百万计销售的A级游戏,或者满是掉帧且贴满愤怒评论的废铁。 -# 如何阅读这本书 +# 如何阅读本书 _游戏编程模式_分为三大部分。第一部分是序言和书的概括。这正是你现在阅读的章节以及[下一章节](01.1-Architecture, Performance, and Games.md)。 -第二部分,再探设计模式,回顾了 Gang of Four 中的一些设计模式。在每个章节中,我会提到我对该模式的认识,以及我觉得如何将该模式运用到游戏中。 +第二部分,再探设计模式,回顾了 Gang of Four 中的一些设计模式。在每个章节中,我会提及自己对该模式的认识,及将该模式运用到游戏中的方法。 最后部分是这本书的重头戏。这部分代表了我认为十分有用的13种设计模式。它们分为四类:序列模式,行为模式,解耦模式,优化模式。 这些模式使用一致的文本组织结构来讲述,以便你将该书作为参考并能快速找到你所需要的内容: -- __意图__(Intent)部分提供了该模式旨在解决的问题的快照描述。这样你很容易浏览全书快速找到你想要的模式来帮助你解决遇到的难题。 +- __意图__ 部分简述了此模式旨在解决的问题。这样你很容易根据自己遇到的问题来快速确定该用哪个模式。 -- __动机__(Motivation)部分描述了一个示例,该示例存在问题,我们将要对之采用设计模式。不同于具体的算法,模式通常是无形的,除非适用于一些特定的问题。教授一个设计模式却不提供示例就像教授烘培却没有面团一样。这个部分提供面团,之后的部分将会教你如何烘培。 +- __动机__ 部分描述了一个示例、该示例存在问题、我们将要对之采用设计模式。不同于具体的算法,模式通常是无形的,除非针对一些特定的问题。学设计模式离不开示例正如学烘培离不开面团一样。这个部分提供面团,之后的部分将会教你如何烘培。 -- __模式__(Pattern)部分会提炼出前面示例中的模式本质。如果你想了解该模式的书面描述,就是这部分了。如果你已经熟悉了,这部分也是一个很好的复习,确保你没有忘记该模式。 +- __模式__ 部分会提炼出前面示例中的模式本质。如果你想了解该模式的书面描述,就是这部分了。如果你已经熟悉了,这部分也是一个很好的复习,确保你没有忘记该模式。 -- 到目前为止,该模式只是就一个单一的例子来解释的。但你怎么该模式是否适用于你的问题呢?__使用情境__(When to Use It)就模式使用的情境以及何时避免使用会提供一些指引。__使用须知__(Keep in Mind)部分会指出使用该模式时面临的后果和风险。 +- 到目前为止,该模式只是就一个单一的例子来解释的。但你怎么该模式是否适用于你的问题呢?__使用情境__ 针对模式使用的情境以及何时避免使用它提供一些指引。__使用须知__ 部分会指出使用该模式时面临的后果和风险。 -- 如果像我一样,需要借助具体的实例才能真正的理解,那么__示例__(Sample Code)正满足你的需要。示例会一步步实现模式,所以你可以清楚的看到模式是如何工作的。 +- 如果像我一样,需要借助具体的实例才能真正的理解,那么__示例__ 正满足你的需要。示例会一步步实现模式,所以你可以清楚的看到模式是如何工作的。 -- 模式和单一的算法不同,因为模式是开放式的。每次使用模式的时候,你实现的方式有可能会不同。接下来__设计决策__(Design Decisions)部分,会探讨这个问题,并告诉你在应用模式时要考虑的不同因素。 +- 模式和单一的算法不同,因为模式是开放式的。每次使用模式的时候,你实现的方式有可能会不同。接下来__设计决策__ 部分,会探讨这个问题,并告诉你在应用模式时要考虑的不同因素。 -- 结束部分,__参考__(See Also)部分会告诉你该模式和其他模式的关联并指出使用该模式的一些真实世界中的开源代码。 +- 结束部分,__参考__ 部分会告诉你该模式和其他模式的关联并指出使用该模式的一些真实世界中的开源代码。 # 关于示例代码 -这本书中的示例代码用 C++ 编写,但是这并不意味着这些模式仅在该语言中有用或者说 C++ 比其他语言要好。几乎所有的语言都适用,虽然有些模式确实倾向于语言有对象和类的概念。 +这本书中的示例代码用 C++ 编写,但是这并不意味着这些模式仅在该语言中有用或者说 C++ 比其他语言要好。几乎所有的语言都适用,虽然有些模式确实倾向于面向对象语言。 我选择 C++ 有几个原因。首先,它是商业游戏中最流行的语言,是该行业的通用语言。 另外,C++ 基于 C 的语法也是 Java,C#,JavaScript和许多其他语言的基础。即使你不懂 C++,也没有关系,你可以很轻松的明白示例代码的含义。 -这本书的目的,不是教你学习 C++。示例会保持尽可能简单,但是这并不代表良好的 C++ 编码风格或使用就是这样。阅读代码时要理解代码所传达的思想,而不是代码本身的表达。 +这本书的目的,不是教你学习 C++。示例会尽可能保持简单,但是这并不代表良好的 C++ 编码风格或使用就是这样。阅读代码时要理解代码所传达的思想,而不是代码本身的表达。 特别一提的是,示例代码没有采用“现代” C++ -- C++11 或更高版本风格。它没使用标准库并很少使用模板。这是“糟糕”的 C++ 代码,但我仍希望保留下来,这样会对那些从C,Objective-C,Java和其他语言转来的人们更加的友好。 From 1935eb1e3417e1c6bfd80ace6b0e7597397ddd3d Mon Sep 17 00:00:00 2001 From: kislyl <1131985199@qq.com> Date: Tue, 21 Oct 2014 16:37:14 +0800 Subject: [PATCH 056/123] Update 03.1-Double Buffer.md --- 03.1-Double Buffer.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/03.1-Double Buffer.md b/03.1-Double Buffer.md index 5ab3c69..0f1dc68 100644 --- a/03.1-Double Buffer.md +++ b/03.1-Double Buffer.md @@ -1,7 +1,7 @@ # 双缓冲模式 ## -## 目的 +## 意图 进行一系列序列化操作来表现出瞬发性或同步性。 ## 动机 计算机的心脏里藏着凶残的序列化处理能力。其力量源于它们能够将庞大的任务分解为许多细小的步骤以便逐个处理。 尽管通常对于我们的用户而言,他们希望看到的是问题能够即刻被处理,或者多个任务能同时被执行。 @@ -49,7 +49,7 @@ 于此同时,我们的渲染代码正在往另一个帧缓冲区中写入数据,它就是我们黑暗中的B舞台。当渲染代码完成场景2的渲染时,它通过交换两个缓冲区来”切换光线”。这使得显卡驱动开始从第一个缓冲区转向第二个缓冲区以读取其数据。只要它掌握好时机在每次刷新显示结束时进行切换,我们就不会看到任何衔接的裂隙,且整个场景能一次性显示出来。这时候,旧的帧缓冲变得可用了,我们就开始往它的内存区域渲染入下一帧。这真棒! -##双缓冲设计模式 +##(双缓冲)模式 定义一个缓冲区类来代表一个缓冲区:一系列能被修改的状态。这块缓冲区能被一步步地修改,但我们希望任何外部的代码对该缓冲区的修改都是原子操作。为实现这一点,此类中维护两个缓冲区实例:当前缓冲区和后台缓冲区。 当要从缓冲区中读取信息时,总是从当前缓冲区读取。当要往缓冲区中写数据时,则总在后台缓冲区上进行。当改动完成后,则执行”交换”操作来讲当前缓冲区与后台缓冲区交换,以便让新的缓冲区为我们所见,同时刚被换下来的当前缓冲区则成为现在的后台缓冲区以供复用。 @@ -68,7 +68,7 @@ ##必须要有两个缓冲区 使用此模式的另一结果是导致内存占用率增加。正如其名,此模式要求你在任何时刻都维护着两份存储着状态的内存区域。在内存受限的硬件上,这可是个很苛刻的要求。假如你无法分配出两份内存,你就必须想其他办法来避免你的状态在修改时被访问。 -##例子 +##示例 说完理论,让我们来结合实践,看看它是如何工作的。我们将写一个及其简单的图形系统以供我们在帧缓存上绘制像素。在多数控制台和PC上,显卡驱动提供了这一底层部分的图形系统,而这里通过手动实现它,我们将能窥其全貌。首先是缓冲区: ```c++ class Framebuffer @@ -363,7 +363,7 @@ class Stage 这样的结果是,每个角色在其被扇巴掌的那一帧中仅会看到一个巴掌。这样一来,这些角色就会表现一致而不受他们在舞台上顺序的影响。对于用户和外部的代码而言,这些角色在一帧中就是同步更新的。 -##设计的一些考虑 +##设计决策 双缓冲模式很直白,我们上面所看到的例子也几乎将你可能遇到的问题都涵盖到了。当实现这种模式时主要会有如下两点的讨论: ##缓冲区如何进行交换? From 973f6fc1b60d0a78de963b50915a7cba612dbaa6 Mon Sep 17 00:00:00 2001 From: kislyl <1131985199@qq.com> Date: Tue, 21 Oct 2014 16:38:46 +0800 Subject: [PATCH 057/123] Update 03.2-Game Loop.md --- 03.2-Game Loop.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/03.2-Game Loop.md b/03.2-Game Loop.md index 81e0ba4..2d50c07 100644 --- a/03.2-Game Loop.md +++ b/03.2-Game Loop.md @@ -115,7 +115,7 @@ while (true) 这就是游戏循环模式的另一个要点:这一模式让游戏在一个与硬件无关的速度常量下运行。 -# 游戏循环模式 +# (游戏循环)模式 游戏循环在游戏过程中持续运转。每循环一次,它非阻塞地处理用户的输入,更新游戏状态,并渲染游戏。它跟踪流逝的时间并控制游戏的速率。 @@ -147,7 +147,7 @@ while (true) 其他平台并不会轻易地让你退出事件循环。假如你以浏览器为平台,事件循环也已根植在浏览器执行模式的底层。其中事件循环负责显示,你同样要使用它来作为你的游戏循环。你可能会调用requestAnimationFrame()之类的函数以便浏览器回调回你的程序,并维持游戏的运转。 -# 例子 +# 示例 做了这么长的介绍,游戏循环模式的代码已经不言而喻。我们将看到两个不同的实现版本,并比较它们的好坏。 @@ -330,7 +330,7 @@ render(lag / MS_PER_UPDATE); 故推断含有猜测的成分,有时将会出错。幸运的是,这些程度的修正通常并不引人注目。至少,比起你完全不做预测时的卡顿要不起眼得多。 -# 设计的一些考虑 +# 设计决策 尽管这章已经写得够长了,但我还是留下了许多额外的问题。一旦你考虑诸如与显示刷新速率的同步,多线程,GPU等因素,实际的游戏循环将会变得复杂许多。在这样的高级层面上,你可能需要考虑以下这些问题: From 006da46d43778bca185727f13910366476bfd3bf Mon Sep 17 00:00:00 2001 From: kislyl <1131985199@qq.com> Date: Tue, 21 Oct 2014 16:39:15 +0800 Subject: [PATCH 058/123] Update 03.1-Double Buffer.md --- 03.1-Double Buffer.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/03.1-Double Buffer.md b/03.1-Double Buffer.md index 0f1dc68..fb940a7 100644 --- a/03.1-Double Buffer.md +++ b/03.1-Double Buffer.md @@ -1,7 +1,7 @@ # 双缓冲模式 ## -## 意图 +## 目的 进行一系列序列化操作来表现出瞬发性或同步性。 ## 动机 计算机的心脏里藏着凶残的序列化处理能力。其力量源于它们能够将庞大的任务分解为许多细小的步骤以便逐个处理。 尽管通常对于我们的用户而言,他们希望看到的是问题能够即刻被处理,或者多个任务能同时被执行。 From 0d42161b6e40d2c8d957f1f763b183409b784b88 Mon Sep 17 00:00:00 2001 From: kislyl <1131985199@qq.com> Date: Tue, 21 Oct 2014 16:40:57 +0800 Subject: [PATCH 059/123] Update 03.3-Update Method.md --- 03.3-Update Method.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/03.3-Update Method.md b/03.3-Update Method.md index 983a8bf..9088c0f 100644 --- a/03.3-Update Method.md +++ b/03.3-Update Method.md @@ -1,7 +1,7 @@ 更新方法 ======================== -# 目标 +# 目的 通过对所有对象实例同时进行帧更新来模拟一系列相互独立的游戏对象。 @@ -117,7 +117,7 @@ while (true) 游戏循环维护一个动态对象集合,这使得向关卡里添加或移除对象十分便捷——只要往集合里增加或移除就好。问题已解决,我们甚至可以将关卡文件用某种文件格式存储,以供我们的关卡设计师们使用。 -# 更新方法模式 +# (更新方法)模式 游戏世界维护一个对象集合。每个对象实现一个更新方法来在每帧模拟自己的行为。而游戏循环在每帧对集合中所有的对象调用其更新方法以实现同步的游戏世界更新。 @@ -223,7 +223,7 @@ for (int i = 0; i < numObjects_; i++) > 假如在更新循环中你加入了多线程,采用延迟修改的方法较好,因为这可以避免更新期间线程同步带来的巨大开销。 -# 例子 +# 示例 这一模式十分浅显,从例子里我们就能看出其要点。这并不意味着它没用,而正因为它的简单才使得它好用——它是一个简明而不加任何修饰的解决方案。。但为了更具体地阐明此方法,我们还是来看一个基本的实现例子。让我们从这个代表着骷髅和雕像的Entity类来开始吧: @@ -435,7 +435,7 @@ void Skeleton::update(double elapsed) 现在,骷髅移动的距离随着时间间隔而增长。你同样能看到处理变时步长时额外增加的复杂度。骷髅可能在很长的时间差下超出其巡逻范围,我们需要小心地对这一情况进行处理。 -# 设计的一些考虑 +# 设计决策 这样一个简单的设计模式,并无太多可选项。但它也仍有选择的余地~ From ead7116b1bfc6f9755ca6b842ff41eb425a9968f Mon Sep 17 00:00:00 2001 From: kislyl <1131985199@qq.com> Date: Tue, 21 Oct 2014 16:43:01 +0800 Subject: [PATCH 060/123] Update 04.1-Bytecode.md --- 04.1-Bytecode.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/04.1-Bytecode.md b/04.1-Bytecode.md index c75af94..c5229d9 100644 --- a/04.1-Bytecode.md +++ b/04.1-Bytecode.md @@ -1,7 +1,7 @@ 字节码 ============================ -## 意图 +## 目的 通过将行为编码成虚拟机指令,而使其具备数据的灵活性。 ## 动机 @@ -33,7 +33,7 @@ 我们只需要弄明白“执行”这些数据的方法。怎样才能让文件中的字节表示行为呢?有好几种方法。参照一下[解释器](http://en.wikipedia.org/wiki/Interpreter_pattern)模式,你就能对此模式的优缺点全貌有个大致了解。 -### 解释器模式 +### 模式 本来这个模式我可以写成一整章的,但是有四个家伙已经替我说了。所以,这里我仅做一些简介。我们从一个语言开始——你可以类比编程语言——你要去执行它。举个例子。它支持下面的数学表达式: ```c++ @@ -142,10 +142,10 @@ private: 听上去挺吓人的。我在本章里剩下的目标,就是要给你展示一下,如果你控制好自己的功能清单,这个方案非常可行。即使最终你自己也没把这个模式用起来,至少你能对Lua以及别的采用这个原理的语言有更好的了解。 -## 模式 +## (解释器)模式 **指令集**定义可以执行的底层操作。用**字节序列**来定义它。**虚拟机**逐条执行指令栈上的指令。通过组合指令,可以获得很多高级行为。 -## 何时使用它 +## 使用情境 这是本书中最复杂的模式,要把它放进你的游戏里没那么容易。仅当你的游戏中需要定义大量行为,并且它的编程语言没法处理好下列事情时: - 编程语言太底层了,编写起来繁琐易错 - 因编译时间太长或工具问题,导致迭代缓慢 @@ -181,7 +181,7 @@ private: > 当然,如果你想让游戏支持MOD,你就得发布这些功能,这相当重要。 -## 简单的代码 +## 示例 在上面几节讨结束之后,你可能会很好奇如何直接实现它。首先,要为虚拟机设计一个指令集。在真正考虑,字节码之类的东西前,可以先把它们当成是API。 From 5866259bd5fc9691e7f9a16ac79389efb44cb6d7 Mon Sep 17 00:00:00 2001 From: kislyl <1131985199@qq.com> Date: Tue, 21 Oct 2014 16:44:24 +0800 Subject: [PATCH 061/123] Update 04.2-Subclass Sandbox.md --- 04.2-Subclass Sandbox.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/04.2-Subclass Sandbox.md b/04.2-Subclass Sandbox.md index d110675..c644c56 100644 --- a/04.2-Subclass Sandbox.md +++ b/04.2-Subclass Sandbox.md @@ -47,10 +47,10 @@ > 近来,你发现人们对面向对象语言的继承进行批判。继承是有问题的 -- 在代码基中没有比基类与子类之间更深的耦合了 -- 但是我发现宽的继承树比深的要表现的更好。 -#模式 +# (沙盒)模式 一个__基类__定义了一个抽象的__沙盒方法__和一些__提供的操作__。通过设置他们为保护状态能够明确他们是被子类使用。每个继承的__沙盒子类__通过提供的操作来实现沙盒函数。 -#什么时候使用 +# 使用情境 沙盒模式是一种运用在大量代码基里甚至游戏之外的非常简单通用的模式。如果你有一个非虚拟的保护函数,那么你很有可能正在使用类似该模式的东西。沙盒模式在以下情况比较适用: - 你有一个带有大量子类的基类。 @@ -61,7 +61,7 @@ - 你想使这些继承类与程序的其他代码之间的耦合最小化。 -#记住 +#使用须知 “继承”一词最近在一些程序圈子里被视为诟病,其中一个原因是基类会滋生越来越多的代码。这个模式尤其受这个因素的影响。 由于子类是通过它们的基类来实现剩下的游戏,基类最终会与所有子类需要交互的系统产生耦合。当然,这些子类也与他们的基类绑定。这个蜘蛛网式的耦合使得在不破坏什么的情况下改变基类是很困难的 -- 你遇到了[脆弱的基类问题](http://en.wikipedia.org/wiki/Fragile_base_class)。 @@ -70,7 +70,7 @@ 如果你仍然发现这个模式正把你的基类推向一碗巨大的代码汤里的话,请考虑把一些提供的操作提取到一个基类能够管理的独立的类中。这里[组件模式](./05.1-Component.md)能够有所帮助。 -#示例代码 +#示例 由于这是一个如此简单的设计模式,并没有多少的示例代码。这不意味着这没有用 -- 这个模式的实现关乎的是其意义而不是其复杂度。 我们将从我们得Superpower基类开始: @@ -396,7 +396,7 @@ protected: ``` 这里,spawnParticles()需要一个粒子系统。它从服务定位器获取了一个,而不是通过外部代码获取。 -#也看看 +#参考 - 当你使用[更新函数](./03.3-Update Method.md)模式的时候,你的更新函数通常也是一个沙盒函数。 - 这个模式一个[模板函数](http://en.wikipedia.org/wiki/Template_method_pattern)模式的一个反面角色。在这两个模式中,你使用一些列原始操作实现一个函数。通过子类沙盒模式,函数在继承类中,原始操作则在基类中。通过模板函数,基类有函数,原始操作被继承类实现。 From 143c5af88c8b55b1b079a4583000c58bf38c8d2e Mon Sep 17 00:00:00 2001 From: kislyl <1131985199@qq.com> Date: Tue, 21 Oct 2014 16:45:35 +0800 Subject: [PATCH 062/123] Update 06.1-Data Locality.md --- 06.1-Data Locality.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/06.1-Data Locality.md b/06.1-Data Locality.md index 49bdc2c..08f803e 100644 --- a/06.1-Data Locality.md +++ b/06.1-Data Locality.md @@ -92,7 +92,7 @@ ![](http://gameprogrammingpatterns.com/images/data-locality-things.png) 请注意,并没有Thing,Another或Also指向的指针。这就是它们的实际数据,在各自恰当的位置,一个接一个线性排列。只要CPU读取完Thing,它将接着开始读取Another 和Also,(具体取决于他们的大小以及缓存线的尺寸)。当你开始对它们进行处理时,他们已经在缓存中准备就绪了。你的芯片和你都笑了。 -## 数据区域化模式 +## (数据区域化)模式 当代CPU带有多级缓存以提高内存访问速度。这一机制加快了对最近访问过的数据其邻近内存的访问速度。通过增加数据区域化来利用这一点以提高性能:保持数据位于连续的内存中以供你的程序进行处理。 ## 使用情境 如同多数优化措施,指引我们使用数据区域化模式的第一条准则就是找到出现性能问题的地方。不要在那些代码库里非频繁执行的部分浪费时间,它们不需要本模式。对那些非必要的代码进行优化将使你的人生变得艰难——因为结果总是更加复杂且笨拙的。 @@ -117,7 +117,7 @@ 为了做到缓存友好,你可能需要牺牲一些之前所做的抽象化。你越是在程序的数据区域上化下功夫,你就越要牺牲继承,接口以及这些手段所带来的好处。要时刻记得没有银弹(译者注:一句话说就是技术上什么包治百病且立竿见影的良药,[参见这里](http://www.cnblogs.com/cute/archive/2012/09/27/2705253.html)),只有充满着挑战的牺牲与交换。当然拆东墙补西墙也是很有趣的事情! -## 例子 +## 示例 假如你真的钻研到数据区域化优化的深处,你将发现有无数种办法,将你的数据结构拆解成片段以供CPU更好地进行处理。为了让你知道如何下手,我将在对几个最常见的组织数据的方法各做一个简单的实例。我们将在特定的游戏引擎环境下来完成它们,但(正如其他设计模式一样)要牢记只要符合条件,这一技术在任何情境中都是通用的。 ## 连续的数组 @@ -468,7 +468,7 @@ class LootDrop 做这样的优化就像是在挖老鼠洞和黑色艺术之间徘徊。我们很容易花费大量陷在对数据与速度的测试上,但要相信你的努力总会换来收获的。 -## 设计中的一些考虑 +## 设计决策 这种设计模式更适合叫做一种思维模式。它提醒着你,数据的组织方式乃是游戏性能的一个关键部分。这一块的实际拓展空间很大,你可以让你的数据区域化影响到游戏的整个架构,又或者它只是应用在一些核心模块的数据结构上。 对这一模式的应用,你最需要关心的就是该何时何地使用它。而随着这个问题我们也会看到一些新的顾虑。 From db166b9fd34431099f916704b52b2d2117048054 Mon Sep 17 00:00:00 2001 From: kislyl <1131985199@qq.com> Date: Tue, 21 Oct 2014 16:46:30 +0800 Subject: [PATCH 063/123] Update 06.3-Object Pool.md --- 06.3-Object Pool.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/06.3-Object Pool.md b/06.3-Object Pool.md index dc55550..62909d6 100644 --- a/06.3-Object Pool.md +++ b/06.3-Object Pool.md @@ -1,7 +1,7 @@ 对象池 ============================ -## 目标 +## 目的 使用固定池重用对象,取代手动分配,释放对象,以此来达到提升性能和内存使用的目的 @@ -37,7 +37,7 @@ 使用对象池使得我们二者兼顾:对于内存管理器而言,我们仅分配一大块内存直到游戏结束才释放它,对于内存池的使用者而言,我们可以按照自己的意愿来分配和释放对象。 -## 对象池模式 +## (对象池)模式 定义一个保持着可重用对象集合的对象池类。其中的每个对象支持对其”使用中”(“in use”)状态的访问,以确定这一对象目前是否“存活”(“alive”)。当对象池初始化时,它预先创建整个对象的集合(通常为一块连续堆区域),并将它们都置为”未使用” (“not in use”) 状态。 @@ -103,7 +103,7 @@ 假如你使用了对象池,请注意一个潜在的矛盾:由于对象池在对象不再被使用时并不真正地释放它们,故它们仍占用内存。假如它们包含了指向其他对象的引用,这也将阻碍回收机制对它们进行释放。为避免这些问题,当对象池中的对象不再被需要时,应当清空它指向其他任何对象的引用。 -## 例子 +## 示例 模拟现实的粒子系统常常会应用到重力,风力,摩擦力以及其他物理效果。在简化的示例中,我们只是在几帧的时间内将粒子沿着直线移动一些距离,并在结束后销毁它们。虽不比标准的电影水准,但足以为我们展示对象池的应用。 @@ -336,7 +336,7 @@ void ParticlePool::animate() 这就是了,一个漂亮的,在创建和删除时具有常量时间开销的小对象池。 -## 设计的一些考虑 +## 设计决策 如你所见,最简单的对象池实现几乎没什么特别的:创建一个对象数组并在它们被需要时重新初始化。实际项目中的代码可不会这么简单。还有许多扩展对象池的方法,来使其更加通用,安全,便于管理。当你在自己的游戏中使用对象池时,你需要回答以下问题: From b73aa39966c562f6cb20fc91bbcb55dea46d9101 Mon Sep 17 00:00:00 2001 From: kislyl <1131985199@qq.com> Date: Tue, 21 Oct 2014 16:47:08 +0800 Subject: [PATCH 064/123] Update 01-Introduction.md --- 01-Introduction.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/01-Introduction.md b/01-Introduction.md index 2c54c68..363d5aa 100644 --- a/01-Introduction.md +++ b/01-Introduction.md @@ -99,7 +99,7 @@ _游戏编程模式_分为三大部分。第一部分是序言和书的概括。 这些模式使用一致的文本组织结构来讲述,以便你将该书作为参考并能快速找到你所需要的内容: -- __意图__ 部分简述了此模式旨在解决的问题。这样你很容易根据自己遇到的问题来快速确定该用哪个模式。 +- __目的__ 部分简述了此模式旨在解决的问题。这样你很容易根据自己遇到的问题来快速确定该用哪个模式。 - __动机__ 部分描述了一个示例、该示例存在问题、我们将要对之采用设计模式。不同于具体的算法,模式通常是无形的,除非针对一些特定的问题。学设计模式离不开示例正如学烘培离不开面团一样。这个部分提供面团,之后的部分将会教你如何烘培。 From 85854ddd28c0c4d1f2ca6e91010a1fa31178c28f Mon Sep 17 00:00:00 2001 From: kislyl <1131985199@qq.com> Date: Wed, 22 Oct 2014 11:03:51 +0800 Subject: [PATCH 065/123] Update 02.1-Command.md --- 02.1-Command.md | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/02.1-Command.md b/02.1-Command.md index 9933d85..d98b8e3 100644 --- a/02.1-Command.md +++ b/02.1-Command.md @@ -5,43 +5,43 @@ > 将一个请求(request)封装成一个对象,从而让你使用不同的请求,请求队列或请求日志来参数化客户端,同时支持请求操作的撤销与恢复。 -我想你也和我一样觉得这句话晦涩难明。首先,它分割了自己试图建立的物象。在软件世界之外,词语有很多意思,“客户(client)”就是一个_人_的意思-一个你与它做生意的人。我检查过,人们(people)是不可以“参数化”的。(译者注:作者在这里的意思是Gang of Four 的说明因为太具概括性,涵盖了软件开发之外的一些定义,使得句子很难理解。) +我想你也和我一样觉得这句话晦涩难明。首先,它分割了自己试图建立的物象。在软件世界之外,一词往往多义。“客户(client)”就是一个_人_的意思-一个你与它做生意的人。据我查证,人类(human beings)是不可“参数化”的。(译者注:作者在这里的意思是Gang of Four 的说明因为太具概括性,涵盖了软件开发之外的一些定义,使得句子很难理解。) 然后,句子的剩余部分就像你可能使用的模式的一串列表一样。不是特别明朗,除非你的用例恰巧在列表中。我对命令模式的精炼(pithy)概括如下: -__命令就是一个对象化的方法调用。__(A command is a reified method call.) +__命令就是一个对象化(实例化)的方法调用。__(A command is a reified method call.) -当然,“精炼”(pithy)通常意味着“令人费解的简洁”,所以这可能并不是一个好的改进。让我拆开来说下。“Reify”,或许你没听说过它,意思是“真实化”(make real)。另外一个术语 reifying 有着使一些事物成为“第一类”的意思。(译者注:你可能在其他书籍中见到说是“第一类值”的类似说法) +当然,“精炼”(pithy)通常意味着“令人费解的简洁”,所以我可能改得不是很好。让我解释一下:你可能没听过“Reify”一词,意即“具象化”(make real)。另一个术语reifying的意思是 使一些事物成为“第一类”(first-class)。(译者注:你可能在其他书籍中见到说是“[第一类值](http://zh.wikipedia.org/wiki/%E7%AC%AC%E4%B8%80%E9%A1%9E%E7%89%A9%E4%BB%B6)”的类似说法) > 注解 > “Reify”出自拉丁文“res”,意思为“thing”,加上英语后缀“-fy”,所以就成为了“thingify”,坦白说,这是个很有趣的单词。 -这两个术语都意味着,将某个_概念_(concept)转化为一块_数据_(data)-一个对象-你可以认为是传入函数的变量等等。所以说命令模式是一个“对象化的方法调用”,我的意思就是封装在一个对象的一个方法调用。 +这两个术语都意味着,将某个_概念_(concept)转化为一块_数据_(data),即一个对象,你可以认为是传入函数的变量等等。所以说命令模式是一个“对象化的方法调用”,我的意思就是封装在一个对象的一个方法调用。 -这听起来像是一个“回调“(callback),”一等函数“(first-class function),”函数指针“(function pointer),”闭包“(closure)或者取决于你所使用的语言的”部分实用功能“(partially applied function),确实这些都有相似之处。The Gang of Four 之后这样阐述: +你可能对“回调“(callback),”第一类函数“(first-class function),”函数指针“(function pointer),”闭包“(closure),。”局部函数“(partially applied function)更耳熟,至于耳熟哪个就取决于你所使用的语言,而它们都具共性。The Gang of Four 之后这样阐述: ``` -命令就是回调的一个面向对象的替代。(Commands are an object-oriented replacement for callbacks.) +命令就是回调的面向对象化。(Commands are an object-oriented replacement for callbacks.) ``` 这个比他们对模式的概括要好多了。 > 注解 -> 一些语言的_反射系统_可以让让你在运行时使用类型处理。你可以得到一个对象,它代表着某些其他对象的类,你也可以玩玩看类型可以处理哪些问题事情。换句话说,反射是一个具体化的类型系统。 +> 一些语言的_反射系统_(译者注: 如.NET)可以让你在运行时使用类型处理。你可以得到一个对象,它代表着某些其他对象的类,你也可以玩玩看类型可以处理哪些问题。换句话说,反射是一个具体化的类型系统。 -但是这些都比较抽象和模糊。我喜欢用一些具体点的东西来做为章节开头,并且我也鼓励这样。为了弥补这点,从这里开始,都是例子,它们非常适合命令模式。 +但是这些都比较抽象和模糊。正如我所推崇的那样,我喜欢用一些具体点的东西来开头。为弥补这点,现在开始我将举例,它们都非常适合命令模式。 # 输入配置 -每一个游戏都有一处代码块用来读取用户原始输入-按钮点击,键盘事件,鼠标点击,或者其他等等。它记录每次的输入,并将之转换为游戏中一个有意义的动作(action): +每个游戏都有一处代码块用来读取用户原始输入-按钮点击,键盘事件,鼠标点击,或者其他等等。它记录每次的输入,并将之转换为游戏中一个有意义的动作(action): ![](./res/command-buttons-one.png) > 注解 -> 不要经常按按钮B。 +> 专业级贴士:请勿常按B键。 下面是个简单的实现: @@ -54,11 +54,11 @@ void InputHandler::handleInput() else if (isPressed(BUTTON_B)) lurchIneffectively(); } ``` -这个函数通常会通过[游戏循环](03.2-Game Loop.md)被每帧调用,我还确定你肯定清楚这个函数的作用。如果我们将用户的输入硬关联对应到游戏的动作(game actions),上面的代码是有效的,但是许多游戏允许用户_配置_他们的按钮与动作的映射。 +这个函数通常会通过[游戏循环](03.2-Game Loop.md)被每帧调用,我想你能理解这段代码在干些什么。如果我们将用户的输入硬关联到游戏的动作(game actions),上面的代码是有效的,但是许多游戏允许用户_配置_他们的按钮与动作的映射。 -为了支持这个特性,我们需要把那些对`jump()`和`fireGun()`的直接调用转换为我们可以换出(swap out)的东西。”换出“(swapping out)听起来很像变量赋值,所以我们需要个_对象_来代表一个游戏动作。 +为了支持自定义配置,我们需要把那些对`jump()`和`fireGun()`的直接调用转换为我们可以换出(swap out)的东西。”换出“(swapping out)听起来很像分配变量,所以我们需要个_对象_来代表一个游戏动作。这就用到了命令模式。 -我们定义了一个基类用来代表一个可触发的游戏命令: +我们定义了一个基类用来代表一个可激活的游戏命令: ```c++ class Command @@ -71,7 +71,7 @@ public: > 注解 -> 当你有一个不返回任何值的一个单一方法接口,很有可能就会用到命令模式。 +> 当你的接口仅有一个无返回值的方法时,很有可能就会用到命令模式。 然后我们为每个不同的游戏动作创建一个子类: @@ -133,7 +133,7 @@ void InputHandler::handleInput() # 关于角色的说明 -我们刚才定义的命令类在上个例子中是有效的,但他们很受限。问题就是,他们假设存在的如`jump()`,`fireGun()`等这些顶级函数,是隐式的知道如何找到玩家的头像并且使得玩家像木偶一样进行动作处理。 +我们刚才定义的命令类在上个例子中是有效的,但他们很受限。问题在于,他们假设存在`jump()`,`fireGun()`等这样的能找到玩家的头像,使得玩家像木偶一样进行动作处理的顶级函数。 这种假设耦合限制了这些命令的的效用。__JumpCommand__类_唯一_能做的事情就是使得 player 进行跳跃。让我们放宽限制。我们传进去一个我们想要控制的对象而不是用命令对象自身来调用函数: From 02a59a85dd74eba33d934cfbaadb6283cd3b5f07 Mon Sep 17 00:00:00 2001 From: kislyl <1131985199@qq.com> Date: Wed, 22 Oct 2014 11:47:37 +0800 Subject: [PATCH 066/123] Update 02.1-Command.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 通顺的部分句子,一些错别字,歧义的订正。额外为这章加入了小节标题。 --- 02.1-Command.md | 33 ++++++++++++++++++++------------- 1 file changed, 20 insertions(+), 13 deletions(-) diff --git a/02.1-Command.md b/02.1-Command.md index d98b8e3..721dcc0 100644 --- a/02.1-Command.md +++ b/02.1-Command.md @@ -1,5 +1,6 @@ 命令模式 ============================ +# 目的 命令模式是我最喜爱的模式之一。在我写过的许多大型游戏或者其他程序中,都有用到它。正确的使用它,会让你的代码变得更加优雅。对于这个模式,Gang of Four 有着一个预见性的深奥说明: @@ -33,6 +34,8 @@ __命令就是一个对象化(实例化)的方法调用。__(A command is a re 但是这些都比较抽象和模糊。正如我所推崇的那样,我喜欢用一些具体点的东西来开头。为弥补这点,现在开始我将举例,它们都非常适合命令模式。 +#动机 + # 输入配置 每个游戏都有一处代码块用来读取用户原始输入-按钮点击,键盘事件,鼠标点击,或者其他等等。它记录每次的输入,并将之转换为游戏中一个有意义的动作(action): @@ -131,6 +134,8 @@ void InputHandler::handleInput() 简而言之,这就是命令模式。如果你已经看到了它的优点,不妨看完本章的剩余部分。 +# 模式 + # 关于角色的说明 我们刚才定义的命令类在上个例子中是有效的,但他们很受限。问题在于,他们假设存在`jump()`,`fireGun()`等这样的能找到玩家的头像,使得玩家像木偶一样进行动作处理的顶级函数。 @@ -145,7 +150,7 @@ public: virtual void execute(GameActor& actor) = 0; }; ``` -这里,__GameActor__是我们用来表示游戏世界中的角色的”游戏对象“类。我们将它传入`execute()`中,以便命令可以针对我们选择的角色进行调用,就像这样: +这里,__GameActor__是我们用来表示游戏世界中的角色的”游戏对象“类。我们将它传入`execute()`中,以便子类化的命令可以针对我们选择的角色进行调用,就像这样: ```c++ class JumpCommand : public Command @@ -182,7 +187,7 @@ if (command) command->execute(actor); } ``` -假设`actor`是玩家角色的一个引用,这将会基于用户的输入来驱动角色,所以我们可以像第一个例子一样给角色赋予相同的行为。在命令和角色之间加入的间接层赋予了我们这样的能力:我们可以让玩家控制游戏中的任何角色,只需通过改变命令执行时传入的角色对象。 +假设`actor`是玩家角色的一个引用,这将会基于用户的输入来驱动角色,所以我们可以赋予角色与前例一致的行为。在命令和角色之间加入的间接层使得我们可以让玩家控制游戏中的任何角色,只需通过改变命令执行时传入的角色对象即可。 在实践中,这并不是一个常见的功能,但是有一种情况却经常见到。迄今为止,我们只考虑了玩家驱动角色(player-driven character),但是对于游戏世界中的其他角色呢?他们由游戏的AI来驱动。我们可以使用相同的命令模式来作为AI引擎和角色的接口;AI代码部分提供命令(Command)对象用来执行。(译者注:`command->execute(AI对象);`) @@ -208,13 +213,13 @@ AI选择命令,角色执行命令,它们之间的解耦给了我们很大的 # 撤销和重做(Undo and Redo) -最后这个例子(译者注:作者指的是撤销和重做)是命令模式最有名的应用了。如果一个命令对象可以 _do_ 一些事情,那么应该可以很轻松的 _undo_(撤销) 它们。撤销这个行为经常在一些策略游戏中见到,在游戏中如果你不喜欢的话可以回滚一些步骤。在_创建_游戏时这是一个很常见的工具。如果你想让你的游戏设计师们讨厌你,最可靠的办法就是在关卡编辑器中不要提供撤销命令,让他们不能撤销不小心犯的错误。 +最后这个例子(译者注:作者指的是撤销和重做)是命令模的成名应用了。如果一个命令对象可以 _do_ 一些事情,那么应该可以很轻松的 _undo_(撤销) 它们。撤销这个行为经常在一些策略游戏中见到,在游戏中如果你不喜欢的话可以回滚一些步骤。在_创建_游戏时这是一个很常见的工具。如果你想让你的游戏设计师们讨厌你,最可靠的办法就是在关卡编辑器中不要提供撤销命令,让他们不能撤销不小心犯的错误。 > 注解 > 这里可能是我的经验之谈。 -如果没有命令模式,实现撤销是很困难的。有了它,小菜一碟啊。我们假定一个情景,我们在制作一款单人,回合制的游戏,我们想让我们的玩家能够撤销一些行动以便他们能够更多的专注于策略而不是猜测。 +如果没有命令模式,实现撤销是很困难的。有了它,小菜一碟啊。我们假定一个情景,我们在制作一款单人回合制的游戏,我们想让我们的玩家能够撤销一些行动以便他们能够更多的专注于策略而不是猜测。 我们已经可以很方便的使用命令模式来抽象输入处理,所以每次对角色的移动要封装起来。例如,像下面这样来移动一个单位: @@ -240,9 +245,9 @@ private: ``` 注意到这个和我们上一个命令不太相同。在上个例子中,我们想要_抽象_出命令,执行命令时可以针对不同的角色。在这个例子中,我们特别希望将命令_绑定_到移动的单位上。这个命令的实例不是一般性质的”移动某些物体“这样适用于很多情境下的的操作,在游戏的回合次序中,它是一个特定具体的移动。 -这凸显了命令模式在实现时的一个变化。在某些情况下,像我们的第一对的例子,一个命令代表了一个可重用的对象,表示_ a thing that can be done_(一件可以被完成的事情)。我们前面的输入处理程序隐式的针对一个单一的命令对象,并要求在右按钮被按下的时候其`execute()`方法被调用。 +这凸显了命令模式在实现时的一个变化。在某些情况下,像我们的第一对的例子,一个命令代表了一个可重用的对象,表示_ a thing that can be done_(一件可完成的事情)。我们前面的输入处理程序仅针对单一的命令对象,并要求在对应按钮被按下的时候其`execute()`方法被调用。 -这里,这些命令更加具体。他们表示_a thing that can be done at a specific point in time_(一件可以在特定时间点完成的事情)。这意味着每次玩家选择移动,输入处理程序代码都会创建一个命令实例。像下面这样: +这里,这些命令更加具体。他们表示_a thing that can be done at a specific point in time_(一件可在特定时间点完成的事情)。这意味着每次玩家选择移动,输入处理程序代码都会创建一个命令实例。像下面这样: ```c++ Command* handleInput() @@ -267,7 +272,7 @@ Command* handleInput() return NULL; } ``` -事实上,命令的一次性使用将会是我们可以利用的一个优势。为了撤销命令,我们定义了一个操作,每个命令类都需要来实现它: +一次性命令的特质很快能为我们所用。为了撤销命令,我们定义了一个操作,每个命令类都需要来实现它: ```c++ class Command @@ -318,13 +323,13 @@ private: int x_, y_; }; ``` -注意到我们在类中添加了一些状态。当单位移动时,它会忘记它刚才在哪。如果我们要撤销移动,我们得记住单位的上一次位置,正是`xBefore_`和`yBefore_`变量的功能。 +注意到我们在类中添加了一些状态。当单位移动时,它会忘记它刚才在哪。如果我们要撤销移动,我们得记录单位的上一次位置,正是`xBefore_`和`yBefore_`变量的功能。 > 注解 -> 这看起来挺像[备忘录模式](http://en.wikipedia.org/wiki/Memento_pattern)的,但是我发现备忘录模式用在这里并不能有效的工作。因为命令试图去修改一个对象状态的一小部分,为对象的其他数据快照是浪费内存。只手动存储改变的位码相对来说就廉价多了。 +> 这看起来挺像[备忘录模式](http://en.wikipedia.org/wiki/Memento_pattern)的,但是我发现备忘录模式用在这里并不能有效的工作。因为命令试图去修改一个对象状态的一小部分,而为对象的其他数据创建快照是浪费内存。只手动存储被修改的部分相对来说就节省很多内存了。 -> [持久化数据结构](http://en.wikipedia.org/wiki/Persistent_data_structure)是另外一个选择。通过它们,每次对一个对象进行修改都会返回一个新的对象,保留原对象不变。通过这样明智的实现,这些新对象与原对象共享数据,所以比克隆整个对象的代价要小的多。 +> [持久化数据结构](http://en.wikipedia.org/wiki/Persistent_data_structure)是另一个选择。通过它们,每次对一个对象进行修改都会返回一个新的对象,保留原对象不变。通过这样明智的实现,这些新对象与原对象共享数据,所以比拷贝整个对象的代价要小的多。 > 使用持久化数据结构,每个命令存储着命令执行前对象的一个引用,所以撤销意味着切换到原来老的对象。 @@ -336,7 +341,7 @@ private: 当玩家选择”撤销“时,我们撤销当前的命令并且将当前的指针移回去。当他们选择”重做“,我们将指针前移然后执行命令。如果他们在撤销之后选择了一个新的命令,列表中位于当前命令之后的所有命令被舍弃掉。 -我第一次在一个关卡编辑器中实现了这一点,我感觉自己就像一个巫师一样。我很惊讶它是如此的简单而且效用是如此的好。我们需要一个规则来确保每个数据的更改会经由一个命令来实现,但一旦你这样做了,剩下的就容易了。 +我第一次在一个关卡编辑器中实现了这一点,顿时自我感觉良好。我很惊讶它是如此的简单而且高效。我们需要指定规则来确保每个数据的更改都经由一个命令实现,但只要定了规则,剩下的就容易得多。 > 注解 @@ -344,11 +349,13 @@ private: > 相反,许多游戏会记录每一帧每个实体所执行的一系列命令。为了回放游戏,引擎只需要运行正常游戏的模拟,执行预先录制的命令。 +#设计决策 + # 类风格化还是函数风格化? 此前,我说命令(commands)和第一类函数或者闭包相似,但是这里我举的每个例子都用了类定义。如果你熟悉函数式编程,你可能想知道如何用函数式风格实现命令模式。 -我用这种方式写例子是因为 C++ 对于第一类函数的支持非常有限。函数指针无须过多阐述,仿函数(译者注:关于仿函数可以看[百科的介绍](http://baike.baidu.com/view/2070037.htm?fr=aladdin))看起来比较怪异,还需要定义一个类,C++11 中的闭包使用起来比较棘手因为要手动管理内存的缘故。 +我用这种方式写例子是因为 C++ 对于第一类函数的支持非常有限。函数指针无须过多阐述,仿函数(译者注:关于仿函数可以看[百科的介绍](http://baike.baidu.com/view/2070037.htm?fr=aladdin))看起来比较怪异,还需要定义一个类,C++11 中的闭包使用起来比较棘手因为要手动管理内存。 这并不是说在其他语言中你不应该使用函数来实现命令模式。如果你使用的语言中有闭包的实现,无论怎样,使用它们!在某些方面(In some ways),命令模式对于没有闭包的语言来说是模拟闭包的一种方式。 @@ -356,7 +363,7 @@ private: > 我说在某些方面(In some ways),是因为即使在有闭包的语言中为命令构建实际的类或结构仍然是有用的。如果你的命令有多个操作(如可撤销命令),映射到一个单一函数是比较尴尬的。 -> 定义一个实际的附带字段的类也有助于读者很容易分辨该命令中包含哪些数据。闭包自动包装一些状态是比较简洁,但他们太过于自动化了以至于很难分辨出它们实际上持有的状态。 +> 定义一个实际的附带字段的类也有助于读者很容易分辨该命令中包含哪些数据。闭包自动包装一些状态是比较简洁,但它们太过于自动化了以至于很难分辨出它们实际上持有的状态。 举个例子,如果我们在用 JavaScript 编写游戏,我们可以像下面这样创建一个单位移动命令: From d0ca1db98330a1767864231e79ce10b85edabe6d Mon Sep 17 00:00:00 2001 From: kislyl <1131985199@qq.com> Date: Fri, 24 Oct 2014 17:56:41 +0800 Subject: [PATCH 067/123] Update 04.1-Bytecode.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 订正至 虚拟机器码 之前。 --- 04.1-Bytecode.md | 35 +++++++++++++++++------------------ 1 file changed, 17 insertions(+), 18 deletions(-) diff --git a/04.1-Bytecode.md b/04.1-Bytecode.md index c5229d9..5817e92 100644 --- a/04.1-Bytecode.md +++ b/04.1-Bytecode.md @@ -8,33 +8,32 @@ > 我曾参与一款有600万行C++代码的游戏。比较起来火星探测车“好奇号”的控制软件的代码量还不及它的一半。 -制作游戏很有趣,但也不容易。现在的游戏需要庞大复杂的数据库。主机厂商和应用商店有严格的质量要求,一个造成崩溃的Bug就可能导致你的游戏无法发布。 +制作游戏很有趣,但也不容易。现在的游戏需要庞大复杂的代码库。主机厂商和应用商店有严格的质量要求,一个造成崩溃的Bug就可能导致你的游戏无法发布。 -与此同时,我们期许能榨干平台所能提供的全部性能。我们要不遗余力地进行优化,以跟上游戏所推动硬件进步。 +同时,我们希望将平台的性能发挥到极致。游戏的发展推动着硬件发展,我们当然要不遗余力地进行优化来赶上发展的脚步。 -为了获得高稳定性和效率,我们会选择像C++这样的重量级语言。它们兼具充分利用硬件的能力以及可以阻止或拦截Bug的强类型系统。 +为了提高高稳定性和效率,我们会选择像C++这样的重量级语言。它们兼具充分利用硬件的能力以及可以阻止或拦截Bug的强类型系统。 -我们可以为此感到骄傲,但它也有代价。多年的专业训练才能造就一个精通的程序员,随后你又必须面对庞大的代码库。大型游戏的编译时间可以短到“喝杯咖啡”,也可以长到“自己煮咖啡豆、磨咖啡豆、倒咖啡、打奶泡、练练拿铁的拉花”。 +我们可以为此感到骄傲,但它也有代价。多年的专业训练才能造就一个精通的程序员,随后你又必须面对庞大的代码库。大型游戏的编译时间可以短到“喝杯咖啡”,也可以长到把“自己煮咖啡豆、磨咖啡豆、倒咖啡、打奶泡、练练拿铁的拉花”都给搞定。 -除了这些挑战外,游戏还有个讨厌的约束:有趣。玩家需要的是既新奇又具平衡性的体验。这就需要持续迭代。如果每个小修小改都都得一个工程师去动底层代码,然后等待漫长的重编译,那实际上你已经毁了整个创作流程。 +除了这些挑战外,游戏还有个额外的苛求:有趣。玩家需要的是既新奇又具平衡性的体验。这就需要持续迭代。如果每个小修小改都都得一个工程师去动底层代码,然后等待漫长的重编译,那实际上你已经毁了整个创作流程。 ### 魔法大战! -比如说,我们在开发一款基于魔法的战斗游戏。两个对峙的法师不断向对方丢法术,直到其中一个取得胜利。我们可以在代码中定义法术,但这意味着每次修改都需要工程师介入。当一个设计师想要改些数字,试试感觉,这需要重新编译整个游戏,重启然后重新进入战斗。 +比如说,我们在开发一款基于魔法的战斗游戏。两个对峙的法师不断向对方释放法术直到分出胜负。我们可以在代码中定义法术,但这意味着每次修改都需要工程师介入。当一个设计师想要改些数值并测试效果,就需要重新编译整个游戏,重启然后重新进入战斗。 在游戏发布之后,我们得像其他游戏一样去更新它,包括修正Bug以及添加内容等。如果所有的法术都被硬编码,一次更新就等价于发一次可执行文件的补丁。 -进一步来说,如果要支持MOD,要让用户自己创建法术。如果它们都在代码里面,那这些用户都需要有完整的编译工具链去构建游戏,我们得公开所有源码。况且,如果他们的法术有Bug,其他玩家可能受到殃及而造成游戏崩溃。 +进一步,设想提供一个MOD系统以供用户自己创建法术。如果它们都在代码里面,那这些用户都需要有完整的编译工具链去构建游戏,我们得公开所有源码。况且,如果他们的法术有Bug,其他玩家可能受到殃及而造成游戏崩溃。 - -### Data > code +### 先数据后编码 很明显,我们引擎所使用的编程语言不适合解决这个问题。我们需要把法术从游戏核心移动到安全沙箱中。我们要给让它们易于修改,易于重新加载并且在物理上与游戏的可执行文件相分离。 -我不知道你怎么看,这种形式在我看来更像是种*数据*。我们可以在单独的数据文件中定义行为,游戏引擎可以以某种方式加载并“执行”它们。这样一来就达到了我们的目的。 +这种形式在我看来更像是种*数据*,你或许也会这么想。我们可以在单独的数据文件中定义行为,游戏引擎可以某种方式加载并“执行”它们,那么问题就解决了。 -我们只需要弄明白“执行”这些数据的方法。怎样才能让文件中的字节表示行为呢?有好几种方法。参照一下[解释器](http://en.wikipedia.org/wiki/Interpreter_pattern)模式,你就能对此模式的优缺点全貌有个大致了解。 +我们只需要弄明白对于数据,何谓“执行”。怎样才能让文件中的字节表示行为呢?有好几种方法。参照一下[解释器](http://en.wikipedia.org/wiki/Interpreter_pattern)模式,你就能对此模式的优缺点全貌有个大致了解。 -### 模式 -本来这个模式我可以写成一整章的,但是有四个家伙已经替我说了。所以,这里我仅做一些简介。我们从一个语言开始——你可以类比编程语言——你要去执行它。举个例子。它支持下面的数学表达式: +### 解释器模式 +本来这个模式我可以写成一整章的,但是Gof早已替我写了。所以这里我仅做简述。我们从一个语言开始——比如某种编程语言——你要执行它。例如它支持下面的数学表达式: ```c++ (1 + 2) * (3 - 4) @@ -48,7 +47,7 @@ > 这个“变化”究竟是什么?很简单——解析。解析器接受输入文本字符串,然后将它变成抽象的语法树,即一组用于表示文本语法结构的对象。 -> 把上述内容堆积起来,你就拥有了半个编译器。 +> 把上述内容堆积起来,你就完成了编译器一半的工作。 ![](./res/bytecode-ast.png) @@ -115,14 +114,14 @@ private: > Ruby在大概15年前就是这么实现的。到了1.9版本,它们改成了本章所说的字节码。看我替你省了多少时间! -这个模式虽然简单漂亮,但是也有些问题。回头看看上面的插图,你看到了些什么?很多小盒子,以及它们之间的箭头。代码用一个微小对象构成的曼生分形树来表达,会造成一些很不舒服的结果: +这个模式虽然简单漂亮,但是也有些问题。回头看看上面的插图,你看到了些什么?很多小盒子,以及它们之间的箭头。代码用一个微小对象构成的蔓生分形树来表达,会有一些副作用: - 从磁盘加载需要实例化并串联成堆的小对象。 > 如果你想自己算算的话,别忘了算上虚函数表。 -- 些对象和它们之间的指针占用大量内存。在32位机上,即使不考虑对其,这个小小的表达式也要占用68字节。 +- 些对象和它们之间的指针占用大量内存。在32位机上,即使不考虑内存对齐,这个小小的表达式也要占用68字节(4字节/指针*17个指针)。 > 要了解更多关于缓存以及它如何影响性能的原理,看看[数据局部性](06.1-Data%20Locality.md)这一章。 -- 从每个指针遍历出表达式会杀了你的数据缓存,而虚函数调用也会对指令缓存造成很大压力。 +- 从每个指针遍历出表达式都会废了你的数据缓存,而虚函数调用也会对指令缓存造成很大压力。 -总结一下,该怎么说呢?慢啊!大量的编程语言不采用解释器模式,就是因为它又慢又占内存。 +一个字概括,慢!大量的编程语言不采用解释器模式,就是因为它又慢又占内存。 ### 虚拟机器码 回到我们的游戏。当它运行的时候,玩家的电脑不会在运行时遍历一个C++语法结构树。我们已经提前将它编译成CPU可以直接执行的机器码了。那么为什么要采用机器码呢? From 077913f9048bac03bc32af4a098466a72e8a3d89 Mon Sep 17 00:00:00 2001 From: kislyl <1131985199@qq.com> Date: Sat, 25 Oct 2014 11:23:36 +0800 Subject: [PATCH 068/123] Update 04.1-Bytecode.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 订正至 ## 栈机 --- 04.1-Bytecode.md | 52 +++++++++++++++++++++++++----------------------- 1 file changed, 27 insertions(+), 25 deletions(-) diff --git a/04.1-Bytecode.md b/04.1-Bytecode.md index 5817e92..d4c5b4d 100644 --- a/04.1-Bytecode.md +++ b/04.1-Bytecode.md @@ -124,50 +124,52 @@ private: 一个字概括,慢!大量的编程语言不采用解释器模式,就是因为它又慢又占内存。 ### 虚拟机器码 -回到我们的游戏。当它运行的时候,玩家的电脑不会在运行时遍历一个C++语法结构树。我们已经提前将它编译成CPU可以直接执行的机器码了。那么为什么要采用机器码呢? -- 高密度。它是坚实持续的数据块,不会浪费任何一个bit。 +回到我们的游戏。当它运行时,计算机并不会去遍历C++语法结构树,而是执行我们在编译期编译成的机器码。那么为什么要采用机器码呢? +- 高密度。它是坚实持续的二进制数据块,不浪费任何一个字节。 - 线性。指令被打包在一起顺序执行。不会在内存中跳跃访问(当然了,除非你确实在做流程控制) -- 底层。每个单独的执行都只做一件小事,各种有趣行为都是它们的组合。 -- 高速。综上所述(当然还得算上机器码由硬件实现这一点了),机器码跑起来像风一样。 +- 底层。每个单独的指令仅仅完成一小个动作,各种有趣行为都是这些小动作的组合。 +- 高速。以上几点让机器码疾行如风(当然还得算上机器码由硬件实现这一点了)。 -听上去不错,但我们不想用机器码去编写各种法术。让用户提供在游戏里执行的机器码,简直是自找麻烦,这会带来很多安全问题。我们只能在机器码的效率和解释器模式的安全性之间取一个平衡。 +听上去激动人心,但我们不想直接用机器码来编写法术。为用户提供游戏执行的机器码,简直是自找麻烦,这会带来很多安全问题。我们只能在机器码的效率和解释器模式的安全性之间取一个折中。 -> 这就是为什么很多主机和iOS禁止程序在运行时生成或载入机器码的原因。这是个拖后腿的规定,因为最快的编程语言就是基于这个原理实现的。它们包含一个“just-in-time”编译器,或者叫JIT。它能飞快地把语言翻译成优化的机器码。 +> 这就是为什么很多主机和iOS系统禁止程序在运行时生成或载入机器码的原因。这反倒是个拖累,因为最快的编程语言就是基于这个原理实现的。它们包含一个准时(“just-in-time”)编译器,或者叫JIT。它能飞快地把语言翻译成优化的机器码。 -我们不要去加载执行真正的机器码,而去定义自己的虚拟机器码,会怎样呢?我们会在游戏中实现一个模拟器。它于机器码相似——高密度、线性、相对底层——同时它完全接受游戏安全的管理。 +我们不要去加载执行真正的机器码,而去定义自己的虚拟机器码,会怎样呢?我们在游戏中实现一个执行它们的模拟器。这些虚拟机器码与机器码相似——高密度、线性、相对底层——同时它完全接受游戏安全的管理。 -> 在编程语言的语境下,“虚拟机”和“解释器”都有自己的含义,这里我把它们穿插进来了。如果要说四人帮的解释器模式的话,我会强调“模式”这个词,以避免混淆。 -我们将这个小模拟器称为虚拟机(简称VM),这个虚拟机所执行的二进制“机器码”称为字节码。它具备从数据定义事物的灵活性和易用性,它也比解释器模式这种高级呈现方式更高效。 +> 在编程语言的语境下,“虚拟机”和“解释器”是同义词,我正是交替地使用它们。如果要说Gof的解释器模式的话,我会强调“模式”这个词,以避免混淆。 + +我们将这个小模拟器称为虚拟机(简称VM),这个虚拟机所执行的语义上的“二进制机器码”称为字节码。它具备从数据定义事物的灵活性和易用性,它也比解释器模式这种高级呈现方式更高效。 听上去挺吓人的。我在本章里剩下的目标,就是要给你展示一下,如果你控制好自己的功能清单,这个方案非常可行。即使最终你自己也没把这个模式用起来,至少你能对Lua以及别的采用这个原理的语言有更好的了解。 ## (解释器)模式 -**指令集**定义可以执行的底层操作。用**字节序列**来定义它。**虚拟机**逐条执行指令栈上的指令。通过组合指令,可以获得很多高级行为。 +**指令集**定义可以执行的底层操作。一系列指令被编码为**字节序列**。**虚拟机**逐条执行指令栈上的指令。通过组合指令,即可完成很多高级行为。 ## 使用情境 -这是本书中最复杂的模式,要把它放进你的游戏里没那么容易。仅当你的游戏中需要定义大量行为,并且它的编程语言没法处理好下列事情时: +这是本书中最复杂的模式,它可是不是轻易就能放进你的游戏里。仅当你的游戏中需要定义大量行为,并实现游戏的语言没法处理好下列事情时可以使用: - 编程语言太底层了,编写起来繁琐易错 - 因编译时间太长或工具问题,导致迭代缓慢 -- 它太相信编码者。你想确保定义的行为不会让程序崩溃,就得把它们放进安全沙箱里。 -当然,这个列表符合大多数游戏的情况。谁不想提高迭代速度,让程序更安全?但那是1有代价的。字节码比本地码要慢,所以它并不适合用作对性能要求极高的核心部分。 +- 它的安全性太依赖编码者。你想确保定义的行为不会让程序崩溃,就得把它们放进安全沙箱里。 +当然,这个列表符合大多数游戏的情况。谁不想提高迭代速度,让程序更安全?但那是有代价的。字节码比本地码要慢,所以它并不适合用作对性能要求极高的核心部分。 ## 注意 -> 对我来说游戏开发有同样的吸引力,我在努力创建虚拟世界,让别人进来玩或做创意。 -建立你自己的语言或内嵌系统是一件很有吸引力的事。这里我只做个最小化示例,但在现实中,它会像野草一样疯长。 +建立你自己的语言或内嵌系统是一件很有吸引力的事。这里我只做个最小化示例,但在实际项目中,麻烦可多多了。 + +> 这也正是游戏开发吸引我的地方,二者不论是哪个,我都在努力创建虚拟世界,让别人进来玩或做创意。 -> 比如所有的模板语言 -每次我看到有人定义一中小语言或脚本,他们会说“别担心,它会很小巧”。没法控制的是,他们会不断往里面添加小功能,直到它变成一个成熟的语言。但不像其他语言,它的发展是一些临时功能的有机组合,就像个精致的棚屋小镇。 +每当我看到有人创造出一种小语言或脚本,他们会说“别担心,它会很小巧”。没法控制的是,他们会不断往里面添加小功能,直到它变成一个成熟的语言。但不像其他语言,它的发展是一些临时功能的有机组合,就像个精致的棚屋小镇。 +> 任何一种的模板语言都是这样 当然,做个成熟的语言没什么错。只要保证你目标明确。否则,就控制好你的字节码要表达的东西,在它超出你控制之前设定好范围。 ### 你需要个前端 -低级的字节码对性能提升很大,但你没法让你的用户直接编写它们。我们将行为从代码中移出来的一个原因是想要用更高级的方式表达它。C++已经很底层了,如果想让你的用户高效得编写汇编——这根本不是种进步! +低级的字节码对性能提升很大,但你没法让你的用户直接编写它们。我们将行为从代码中移出来的一个原因是想在更高一级的层面表述它。C++已经很底层了,如果让你的用户用更高效的汇编语言编写——这根本不是种进步! > 一个反例是有名的[RoboWar](http://en.wikipedia.org/wiki/RoboWar)。在这个游戏里,玩家使用一种类似汇编的语言编写小程序,来控制机器人。我们这里也会讨论指令集这种方式。 > 这是我的第一篇汇编类语言的指南。 -就像四人帮的解释器模式一样,它假定你能够以某种方式生成字节码。通常,用户会在更高级的层次上编辑,一个工具负责将它转换成虚拟机能够理解的字节码。这个工具的名字,就是编译器。 +就像Gof的解释器模式一样,它假定你能够以某种方式生成字节码。通常,用户会在更高级的层次上编辑,一个工具负责将它转换成虚拟机能够理解的字节码。这个工具的名字,就是编译器。 我知道,听上去很可怕对不对。所以这里我先提出来了。如果你没有足够的资源去完成一个编辑工具,那么字节码不适合你。但你先别急继续往下看,也许没你想象中那么坏。 @@ -181,7 +183,7 @@ private: > 当然,如果你想让游戏支持MOD,你就得发布这些功能,这相当重要。 ## 示例 -在上面几节讨结束之后,你可能会很好奇如何直接实现它。首先,要为虚拟机设计一个指令集。在真正考虑,字节码之类的东西前,可以先把它们当成是API。 +在上面几节讨结束之后,你可能会很好奇如何直接实现它。首先,要为虚拟机设计一个指令集。在真正考虑字节码之类的东西前,可以先把它们当成是API。 ### 法术API @@ -197,13 +199,13 @@ private: 然而如果法术只是静默得改变状态,游戏逻辑上不会有问题,但是玩这样的游戏会让玩家无聊到哭的。我们来做些调整: - incantationvoid playSound(int soundId); + void playSound(int soundId); void spawnParticles(int particleType); 这些不会影响到玩法,但是会增加游戏的深度。我们还会添加摄像机抖动、动画等等。但是这些就足够我们开始了。 ### 法术指令集 -现在让我们看看如何将这些程序API转换成数据能够控制的形式。我们会从一个小的点开始,直到完成整件事情。首先拿掉这些函数中所有的参数。假设所有的_()函数都会让某个参数变成最大值。类似的,FX函数们会播放一个硬编码的音效或者特效。 +现在让我们看看如何将这些程序API转换成数据可控的形式。让我们由简入繁来完成整件事。首先拿掉这些函数中所有的参数。假设所有的set_ _ _()函数都会影响玩家控制的法师并强化其对应属性。类似的,FX操作们会播放一个硬编码的音效或者粒子特效。 在这个前提之下,法术就是一系列的指令。每个指令定义一个你想要执行的操作。我们可以枚举他们: @@ -215,13 +217,13 @@ private: INST_SPAWN_PARTICLES = 0x04 }; -为了将法术编码成数据,我们存储一枚举数组,我们的函数列表很短,他们的枚举值可以放进一个数组里面,这意味着法术的代码都是一个字节列表——所谓的字节码。 +为了将法术编码成数据,我们存储一系列枚举值在数组中。我们的仅有几种基本操作,所以枚举值长度取一个字节足矣,这意味着法术的代码都是一个字节列表——所谓的字节码。 一些字节码虚拟机使用多个字节去存储单个指令,这需要有更加复杂的解码规则。实际上常见芯片上的机器码,比如x86,就更加复杂了。 但是单字节对于[Java Virtual Machine]() 以及 Microsoft .NET 平台的基石[Common Language Runtime]()来说已经很够用了,所以对我们来说已经可以了。 -执行一条指令时,我们首先找到对应的基础方法,然后哦调用正确的API: +执行一条指令时,我们首先找到对应的基础方法,然后调用正确的API: class VM { public: @@ -235,7 +237,7 @@ private: } }; -把这段代码写进去,你就完成了你的第一个虚拟机。可惜它还不够灵活。我们没办法去定义一个能够伤害到对手或者降低某个属性的法术。我们只能播放段声音而已。 +把这段代码写进去,你就完成了你的第一个虚拟机。可惜它还不够灵活。我们没办法去定义一个能够伤害到对手或者削弱某个属性的法术。我们只能播放段声音而已。 为了多一点真正语言的感觉,我们这里需要加入参数。 From c4653275c8083ce6eb5d80024267d9b8bf623f68 Mon Sep 17 00:00:00 2001 From: kislyl <1131985199@qq.com> Date: Sat, 25 Oct 2014 14:34:51 +0800 Subject: [PATCH 069/123] Update 04.1-Bytecode.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 订正到 组合就能得到行为 之前,原来留空的地方先补了图片的网页链接。 --- 04.1-Bytecode.md | 36 +++++++++++++++++------------------- 1 file changed, 17 insertions(+), 19 deletions(-) diff --git a/04.1-Bytecode.md b/04.1-Bytecode.md index d4c5b4d..7626a36 100644 --- a/04.1-Bytecode.md +++ b/04.1-Bytecode.md @@ -243,11 +243,11 @@ private: ## 栈机 -要执行一个复杂的嵌套表达式,你从最内层的子表达式开始。计算完的内层表达式的结果,就变成了包含它们的外层表达式的参数,以此类推,直到整个表达式计算完毕。 +要执行一个复杂的嵌套表达式,你从最内层的子表达式开始。计算完的内层表达式的结果,就将结果作为包含它们的外层表达式的参数传给外层表达式进行计算,以此类推直到整个表达式计算完毕。 -解释器模式将它显式建模成一个嵌套对象树,但是我们想要获得指令列表的高速度。我们同时要保证,自表达式的结果能够正确的传入外层表达式。但由于我们的数据是被展平的,我们得通过指令的顺序去控制。我们会采用与你的CPU相同的方式——一个堆栈。 +解释器模式将这一过程显式建模成一棵嵌套对象树,但我们想要获得像指令列表一样的高速度。同时要保证自表达式的结果能够正确的传入外层表达式。但由于我们的数据是被展平的,我们得通过指令的顺序去控制。我们会采用与你的CPU相同的方式——一个堆栈。 -这个架构毫无疑问应该叫做栈机。例如Forth、PostScript和Factor这类编程语言将这个模型直接暴露给了用户。 +> 理所当然,这个架构就称为栈机。例如Forth、PostScript和Factor这类编程语言将这个模型直接暴露给了用户。 class VM { public: @@ -257,7 +257,7 @@ private: int stack_[MAX_STACK]; }; -这个虚拟机包含了一个内部数值栈。在我们的例子中,与指令相关的唯一数据类型是数字,所以我们可以使用一个整数数组。当一段数据要求指令一个一个执行下去时,实际上依次处理了堆栈元素。 +这个虚拟机内部包含了一个值堆栈。在我们的例子中,与指令相关的唯一数据类型是数字,所以我们可以使用一个int型数组。当一段数据要求指令一个一个执行下去时,实际上就是在遍历堆栈。 字面意思,数值可以被压入或者弹出这个堆栈。因此,让我们添加些方法来实现这个功能: @@ -296,10 +296,9 @@ private: break; } -为了向堆栈中添加一些数值,我们需要一个新的指令:字面值。它表示一个字面上的整数数值。但是它又从哪里获得这个值呢?这里究竟该如何避免无线循环呢? - - -这个小技巧就是利用指令流是一个字节序列--我们可以将数字直接塞进字节数组。我们用如下方式定义一个字面数字的指令类型: +为了向堆栈中添加一些数值,我们需要一个新的指令:字面值。它表示一个字面上的整数数值。但是它又从哪里获得这个值呢?这里究竟该如何避免无限循环呢? +![](http://www.gameprogrammingpatterns.com/images/bytecode-code.png) +这个小技巧就是利用指令流是字节序列的特性--我们可以将数字直接塞进字节数组。我们用如下方式定义一个字面数字的指令类型: case INST_LITERAL: { // Read the next byte from the bytecode. @@ -307,25 +306,25 @@ private: push(value); break; } - -这里,我为了避免关注代码的实现细节,仅读取了 一个单字节整数,但是在真实实现中,你肯定想要实现一个能支持你所需要的完成范围的字面整数。 +![](http://www.gameprogrammingpatterns.com/images/bytecode-literal.png) +> 这里,为了避开处理多字节整型的情况,我仅读取单字节整数,但是在实际实现中,你肯定想要支持所有你所需范围的整数参数。 它读取了字节码流中的下一个字节,将它当作一个数字写入堆栈。 -为了能够对堆栈的工作方式有个直观感受,我们把一系列的指令放在一起,看看他们如何被解释器执行。我们从一个空栈开始,解释器指向第一个指令: +为了能够对堆栈的工作方式有个直观感受,我们把几条指令串起来,看看它们如何被解释器执行。从一个空栈开始,解释器指向第一个指令: 首先,它执行第一个 INST_LITERAL。他会读取从bytecode(0)开始的下一个字节,并将它压入堆栈。 - +![](http://www.gameprogrammingpatterns.com/images/bytecode-stack-1.png) 然后,它执行第二个 INST_LITERAL。它读取数字10,并将其压入堆栈。 - -最后,它执行 INST_SET_HEALTH。它会出栈10并将其存储为数量,然后出栈0将其存储为巫师。之后,使用这两个参数调用setHealth()。 - +![](http://www.gameprogrammingpatterns.com/images/bytecode-stack-2.png) +最后,它执行 INST_SET_HEALTH。它会出栈10并将其存储到变量`amount`中,然后出栈0将其存储到`wizard`中。之后,使用这两个参数调用setHealth()。 +![](http://www.gameprogrammingpatterns.com/images/bytecode-stack-3.png) 嗒哒!我们完成了一个将玩家巫师的生命值设定为10点的法术。现在,我们就拥有了足够的灵活性,来把任何巫师的状态设定到任何想要的值。我们也可以播放不同的音效以及发粒子。 -但是,这感觉更像是数据结构。我们没法做到,例如,将巫师的生命提高其法力值的一半。我们的设计师想要制定法术的计算规则,而不仅仅是数值。 +但是,这感觉更像是数据结构。我们没法做到诸如将巫师的生命提高其法力值的一半。我们的设计师想要制定法术的计算规则,而不仅仅是数值。 -###行为 = 组合 +###组合就能得到行为 如果将我们的虚拟机看做是一种编程语言,它所支持的仅仅是些内置函数,以及它们的常量参数。为了让字节码感觉更像是行为,我们得加上组合。 @@ -346,7 +345,7 @@ private: 这使得我们能够编写任意拷贝状态值的法术。我们能够创造一个将巫师的敏捷设定为其智力甚至是复制对手生命值的古怪巫术。 -好了一点,但是仍然很有限。接下来,我们需要算术。是时候让我们牙牙学语阶段的虚拟机学会做1+1了。我们得添加些新的指令。到现在为止,你应该已经发现它的规律并能够猜到它会是怎样的了。下面是加法: +好了一点,但是仍然很有限。接下来,我们需要算术。是时候让我们牙牙学语的虚拟机学1+1了。我们得添加些新的指令。到现在为止,你应该已经发现它的规律并能够猜到它会是怎样的了。下面是加法: case INST_ADD: { int b = pop(); @@ -363,7 +362,6 @@ private: 你可能会认为我们需要指令来控制这个表达式里面由于括号造成的显式分组。但堆栈已经隐式支持它了。下面是手工求值的方法: - 获取并保存法师当前的生命值。获取并保存法师的当前敏捷度。对智慧做同样的操作。获取后两个值,将他们相加并保留结果。除以2后保留结果。取回巫师的生命并加到结果里面去。获取结果,并赋值到巫师的生命属性。 你看到那些”保留“和”取回“了吗?每个“保留”对应于一个push,每个“取回”对应于一个pop。这意味着我们可以轻易将其转换为字节码。例如,第一行获取巫师的当前生命值: From da61e83a8abee2c336d03a526a59d661cfa20fa7 Mon Sep 17 00:00:00 2001 From: kislyl <1131985199@qq.com> Date: Mon, 27 Oct 2014 11:54:34 +0800 Subject: [PATCH 070/123] Update 04.2-Subclass Sandbox.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 订正至 (沙盒)模式 之前 --- 04.2-Subclass Sandbox.md | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/04.2-Subclass Sandbox.md b/04.2-Subclass Sandbox.md index c644c56..8bc67a6 100644 --- a/04.2-Subclass Sandbox.md +++ b/04.2-Subclass Sandbox.md @@ -5,43 +5,43 @@ 使用一个基类提供的操作集合进而在子类中定义行为 #动机 -每个小孩都有一个成为超级英雄的梦想,但是很不幸,宇宙射线在地球上供应不足。游戏能够让你无限逼真的模拟成为一个超级英雄。因为我们的游戏设计师从来不会说,“不”, 我们的超级英雄游戏没有数百也起码有数十种不同种类英雄需要的超级力量。 +每个小孩都有一个成为超级英雄的梦想,但是很不幸,宇宙射线在地球上供应不足。游戏或许是令你成为超级英雄的最佳之地。因为我们的游戏设计师从来不会说,“不”, 我们的超级英雄游戏意在提供至少十种或百种不同的能力以供玩家选择。 -我们的计划是将有一个Superpower基类,然后,我们将有一个实现各个超级力量的继承类。我们将把设计文档分摊给团队中的程序员并进行编码。当我们完成的时候,我们将有一百个超级力量的类。 +我们的计划是将有一个Superpower基类,然后,我们将有一个实现各个超级力量的继承类。我们将把设计文档分摊给团队中的程序员并进行编码。当我们完成的时候,我们将有数以百计的超级力量的类。 > 注解 > 当你发现自己像这个例子一样有大量的子类的时候,这意味着一种数据驱动的方法可能更适合。试着找到一种定义数据的行为的方法,而不是用大量的代码来定义不同的力量。 -> 像模式Type Object, Bytecode 和 Interpreter 或许能有所帮助。 +> 像模式![Type Object](./04.3-Type Object.md), ![Bytecode](./04.1-Bytecode.md) 和 ![Interpreter](http://zh.wikipedia.org/wiki/Interpreter_pattern) 或许能有所帮助。 -我们想让玩家沉寖在一个复杂多变的世界里。无论他们小时候梦想过的什么力量,在我们的游戏里我们都有。这就意味着这些超级力量子类能够几乎做任何事情:播放音效,产生视觉效果,与AI交互,创建和销毁其他游戏实体以及产生物理效果。他们可以使用任何的代码基。 +我们想让玩家沉寖在一个复杂多变的世界里。无论他们小时候梦想过的什么力量,在我们的游戏里都有。这就意味着这些超级力量子类能够几乎做任何事情:播放音效,产生视觉效果,与AI交互,创建和销毁其他游戏实体以及产生物理效果。它们将涉及代码库的绝大部分内容。 -让我们解放我们的团队,让他们写超级力量的类的话,会发生什么呢? +让我们的团队就这么放手开始写这些子类,会发生什么呢? -- 会充满大量的冗余代码。由于不同的力量将有所不同,我们可以预料到大量的重复。他们中的许多将以同样的方式来产生视觉效果和播放音效。当你完成冰冻射线,热射线,第戎芥末射线这些射线时,会发现他们极其相似。如果人们在实现它们时没有整合起来,那么将会有大量重复的代码和付出。 +- 会充满大量的冗余代码。尽管不同的力量将有所不同,我们也能料到其中必有不少冗余。他们中的多数将以同样的方式来产生视觉效果和播放音效。当你完成冰冻射线,热射线,第戎芥末射线这些射线时,会发现它们在实现上极其相似。如果人们在实现它们时没有整合起来,那么将会有大量重复的代码和付出。 -- 游戏引擎的每个部分将与这些类产生耦合。在没有更好方法的前提下,人们将写出调用子系统的代码,这些子系统从来不打算与超级类直接绑定。如果我们的渲染器被组织成一些漂亮优雅的分层,只有其中的一层能够被图形引擎之外的代码使用,我们可以打赌最后将留下侵入到他们所有层的超级力量代码。 +- 游戏引擎的每个部分将与这些类产生耦合。在未深入了解之前,人们所写的代码会调用到那些可能与超级力量类毫无绑定关系的系统。如果我们的渲染器被组织成一些漂亮优雅的分层,只有其中的一层能够被图形引擎之外的代码使用,我们可以打赌最后将留下侵入到他们所有层的超级力量代码。 -- 当这些外部系统需要改变的时候,任意的一些超级力量代码将有很大的概率被破坏。一旦我们的不同种类的超级力量类与游戏引擎的各式各样的部分产生耦合的时候,必然发生的是改变这些系统将影响力量类。这将是很无趣的,因为你的图形,音效,UI程序员可能并不想非得成为游戏程序员。 +- 当这些外部系统需要改变的时候,超级力量代码将很可能被随机性地破坏。一旦我们的各种超级力量类与游戏引擎的各个零散部分产生耦合,改变这些系统无疑将影响这些超级力量类。这可不好玩,因为你的图形,音效,UI程序员可不想同时做游戏程序员的工作。 -- 定义所有超级力量遵守的约束条件很困难。例如说我们想保证所有我们超级力量播放的音效得到合理的排队和优先级处理。如果我们一百个类都自己直接地调用音效引擎的话,这将是很难实现的。 +- 定义所有超级力量都遵守的约束条件很困难。例如说我们想保证所有我们超级力量播放的音效得到合理的排队和优先级处理。如果我们的百来个类都自己直接地调用音效引擎的话,这将很难实现。 -我们需要的是给每个实现一个超级力量的游戏程序员一系列可用的基本元。你想要你的力量播放音效吗?这里提供你的playSound()函数。你想要粒子效果吗?这里有spawnParticles()。我们将保证这些操作覆盖你所有的需求,这样一来你就不用#include任意的头文件以及探入代码基的余下部分。 +我们需要的是给每个实现一个超级力量的游戏程序员一系列可用的基本元。你想要你的力量播放音效吗?那就提供给你`playSound()`函数。想要粒子效果吗?这里有`spawnParticles()`。我们将保证这些操作覆盖你所有的需求,这样一来你就不必滥用`#include`来包含某些力量类,也不必去探究代码基的余下部分。 -我们通过把这些操作设置成Superpower基类的保护方法来实现这种效果。把他们放在基类就能让每一个力量子类直接简单地访问。把他们设置为保护状态(并且可能是非虚拟的)通讯,这样他们就只能针对性地被子类调用。 +我们通过把这些操作设置成`Superpower`基类的保护方法来实现。把它们放在基类就能让每个力量子类直接简单地访问这些方法。把它们设置为保护状态(并且可能是非虚拟的)来交互,使得它们仅仅作为子类可调用的方法而存在。 -一旦我们有了这些可玩的玩具,我们需要一个地方来使用它们。因此,我们将定义一个沙盒方法,这是一个子类必须实现的抽象保护方法。在有了这些之后,为了实现一种新的力量,你: +我们已经有了玩偶,现在是时候把它们置入游戏中了。为此我们定义一个沙盒方法,这是一个子类必须实现的抽象保护方法。在有了这些之后,为了实现一种新的力量,你要做的就是: -1. 创建一个继承自Superpower的新类。 -2. 覆盖沙盒函数activate()。 -3. 通过调用Superpower提供的保护函数来实现沙盒函数的函数体。 +1. 创建一个继承自`Superpower`的新类。 +2. 覆盖沙盒函数`activate()`。 +3. 通过调用`Superpower`提供的保护函数来实现新类方法的函数体。 -我们现在能够通过使这些操作尽可能的高层来解决代码冗余的问题。当我们发现在大量子类中存在重复代码,我们可以把它向上移到Superpower中作为一个可用的新操作。 +我们通过尽可能地提高将可用操作的层面来解决代码冗余的问题。当我们发现在大量子类中存在重复代码,我们可以把它向上移到`Superpower`中作为一个可用的新操作。 -我们已经通过把耦合限制在一个地方来解决耦合问题。Superpower最终将与不同的游戏系统耦合,但是我们的一百个子类不会。反而,他们仅仅与基类耦合。当这些游戏系统中的一个变化时,对Superpower进行修改可能是必须的,但是这些大量的子类不应被改动。 +我们已经通过把耦合限制在一处来集中耦合问题。`Superpower`最终将与不同的游戏系统耦合,但我们的上百个子类不会,它们仅与基类耦合。当这些游戏系统中的一个变化时,对`Superpower`进行修改可能是必须的,但是这些大量的子类不应被改动。 -这个设计模式会催生一种浅而宽的类层次架构。你的继承链不会深,但是会有大量的类挂在Superpower上。通过生成一个有大量直接子类的单个类,我们在代码基里就有只有一个点的杠杆。我们在Superpower中所付出的时间和关爱都将对游戏中大量的类带来益处。 +这个设计模式会催生一种浅而宽的类层次架构。你的继承链不会深,但是会有大量的类挂在`Superpower`上。通过生成一个有大量直接子类的单个类,我们在代码基里就有一只单点杠杆。我们在`Superpower`中所付出的心血都将对游戏中大量的类带来益处。 > 注解 From 950afed0882017263652fbdeb74ae189a5d2f1db Mon Sep 17 00:00:00 2001 From: kislyl <1131985199@qq.com> Date: Mon, 27 Oct 2014 18:01:31 +0800 Subject: [PATCH 071/123] Update 04.2-Subclass Sandbox.md --- 04.2-Subclass Sandbox.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/04.2-Subclass Sandbox.md b/04.2-Subclass Sandbox.md index 8bc67a6..04d3256 100644 --- a/04.2-Subclass Sandbox.md +++ b/04.2-Subclass Sandbox.md @@ -13,7 +13,7 @@ > 当你发现自己像这个例子一样有大量的子类的时候,这意味着一种数据驱动的方法可能更适合。试着找到一种定义数据的行为的方法,而不是用大量的代码来定义不同的力量。 -> 像模式![Type Object](./04.3-Type Object.md), ![Bytecode](./04.1-Bytecode.md) 和 ![Interpreter](http://zh.wikipedia.org/wiki/Interpreter_pattern) 或许能有所帮助。 +> 像模式[Type Object](./04.3-Type Object.md), [Bytecode](./04.1-Bytecode.md) 和 [Interpreter](http://zh.wikipedia.org/wiki/Interpreter_pattern) 或许能有所帮助。 我们想让玩家沉寖在一个复杂多变的世界里。无论他们小时候梦想过的什么力量,在我们的游戏里都有。这就意味着这些超级力量子类能够几乎做任何事情:播放音效,产生视觉效果,与AI交互,创建和销毁其他游戏实体以及产生物理效果。它们将涉及代码库的绝大部分内容。 From fb4ab9e280171c7c5ab1f146daeb139dcf753cc9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A5=9E=E9=AD=94=E4=B8=80=E5=BF=B5?= <814278495@qq.com> Date: Mon, 27 Oct 2014 18:54:45 +0800 Subject: [PATCH 072/123] commit 06.2.01 --- 06.2-Dirty Flag.md | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/06.2-Dirty Flag.md b/06.2-Dirty Flag.md index 85d44d5..62a8cbf 100644 --- a/06.2-Dirty Flag.md +++ b/06.2-Dirty Flag.md @@ -1,2 +1,19 @@ -Dirty Flag + +脏标记模式 ============================ +# 目的 + +*使用延时计算避免不必要的工作* + +## 动机 + +许多游戏都有一个称之为*screen graph*(场景图)的东西.这是一个大的数据结构,包含了游戏世界中所有的物体.渲染引擎使用他来决定将物体绘制到屏幕的什么地方. + +简单来说,一个*scene graph*(场景图)是包含多个物体的列表.每个物体都含有一个model(模型)或者其他图元(graphic primitive),和一个*transform*(变换).transform(变换)描述了物体在世界中的位置,旋转角度和缩放大小.想要移动或者旋转物体,我们可以修改他的变换. + +

-## See Also +## 参考 * I've mentioned this a few times already, but in many ways, this pattern is the asynchronous cousin to the well-known Date: Sun, 25 Jan 2015 10:00:56 +0800 Subject: [PATCH 107/123] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E7=A9=BA=E9=97=B4?= =?UTF-8?q?=E5=88=86=E5=8C=BA=E7=BF=BB=E8=AF=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 提交空间分区翻译 --- 06.4-Spatial Partition.md | 510 +++++++++++++++++++++++++- res/spatial-partition-adjacent.png | Bin 0 -> 46336 bytes res/spatial-partition-battle-line.png | Bin 0 -> 46413 bytes res/spatial-partition-grid.png | Bin 0 -> 61225 bytes res/spatial-partition-linked-list.png | Bin 0 -> 27166 bytes res/spatial-partition-neighbors.png | Bin 0 -> 19154 bytes res/spatial-partition-quadtree.png | Bin 0 -> 72029 bytes 7 files changed, 509 insertions(+), 1 deletion(-) create mode 100644 res/spatial-partition-adjacent.png create mode 100644 res/spatial-partition-battle-line.png create mode 100644 res/spatial-partition-grid.png create mode 100644 res/spatial-partition-linked-list.png create mode 100644 res/spatial-partition-neighbors.png create mode 100644 res/spatial-partition-quadtree.png diff --git a/06.4-Spatial Partition.md b/06.4-Spatial Partition.md index fe70c74..fa5cfac 100644 --- a/06.4-Spatial Partition.md +++ b/06.4-Spatial Partition.md @@ -1,2 +1,510 @@ -Spatial Partition +空间分区 ============================ + +# 目的 +将对象存储在根据位置组织的数据结构中来高效的定位对象。 + +# 动机 +游戏允许我们来探寻其他世界,但这些世界和我们的世界有着明显的不同。他们通常与我们宇宙中共享着相同的基本物理规则和形体。这就是为什么他们看起来是那么的真实,尽管被制作成了位和像素点。 + +我们在这虚拟现实中将要关注的一点就是位置。游戏世界具有空间感,对象则分布于空间中的某处。这个体现于很多方式。一个明显的例子就是物理--对象的移动,碰撞和相互影响,但也有其他的例子。比如音频引擎会考虑声源与那些角色相关,从而更远的声音要相对安静点。在线聊天可能被限制在附近的玩家之间。 + +这意味着你的游戏引擎通常需要解决这个问题,“对象的附近有什么物体?”如果在每一帧中它不得不花费足够的时间来解决这个问题的话,那么就是遇到性能瓶颈了。 + +## 战场单元 + +假设我们在制作一款即时策略游戏。数百个敌军单位将聚集在战场上。勇士们需要知道他们附近有哪些敌军,简单的方式处理就是查看每一对单位看看他们彼此有多靠近。 + +```c++ +void handleMelee(Unit* units[], int numUnits) +{ + for (int a = 0; a < numUnits - 1; a++) + { + for (int b = a + 1; b < numUnits; b++) + { + if (units[a]->position() == units[b]->position()) + { + handleAttack(units[a], units[b]); + } + } + } +} +``` + +这里我们用了一个双重循环,每一个循环遍历了战场上的所有单位。这意味着我们每一帧成对检验的次数随着单位个数的平方数而增加。每增加一个额外的单位,都要于所有前面的单位进行比较。当单位个数非常大时,便会失控。 + +> 注:内循环并没有遍历所有的对象。它只是遍历了外循环还没有访问过的对象。这样就避免了对每一对单位进行两次比较,每一次顺序不同而已。如果我们已经处理过了 A和 B 之间的碰撞,我们就 +不再需要再次检测 B 和 A 之间的碰撞。 + +> 在 Big-O 方面,尽管仍然是 O(n²)。 + +## 绘制战线 + +我们遇到的问题是单位数组没秩序可循。为了找到某处位置附近的单位,我们不得不遍历整个数组。现在,想象一下我们简化下这个游戏。我们将战场想象成1维战场线,而不是2维的战场。 + +![](res/spatial-partition-battle-line.png) + +在这种情况下,我们通过单位在战场线上的位置来将数组排序可以让事情变得更简单点。一旦我们做到了这点,我们变可以使用类似[二分查找](http://en.wikipedia.org/wiki/Binary_search)的方式来寻找附近的单位而不是遍历扫描整个数组。 + +> 注:二分查找复杂度为 O(log n),意味着寻找所有战场单位复杂度从 O(n²) 降到了 O(n log n)。像[鸽巢排序](http://en.wikipedia.org/wiki/Pigeonhole_sort)的算法可以将复杂度降到 O(n)。 + +我们来举一反三下:如果我们将我们的对象用他们的位置信息来组织存储为一个数据结构,我们就能更快的查找到他们。这个模式便是将这个想法应用到了超越1维的空间。 + +# 关于该模式 + +对于一组对象而言,每一个对象在空间都有一个位置。将对象存储在一个根据对象的位置来组织对象数据结构中,该数据结构可以让你高效的查询靠近某处的对象。当对象的位置变化时,更新该空间数据结构以便可以持续查找对象。 + +# 使用情境 + +这是一个常见的模式,用来存储存活的,移动的游戏对象以及静态图像和游戏世界的几何形状。复杂的游戏常常有多个空间分区来应对不同类型的内容。 + +该模式的基本要求是你有一组对象,每个对象都有某种位置信息,而你因为要根据位置做大量的查询来查找对象从而遇到了性能问题。 + +# 使用须知 + +空间分区将 O(n) 或者 O(n²) 操作变得更易于管理。对象越多,模式的价值就越大。相反,如果你的 n 很小,可能不值得使用这个模式。 + +由于这种模式要根据对象的位置来组织对象,对象改变位置就变得难以处理。你必须重新组织数据结构来跟踪物体的新位置,这会增加了代码的复杂性和花费的CPU周期。确保这么做是值得的。 + +> 注:想象一下,一个哈希表如果哈希对象的键可以自发的改变,你就会感觉到为什么棘手了。 + +想象一下,一个哈希表,其中的哈希对象的键就可以自发地改变,你就会更好的体会到为什么棘手。一个空间分区还使用额外的内存来保存数据结构。就像许多的优化一样,它是以空间换取速度。如果在时钟周期内内存吃紧的话,这可能是个亏本生意。 + +# 范例代码 + +模式的本质就在于他们的变化性--每一个实现都有所不同,虽然不像其他的模式,许多这样的变化都文档证据充分。学术界喜欢发表论文来证明性能上的提升。因为我只关心模式背后的概念,所以我准备为你展示最简单的空间分区:一个固定的表格。 + +> 注:查看本章节最后一部分列举的游戏中最常见的一些空间分区方法。 + +## 一张方格纸 + +设想一下战场的整个区域。现在,将固定大小的正方形拼接起来就像一张方格纸一样。我们不将我们的单位存储在一个单一的数组中,相反的,我们将他们放在这个表格的单元格中。每一个单元格从存储着一系列单位,他们的位置就在单元格的边界之内。 + +![](res/spatial-partition-grid.png) + +我们在处理战斗时,只考虑在同一个单元格内的单位。我们不会将每个单位与游戏中的其他单位一一比较,取而代之的是,我们已经将战场划分成了一堆更小的小型战场,每一个小战场里有着少的多的单位。 + +## 单位被链接起来的表格 + +好的。让我们开始编码。首先,做些准备工作。下面是`Unit`类: + +```c++ +class Unit +{ + friend class Grid; + +public: + Unit(Grid* grid, double x, double y) + : grid_(grid), + x_(x), + y_(y) + {} + + void move(double x, double y); + +private: + double x_, y_; + Grid* grid_; +}; +``` + +每一个单位都有一个位置(二维空间中)和一个指向`Grid`的指针。我们将`Grid`做为友元类,因为就像我们看到的,当一个单位的位置发生改变时,我们不得不对 grid 进行处理确保一切都更新正常。 + +下面是`Grid`的大体样子: + +```c++ +class Grid +{ +public: + Grid() + { + // Clear the grid. + for (int x = 0; x < NUM_CELLS; x++) + { + for (int y = 0; y < NUM_CELLS; y++) + { + cells_[x][y] = NULL; + } + } + } + + static const int NUM_CELLS = 10; + static const int CELL_SIZE = 20; +private: + Unit* cells_[NUM_CELLS][NUM_CELLS]; +}; +``` +注意到每一个`cell`都是指向一个`unit`的一个指针。下面我们将用`next`和`prev`指针来扩展`Unit`: + +```c++ +class Unit +{ + // Previous code... +private: + Unit* prev_; + Unit* next_; +}; +``` +这下我们就能用一个[双重链表](http://en.wikipedia.org/wiki/Doubly_linked_list)来组织单位来取代数组了。 + +![](res/spatial-partition-linked-list.png) + +表格中的每个`cell`(单元格)都会指向单元格之内的单位列表的第一个单位,而每个单位都有指针用来指向列表中之前和之后的单位。我们很快就了解为什么这么做。 + +> 注:在这本书中,我避免使用了 C++ 标准库的任何内建集合类型。我想要用尽可能少的外部知识来理解这些例子,而且,就像魔术师的“nothing up my sleeve”,我想描述更清楚代码做了 +什么。细节很重要,尤其设计到性能相关时。 + +> 但这是我解释模式时的一个选择。如果你在实际编码使用时,自己搞定所用语言的内建集合类型。生命短暂无需从头开始编写链表。 + +## 进入战场 + +我们需要做的第一件事就是将新创建出来的单位放到表格中。我们使用`Unit`类的构造函数来处理: + +```c++ +Unit::Unit(Grid* grid, double x, double y) +: grid_(grid), + x_(x), + y_(y), + prev_(NULL), + next_(NULL) +{ + grid_->add(this); +} +``` +`add()`方法实现如下: + +```c++ +void Grid::add(Unit* unit) +{ + // Determine which grid cell it's in. + int cellX = (int)(unit->x_ / Grid::CELL_SIZE); + int cellY = (int)(unit->y_ / Grid::CELL_SIZE); + + // Add to the front of list for the cell it's in. + unit->prev_ = NULL; + unit->next_ = cells_[cellX][cellY]; + cells_[cellX][cellY] = unit; + + if (unit->next_ != NULL) + { + unit->next_->prev_ = unit; + } +} +``` + +> 注:除以单元格的尺寸将世界坐标转换到了单元格坐标。然后使用int类型来截断小数部分,就到了单元格的索引。 + +代码有点像链表代码一样挑剔,但基本思想很简单。我们找到单位所处的单元格然后将它添加到链表的前面。如果单位列表已经存在,我们将它链接到新单位的后面。 + +## 刀光剑影的战斗 + +当所有单位被置入单元格后,我们便让他们开始相互攻击。在`Grid`类中,处理战斗的主要函数如下: + +```c++ +void Grid::handleMelee() +{ + for (int x = 0; x < NUM_CELLS; x++) + { + for (int y = 0; y < NUM_CELLS; y++) + { + handleCell(cells_[x][y]); + } + } +} +``` +上面的方法遍历了每一个单元格,并且调用`handleCell()`。正如你所见,我们确实已经将大战场切分成了一些孤立的小规模冲突。每个单元格处理战斗函数如下: + +```c++ +void Grid::handleCell(Unit* unit) +{ + while (unit != NULL) + { + Unit* other = unit->next_; + while (other != NULL) + { + if (unit->x_ == other->x_ && + unit->y_ == other->y_) + { + handleAttack(unit, other); + } + other = other->next_; + } + + unit = unit->next_; + } +} +``` + +Aside from the pointer shenanigans to deal with walking a linked list, note that this is exactly like our original naïve method for handling combat. It compares each pair of units to see if they’re in the same position. + +The only difference is that we no longer have to compare all of the units in the battle to each other — just the ones close enough to be in the same cell. That’s the heart of the optimization. + +> 注意:简单分析下,看起来我们这么做使得性能变得更差。我们将单元格遍历一个双重嵌套循环变成了三重嵌套循环。但这里的窍门是,这两个内部循环现在遍历的数目已经很少了,这将足以 +抵消外部循环遍历的单元格的代价。 + +> 不过,这个并不取决于我们单元格的颗粒度。让单元格变得更小对于外部循环来说无关紧要。 + +## 移动 +我们已经解决了性能问题,但却遇到了一个新的问题。单位现在都被困在了单元格里面。如果将单位从它所在的单元格移动出去,那么这个单元格中的其他单位将不会再看到这个单位,而其他任何单位也不会再看到。我们战场分区分的有些过了。 + +为了修复这个问题,我们还需要在单位每次移动的时候做一点工作。如果单位越过了单元格的边界线,我们需要将单位从单元格移除掉并且添加到新的单元格中。首先,我们给`Unit`类添加一个方法来改变它的位置: + +```c++ +void Unit::move(double x, double y) +{ + grid_->move(this, x, y); +} +``` +从使用上看,这段代码可以被计算机控制的单位的AI代码调用,也可以被玩家控制单位的用户输入代码控制。它所做就是将控制权交给 grid,grid 的 move 如下: + +```c++ +void Grid::move(Unit* unit, double x, double y) +{ + // See which cell it was in. + int oldCellX = (int)(unit->x_ / Grid::CELL_SIZE); + int oldCellY = (int)(unit->y_ / Grid::CELL_SIZE); + + // See which cell it's moving to. + int cellX = (int)(x / Grid::CELL_SIZE); + int cellY = (int)(y / Grid::CELL_SIZE); + + unit->x_ = x; + unit->y_ = y; + + // If it didn't change cells, we're done. + if (oldCellX == cellX && oldCellY == cellY) return; + + // Unlink it from the list of its old cell. + if (unit->prev_ != NULL) + { + unit->prev_->next_ = unit->next_; + } + + if (unit->next_ != NULL) + { + unit->next_->prev_ = unit->prev_; + } + + // If it's the head of a list, remove it. + if (cells_[oldCellX][oldCellY] == unit) + { + cells_[oldCellX][oldCellY] = unit->next_; + } + + // Add it back to the grid at its new cell. + add(unit); +} +``` +上面代码较多,但是却很简单。我们首先检查单位是否越过了单元格的边界。如果没有,我们只需要更新单位的位置就完成了。 + +如果单位离开了所在的单元格,我们将它从单元格的链表中移除掉,然后将之添加到 grid 上。就像添加一个新单位一样,这样会将单位插入到链表中对应着新的单元格。 + +这就是为什么我们会使用一个双重链表--我们通过设定少量几个指针就可以非常快速的从链表中添加和移除单位。在每一帧有着大量的单位移动时,这样就显得非常重要。 + +## 近在咫尺,短兵相接 + +这个似乎看起来很简单,但是我用某种方式作了弊。在例子中,当单位出在相同位置时才会相互作用。对于跳棋和国际象棋是没问题的,但是对于更逼真的游戏来说就不适用了。那些通常要考虑到攻击距离。 + +这种模式仍然工作良好。不检查位置是否精确的匹配,我们这么做: + +```c++ +if (distance(unit, other) < ATTACK_DISTANCE) +{ + handleAttack(unit, other); +} +``` + +当范围足够接近,我们需要考虑到一种情况:在不同的单元格内的单位也可以足够靠近来相互作用。 + +![](res/spatial-partition-adjacent.png) + +像上图中,B在A的攻击范围内即便他们的中心点位于不同的单元格。为了处理这种情况,我们不仅需要相同单元格的单位,还要比较相邻单元格的单位。为达目标,首先我们将`handleCell()`的内循环切分开来。 + +```c++ +void Grid::handleUnit(Unit* unit, Unit* other) +{ + while (other != NULL) + { + if (distance(unit, other) < ATTACK_DISTANCE) + { + handleAttack(unit, other); + } + + other = other->next_; + } +} +``` +现在我们的函数会采用一个单一的单位和链表的其他单位来判断是否有相互作用。然后我们用`handleCell()`这么做: + +```c++ +void Grid::handleCell(int x, int y) +{ + Unit* unit = cells_[x][y]; + while (unit != NULL) + { + // Handle other units in this cell. + handleUnit(unit, unit->next_); + + unit = unit->next_; + } +} +``` + +注意到我们将单元格的坐标也传入了进去,而不只是单位链表。眼下,这个和上面的例子做的事情没有什么不同,但我们将会稍微的扩展下: + +```c++ +void Grid::handleCell(int x, int y) +{ + Unit* unit = cells_[x][y]; + while (unit != NULL) + { + // Handle other units in this cell. + handleUnit(unit, unit->next_); + + // Also try the neighboring cells. + if (x > 0 && y > 0) handleUnit(unit, cells_[x - 1][y - 1]); + if (x > 0) handleUnit(unit, cells_[x - 1][y]); + if (y > 0) handleUnit(unit, cells_[x][y - 1]); + if (x > 0 && y < NUM_CELLS - 1) + { + handleUnit(unit, cells_[x - 1][y + 1]); + } + + unit = unit->next_; + } +} +``` +`handleUnit()``函数用来寻找当前单位和相邻8个单元格中的4个单位之间的击打。如果在相邻单元格中的任何单位离当前单位的攻击半径足够近,它将找到击打。 + +> 注:单位所在的单元格标记为 U, 相邻单元格标记为了 X。 + +> ![](res/spatial-partition-neighbors.png) + +我们只查看一半相邻的单元格,和内部循环在当前单位开始的原因一样----为了避免比较同对单位两次。考虑下如果我们检查8个相邻单元格会发生什么。 +我们仅看一半的邻居,该内环在当前单元之后开始同一原因 - 为了避免比较各对单元两次。试想,如果我们做检查所有八个相邻小区会发生什么。 + +比方说,就像前面的例子一样,在相邻的单元格内,我们有两个单位足够接近击中对方。如果我们查看单位周围所有的8个单元格,以下就是会发生的事情: + +1.当要寻找 A 的攻击时,我们会查看它右边的邻居,并且发现了 B。所以我们登记下 A 和 B 之间的攻击。 + +2.然后,当寻找 B 的攻击时,我们会查看它左边的邻居,并且发现了 A,所以我们登记下了 A 和 B 之间的第二次攻击。 + +仅仅查看一半的邻居便可修复这个问题。至于哪一半并不要紧。 + +还有一个情况我们也需要考虑下。在这里,我们假设最大的攻击距离要比一个单元格小。如果我们有着较小的单元格但却较大的攻击距离时,我们可能需要扫描一堆相邻的单元格,它们可能横跨了 +好几行。 + +# 设计决策 + +明确定义的空间分区的数据结构有一个相对简短的一个列表,这里本可以一个一个来看下。相反,我试图根据他们的本质特征来组织这一点。我希望一旦你了解到四叉树和二叉空间分割(BSP) +之类时,这将有助于你了解他们是如何工作的,为什么这么工作以及在这之间做出选择。 + +## 分区是层级的还是扁平的? + +在网格例子中,我们将网格划分成了一个单一扁平的单元格集合。与此相反,层级空间分区只是将空间划分成几个区域。然后,如果这些区域中仍然包含着许多的对象,会继续划分。这个过程递归 +持续到每个区域的对象数目要比对象的一些最大数目要少。 + +> 注:他们通常会切分2、4、8个区域,这些数字对程序员而言非常漂亮。 + + +### 如果它是一个扁平的分区: + +1.相对简单点。扁平的数据结构相对来说更容易推理和实现。 + +> 注:我几乎在每个章节中都会提到这点,并且理由十足。无论何时,采取相对简单点的方案。软件工程大部分都是在和复杂性对抗。 + +2.内存使用恒定。由于添加新对象不需要创建新的分区,所以空间分区使用的内存通常可以提前固定。 +3.当对象改变位置时可以更为快速的更新。当一个对象移动,数据结构需要更新以找到对象的新位置。使用层级空间分区,这可能意味着调整层次结构的若干层。 + +### 如果它是一个层级的分区: + +1.它可以更有效的处理空的空间。想想一下,在我们前面的例子中,如果战场的一整面是空的,我们就会有大量的空单元格,而我们不得不在每帧中分配内存和遍历。 + +因为层级空间分区不会细分稀疏区域,所以一个大的空白空间仍然是一个单独的分区,而不是大量细小的分区。 + +2.它处理对象稠密区域时更为有效。这是硬币的另一面:如果你有一堆对象成群的在一起,非层级分区是低效的。你最终会有一个有着许多对象的分区而你可能却无法对之进行分割。层级分区将会 +自适应细分成更小的分区,使得你一次只需考虑少数几个的对象。 + +## 分区依赖于对象集合吗? + +在我们的示例代码中,网格的间距是预先固定的,并且我们将单位放置进入了单元格中。其他的分区方案是自适应的,他们根据实际的对象集合以及他们在世界中的位置来选择分区的边界。 + +我们的目标是有一个均衡的分区,每一个分区都有着大致相同的对象个数以获得最佳的性能。考虑以我们的网格例子,如果所有单位都集中在了战场的一个角落,他们将会处在同一个单元格内,找寻 +单位间攻击的代码会回到原来的 O(n²) 问题,而这个正是我们试图要解决的问题。 + +### 如果分区依赖于对象: + +1.对象可以逐步被添加。添加一个对象意味着要找到正确的分区并且将对象放置进去,所以你可以一次完成这个而没有任何性能问题。 + +2.对象可以快速的移动。对于固定的分区,移动一个单位意味着要将单位从一个单元格中移除然后添加到另外一个单元格。如果分区边界本身基于对象集合来改变,那么移动对象会引起边界的移动, +这样会引起大量其他的对象需要被移动到不同的分区。 + +> 注意:这个很类似于红黑树或者AVL树这样的二叉搜索树:当你添加一个单一的item时,你可能最终需要对数进行重新排序并且对周围的一堆节点洗牌移动。 + +3.分区可以不平衡。当然,这么做会让你对均匀分布的分区只有较少的控制。如果对象拥挤到一起,你会得到一个糟糕的性能表现因为在空白区域浪费了内存。 + +### 如果分区自适应于对象集合: + +像二叉空间分割和 k-d 树这样的空间分区会递归的将世界分割开来,以使得每部分包含着数目相同的对象。要做到这点,你必须要计算当选择分区部分时在每一边对象的数目。边界体积层次结构是 +空间分区中的另外一种类型,用于优化世界中的特定对象集合。 + +1.你可以确保分区平衡。这不仅仅带来优秀的性能表现,而且会是持续稳定的表现:如果每个分区有着相同数量的对象,你便可以确保对世界中的分区的查询需要大约相同的时间量。当需要维持一个 +稳定的帧速率,这种稳定性比原始的性能更为重要。 + +2.对整个对象集合一次性的进行分区更为有效。当对象集合影响到边界时,最好在分区之前对所有对象进行审视。这就是为什么这种类型的分区越来越多的应用于游戏中需要保持固定的图形和静态几何部分。 + +### 如果分区不依赖于对象,而层级却依赖于对象: + +有一个空间分区特别值得一提,因为它在固定分区和自适应上有着最好的特性:四叉树。 + +> 注:四叉树分割了2维空间。3维模拟的是八叉树,这个需要体积和将之分割成8个立方体。除了额外的唯独,它工作的原理和四叉树一样。 + +四叉树从将整个空间作为一个单一的分区开始。如果空间中对象的的数目超过了某一个阈值,空间便被切分成四个较小的正方形。这些正方形的边界是固定的:他们总是将空间对半切分。 + +然后,对于四个正方形中的每一个而言,我们再一次做了同样的过程,递归,直到每一个正方形内部只有少量的对象。由于我们只是递归的将高密度对象区域切分开,这个分区会自适应于对象集合, +但分区不会移动。 + +在下图中,从左往右阅读,你可以看到分区的过程: + +![](res/spatial-partition-quadtree.png) + +1.对象可以逐步的增加。添加一个新对象意味着要寻找合适的区域并且放置进去。如果对象放入区域中超过了最大的数目,那么区域会被继续细分。在区域中的其他对象也会被分到更细小的区域中去。 +这需要一些工作,但是努力是值得的:你必须要移动的对象的数目始终要比最大的对象数目要少。添加一个单一的对象永远也不会触发多个细分动作。 + +删除的对象同样简单。你将对象从它所在区域中移除,如果它的父区域的对象总数低于了一个阈值,你就可以合并这些细分的区域。 + +2.对象可以快速的移动。这个,当然,和上面一样。“移动”一个对象只是一个添加和一个删除,两者和四叉树一样,相当快。 + +3.分区是平衡的。由于任何给定的区域中的对象数目都比对象的最大的数目要小,即使对象聚集在一起,你也不必用一个单一的分区来容纳这些大量的对象。 + +## 对象只存储在分区中吗? + +你可以将空间分区看作是游戏中对象存活的地方,或者你可以将它考虑只当作是二级缓存,相比直接持有对象列表的集合而言,查询能够更快速。 + +### 如果它是对象唯一的存储的地方: + +这个避免了两个集合的内存开销和复杂性。当然,将东西存成一份要比两份代价要小。另外,如果你有两个集合,你必须确保集合间的同步。每次当一个对象被创建或者被删除,将不得不从两者中 +添加或者删除。 + +### 如果存在存储对象的另外一个集合: + +遍历所有的对象更为快速。如果问题中对象是“存活”的并且他们需要做一些处理,你可能会发现自己要频繁的访问每一个对象,无论对象的位置在哪。试想一下,在我们前面的例子中,大部分单元格 +都是空的。遍历表格中所有单元格找到非空的那些单元格是在浪费时间。 + +第二个集合只存储那些可以让你直接遍历访问的对象。你有两个数据结构,其中一个针对每个用例进行了优化。 + +# 其他参考 + +- 在这章中我试图不去详细讨论空间分区的结构,以保持章节的高层次概括性(并且也不会太长!),但是下一步你应该要去了解一些常见的结构。尽管他们的名字吓人,但却出奇的简单。常见的有: + + - [网格](http://en.wikipedia.org/wiki/Grid_(spatial_index) + - [四叉树](http://en.wikipedia.org/wiki/Quad_tree) + - [二叉空间分割](http://en.wikipedia.org/wiki/Binary_space_partitioning) + - [k-dimensional树](http://en.wikipedia.org/wiki/Kd-tree) + - [层次包围盒](http://en.wikipedia.org/wiki/Bounding_volume_hierarchy) + +- 每一个空间数据结构基本都从一个现有已知的1维数据结构扩展到多维,了解他们的线性结构会帮助你判断他们是否适合解决你的问题: + + - 网格是一个持久的[桶排序](http://en.wikipedia.org/wiki/Bucket_sort)。 + - 二叉空间分割, k-d 树, 以及层次包围盒都是[二叉查找树](http://en.wikipedia.org/wiki/Binary_search_tree)。 + - 四叉树和八叉树都是[Trie树](http://en.wikipedia.org/wiki/Trie)(译者注:Trie树是哈希树的变种)。 diff --git a/res/spatial-partition-adjacent.png b/res/spatial-partition-adjacent.png new file mode 100644 index 0000000000000000000000000000000000000000..5ffc99a5785820edf421ea03d3db8c9523989482 GIT binary patch literal 46336 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

9PCiG9#X+K`PO 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 M07*qoM6N<$f*(7U?f?J) literal 0 HcmV?d00001 diff --git a/res/spatial-partition-linked-list.png b/res/spatial-partition-linked-list.png new file mode 100644 index 0000000000000000000000000000000000000000..2dc27d5cab03bf713bb084ca9db0fe89581ef577 GIT binary patch literal 27166 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 N002ovPDHLkV1hQ^+hTh%A{u>(vgjc}b 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%0D1qHJx8d zl8)~pz{$l8iF#N~0nItXJ}vwH4sv1$FeTZk#Oi8}^fxZ}3}mmWf5 zmiCw##}2WW{Q*+(kUcM`LrP~!Ya>lA+^sW1?A#!HucR1;(*L;SV$<}kk3I<1k3Q;w zwsDOl;*A)b2I!zOJT*mMFhQ2E1_GZV+M1_A5}YdW?YgFyQv)3aQ*3<}6o26m6!4e3 z=5jwkT1U-H{#=9(p$pI|{1*51tbwg|LVi#0J%^2K0;|iif$et;p#dIeTehut0%i25 zgJ!ZnW(${7D8g(1j4MS_D?c1UDk0qxVy2?HRM5t^UW&erIi?Fi4E2LjgNVXtFT5CC z-_n|W5M7S)IrFzMrk&;t&`v3pmTaHl+`WcwVufS>aqn-d1r(8d|)=pN)3I zrYp3%Z^m#UmXD{E;|zg=E+>X=;RL{XrH24>{^H5fKlBjln%xNV&$*YiOeZE&In-LV z{&=F6C3Iy8>^U{}Ik0={T1A6$5rP}qp{&&_6>^GS7C}O5vojcyXjKeeTN`uMPuM!0 zi^9^Yt1#e&>_s_gGg9%nWH)~`9f|=f3`b_5OI#2M_fyf+ljwZ~xZp9nUHnTwFPG-I0!K5woWa*I zoS{Y8oWf{3SnGWld<>m!h0XCj4h1c%u7k)9!L~{(FFPUfW2`arf=%tHrjIfD{Dv2Z z^%u~7ofh^pqJOr`$H=ih4UM+spJ&bgIqznEobwj6aM!@~rE&Ms+aV>)A}xmRsaJ{2CuK_&JnKk#qk4f-xwx)ME+fG`P>!DwNPJb~>l) zMkkTe`EF3z;#E+C65bJcPRK?dM0EXdB?Ti9ob*9;(h_fmCDNT~*cz5ub^6vD`@Z}= zjS4Z0A(wYl#iz7<)bc!YGmgVXaQzh&W*FRe=OkL2Kfpx{`AK26skBO)>P`rmlu!tS z6d?LtQ@r`lCTjv1-Q741=$C5Emcg=1hF;Qw5^ZXv~wDsT{}@-`Dle03Q_5L z)SZigO7;+Qg&s^!=Uq*~72|iB^fP&G_FQ%GHSNZj)ME=ROU#_|C zo*8`k;`W**pBs=~rTpsfOkVEI|9&5t#IP|`aSo=E1W{yj!D+cbB}2Y+>nqdSN$;g) zja6nUIAAN=3Fr_cukFY+gbmnVrs)$Zgi9ce*df3VkYt3;p3%BX)-a4xi??n+`BKs%kjC*!8{k~ZQDvQI5B8* zZG(!|x1ozd1v_fhW@8t=^D(Dom;2GuC?nf>$r7p?nK1VRi_+sloHnILfnNSCeD{wX z`{kdhQ~k!kwz*%HpWimb%A0;Vgvjwp{)TWAlqE}i3=45gb+zZ1k2}bO#qd$@FPo2J z(wvEEqD~*U-D}lC8qp6HqAw1?u(UzHUqNsn4VfIy+MR+PEh+4+FL(In1Kt>1h>9*) zTo(=D0Uyf^b_n7%yg%Y)Mcw<-k1Y#uY0A?UC4E6nQIOXr#%$0&r{_adeQ%@^?bVog zK8)GSvw_p*n-qPBQTeC_k)qG>oc3I2DJeN^)IZbr?5MAm$~MhXwlf)4O+g6gSTt`_ z`nD9XVK$Isc<-0gi*^lwOfVs=0}#F(DKd;^nBkG*m2;n5|Qe9e(zKVFPb5X*J#qXXvct z1GW9Brv8jHIXEX{yJ)TO!{9|1uC38RIImQSIfb{eZB^TQ-$tKP`yfY`vv?Ve_8m=C zCsOM7XD=E)FHP}DGwXS2ad!=`5Hl?BQoCgf!50+hcv~&c{T}3nmZf_-pf0vzV3w;B zw0Id2>rQrtxNQb$G~|o!)TgUGzc*Kg+T0?XdnzxE_}?Uhyh$=x-XSp9CWRcrh7;mV z3~zGw#;9b#FowjefvNBNvI3XIfPWHXQsW^oWMzbEx2nlF1Ou6MKHcfN>%M#|Ac?3ZhkTLC_Z<2MXL9K873KVD z4DH}m&H#q|v5M$M4)m55WaMWO!E7guhXamEiS;59-*%?=125gHgUU5O?GNOI*o7Fi}u6aBH-9W||C~%CeLLs;lm@Fk%sQ-r8)yop2_H zu&N(qy^5}Hy}ITw-}Y@7VjF@Fp;xx|&JHGJlNYh0=G{1z^5sp1XTSK%o6Hv-_frqt zG6ViomXmPWjPB}q#<%??=ReT~-}b)K&(a^39Jyo=$RPJnMUUtd94E&1MPujLZ_*G> z&ysb+QNe|lJ)zFgkf@NY-UBuC-z%}u6(FBurJEF9w3Tz>|$iRY^~K!?j|)p41$ zo3rQ2w_3bAwbW&qpLH=GpD6O5!F%OBRq2CJA%wOSQuwH&7uR0I&<`QFcBgiG)%W{; z==*|~OCwF`vO^G2<;p%kSQAA??dDD8&eXP(i+pI7v{=J~gPlE>n=u&zQFFldjN@_F zf0`j&3gki1C!SqkxL}9iks=0eWv8;jlNg8a{_gep`GyQ!xTDRj^!E-y+TrCcoIh&t z)wdF7Q9$gVvx3{hDJiaGNYCBDAFm;BgN1Pj2{Rv;M*kl;gbKJZaze)DOuHlLC>jjr zP-=Zp&XXl8;pyK&c-2{}qoUo{Y~Q`|*~qVfEZg^O>s{!D=tCP~n``&b6RG-9?`Sz?kj-Si=Vv#KHkb`cOGm~T!r2z?AxO$k+BYkpg{kc% zGelrH@c7VcTeAWBUdlUq`z|Kst8A1|xG$$i6Xij&N5l^Z!j%?+W zic8bk0)ojYxevlPm%nFouAKvTluEck4W3Nfh*tRC%R%1gh?&8*w_cDX_v8>-CzOi= z(M-2HL39^g{)TbUDE-;DR7!-C0@5@hL7?YR3Ar41Z951<6p~6vBeav==On9(X0)cn z=KM637pCOi>k3TzX&0eqTM+4Mi?d>G=GE;9M*ndtPa}j$VjUR9AxJ!*VO!CH<=G^e@ErFp@ywU|JTX>?ziFodU;M5F%>hz3YX{p1?=dhn&BAlaqSadg*jd#kC8zlHe`0 z+!waDfC8is@)|NqSV$w?sQmWrAkiL*>>~(RzQM~)lHrC~GqlUxx}s$0vKWVuY=Q{W z7H93+fPBIr12G3r>PG| zziDhP%dK;Sj>~1b%ei=|CDWkVkh54iXKK}D10Pf` zTokm`HnbtA&??b&uA_{<^)^TUF4CWz@(;@9yuRMpD9Bsrijtic>>fs&9m2$ODPP~( z)NnT_MkfsYP6^)l^s>G5#b9tNJ;}#>iNLb&2l&7`grQ>!VLT>a@OJ&LAUl(Z8(gC& zW{CtQ7^|{tS>I;+*re!z%@i$4eQQI@2BuHYL#Iv{2K;-kN zhu_YY{NaF+iqmdXMVH;rhj!UB;4_4d%MkFv8Uz<6VWfgr&Yf-%(paF??{SG0yp>tv z+g;!U-N_+baGV>NUi%KUZxrP6USI_uZ|7XTU&-NRM3b?@_P{izFrtk1O#O5KD$)1* zkGJrXH}F`f0cQwy(IO*rZeo`mg0`{?j%H}I3O~>qyZlKxNmS+!HLCX#pBq21a%mX$ z#q2V0&GaNKqI)c?LXi7LJbF&`&-yic!?NIvH1~?j5E!^#VS)Tn=1R`f?%t>$zGSw7 zG3ff{Rbi&xfAnUV4hExx$B<3c;TyQP?ZA`_=l5){S@oM{;)P2d;n~g%F-~>}nn|v1 zk7v4H-n(2YTohcMquZ~yO$BUGzN4NPvhHw;TGhg2LHy$@z; zxx)8`AuSqnMTLH0@Q+}8FX-FlQD_^^AvliV1hZic%!-Z-pQUcj$O^x@WVZTOccz0e zULic?I^$z1d&lMDrbgTaI59*PEQdV93eZ7T#9ja9FR1NFTJ|;i<_rO(v^Va)!Mu~2 zijNFqwcdRiz?$P++@oiA5mO$$CVnY>0VYYTT|na4zYVJ4b{V);RLn<}5=Mm`n1-)q z_5lLqYm#;MI+bK#Ulg@AOJ~UWLL6jI+~YlVrQvk`(o{^Bn#d&V5PXS42p^2)I>uv7 zmQrz*AD=|#Y70Jmhj$r957!aL3m2s&WHq{M-__zOecq*Jvz>s$C$6bT`#0cF;Z2Ba zkKKsZi+h-FOO^xeweI|qUmA(`R1DU3#Cb1O!s%~Q{-SW0aAOYPwi3trOfZh$kwjko z(rFK`YxuI^);Mri@W7S~*dcu7WRwqLNQrsG4jU}NCpl$>T9@S1|79u0{1WCZl>vH6 zCPTpdDqDt>y2Yud!ko{OG-ScvUXSmShAr;zB#9}pd(I&+JHY#yRqMT9cCQd1jk)VE z955e2SgQ8t(;Qh9>DInx@Wc>{9fD#q1V&+}IE3_hTIO$Ifj~AlGnlkzX8V51$Ia9e zWp-at-)X+Y<*D>aJkI;OrewKqO@2phVY@sWbup|ayZqJIUd}b}9v+|kG;2;5#2<0n zSz~fm<4JEW8*@<7IjxI4-4KV~TPu{cmS8|ysB7zk>uB#rM5~)GZhnZ^As}_e4Vxh- z4;=!>a4TSx4UAgJz^twZG_@rzhw|2m-=}D}Y?mv;UBhK>24+8j>&He0Q=VU6d}&NH z>r>(M(F_rV&}hm)BEMW$ul~0=H}9V$pDLyqd}T5OOifc6QsnP`RD@}F`^v!f0e4H? ztd>rpdO9MBuvq06yUlfig_USNih2re?Tp^hMRPP~h^ulDa!AaMnpQW$nPiRpYN_#e zxg4sGIvq=&x1=wr%w@B;^`y|%Ng7BTa)fC6BDZcjr-!~Bw9a0@`_Kz1S~Do4hMWYn zVJw0b+C*oii4)f~;g3eytLX~Y&-}mUqie^lP*a8=|GqOeGTo)oVEt;qGoMO;I-o$- z1zeDL_ry4TaR{zUi_Y17tKPCBh8w2iGK5BGSak; zV9dT?5%)6eFPAmJCtLcY!f&Yz>|DPui=Kolw7&EQpInwTYYA^8VCliYTaW;C8}Ruj zeRBwybxC%pQ-8WM1anw9A}4to>%0JnN&$UAeZ-^%)GM6@Y_ChVksZkf zb5$f}^P7|)pfB`z>}cZ`H+G;Bb6X@Y@#gqx0|z`wLaNZG^mSPPIKOq#NG#T|4nct; zl93bJ)|XE+`lW<(GwbRU`U>C>UVmneKXTk+?H4-V6W>#|=6qZ?<IfzX$pa0RwDrCkJh`r>b`>4N5DRzq zlEl0@db62Mt=-+OU;2%X?TG&LrgR(_Wrg!&_xo|;se?OPLf3vCswMqZ7)JVZ2WlhU z$~zJMcFTqLCa3g6=Z;5NtFP9Tc?Nk{ddrt=EMwmk8M=G{4SkA^Cb;{YjuE)wM%jQ1 zq4MvZOOwf$>S|Te%XNN!buTPw?WE$kzC7~0{&>sR^mLgtwdx1ZX{u>T%cs9LQwW?l zi{3^I#x17|AE^J2=}+^;spO;{DvF^#|Gv0O#A~FOIQP{d94A|mV~g|V>jfUXuE$0d z{dB>6xy~O+sA0ksb_fvE&Mh}dOy`}SfAg)|eXbjHkx&`h0kyo}L^6v%q|S{zmjT(sc6z(YAt) z-jW1dhM$?HVs;3qUQrl&EIDDy{a1<;LWbP8BsYpT2Gj90!u2E*@o=cM37os4c$yZ= ztIvN5MBsLB$RRB4{6*VA>jz!^vnv*dcs044ZHF4n`t5pxv)csRe&W6HZ<+ zjrI$}C>2)C<=Boq?IG5CwTyzYs(TuBLAOz#-6f{Wzr*iMGmZAmzc_^c{w2ugySYBr zCO9q`xIfbPpIU5mg0+8Y&!j17kaG`<0_eP5UC9S>?N@sAtCOVcBiGkW;bV9V>%>yo8ImklaUAIVxR%G|Om| zHncKZ`k%x7EK4SptFK*g4y#hBZy&gB`Jz=beYGh(7)!m1l$Nb~Kss0yL7RUV%Q+5* zP#EMue7BZ$2ni!>WkiiR0;WjF-z#ymJB2Sj%gy~VkNFJ45@He>Fu8z-nrZ?`oGVc6 z{Z?Q}^$T}zBu9{PgbsmI_TJsk3Y-hgAfFeT@stO*s^T=C%Q4jly)hO^ISfF?S0wAE(`N!n$T3ErVl>D zN@?bKM$9*qSipJ+i*lYhd@GbnOAS*p(9{koOa75VzzlR<#8U?5^Jzwrz5PPe(cIN2 zPNi;OC}7vk2H`|Ghal8UfV|y&Zk`e91M7O@3;}D|a};U}5}=%%?}M8Xr;}u0+j@yZ zIMN}1QMOA9Z)W1S;Ip96J?^QX9&KyNLT~LvizfZot^boiWV}}mb_5L9&@&5VXszmw* zggn)OFAZr%DY&$G4=w-}U{2$3Ek<#sBYV5Q<6)D5Ak;JG5KLqm?bsmq3TIXOMcwgmfK~3*KWIwRjJ(iXS-^*UXcj%dbat} z8&Bi@+>U~#S<`yJp+W%5RPtIkaj#`F(o}dL#d{g1FiA<=ExLkIst3IYuxNcIW$g8| z;c%iB{n#JgI-(a;YdM)1UyQ6O%-xmrtIow3QNfTtV~fUA5^L_otxeb=;7tmT9l|>U z>{o}tu*3%7Eq(Js68R+q;8xqe%%_g`?Rs^tOFCGDXY6vh2N1aWinXVQ8i=;j2EgX? zT#jhM(m43+olmd@uzbC0#xHGo^|sWXW?P>cZ|WgBL8PK-G{@)AgZ6V|s(ryjvl%Dj zUXi7oZl>-(@5kGPWSHAizf$?2u2WC7y&A)!I0lJsQ^=f;AXr7rSLmwakZTDx?( z+b!i2{!GnG8ugXb(NFl}YS>A>25L-`DhVloFFkY!3U8((m}Irde^Ud2To8M%$nKoP zy8_rDIEftsS29o!fhif_f)LYLOVlLzuip4@e;OzR^i!({cSM8Zs(iA!`hv|n5+Nm+ zV4S#*j`_IflTjDl>P?hmY{v%ym9Byz)nOOIYEQfIdOR9B7`Gg>_f2VspJ}OK-{hQK zj@R?{NQ1Y1sf2nNeaWvYK90m?^3N`5tmIw(T+*U}Zt-nT#p8wOe4;v>Fa0RC&4oT; z*c2<@9rq>p7M%XL4+X71kw{f00)s;j#7+ac{Cow#J!#PRkth2aaFRyPb+ zmBmC_oCuDGht978$X>F&iG&>jCTxOhrs;!_y7_D&a0-W7fG)uP&Xq*6XK3EPR9v*3 zlW#elLIW8qnZ@rka#FLpcGC9i)9EHZ{Y_v6^CL_pbDA5)H^i@-${E4ZBkvnCvM4>uXboaL1{ux6bcovu(*2 z^yBSV5OTY@K{n?ihs&;-;;i5E-gh{)6&>&GD90ZsyK?iQYg1?qfAbd7h6__T-un zvBk4q`bphxcGg>?)ttrn zceg!Gxnch3{jPq}84)x9e?Wl0KIG=QUuqkvpoU?xloMRjU?B7s(CZRLQ ztmMN}<8dRKNiYbL^+@@yUrsM(0NHS3N5MG+M(mY!2&07C;oKM`X=cA!{?m`Qn1q&F zuAVc5A3uF(u}@DpO8%>oB1%1@>WJ?xJ-Pvs@cgrjDUPSA)pRC$5pzmR*4^iFfB=ul z980P-T#75$6sX+f5NZpo7Tud{M!t0I56$J4qv&l_ZeA^ITEe*Xmu>a}*L6O0Vw3;= zT9DHB+`QL2{X&iE1wuy-%?v+_(Q*ZDS1csQk~y4zX3dGO;&G*V_(m1+(v!q#H^$B= zZnB0Y$!E}b`Z2V}fU-5$f`C)KluXAv1Pz&+6Xy`Hl8n^R{EfxWG7%Eyj_n;2^rtUe z4o`$xs(doPGgqSDeSzy#1nskzeVpHEE)Qh6n$nQElyRgmCB&$%fe7tGudY`Yu2^ULDPS$byI{(WwC2Q z{HFIy`|M$U>d;S-riDRt#q{NvW-!Nx5P90=H=9=OwQC4wwmsKWWTOyvC^$pdJn19} zefQy8^dSGB(ER=44i4H4E9EwR{LW`R`1>6OZrLJ9rlMl%HMF85iPv!R#onKvzmm*8 zzB!rqBat^oqLwZt7z=pn)E*maMnIjr%c#AKN+=~_yzac|S3A+~vcX@)5Y^ShKL61B z7$d1zxtt^Dk}ae%nZG=*@z@=9GfC!nqh=l<`hBroZDtASxjR=-!#iRkpY*hzCC}r3 zrN>wHgquI2<%|MW(u`PaTX3PjO9sJ!vYK~I)WZw3V3Sj;-}g1lMCizJz>m5M?pfm9 z?Q7HQAF0Ou)4ru*rk4NY5IWC01O{0pE$9!4dxO<#6Svx~bzSB9{%179f&@a&>n+tq z<@c>l0cNftejc`Edgf*zTq&b-aPOpyPLj5?i#9o@r4gNPLoec0i9UD|i&wkW1?_Wo z6h+X2*y%(xp^q|#s7a*OSc31r;v^rgsH$Xz!fPbQ^yYJC>z;Ql({H1I$)#yIxmNJ_ zoLdf@9{d)!;t|U!dGhA^`@yuOo3KB5ZRnm##_{w4;p+x(@8>tqXfMGXmND)OoPoey zfCYEVX{Nh-wdf(?#uWo&z@zZ@+xj&_&^W~R0yc+U*?X4(y4vu>oBTBt=kIAV+q#_9 z-KGdv|L&efl4fnFIo%)S#B-GjUwhGl%_+MPqNu`VYYuvhz7t|lT}RsQYVba^Lba5| zdtsEdO2t+Q8wPRhMY#5{-{l{7L_s&St&uiA>Y5#bZN2fr#q21ou=&hfm+OXKN|U#S z@4JCep^Fz1EoYK2M!Nt*#Tw^!QZr2G7x3zo)dUy^2DA`R8Q8d{;_1ynED7%RoBnIE z-ki5|TIB(Q=_35Gz+0}&lwslgw>hAE>UU`fk3Df20z<1~MB*I6Bp>iiU8(k-7dVTQ z-b&KlO#1!PA&iw-@N3AR-UaoxbkTqzQVuPx)mqyeaAl00&^qL7+iN4dvfB7z5LWmh zhL9t7jM>+i;D@%~?K-trzTaO%X#0KN<*#-@T=%`-?L>QRufuR9gZCozy${zRM|~yQ zUTZH%j6TOCBTP;WV$KQj`zUF=xb;jSiwYWvNfB9J&m`@P_z|~6LXSr<3Pulp?2$Y` zqV;I>=z#K*x;_10nu_ZRB$+v_zU9@W2~5AVD`cp!!x8(0FC3ns^l0%0;2H6O@(9TxAb^v?2##F?8CIs-$$zw>h>CxeCt?A%vXCXJ?Q@cK%CwIqIlK zf3@T-gox63D@|u)ZTs7fhJM501}XMij0@LSflnoBsAh)%SF1Qp^HJe9cjc;h#-ha; z*LnyL5Ci^A-n3ys1FP*md(qcJ}Gs}(( zy;-|GRxX5`=E%c?0qGgTxuzmhGB7j4KXnLG`}}*Bu;|iF0*@u2Cpn4yQA{U`??fkU zB%Mg>T5l^ww9gT|%~3dK-o0w$we8xNqjYfD)>F)NdA_sxF;-BEzVO9V#*8$XtQ>!W zIKsJMHYq}ctz;YE@{_@N?**>5%jDsEdr<)T%+Cnuhyih@HEe!i;mV?!{`Z0z6ogmM zA>gKBL0|lBC0sB4A~jaoJ?u~GN0;{SW;JQ@L6fM=l^fk*WrYWy*WbPQ&HU;+;__}j z#;>>;eB%mDfem8RUme2B>HBFDY3?!10z_w;)T0FmkQ<-*8sM#-;VyKpMz-9QhsszYDOP0>S>LstTs$g@l9E2wr6u!kRpfYkKqZ)#p%24Y{1Qo1BU_ zxn>ug(5~)GEu85>qhpgJxsA%{oVY9DLM==PI;Z=lsO*t8<~Pd%QI;|!j{H}$LyEfM zVG!JegmMtwu$t)k0`QT7gTG{lbM?P!4-xzSn=D&)2oa*HcxT8<3|<&-hRL`eElo=l z;_D|GzQG}Y%`Udy0YJy}+>^ZgtPiJ6wH{l}~V%Q&sV$DAEDej8AX)Si#i&!y$ZP#zGve`D7jWd3nvgxjmQjBZnY~yK#5#W&HfyS&;7zfn}l?lnXeU z;uGKQnWJ@_-~DXOJv)-as@2eKYzGF1s&K|`=VgvQw42#uc>;JjuvNC< zOp+V|5M#Tu-;UOJdC58XXJ<16+GXI!j;j|I_j4iP+}y8?sy2gJ6ehmmI!|6BJKpBP z%QFfVjSrTqArv6ZmGs_0!eC&F2uO&XKmEQEtkSfu`f&DL*FTfqK7R}{IFtIz0NQ{2 z(wf$2636pe10HtI?QcuVx5kJHk7JAya8HA~cM0*ZU)bCTs8(I>4xwl$(-MP(iEAoU z18J~mUOB4fO|oLvgOX0{9&IX&kLhlVhnE>Vv@xG48N` zE2vD;GkM85uCCzi&ONWGj^`kWiBvqwBLUz!P!xN3GFhMyZygNQ8zC(>&{(_NAAbCq z)W{Rg5RN4?NR;#QI=g~xaPTmPd}sk}&^?AH$3q&wVEo7^wo`qG*PQ-d;Srd>tQ6@uKWmy$-`ZBNaD8QJn87Nsw{X7T79V{T#VkQ!4Jg>GfeWn~nzQ z;+5G;>YSe>R)Cpx2%4WV#OnFf-6P(k&$$^c)|o=;`Q55`Uusxk?7HFyzF-mKu$tB1 zuh~PHe2sHbJ*MM#<%*Q%;FobXuSmN*7~$`5qA}~&@icmP8r>JtU@89Q<1Z$qG0w`XzkH%Oj9u99M zz^AvqDG;3PvjKdzDzH_?1MZS!ldD;ftbTUHq4?Zil_qE|Lr@iP2!?O_vDI41p2~Li zn0mF(M@0759p8_QyaI6q(gJc~#rUwCGj(&xF7-U?9wz&wj5Nzy<*fB^-;ivd&Nu0! z7Wz)od(NIrTW52IW=;OnXcv9dh7dyev#5QqvLlE}g`k|2A^f{TNPqz50FYBi{+S2V zC7>E{WHBcB(V$*YlS8m?`*Xi?2!JNl^G(HRmYy9#y?%>ipXM`aP+Km~o6?=L=#zFe zVr{;#AXq8c3%`AMF9O$8Z#>4*u}otDG!^;OtZZU%6_4ESr{3i!IU55sY;^ZkrEW-R zA3LyPE&bGlyYKF#`EKpZ5ntZAj03bk4fB6m%+YiMtkXUUp`Gy73)4AQlAl9QSo>bI zHnrZjQPueev=&j+qF0?%iZ%dfsfV0SV`To5$jznAvAqb(={qy$2ZtaVpc^j4?+fWS zI=F;Loi#hdNnlQ3NQ9f=loSfw`6)R(-p5l}bZC|lJ}GlYWbrBF?4GL5rV2;t)}3ElV3#imnH z7}=3d<1v>4UmZ$}$)?0RA7p-gXhG;)?KpSG zJMzB#*Tu|5Mosv!Vr(s=Qe*Srp1f+XUVFzRA_P~!yT?K z)6W=~bspP_YX%?5}GAi{*UK%4h}c z@d!;jIF244b3kuQGwjw4u-;FO{yc+xe98>L3d`#__yg-QTqI$4HTFN3r&POnkuW7P zuFnbWLEr{Xz9E1CH*uvjP?k((mm!TQ@XuQfFS(K-4ZT42%CQy4d`%@M3)Ol5GOa11 z5(C@f6y;9EYnYOu)AHVEHewS#IeH0(G`f^>|57NuKdg z?DI3f&EZm<>#>kV%cobHhGFFTd8Ux2T7DqIBq&}kygM&l%t2cff*YU9Zd#Tv+K(zn zDnmuO@7m}>H#h{Lbtg;=BIo<2p=8}k`Mmg_Zz#{-mRRWWJCo;IPmX6ddCB2FIRpb1 zN!aev>Sftt`$EG^zyH%KBnamIdoO+FIQWV~vbq$>u=@bLs0W9TWA5dBFX9&tf#=_4 z^OM`mA;`L*QPOkAxpw2T3=r2LHl4-Qm(EF;4bwk_CG-d zhQN+&a~TUthR4=$zJGgKX-@r&w`1TfB*UjJO-sV-B&`a9*r8C@rAQLJzKbZn9ze@8q4z+{ji1x+K@`&5 z3QN+j;s28^gA_pT?6=2yobcw$b>2U+8v6->TUO61TK-9n@90`Uq|WM6B+DmIwzcB| zeI?Fs9Rb-l3OH-t*|Uo#fuE)48>5>30kA6;63b;9yNaiKb^N)h2&P9I_N2^vfvP6x zCG(iBK@jHe4q=RwtIHruu`ORJ3@ImKMHm){>H-KCz9>r#4Ap9&reAMFwtAHvg7u-H zNtX6H<(z1+1cJvhHW4cRzO%f-lKj+`yESbD#TM@nI3(XY)5OP;LGWTPY~s7Cs>^eu z>@qH$-=nbqctgw4ZUKI#j8gakRN^xP$5&J#jtbu;L%60z&C> zo-dQL8r?&+)-!$bZzTcfA&C9=H>ZmyPHgX}VhLO{Sj3>4|NX|jp)_+QEGM9t zV%IGXuWi^M6#~0w$}XYEvcb$` zUkS($^7z;SIpD0NX>e09$1w(yCml!ID4&SX6?uaFaq~!P(nk&Cruw;e@f6=R1cVQ} zYR^p>93N?9aA|}A|Gek_vWJ{UJV$=h@vgqY4xy0$T<;E{->=t~3#~@VzU37=(0C_1 zq#cu579K0MROHDtB_MMs(O~N24~4ci+2*CDftl>QaYTuuMADrz*RHXhCvqKSw6bIS zhT1TyZ_<@WGj0Xe5lZTykGJylLltozUg^HtD!S?&zHy=X`#bCTLq{b8UuhaP1O`Af zF8Pf671#60AyAURZ5%cYkFB09AfEmbPo7$dw8GMDnkciISNjZn(jE_(;zsJ*GZ9YMF{zv;z` z?fJ2bM-z6sD(7ZwBR*R3W1FtLR@#4s%^%0JtRA-QpL@yV$$6k7kNa^ycUSs3Jqi5O z?q%2TlS7a}uo;3yv_bdR=Z8Z=7ySHiN#iTHZ6DVmmvZMgZ0DrNI|SaS66>&`I~g}Q zb6Ip+)gP>aPfw1Bd53@PKs`EVrfz~L%)oY!f$jE(^(YC939?0x$m{g@Jlc1G!|HLP zRnDkw9=HdRi5}+kIk0P!<9c-3x<~|fB8n91Z2vxVHi{5bU3VhHI+(6=F?L0s=0w1) zQ6_4b_dhthNQGCC|UJ8~cxIj6dYnB}b4BjgK#7PV|2zm0u0Pev^w;g!FC1^z5G$UEayQcweb4hH zkkm}S;KK=?&0eB_W=rTEur77&{kOya}G}cnH;ynt%i2 z_uY!`^h?bOAEAmvvlH8{0-KtiZ_*owO9n9b^K4SSn%Ox4YcHi+*iCkrqwGKpNJ;tQ z*_-Wsme#RDnk4x+ciXPGM>mS^ZFT(iG(UQS^t*h)vH`TmgC{-yRF`Aur+u{ZOyu6Xw+HLevNb7@dq!E<2$NW7Z zeP`>d6}zB>G(q_``i3x^(UZq;G7TpG!1MOAarhT!dzl@Z3FZHIZ;~+O`fmUCw|qzH zYzZeEd?aEDCJpI6?MGW2Po{Nyw zO8Ug@fA1=P)nlb!A~c(|o_I!s3u`s9=W$N}cP(c`jh`LP+$PicXY>3ZL3GQnS(rg``STx)`Lr6n$ym@_b zTTte5T`$DL?s-^LgL(*k=^?O*um8P6_;hzm=DYo=>g`AAcy>C5Q0@J(Vl6%@zG726 zRTqD6Ruymv132ei!w()|>VlGZ(P~Pt%Xdo~J=foUz{P1{iTc*Mx(=Oc+N;rxs$&lE zJ}2|}vTc60ty9)1QJ!Ps7`TT^N_;_vz@EC(iRTRptNPDbyF@Gh4|d#CVCK*4+GWJn|Fs1HGlah5VGI^J z1i*TjKx1z6wzVr?`a@wHMo`UNee3Ie?_jVkRT}lPOd5!#Ub4p)N^>8dV|x0O{FH>6 z>UK?QsH7U14O$c?u47L%yBBrc_|Vn_ovVXtqw~gk8S12)Cg=5{$q#q2th~qpVVDL~ z=xN^ke|_()MaOf+&rE@!`-Kbf8uiNA{!1G0?pz^%o;OrKxauwc;_Dy2e}e}!oJq^h z+>h_^b!m>aWH+82JEB=P-^n(TwTNFh1gZE&eqt=7(|ikX%bj$*qu-qercCneMGpR`_7N^3vBTh;i)Fq|%JfKb3R(7tVOa zx4smQ4FXGRAn67iuRJ>pHT5w)%bLr|1xv|Tj??!i$YGhs8QcJ@3QPhnd`ol2l$ENo z$2wclA2bcQC*Y@gH`K`nul)rq_t7DE-XAs&yuc%C(WWr;9|wnUc=s)hVUt6i__#l8 zS%%z(RX-vo(e%&VX40U1s8&T2yBK}6T7=Mf>vMV^y6C;Hb8OG{uSulR&w1PvTQLJmPY&AtN1U!4nkXA5+BTsi&O?mjeQ zEZkZIyt9e9z;L0TzE=20e-8uGDj8Z7y9ReRl28X~|g=X85 z8@7@@{jiD|)Do>OT>9mKs@3_-THS-$=JZpARS~vLzkKbWXP2mR#P&yk7`;IRDJ8e$ z8*|7ZZ1~QaD7~$AQ)2nML(p=8LvRzQ_l>CO-b0`S%@XUJvH6tgXc}j7mfpl{xvsXx zJHp6!>MCNZ+FkAIYp9!`eABjyRO5BM_bG_YlMixG}$m|d$q||{M<{gToW5lnp7l0Q(t4(S{ZU+cfq^RhAszm zmt%XYLz};C-8IBEh)&hSR8?oA?|f%W5V^c}!n;TtHd5pd`HU+5{F%;2gS#`YQ-(IY`ZI3I&;vHhGr({F9#bGn0Z5x^ z-JSKN#xj>CAuYE#FzHhK!RjeSgK7yla2RY6CU<8z%8^K7(I5!IAZ(W=_{&?wb~wh_C1*X1AZ zs^4FG8-laZ_+YIQ!CTb|7qskh=H{;=C;CoCL0NpZZbH}?Qlc#VNcoL3AWe-m&|7NX z-tJ=}|9R2#$)H(>AT_&%TP9i@O{!7s7A|eUa5sLA(kxA&>Mbq*o?;|0;~Wzpc zl+p0x0Qz?lR&1oKg9 zX4=L-RJ zrCTcik@^ouvMTkw*?pWuQ`5{QZ-2L`ksXrrN2prjuAK!Ydq7z``{H*1#Q->e0LMIF zMQkeGAtWgQYv6N+AmtolIxd!u5;29!op3NlyBy4I%Go+;scF}k)F@%IwTGONyPVT| zYn3*x(}P2xh@A*|bKgas_~yo42DW5Mm`ME_Dt`TQVfna$)NJQj9x=@-C?Ak61And# z0Ai9@dOUD!Q`t-ApPfk&a$@_KamWIqDmW_nNQTvwZ-9W7CT~+JSnUv9H+OYX=kn`L|{Poxt;3tFjS0Vx-Awd)GPNNbgKe%A;zmP);;9YT=1T zUUXVUo1GOA&KAB5Q+&y=FgGLc+TL$%$tp&Na96NEq(!5&ivKbelY@_9}UdYq|%jG;VP{?+@fcnqT$g zXW2QkTm3ylP!;GQaGDcC{mC}UvrV#zx0g#C0^reLo58g7&Nmese!0m$PrfQSr)x=r z99WScq}E#b|LgL3Dsr@6-Ms;V^+|$l3qFHLydFI9pz7}}Tj&r3zbPSVKyL?7q%kch z89wX5&puifZ^vsd<@ua7^M{ht%xLQ%phcJW97+25)| z|96KF*DNDIp=smq8+YSfn?QyjfkTiS?QneZi`DG!zw1kqMYA_&3xp$(xFg?U;ag*+ zBg%|TfzC_M4+g1+VEGWwJ8OPw2_KF!1R686%!OySL zhdv@CY|0+O>E2g5A%aXjO-VkxID zpaJ4}Y%f4{e-3=J^nyQh#(c1eM@?YN$WLhu{a5{)FCEQ--OZ{H9|CCL2$oo|_dE9W zowka_knnn|Jv-{B48idxwIsy16_KPe*S+R)+tlv!l)i-)X zZC9HOqL8XNBsd?L_tQ*7GeAPz_#q7Fg&ISb(l1 zULWq!ygT~5W0RhaEq5w4Cz{dz;4uLk#hx(kpI#-9?1-|xahDEESgHzmv+2I=M|GGd zE0BqgCDI!{>*mij4QReQ1R{ZFrp*A^O!|1$fjgDfe>pY7Q`(V1P1d*D>a@PKhxPh! z+^lb%kk_5F2-BLH;DE;GDl(|-Go;aFI`H4Sa#OzQkxyaxad?2M<-B+$-#W{$SpXJz2G9R4 zRMW4kllgTFPqOu_GXjlveqoSWYEWK%OXu}$d_=PsZ4@4|`eUgZR% zS)zJHF`DlouyDQ22eQ62_m$0Kv-MkXAa948r}ANb24oDeB>iD?*{B7&L# zm-%4-qfG%q1c1Qh#n@nKXzyA(>RkPtkK)-v*F1DtMlDnNbB2%%_u@iH3`ZL2v6;kn zn%>e<^U|<*97j#kW9P$W2*_mI)%Lhr9Zu&>4&k({v^h`Y;#F}0<@3+*nX%>k3m;Mb zVcxSpA8zICYvZpj4rgk*PAll+OmI@jiNjy+)c5j9(?Z)PLi>*nfp2nvbwyvX1yz30 z4FG{C{@J}|5A~^LONJMe14$|8TRm&qvIK61Q@tRuKz4OKfib~_3R!lp3Dg-6e2U^( zrY>>hm#-gCfcz#(68UW3TL9N{96cS)4OxJRiHY$ip9eHjy4~%t%EkKjxIP~CxBcPT z+*Ze`I=0v6Tx=F)ZkugR(zl!Sc6-jref6;Frx1>!c~w=_yAkK#d_HeV&VRM#62`D9 zxy7Y8kV|<~HU4FLUat=OdVNzZl_ICp>2O$Y2S<{9)A6{zdAr|DhC9ajm;0h!FP{kP zr#}ZU0W|<-J<5+I15a$6_$dR)wh7iD@bcEZ<+roYhEET)E#v%O^?0iu-L%@XzgjR) zuJb!*O+rFfTJhs@#k*3MZZ~diPO$DqaJ?T2IR$>gxw8vsK``Sl!S_#!PA=mRMo(zk z)p|8tqk6SIU#jZWbZ6Fm$;JC72ZL;lmvgS_FS)=!Z=OT;C&Rx~&jEYP2lDSZZ`avw zPpf^ab~k67sSlgY`b59{xN7S<#P%a1Asew*eS5pLWvm`TCrBy7%-Vv_2gT$h?RLLe zkA20DH1_~A{*rP3Vf`6Q85;gzkN`EHf#v6lu#g5}&b&mma!2nDAq8G)mR-vS(-Sdr=U?A( z*q$vv49~AUB3Vo}sh0*I6%XKGb$mI9t+@}b>hYyp=~2qJwR1Uj z1hoEi-|u_6m(T6CArlx{phLkC1%I8yvJ35X=lGYn zACxEW{*w3Bo#QhE-XZW0FDpZA+YdN|?azf-VD6D8=I%QMcecIqM$R`oakY)IKJ41s zUst#5{%~8ZL_f0GcDLKRUIch<${$v9d0_MvKcB%y*krl13 zv)j`bz=6iMAWFir;#DOKa0pz|kM;oo<-nBN-ySumL?3Yi6)$w@T4(+dM zYQ5ic_sjWbd%kQo+gS#G=v|0LdgZ-zLDC3aHJvin8$mLXlJ;u{hah6~hA_DU1y3)I z)%kc>ulKER_Ig@xjw_Y=fA}cv+VAV(lAVx1?MFZ#$1aY;3<0$KAlrh$Jp{zB%d#@d z3h@SkT9g&igHaYV+Mj9Y&qHdt{$;(=gN7(B8CZ=#!qc%EI-kj3p58kT?y;b~#MKkm z{fWx-e8F-o-JFY|Q$l`TpDV)4oX+d(?XcVDAX`VyuC;;!8cCBBOZ@^_S6A^-m?ycyWwj zdIf7z{{IlR=faRRel#ypovOR9Lm-$GJzK#Uh`zt^G0jlbJ zjFZ6L39rWQ$nZADuFR!`+J1mwRs+&vAY}V&PoEtExO(>c_hngwUGYZ6`%4z7m>ojk z7ZTYxmmNY_u)3bO4ow=x*ti$Rqbylr2J!sDr%qCOk51`@q))64!%kMaGQHcc4vLQG z>bTnP_iZnB`+d2h>zvJq}CrC zLQ3p5qyijoQUd;678y;-|bvMEyp-fSmvazUAWvC_+NQ$Tg4W}gG(ip^h6Tn;ev3N&Y1 z9S*l!txl^p)Yogct`5i5X?^%i>tbOo0)z(^l9!89=3T0$A1CM z6~xUPFkgMi?VljD1d1(a{4;qB0_hS+_HsVbc0#=ixBYH+-5vHs{uuYG>wb4_Pq*v0 z1=N2?qf_J@LJskukOnqq7Idn6xW2>pBp(Ibx8D!;)}3DR)+3(+2qbu}f6-Kwe-Fac zy1%ei0j9FNw?;4qUYVO50%);xe{U+%TNe*InXqLAKsbcU0nVQuF-H!})HG$+#UWH5 zFz}_Bf7q|;)oOh_=cIkTzTNhIr$lJm`r2M^Ia5EBtm+f&Sq|lYCP@*x9h%?t~``rv~5gxL%*P z+smdb-Tvm>JrSrRwcp2oOYmP^?T8W_XugJ32*xZenEa`ZwRnE{8YdufnL_}TBu~PT zz?4C1zGI4b{hB2X0re0RhAtP@rN24^|MLSlN(4|~R(zws=EZQsnU&R=0PDrOb z?XSe_7cFU8S?frPYEVXMK#XpF=}Obbq+WFWUFqt{=0}qPBEPgf&HRK761}{r7iymyNj3Je#RAygTjpYr?fw)$#ZWvU&X=rCH;09?;b}18_bzc2uh& zxj9-dl8=&M0Ojhk98#cgIS@UPfKff}9{cjYK`&ejKCcFR2&k_|xdLNXM(_!Yi|nft zd;)?2t9cZ^Io?#YbA#C`P0gMS=Kp=0r z4geMQk9qRz!Rgg?wV_mBX79U%7^N2!?0VPAE(|$sJw8>%h?W**y)^1OVBQUGQ*;#Ofs=uLFp&9x&U0{KLB? zZ(X9EC$&_1DuuU3aw7nm@K*_U4E)gU0?F)m>MsU8}k}gnG9+tT$BV zm(pRSsGb>fl#gi&;MbLGYMCUMIOmhY_pVsosf6}ui3fudzSNL#iCz8%4grJ_P{o4` z0TLg#>>6s124}$HLH>ap0=#Xgw*wu5wJ&#G&J>^S>QA(h`hJzvFb+F!w&(M4U+{3@ zxpfZ$(c>~XeLZZpoAo+Z?U#a!$tJluu5asXlZR~N>(#o{?%Qna`G17UIc?V0^>(vi zXZ6EGZ#(S4R$p;=g|w!io5|K?Z#zWV%uBt&N;frptr=m%m|wwhJh52AquymqEZe06 z&2ZN*f%invc>;)i!wWFOhikTL30_utyHs94@AwC9W>X~9Fn z8s4T*j2Dj807kyj@q%Vx_;i;j{o92{BM^{afC#FAHlqF)1V{Dpj-(ImwnvL^_`)a= zKVGXzFE{JIwR^i@g(a@gN)Uw>=$Om%nvV$LOm---H^ z-B8X`+FN!yo6;S)%xC>HEhzY$bAjLHtmcz8!hjwyaJF{q7CD5j;R#Z7zvR~I$b+)L zUV2V2SclL6$#%hI2+1_C)Ri0!2ip4Q9RhN-&9V%^@Xii2i-EsDyHWoHFR4C0inz*$ z-8|9^cG?w=w_@|w8ETB@6hhNb-Nq;9~##sxkt#5ay z(`i+AWvF9+g~~OMz%95X4uP;etV1y9^}((n_fdP)+~HoFw0wrp@d`T8^C^N5yhNd2 z0CbcRLMCps~1f#=9I1UA7w$lu@lH zgv~TS(^`8cb8g!ge?e`8m*(Pq?LH|(4G$%{_3^e_UE5Qx8lIr@+dH22xZYOV9H4Vi zL0px}A;IHh!o3ydKU}q951$-PQEF_3hf)=Dip3{ZNABQ14^^HO|UpT0JlR-@S1S z(lg#6pcpMcAaXoo5~y^!AqC}c4R`bqE*tdiAdDebTgw~*8^sa59NLBiH%2bnWkA6V z^?nf6&@OQZFFgc0!lf2?x;cvJ_#}zmVCedP)X8|hH^5&4lqm;0&+iksQ#5*8w#A}7 zVA9|rqM*{H%`CZ?XvkQH0CF?q79Bc`vLBGtFLDSD zbv)A&hoE122nA~Y_>^FnObO6|^AMH%a5t#S%&B?P?=v94Gp`L>=%QK^%oPC(8FJQ= z?=B_7W8Q&7DB?(rL(nzf8WX&`lAd=60D+pXJoo0%mF>Dk4gn48m&I_0+Ohm^Zx&IU zq?C2$rIPtYhYuJUF%0#Il#jMPNK+X2&kc|?INSHV2sc&@kR(I z`SjWc!KM41kaz8+>4SRyx~%4mfPs1b|3Ut006~&Sj9B_%onLIf?hTPCZWagz$vlhlhWFrlhi=Jp2a2;X%XtLuwjO0 zEhJ1A_X8SOY?6x{0?N&n;Sgw?JQ?}}#D3RbD_ry=Yb3?&;iK%L5v-T0{&e>ilf2{L z`qSXY<#-K<%3hPsGyRuxMyW+k=L^J8#@Ki-t3Q-P&>=Luq6f&EVMjNj%oMb?K(WZb zxEk!(EF;e8!1tPL0*O3pFa5B2i zTTOcKf|hGdur}Bf1nuW0+i2&~m-T1Iv#ja`4uLvrV3(9XSYXOvuZD@va6APzjFH}I zhn5u(?=p}3o#n2hn1VZ)| z=4i?bbVJeK+UQKUN+FH1-HmX%N)~zr)+NM=9v{89sjJsY<2*Rpb zy6BW~UCf0f`I#aLU!LI3a4}q&$Bt0y|NDzWfCmRLpn!Ewu*RbJD*r2^K^oF0FfDID zqyeH5V09g~W1A)2C7#eAN$V3E%TP01EStda%*AN%$DhfZdnNedqsDtQyKJ6-8YuD;V zbb$avO5{&Y7B-D2XbD3GB})Z0a-iWVgL@| zYftjJ`h}1j8i#j$q=_Jgt0nAth_9QL(l{IffG)%JX@oq&&7JgjZv>Jj9k9VlJ#FEP z8|YKT{-l_3FXsE1Q03JA80+`}j5jpwbjlfdq-MQ#gm9Mmgc%Wq&*gfq;Yz(PtdwN# z+T?s)H;(YW)(wn$E{Fac=o?8JL~^VH9tVPGFzS!p=zCugh=K!Xjrsu@zSU9pW8A3ogD|)O17+A=;juGIWRr1m^q;3YuhqL*P$M z6u)(~>GO3=52~4BaRayAblJzvtWxb$2Q%gf+(c@&$-y3+h(13~?Q4-M?^cS?b+W6q z5jN&Ty~%HngeJ)$xL!vWBc`R!2^e&|9&!{pc$NJ^XF1`JXsc? zyhdY5fwq@e^#Dk?z3jz#&oIzS=nTQLQ^~-#Ab`J!lG(FKXbt37$)hGRH0l#&-$*NW zG5^st#@Z(5AHkbWi#qnc%cd`s_d-XdZD*4t;aHPvDqS*_lwKKb5H~NlugxFETaNg=DBkke2+G*7UpHm`X zeG`q%0iNXJv(4M6M-uElO|>nVKFIuh%}*IXueph=Ljcek14iZGNNc;;Ay^Nza=}w{ zygDPI$CI!Y{d0#xB8vuvFxm)gfL>Yr`#d{IDA>-CCemXgoUkMi1{Y)qbl>DRDO&=x z%hIOH8E!7ut?)|d#`{hw6_xVVD;HWJgsFoHfxhkYzm+gK)SDPWTN7?dTRRN&U*8EO z^}|=wI6@dzrA8XtwgXp|eRnADj2st4!3pt6|B{v+TCRTX=6+#J63c|I4DS#?+MOVs zH~VcQ=+38SkZ5C(kX!=&RKaitB%M&xk?X|Mfd+HK1`#qn;bo?*dU{RiHMvUn@H@bg z2M!%;=+9VpE?cr{eZkETC3DCTJV$&-T$M`DryTgRKk&ZsLP!;iHu?WKkI{O<@uZ<6 zpZ^=9=rA7`aX$TQU540Q*u^fMfEE!(>P3VH2->`CsUG-~XTrzo4`sT9tdBs@JuWb+ zUz7}hUl+^`!=elU-5X?*k#`6Sws5gSNTwMrd_I*+Bd%sxg(u`wLD9~)Uq^hc9;ve$ z+L};0c$|5CnC(p#}wpfcj|8J?{`?6(UN3($W9HZzz}c? z7QSgnX+o=7HLA6urHnqO`@R!7cIP+ff=nidcNOz7a<0JGO7nltCM6&F#0a#PNRgde zg~;C;2qB-ucV2Kv{8SSRpTZ)C0NP?6xEr&`p8#&VXE^=W41skBZVB--&JcjN1v-1J zVxPPNIyW6(%q)}UMq|euqZx-FrTPf88{_w5tS-kuDbsB3A<0^&Y53f1DBfyA2tDG& zbJ@IY%;CMaDwpxT&X(VKX|)Z$(VfyFYNF9=uOX`1(il#7V$^f3O0(kPt-g_A#>sfc z2;HSAlHfrWEMhGGjur_7_KOakSw^7pFT}_H>~0zekCneJNWNtV+)IEuH+)wViK6pe z(R|dwMj?4|bQ44}~rvwV;-yeH2B-+Vi;l24l14bn~=Yo8-_iU(EJ~H|~O`WmFF1!4kl1+~< z>i}t3QXycCp%UB)8)Y<&AcHSkv5k^mxg5}QkT=!`m&(m5RDUFNauALvhWeV zOE%TYbVtNLC+OuHlo$>#a%e4#Z(}liP>k_LlO%#@G+cv3OSzDT3ndt7i9bPDL%k@k zM2&6^kuG11uSx*G^kB_PSJ^Y#} z+>>#YX5rAd(~+8TQA^vzY`IZ4UIk}V>zgk4UI?05>xP=`S_mJT;HC5-MoHAz{q04I9LgDYz+W`nz&7h;v)IcomjMDyD-79h)A8k za$t!BY1vEugp@? zxqK;D-kTKsIziGrg<1!umcp_Q0kD`MBqK1I1c)pw%1=O*ua~rzQ0K`mqWxpd@i!Sl zDw-SV?~OT-Awa2J#6Sl*pBI#K$u7_hr`Fmup35b<=)4fIa}6Qrx~5UWSQovPCUlK( zq0V=*sZGxLBeCCW8plN=`)^blDb?c7u9OCLHKK!BuxTMtpdw$&kvRi3we`!STYc_%s7{g z*vD)I-Bs0XHvSMy4)MO|To_wA@G8bg>J~-c#@Mp`D*sw75$+ms$8h{8QliDK9WW|x z#U{ZEqnzJF zYpv@#pN&`%GClb}4LUgN36DyU_GQs5v z=E@Homm{s`1o4^By}b%31}EMj@J#@*C@(hP;WYkXSrK7tjI$dgsUCrTGYC@Lg7PmM zf?3p51io^SvI6cQ=zkzJ{+c214gpnEJRgFA+ga)3O)KxL%%?`Ux^I2+P$(iah%VH*w`+D zzp@rhi=dz*ind6WsX{bqNyQQBMegPo83H1_e7~=09y{)@VAg}5$m=MQ#-i-4Ng~z| zA#4+kcE$+na^TiB7n3Gt3m3liw9eui-)1WoHk-avUgyxRvJH1eU3VsiZ1JJaS$!9L z9cWvot7{QLmpy{_l=L^w3K5(9xBP^S@N$gq&-Zy+f@v+=LwKl>ym4`+;Z04L-wzil zX}GS){Ya7?WC*|^L_|Xdmv~e9duGeab!1nY7GwxW0I}!kCJ{p$oGXIt2;dy;q6`5M z0|SIdhckr!b#nI9Hb~=`;I5fF&C!RjsSD>oB8*&)c=?FNR`kkSAqfy`o5na5yV|MN zxh`aD_MtT{*!*KYdZqnU$(*@2I{I4Zg0`~+tCPk`BCImX5$7~vZHz3O@+QsQ;8OxM zEV@ield=rshpoM72sn|}PlWi2KX)KKGd1T=a?TI7rvq0{rM?DBx{kNW$aXLig0!Ju zkJfNmhXDDo9e-ocJ^&A6K+qwm4FFOAx2WRKfNB%8PdrDYm7drAs{h8V@R2EcK)}C_ z3GSqmG*Iga8dRcek%slcY9EABS}8#t^-gHvbn?;4UR?8)5XB*w>=3$01k=XX);K+I zN{;(&Wvnrv-#+)YMiLu(W3?M#baGOom7{J&`DHZy8kj8y`0O*aW`6r^>eF|*7~S%8 z3MjD+e1ZXlDJ|;|q;_a`3X}|@XRy&k7{rsT3jWs{xyT`?MGiqAi#F_yL2TP{$$m4W zgIcyMi5x;_S%>h_Lm2kS<%mC*sd2I~x{y{=Qg5xMO5Nppz4tkvo`B|+dcxmuQpbXgz*4gs-AiO?@`2&~KuLDIqWh`%vF$c3f-D=`pc z^^3%XmPtnn%7w2Pb5?yi5?&3(RgikJD@@fIKX^>47;!~8_Ud%Y$Gj(8YnuP3 zLjdG+FtJtaI%NXnF^LBfEZXo%aNRL@_KkxH3_m4EaAwLe-1m^>3poUU(nJ^wpctyy zGFE=uWfCx(!jCoz9Jxyh2(lbrmpw@!g>9nCRl{eMLh%^ z3@5lD!3wd|0KL3m2N>_Dup^SMo1(Kjzr<4`L>bs#LYzl>S(5;fS@N@DGn*!V(RL(n z%+;D`9u9a;Q6b&&)Wv|@hDAPShkyj#K}mrW+0BAbk-*NLv_N3l@<)f*%ovA|0vJm= z-fqCSoF6+vnhdzp2dexbcYs z2!AKA%Yeu{IaE7Mh(MUMAT!l}e)1lYutIrfkXu>SVbJ82wFxjLC_B*%0}IfpqqVuO zPmrMA2)pE(5@IZ<`ED>u0YHp~{sal#_W#EZxeOTnkyD&2)ja@ zFFV>s;0+Q9;i6?q6lE8s-3#^L`$fJC+LOQAdXaf{IUBN_Go(DzxM;dY3Z-hVY2i*8 zOQO-OYLs_DOF{_|D$J0;g;3Sk{EBTSFC?h*eS^-Y6BUA~h-@T>jHa(Rw1j>xf3DwptLuwT!|vwwEyyD@W-i z7M6@T`$_fn>ZQMC<-aHqaugwj_#Ee>S3&vg5IQ5en8Uxx)}C_G@1irg1Tcd-ZGq>=2}>*=Lbg-$ zHQhlzX^!#CU#q_6S4$iM*oKU#JtWyMS@T&tfWRUxd(>FtNBt;6FnCC@B*D=9l}nzN z&;fi2><9%jQtJilM?Ij%!%2IyOxF?>BxVQ)eF5-NCe{$f%n1VIYM(PZ>Rve+qIB7k zl?c05%OG+UN9(l|ypy)IkSfRYrg7Ovm?Bw6P(LbTDrU$R;y&6P zGQ~4Y6rLm3{{4MF>dch>tN#7Y|H2_yzR{1oF<(fdWrW#i5vnLr?+8I(k@&-7kIm~#L9c-`Cit~_Vx0OEA*6t z@VF!w7m0hGaJyFPXpE;`buMO&v(D&TayR)~y(3(2b_kY&6lt0^vLDg*=B`Aazog)P z^8P zlyFYc)uS@SKy+KEE{kL|?dX*H+S1}d&f#SWDrcK^^fvh) z0$-tb_}Q&#CUH!?=}^7GuDlsgYym&7F=G-HTnyV)LhG79;Sdd&K;Dc9+!Tw{L{FX* zD0XPdPc0MZ3K{`VJ&Pg%-VE&kTdvH9EN0ZAkQ`oZnM9vVZy)_2$TooGti0>X$!VKS zPtt9JI`o)J4`uR01u|FYBo{4vm6P&L$yo1HR8d5mgNyW@cI-_)ma)&loSZ}?Q9IIb z*OQi|@;xhjji_n3GYO>5a5;q5qrs5EVTV9MK3s;-EZ77|$f(fFw*$qb;C4B{I%6?O zHbYQAACXrDg%Av$GKo*k670lV9?Ga7bUASjVW@`^)3^JgJ242w=~?MJC^$YP@TDtw z*O(jf%v5A(h%_T7?u`?w>s(idDC(}RbFpr1=gA$o;5BjBtG4{;Lh89J6hk(TB!ICRtduskcF8+@W0q`Pg-lBncHp1(H6=Le>Fc|`BrCY;}qz!6W z^79$6JxweiU~b4d1SE~%9m|9+knZ>>$n^0;5~loPnL5$qd?(MN?`u_d;N?&aP;57j zHtR$ag>HoIoNYr6=h6C@6Zbk8r$RRMI(FWB;fT{(h-jkswjmNcQ;4s0x^Kx(8H9YQ zwFhS=Yu@OD=N&?T=vvMpEYx|ydl=kn`;9}OLYgfZK<4V%Bms(MXx1h{4?znSjfbRG zH180Q_H?e6^N(wC2}Z=69M}h=#35%#fhQP-O#F{6ZZX==xJ3?uaFX1q zMqoicNQ2dN&3hxX3W11?9RPhhewm@u3*s0_H?cj0cL>L0>m{Yna?0tR#`hzOhG|@M zA~xC3MHH?PCQu~zz9#k>+qIntb=Qe5)U|S*B5ph_RJeMgxYJbaH(I`>6Y*+(-5UE> zqe@7rg|4Qv$risK>8FpB82aK!y+M@bMhDND9vIHtA3u&X4XO_YM2x z_R5z#fDggo0TW+~f_5zcl<^LMFV(2cM$umrc|b1QT`t0f$T7X>!}}0*j^{py`k;K5 zKV^pylv5P0H)CKO+|omsClFSqA(GBOOr=c zCAe7raj5wKyOc{qELqfuYw~|Fhi_#`JhJg3r_DL7SE13t2kTqaG|HRKYiq3Og43OE zoc=!9w1PbpXgY>kM@x`J!`PB-%mtobRwG6wR{0uCqX8&fgRHgV&t&YdL*O@6Qv z5AI#d_r4+z1po^|)GKHAiv&1#9Af|k>;o7BvRI&j!xxhrCqUV8qjX$LM|?QZ$Vl|{ zCaS2~+6fYh?uh!b%|*P)X}mC$#|xvZ>xe7Q^{O_mKEM~wi_gA$|fKa?atR5 z(=O_)fe-{K30O=Q&f3`wK>~b9&dC4XY99FSIcKGQQ8IuY0+^d3{X{U{>i8fHLIvMS z?-BW)5vt-R8!))$#!lUl9v)D=ju)hRqdJY(w-N(b?0&i;dpqpNr8d--kM9^n|1s!Lahx8R{{dCi(CM>HgLLm6!Ew z9oYj|6m$sb|L71V;qI@u-2;{lF7uLzl)7l9rYRXK&d+de@60KIb2yO zd->%fmDTX^ANqqd2k4kOl>l4Al76gQf{l?9@o+^z`^Q(3w+;To#)K`S1ZY`X&`L&x_J00<-`jvHnc3TBw{Gy!PSaO-H+o#frlhpU#x zoL(A=>C{Xwim^7@Ms!`Lvqc!~mG5lM;p=SFzN@K2M?v1VS1E$u)j6)~=v+h1y6AER zU}*`aC~A}bP=RfKef=qpA%3nlC8u>4nFurg!gT$Xd)@uRhn6N<+Xu-NALBL8mteq> ziRP8y(D13_8K;|owCvgOj^y)79=n@lPJheXp|1*!(JX>^vd=^ENuBi6a-3wkyf zW3z=T;YF;K&406mu2Z_Fv>?>k!fkXmKT1yLB>k?bSeiF)gG0jUrztCc)n1z0yrh9{ z;z$<($170jm2Lq|JKP+H3wIz$0d`z4d;&cL7Cj3oUQ=@1Dnuf_1a=#+WgWtApvzw# zx%1=60Voc%*CrM@1XH8@itDWvjL7p3%y&lV+}$0*P)yVE_~Wgq(oyS+u^OFoc(VPR zsas9tG_nr)Xqn#R5}tk}8@S1sdF;fqo(NPs^$G7T2O(IBCPn(t z2)(!cJU@{J+trYX0yqSuY7TC@=lfa!++!B#HVg&Jf}JQ&Kg#Z4#OSh>->(T!KuB|WM{%`mwspo&phhusuNe_FlPuKsySq}Z5vFX1w0_t-r z{vYM>RLYYArO8RUuu|1J=ZMOh&W0|Ll#R;&%5}e!mLRO-ZjJn}|Bqg18eV*&e^Ppu zzcs$n0;r{Dr6~R%{ggHT$q(=OzyHcVdPG%jh5QfnTfculKQr2$T10rj)3^MGsPWi} z++-}DCV=a4Ee~Uu13>;KzyO~P!##qQXn6nt N002ovPDHLkV1oZ2R5<_u literal 0 HcmV?d00001 From 77425cff72dd9ae185a5d305b471562e03be76bf Mon Sep 17 00:00:00 2001 From: ChildhoodAndy Date: Sun, 25 Jan 2015 11:01:30 +0800 Subject: [PATCH 108/123] =?UTF-8?q?=E5=88=9D=E6=AD=A5=E6=A0=A1=E6=AD=A3?= =?UTF-8?q?=E7=A9=BA=E9=97=B4=E5=88=86=E5=8C=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 初步校正空间分区 --- 06.4-Spatial Partition.md | 70 +++++++++++++++++++-------------------- 1 file changed, 34 insertions(+), 36 deletions(-) diff --git a/06.4-Spatial Partition.md b/06.4-Spatial Partition.md index fa5cfac..13f8b36 100644 --- a/06.4-Spatial Partition.md +++ b/06.4-Spatial Partition.md @@ -64,27 +64,27 @@ void handleMelee(Unit* units[], int numUnits) 空间分区将 O(n) 或者 O(n²) 操作变得更易于管理。对象越多,模式的价值就越大。相反,如果你的 n 很小,可能不值得使用这个模式。 -由于这种模式要根据对象的位置来组织对象,对象改变位置就变得难以处理。你必须重新组织数据结构来跟踪物体的新位置,这会增加了代码的复杂性和花费的CPU周期。确保这么做是值得的。 +由于这种模式要根据对象的位置来组织对象,对象改变位置就变得难以处理。你必须重新组织数据结构来跟踪物体的新位置,这会增加了代码的复杂性和花费CPU周期。确保这么做是值得的。 > 注:想象一下,一个哈希表如果哈希对象的键可以自发的改变,你就会感觉到为什么棘手了。 -想象一下,一个哈希表,其中的哈希对象的键就可以自发地改变,你就会更好的体会到为什么棘手。一个空间分区还使用额外的内存来保存数据结构。就像许多的优化一样,它是以空间换取速度。如果在时钟周期内内存吃紧的话,这可能是个亏本生意。 +空间分区会使用额外的内存来保存数据结构。就像许多的优化一样,它是以空间换取速度。如果在时钟周期内内存吃紧的话,这可能是个亏本生意。 # 范例代码 -模式的本质就在于他们的变化性--每一个实现都有所不同,虽然不像其他的模式,许多这样的变化都文档证据充分。学术界喜欢发表论文来证明性能上的提升。因为我只关心模式背后的概念,所以我准备为你展示最简单的空间分区:一个固定的表格。 +模式的本质就在于他们的变化性--每一个实现都有所不同,虽然不像其他的模式,许多这样的变化都文档丰富。学术界喜欢发表论文以此来证明在性能上的提升。因为我只关心模式背后的概念,所以我准备为你展示最简单的空间分区:一个固定的网格。 -> 注:查看本章节最后一部分列举的游戏中最常见的一些空间分区方法。 +> 注:查看本章节最后一部分列举的游戏中最常见的一些空间分区结构。 ## 一张方格纸 -设想一下战场的整个区域。现在,将固定大小的正方形拼接起来就像一张方格纸一样。我们不将我们的单位存储在一个单一的数组中,相反的,我们将他们放在这个表格的单元格中。每一个单元格从存储着一系列单位,他们的位置就在单元格的边界之内。 +设想一下战场的整个区域。现在,将固定大小的正方形拼接起来就像一张方格纸一样。我们不将我们的单位存储在一个单一的数组中,相反的,我们将他们放在这个网格的单元格中。每一个单元格从存储着一系列单位,他们的位置就在单元格的边界之内。 ![](res/spatial-partition-grid.png) -我们在处理战斗时,只考虑在同一个单元格内的单位。我们不会将每个单位与游戏中的其他单位一一比较,取而代之的是,我们已经将战场划分成了一堆更小的小型战场,每一个小战场里有着少的多的单位。 +我们在处理战斗时,只考虑在同一个单元格内的单位。我们不会将每个单位与游戏中的其他单位一一比较,取而代之的是,我们已经将战场划分成了一堆更小的小型战场,每一个小战场里有着较少的单位。 -## 单位被链接起来的表格 +## 链接单位,形成网格 好的。让我们开始编码。首先,做些准备工作。下面是`Unit`类: @@ -149,7 +149,7 @@ private: ![](res/spatial-partition-linked-list.png) -表格中的每个`cell`(单元格)都会指向单元格之内的单位列表的第一个单位,而每个单位都有指针用来指向列表中之前和之后的单位。我们很快就了解为什么这么做。 +网格中的每个`cell`(单元格)都会指向单元格之内的单位列表的第一个单位,而每个单位都有指针用来指向列表中之前和之后的单位。我们很快就了解为什么这么做。 > 注:在这本书中,我避免使用了 C++ 标准库的任何内建集合类型。我想要用尽可能少的外部知识来理解这些例子,而且,就像魔术师的“nothing up my sleeve”,我想描述更清楚代码做了 什么。细节很重要,尤其设计到性能相关时。 @@ -158,7 +158,7 @@ private: ## 进入战场 -我们需要做的第一件事就是将新创建出来的单位放到表格中。我们使用`Unit`类的构造函数来处理: +我们需要做的第一件事就是将新创建出来的单位放到网格中。我们使用`Unit`类的构造函数来处理: ```c++ Unit::Unit(Grid* grid, double x, double y) @@ -235,9 +235,9 @@ void Grid::handleCell(Unit* unit) } ``` -Aside from the pointer shenanigans to deal with walking a linked list, note that this is exactly like our original naïve method for handling combat. It compares each pair of units to see if they’re in the same position. +除了指针处理遍历一个链表,注意到,这是完全像原来我们处理战斗的方法。它会比较每对单位,看看他们是否处在了相同的位置。 -The only difference is that we no longer have to compare all of the units in the battle to each other — just the ones close enough to be in the same cell. That’s the heart of the optimization. +唯一的区别是,我们不再需要比较战斗中的所有对方单位--只是比较在同一个单元格内足够接近的单位。这便是优化的核心所在。 > 注意:简单分析下,看起来我们这么做使得性能变得更差。我们将单元格遍历一个双重嵌套循环变成了三重嵌套循环。但这里的窍门是,这两个内部循环现在遍历的数目已经很少了,这将足以 抵消外部循环遍历的单元格的代价。 @@ -245,6 +245,7 @@ The only difference is that we no longer have to compare all of the units in the > 不过,这个并不取决于我们单元格的颗粒度。让单元格变得更小对于外部循环来说无关紧要。 ## 移动 + 我们已经解决了性能问题,但却遇到了一个新的问题。单位现在都被困在了单元格里面。如果将单位从它所在的单元格移动出去,那么这个单元格中的其他单位将不会再看到这个单位,而其他任何单位也不会再看到。我们战场分区分的有些过了。 为了修复这个问题,我们还需要在单位每次移动的时候做一点工作。如果单位越过了单元格的边界线,我们需要将单位从单元格移除掉并且添加到新的单元格中。首先,我们给`Unit`类添加一个方法来改变它的位置: @@ -255,7 +256,7 @@ void Unit::move(double x, double y) grid_->move(this, x, y); } ``` -从使用上看,这段代码可以被计算机控制的单位的AI代码调用,也可以被玩家控制单位的用户输入代码控制。它所做就是将控制权交给 grid,grid 的 move 如下: +从使用上看,这段代码可以被计算机控制的单位的AI代码调用,也可以被玩家控制单位的用户输入代码控制。它所做就是将控制权交给 grid,grid 的`move`如下: ```c++ void Grid::move(Unit* unit, double x, double y) @@ -305,7 +306,7 @@ void Grid::move(Unit* unit, double x, double y) 这个似乎看起来很简单,但是我用某种方式作了弊。在例子中,当单位出在相同位置时才会相互作用。对于跳棋和国际象棋是没问题的,但是对于更逼真的游戏来说就不适用了。那些通常要考虑到攻击距离。 -这种模式仍然工作良好。不检查位置是否精确的匹配,我们这么做: +这种模式仍然工作良好。不需要检查位置是否精确的匹配时,我们这么做: ```c++ if (distance(unit, other) < ATTACK_DISTANCE) @@ -374,7 +375,7 @@ void Grid::handleCell(int x, int y) } } ``` -`handleUnit()``函数用来寻找当前单位和相邻8个单元格中的4个单位之间的击打。如果在相邻单元格中的任何单位离当前单位的攻击半径足够近,它将找到击打。 +`handleUnit()``函数用来处理当前单位和相邻8个单元格中的4个单位之间的战斗。如果在相邻单元格中的任何单位离当前单位的攻击半径足够近,它将会处理战斗。 > 注:单位所在的单元格标记为 U, 相邻单元格标记为了 X。 @@ -385,11 +386,11 @@ void Grid::handleCell(int x, int y) 比方说,就像前面的例子一样,在相邻的单元格内,我们有两个单位足够接近击中对方。如果我们查看单位周围所有的8个单元格,以下就是会发生的事情: -1.当要寻找 A 的攻击时,我们会查看它右边的邻居,并且发现了 B。所以我们登记下 A 和 B 之间的攻击。 +1.当要寻找 A 的攻击时,我们会查看它右边相邻单元格,并且发现了 B。所以我们登记下 A 和 B 之间的攻击。 -2.然后,当寻找 B 的攻击时,我们会查看它左边的邻居,并且发现了 A,所以我们登记下了 A 和 B 之间的第二次攻击。 +2.然后,当寻找 B 的攻击时,我们会查看它左边相邻单元格,并且发现了 A,所以我们登记下了 A 和 B 之间的第二次攻击。 -仅仅查看一半的邻居便可修复这个问题。至于哪一半并不要紧。 +仅仅查看一半的相邻单元格便可修复这个问题。至于哪一半并不要紧。 还有一个情况我们也需要考虑下。在这里,我们假设最大的攻击距离要比一个单元格小。如果我们有着较小的单元格但却较大的攻击距离时,我们可能需要扫描一堆相邻的单元格,它们可能横跨了 好几行。 @@ -397,12 +398,12 @@ void Grid::handleCell(int x, int y) # 设计决策 明确定义的空间分区的数据结构有一个相对简短的一个列表,这里本可以一个一个来看下。相反,我试图根据他们的本质特征来组织这一点。我希望一旦你了解到四叉树和二叉空间分割(BSP) -之类时,这将有助于你了解他们是如何工作的,为什么这么工作以及在这之间做出选择。 +之类时,这将有助于你了解他们是如何工作,为什么这么工作以及在这之间做出选择。 ## 分区是层级的还是扁平的? 在网格例子中,我们将网格划分成了一个单一扁平的单元格集合。与此相反,层级空间分区只是将空间划分成几个区域。然后,如果这些区域中仍然包含着许多的对象,会继续划分。这个过程递归 -持续到每个区域的对象数目要比对象的一些最大数目要少。 +持续到每个区域的对象数目要比某些有着最大数目对象的区域内的要少。 > 注:他们通常会切分2、4、8个区域,这些数字对程序员而言非常漂亮。 @@ -411,33 +412,33 @@ void Grid::handleCell(int x, int y) 1.相对简单点。扁平的数据结构相对来说更容易推理和实现。 -> 注:我几乎在每个章节中都会提到这点,并且理由十足。无论何时,采取相对简单点的方案。软件工程大部分都是在和复杂性对抗。 +> 注:我几乎在每个章节中都会提到这点,理由也是充分的。无论何时,采取相对简单点的方案。软件工程大部分都是在和复杂性对抗。 2.内存使用恒定。由于添加新对象不需要创建新的分区,所以空间分区使用的内存通常可以提前固定。 + 3.当对象改变位置时可以更为快速的更新。当一个对象移动,数据结构需要更新以找到对象的新位置。使用层级空间分区,这可能意味着调整层次结构的若干层。 ### 如果它是一个层级的分区: -1.它可以更有效的处理空的空间。想想一下,在我们前面的例子中,如果战场的一整面是空的,我们就会有大量的空单元格,而我们不得不在每帧中分配内存和遍历。 +1.它可以更有效的处理空的空间。想想一下,在我们前面的例子中,如果战场的一整面是空白的,我们就会有大量的空白单元格,而我们不得不在每帧中分配内存和遍历。 因为层级空间分区不会细分稀疏区域,所以一个大的空白空间仍然是一个单独的分区,而不是大量细小的分区。 2.它处理对象稠密区域时更为有效。这是硬币的另一面:如果你有一堆对象成群的在一起,非层级分区是低效的。你最终会有一个有着许多对象的分区而你可能却无法对之进行分割。层级分区将会 -自适应细分成更小的分区,使得你一次只需考虑少数几个的对象。 +自适应细分成更小的分区,使得你一次只需考虑少数几个对象。 ## 分区依赖于对象集合吗? 在我们的示例代码中,网格的间距是预先固定的,并且我们将单位放置进入了单元格中。其他的分区方案是自适应的,他们根据实际的对象集合以及他们在世界中的位置来选择分区的边界。 -我们的目标是有一个均衡的分区,每一个分区都有着大致相同的对象个数以获得最佳的性能。考虑以我们的网格例子,如果所有单位都集中在了战场的一个角落,他们将会处在同一个单元格内,找寻 -单位间攻击的代码会回到原来的 O(n²) 问题,而这个正是我们试图要解决的问题。 +我们的目标是有一个均衡的分区,每一个分区都有着大致相同的对象个数以获得最佳的性能。以我们的网格为例考虑下,如果所有单位都集中在了战场的一个角落,他们将会处在同一个单元格内,找寻 +单位间攻击的代码又会回到原来的 O(n²) 问题,而这个正是我们试图要解决的问题。 ### 如果分区依赖于对象: 1.对象可以逐步被添加。添加一个对象意味着要找到正确的分区并且将对象放置进去,所以你可以一次完成这个而没有任何性能问题。 -2.对象可以快速的移动。对于固定的分区,移动一个单位意味着要将单位从一个单元格中移除然后添加到另外一个单元格。如果分区边界本身基于对象集合来改变,那么移动对象会引起边界的移动, -这样会引起大量其他的对象需要被移动到不同的分区。 +2.对象可以快速的移动。对于固定的分区,移动一个单位意味着要将单位从一个单元格中移除然后添加到另外一个单元格。如果分区边界本身基于对象集合来改变,那么移动对象会引起边界的移动,这样会引起大量其他的对象需要被移动到不同的分区。 > 注意:这个很类似于红黑树或者AVL树这样的二叉搜索树:当你添加一个单一的item时,你可能最终需要对数进行重新排序并且对周围的一堆节点洗牌移动。 @@ -445,11 +446,9 @@ void Grid::handleCell(int x, int y) ### 如果分区自适应于对象集合: -像二叉空间分割和 k-d 树这样的空间分区会递归的将世界分割开来,以使得每部分包含着数目相同的对象。要做到这点,你必须要计算当选择分区部分时在每一边对象的数目。边界体积层次结构是 -空间分区中的另外一种类型,用于优化世界中的特定对象集合。 +像二叉空间分割和 k-d 树这样的空间分区会递归的将世界分割开来,以使得每部分包含着数目相同的对象。要做到这点,你必须要计算当选择分区部分时在每一边对象的数目。边界体积层次结构是空间分区中的另外一种类型,用于优化世界中的特定对象集合。 -1.你可以确保分区平衡。这不仅仅带来优秀的性能表现,而且会是持续稳定的表现:如果每个分区有着相同数量的对象,你便可以确保对世界中的分区的查询需要大约相同的时间量。当需要维持一个 -稳定的帧速率,这种稳定性比原始的性能更为重要。 +1.你可以确保分区平衡。这不仅仅带来优秀的性能表现,而且会是持续稳定的表现:如果每个分区有着相同数量的对象,你便可以确保对世界中的分区的查询需要大约相同的时间量。当需要维持一个稳定的帧速率,这种稳定性比原始的性能更为重要。 2.对整个对象集合一次性的进行分区更为有效。当对象集合影响到边界时,最好在分区之前对所有对象进行审视。这就是为什么这种类型的分区越来越多的应用于游戏中需要保持固定的图形和静态几何部分。 @@ -461,8 +460,7 @@ void Grid::handleCell(int x, int y) 四叉树从将整个空间作为一个单一的分区开始。如果空间中对象的的数目超过了某一个阈值,空间便被切分成四个较小的正方形。这些正方形的边界是固定的:他们总是将空间对半切分。 -然后,对于四个正方形中的每一个而言,我们再一次做了同样的过程,递归,直到每一个正方形内部只有少量的对象。由于我们只是递归的将高密度对象区域切分开,这个分区会自适应于对象集合, -但分区不会移动。 +然后,对于四个正方形中的每一个而言,我们再一次做了同样的过程,递归下去直到每一个正方形内部只有少量的对象。由于我们只是递归的将高密度对象区域切分开,这个分区会自适应于对象集合,但分区是不会移动的。 在下图中,从左往右阅读,你可以看到分区的过程: @@ -471,7 +469,7 @@ void Grid::handleCell(int x, int y) 1.对象可以逐步的增加。添加一个新对象意味着要寻找合适的区域并且放置进去。如果对象放入区域中超过了最大的数目,那么区域会被继续细分。在区域中的其他对象也会被分到更细小的区域中去。 这需要一些工作,但是努力是值得的:你必须要移动的对象的数目始终要比最大的对象数目要少。添加一个单一的对象永远也不会触发多个细分动作。 -删除的对象同样简单。你将对象从它所在区域中移除,如果它的父区域的对象总数低于了一个阈值,你就可以合并这些细分的区域。 +删除对象同样简单。你将对象从它所在区域中移除,如果它的父区域的对象总数低于了一个阈值,你就可以合并这些细分的区域。 2.对象可以快速的移动。这个,当然,和上面一样。“移动”一个对象只是一个添加和一个删除,两者和四叉树一样,相当快。 @@ -489,7 +487,7 @@ void Grid::handleCell(int x, int y) ### 如果存在存储对象的另外一个集合: 遍历所有的对象更为快速。如果问题中对象是“存活”的并且他们需要做一些处理,你可能会发现自己要频繁的访问每一个对象,无论对象的位置在哪。试想一下,在我们前面的例子中,大部分单元格 -都是空的。遍历表格中所有单元格找到非空的那些单元格是在浪费时间。 +都是空的。遍历网格中所有单元格找到非空的那些单元格是在浪费时间。 第二个集合只存储那些可以让你直接遍历访问的对象。你有两个数据结构,其中一个针对每个用例进行了优化。 @@ -497,7 +495,7 @@ void Grid::handleCell(int x, int y) - 在这章中我试图不去详细讨论空间分区的结构,以保持章节的高层次概括性(并且也不会太长!),但是下一步你应该要去了解一些常见的结构。尽管他们的名字吓人,但却出奇的简单。常见的有: - - [网格](http://en.wikipedia.org/wiki/Grid_(spatial_index) + - [网格](http://en.wikipedia.org/wiki/Grid_(spatial_index)) - [四叉树](http://en.wikipedia.org/wiki/Quad_tree) - [二叉空间分割](http://en.wikipedia.org/wiki/Binary_space_partitioning) - [k-dimensional树](http://en.wikipedia.org/wiki/Kd-tree) @@ -505,6 +503,6 @@ void Grid::handleCell(int x, int y) - 每一个空间数据结构基本都从一个现有已知的1维数据结构扩展到多维,了解他们的线性结构会帮助你判断他们是否适合解决你的问题: - - 网格是一个持久的[桶排序](http://en.wikipedia.org/wiki/Bucket_sort)。 + - 网格是一个持续的[桶排序](http://en.wikipedia.org/wiki/Bucket_sort)。 - 二叉空间分割, k-d 树, 以及层次包围盒都是[二叉查找树](http://en.wikipedia.org/wiki/Binary_search_tree)。 - 四叉树和八叉树都是[Trie树](http://en.wikipedia.org/wiki/Trie)(译者注:Trie树是哈希树的变种)。 From c5c05b50a22205f38446807564295186083e747d Mon Sep 17 00:00:00 2001 From: ChildhoodAndy Date: Mon, 26 Jan 2015 18:29:10 +0800 Subject: [PATCH 109/123] =?UTF-8?q?=E6=B7=BB=E5=8A=A0Gizmosir=E7=BF=BB?= =?UTF-8?q?=E8=AF=91=E7=9A=84=E7=BB=84=E4=BB=B6=E7=AB=A0=E8=8A=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 添加Gizmosir翻译的组件章节 --- 05-Decoupling Patterns.md | 16 +- 05.1-Component.md | 798 +++++++++++++++++++++++++++----------- README.md | 2 + res/component-uml.png | Bin 0 -> 194322 bytes 4 files changed, 590 insertions(+), 226 deletions(-) create mode 100644 res/component-uml.png diff --git a/05-Decoupling Patterns.md b/05-Decoupling Patterns.md index 9181a4e..69e7177 100644 --- a/05-Decoupling Patterns.md +++ b/05-Decoupling Patterns.md @@ -1,13 +1,13 @@ -Decoupling Patterns +解耦模式 ============================ -^title Decoupling Patterns - Once you get the hang of a programming language, writing code to do what you want is actually pretty easy. What's hard is writing code that's easy to adapt when your requirements *change*. Rarely do we have the luxury of a perfect feature set before we've fired up our editor. +当你掌握了一门编程语言,你会发现写代码来实现某个你想要实现的功能是件相当容易的事情。难的是写出在此基础上容易添加或更改功能的代码,因为我们几乎没有可能不更改程序的功能或者特性。 + A powerful tool we have for making change easier is *decoupling*. When we say two pieces of code are "decoupled", we mean a change in one usually doesn't require a change in the other. When you change some feature in your game, the @@ -19,8 +19,10 @@ Queues](event-queue.html) decouple two objects communicating with each other, both statically and *in time*. [Service Locators](service-locator.html) let code access a facility without being bound to the code that provides it. -## The Patterns +[组件](05.1-Component.md)将游戏的不同方面互相分离开却仍然具备它们的特性。[事件队列](05.2-Event Queue.md)能够静态而且及时的将两个对象通信分离开。[服务定位器](05.3-Service Locator.md)让代码能够访问到设备却不需要被绑定到提供服务的代码上。 + +## 本章模式 -* [Component](component.html) -* [Event Queue](event-queue.html) -* [Service Locator](service-locator.html) \ No newline at end of file +* [组件](05.1-Component.md) +* [事件队列](05.2-Event Queue.md) +* [服务定位器](05.3-Service Locator.md) \ No newline at end of file diff --git a/05.1-Component.md b/05.1-Component.md index f774b15..99e1442 100644 --- a/05.1-Component.md +++ b/05.1-Component.md @@ -1,26 +1,23 @@ -Component +组件模式 ============================ -^title Component -^section Decoupling Patterns - -## Intent +## Intent 意图 *Allow a single entity to span multiple domains without coupling the domains to each other.* -## Motivation +_允许一个单独的实体跨多个不同域而不耦合它们。_ + +## Motivation 动机 Let's say we're building a platformer. The Italian plumber demographic is covered, so ours will star a Danish baker, Bjørn. It stands to reason that we'll have a class representing our friendly pastry chef, and it will contain everything he does in the game. -

+> 注:我之所以是个程序猿而非设计师就是因为我总想要去实现这些很棒的想法。 Since the player controls him, that means reading controller input and translating that input into motion. And, of course, he needs to interact with the level, @@ -28,58 +25,73 @@ so some physics and collision go in there. Once that's done, he's got to show up on screen, so toss in animation and rendering. He'll probably play some sounds too. +因为玩家控制他,这就意味着需要读取控制器的输入并且将输入转换成动作。当然,角色类还需要跟平台相互作用,所以还需要一些物理和碰撞方面的东西。当这些都完成了,角色通过动画和渲染就显示在屏幕上了。角色可能还会播放一些音效。 + Hold on a minute; this is getting out of control. Software Architecture 101 tells us that different domains in a program should be kept isolated from each other. If we're making a word processor, the code that handles printing shouldn't be affected by the code that loads and saves documents. A game doesn't have the same domains as a business app, but the rule still applies. +且慢,事情似乎在往失控的方向发展。在第一章软件架构中我们曾经提到,一个程序中的不同域应该互相隔离。在我们设计一个文字处理器时,处理打印部分的代码不应该受到保存,读取文档的代码的任何影响。也许游戏的域与应用的域不完全相同,但这个道理是相通的。 + As much as possible, we don't want AI, physics, rendering, sound and other domains to know about each other, but now we've got all of that crammed into one class. We've seen where this road leads to: a 5,000-line dumping ground source file so big that only the bravest ninja coders on your team even dare to go in there. +所以尽可能的,我们不应让AI,物理,渲染,声效已经其他域互相影响,但我们又必须将所有这些包含在一个类中。我们已经看到了,这个是一个代码量能达5000行以上的巨大的源文件,以至于只有最勇敢的程序员才胆敢去尝试。 + This is great job security for the few who can tame it, but it's hell for the rest of us. A class that big means even the most seemingly trivial changes can have far-reaching implications. Soon, the class collects *bugs* faster than it collects *features*. -### The Gordian knot +如此庞大的工作量对于那些能够驯服它的人来说这件很棒的事情,但是对无能为力的其余我们来说则如同地狱。一个如此大的类意味着即使最微不足道的修改都可能产生深远的影响。所以很快,在这个类中你将会得到比功能更多的错误。 + +### The Gordian knot 难题 Even worse than the simple scale problem is the coupling one. All of the different systems in our game have been tied into a giant knotted ball of code like: -^code gordian +比简单规模问题更复杂的是耦合问题。我们游戏中所有不同的系统都被绑成一个像巨大的结球一样的代码,就像: + +```c++ +if (collidingWithFloor() && (getRenderState() != INVISIBLE)) +{ + playSound(HIT_FLOOR); +} +``` Any programmer trying to make a change in code like that will need to know something about physics, graphics, and sound just to make sure they don't break anything. - - -These two problems compound each other; the class touches so many domains that +> These two problems compound each other; the class touches so many domains that every programmer will have to work on it, but it's so huge that doing so is a nightmare. If it gets bad enough, coders will start putting hacks in other parts of the codebase just to stay out of the hairball that this `Bjorn` class has -become. +become.这两个问题互相复合,一个包含了很多域的类将要求每个想要修改他的程序员做大量的工作,而这毫无疑问就是个噩梦。当代码变得足够糟糕,程序员都开始因为不想去理这团杂乱的毛团而开始放弃它。 -### Cutting the knot +### Cutting the knot 解决难题 We can solve this like Alexander the Great -- with a sword. We'll take our monolithic `Bjorn` class and slice it into separate parts along domain @@ -88,25 +100,33 @@ move it into a separate `InputComponent` class. `Bjorn` will then own an instance of this component. We'll repeat this process for each of the domains that `Bjorn` touches. +想要解决这个问题,我们应该像执剑的亚历山大大帝一样。将独立的Bjorn 类依着不用的域切成相互独立的部分。举个例子,我们将所有用来处理用户输入的代码放到一个类中。而Bjorn将拥有这个类的一个实例。我们将循环对所有Bjorn类包含的领域做同样的工作。 + When we're done, we'll have moved almost everything out of `Bjorn`. All that remains is a thin shell that binds the components together. We've solved our huge class problem by simply dividing it up into multiple smaller classes, but we've accomplished more than just that. -### Loose ends +但我们完成这件工作后,我们几乎将Bjorn类中的所有东西都清除了。剩下的是一个将所有组件绑在一起的外壳。我们通过简单的将代码分割成小类的方式解决了这个复杂的巨大类问题。但是我们却又不仅仅只是解决了这个问题。 + +### Loose ends 宽松的末端 Our component classes are now decoupled. Even though `Bjorn` has a `PhysicsComponent` and a `GraphicsComponent`, the two don't know about each other. This means the person working on physics can modify their component without needing to know anything about graphics and vice versa. +现在我们的内容类是去耦的了。尽管Bjorn类仍然有物理以及图像不同两块的内容,但是这两块内容互不干涉。这意味着想要修改物理块内容的程序员不再需要了解图像块的知识,反之亦然。 + In practice, the components will need to have *some* interaction between themselves. For example, the AI component may need to tell the physics component where Bjørn is trying to go. However, we can restrict this to the components that *do* need to talk instead of just tossing them all in the same playpen together. -### Tying back together +在实践中,这些组件需要互相之间有一些互动。例如,AI组件可以会告知物理组件 Bjorn将去哪里。然而,我们可以限制的只让组件之间进行交流而不是将他们全部放到一起。 + +### Tying back together 捆绑在一起 Another feature of this design is that the components are now reusable packages. So far, we've @@ -117,25 +137,25 @@ decorations but can be touched: boxes, boulders, and trees. *Zones* are the opposite of decorations -- invisible but interactive. They're useful for things like triggering a cutscene when Bjørn enters an area. - +instance* of the same class.相反,软件设计的趋势应该是尽可能的使用组合而不是继承。 我们应该让两个类拥有同一个类的实例而不是继承同一个类。 Now, consider how we'd set up an inheritance hierarchy for those classes if we weren't using components. A first pass might look like: -A class diagram. Zone has collision code and inherits from GameObject. Decoration also inherits from GameObject and has rendering code. Prop inherits from Zone but then has redundant rendering code. +现在我们考虑如何在不用组件的情况下建立这些类的继承层次结构,它应该像: + +![](res/component-uml.png) We have a base `GameObject` class that has common stuff like position and orientation. `Zone` inherits from that and adds collision detection. Likewise, @@ -144,14 +164,12 @@ orientation. `Zone` inherits from that and adds collision detection. Likewise, from `Decoration` to reuse the *rendering* code without running into the Deadly Diamond. - +"deadly" for a reason.“致命的钻石”发生在对同一基类有不用路径的多重继承的类层次结构中。但是该错误的诱因不在这本书的讨论范畴内,但是请相信叫它致命的不是没有原因的。 We could flip things around so that `Prop` inherits from `Decoration`, but then we end up having to duplicate the *collision* code. Either way, there's no clean @@ -160,6 +178,8 @@ without resorting to multiple inheritance. The only other option is to push everything up into `GameObject`, but then `Zone` is wasting memory on rendering data it doesn't need and `Decoration` is doing the same with physics. +我们可以做些转变让支柱能够继承装饰类。但是我们将不能够复制碰撞的代码。无论如何,都没有办法不通过多重继承而在同一个类中重用碰撞跟渲染部分的代码。唯一的选择就是将这两段代码同时放到基本类中,然后这么做的结果就是区域类将会不需要渲染以及装饰类的代码而浪费了不少的内存。 + Now, let's try it with components. Our subclasses disappear completely. Instead, we have a single `GameObject` class and two component classes: `PhysicsComponent` and `GraphicsComponent`. A decoration is simply a @@ -167,41 +187,41 @@ classes: `PhysicsComponent` and `GraphicsComponent`. A decoration is simply a opposite, and a prop has both components. No code duplication, no multiple inheritance, and only three classes instead of four. - +from.而组件就像按着菜单点菜用餐,每个客户能够选择那些他们喜欢的菜,而菜单则是一个他们选择菜品的列表。 Components are basically plug-and-play for objects. They let us build complex entities with rich behavior by plugging different reusable component objects into sockets on the entity. Think software Voltron. -## The Pattern +## The Pattern 模式 A **single entity spans multiple domains**. To keep the domains isolated, the code for each is placed in its own **component class**. The entity is reduced to a simple **container of components**. +样式是一个跨多个域的单一实体。为了能够保持域之间相互隔离,每个域的代码都独立的放在自己的组件类中。实体则可以减少到一个的组件的容器。 + @@ -211,16 +231,16 @@ Components are most commonly found within the core class that defines the entities in a game, but they may be useful in other places as well. This pattern can be put to good use when any of these are true: - * You have a class that touches multiple domains which you want to keep - decoupled from each other. - - * A class is getting massive and hard to work with. +组件一个最普遍的用法是在核心类中定义了一个游戏的实体,但是它们也能够用在别的地方。当如下条件成立时,样式就能够发挥它的作用: 你有一个涉及到多个域的类,但是你想保持互相解耦。 - * You want to be able to define a variety of objects that share different +- You have a class that touches multiple domains which you want to keep + decoupled from each other.你有一个涉及到多个域的类,但是你想保持互相解耦。 +- A class is getting massive and hard to work with.一个类越来越庞大,很难处理。 +- You want to be able to define a variety of objects that share different capabilities, but using inheritance doesn't let you pick the parts you - want to reuse precisely enough. + want to reuse precisely enough.你希望定义能够共用不同功能的不同的类但却不通过继承来精确的重用代码。 -## Keep in Mind +## Keep in Mind 注意事项 The Component pattern adds a good bit of complexity over simply making a class and putting code in it. Each conceptual "object" becomes a cluster of objects that @@ -228,26 +248,28 @@ must be instantiated, initialized, and correctly wired together. Communication between the different components becomes more challenging, and controlling how they occupy memory is more complex. +组件模式每次通过简单添加一点点的复杂的代码的方法来构成一个类。每个概念上的“对象”成为一个集群是必须被实例化,初始化以及正确地连接在一起。不同组件之间的通讯变得更具挑战性,并且限制它们占用内存将更加复杂。 + For a large codebase, this complexity may be worth it for the decoupling and code reuse it enables, but take care to ensure you aren't over-engineering a "solution" to a non-existent problem before applying this pattern. +对于一个大型代码库,它的复杂性会让解耦以及代码重用变得有价值,但是请注意你没有在不存在问题的代码库中过度设计而使用这样一个“解决方案”。 + Another consequence of using components is that you often have to hop through a level of indirection to get anything done. Given the container object, first you have to get the component you want, *then* you can do what you need. In performance-critical inner loops, this pointer following may lead to poor performance. - +your data in the order that the CPU wants it.就如硬币有正反面,而这就如同硬币的另外一面。组件模式通常能够提高性能和缓存一致性。组件让使用数据本地化模型来组织CPU所需要的数据顺序变得简单。 -## Sample Code +## Sample Code 范例代码 One of the biggest challenges for me in writing this book is figuring out how to isolate each pattern. Many design patterns exist to contain code that itself @@ -255,6 +277,8 @@ isn't part of the pattern. In order to distill the pattern down to its essence, I try to cut as much of that out as possible, but at some point it becomes a bit like explaining how to organize a closet without showing any clothes. +写这本书对我来说最大的挑战是找到如何隔离每个模式的方法。许多设计模式都包含了不属于与本模式无关的代码。为了提取模式的精华,我试着尽可能的简化,但是这就变得有点像是在展示一个没有任何衣服的衣柜 + The Component pattern is a particularly hard one. You can't get a real feel for it without seeing some code for each of the domains that it decouples, so I'll have to sketch in a bit more of Bjørn's code than I'd like. The pattern is @@ -263,142 +287,379 @@ help clarify what the classes are for. It's fake code -- it calls into other classes that aren't presented here -- but it should give you an idea of what we're going for. -### A monolithic class +而组件模式则尤其困难。如果你没有见过任何解耦的代码,你将可能对组件的设计模式毫无头绪。所以我在我们Bjorn的代码上扩展开来向你们描述下。模式的确是只有组件本身,但是这其中的代码应该能够解释这个类。它是一段伪代码,它调用了其它不属于这里的类,但是它应该能够让你明白我们正在干什么。 + +### A monolithic class 一个单类 To get a clearer picture of how this pattern is applied, we'll start by showing a monolithic `Bjorn` class that does everything we need but *doesn't* use this pattern: - +```c++ +class Bjorn +{ +public: + Bjorn() + : velocity_(0), + x_(0), y_(0) + {} + + void update(World& world, Graphics& graphics); -^code 1 +private: + static const int WALK_ACCELERATION = 1; + + int velocity_; + int x_, y_; + + Volume volume_; + + Sprite spriteStand_; + Sprite spriteWalkLeft_; + Sprite spriteWalkRight_; +}; +``` `Bjorn` has an `update()` method that gets called once per frame by the game: -^code monolithic-update +Bjorn中有个update()方法来调用游戏中的每一帧: + +```c++ +void Bjorn::update(World& world, Graphics& graphics) +{ + // Apply user input to hero's velocity. + switch (Controller::getJoystickDirection()) + { + case DIR_LEFT: + velocity_ -= WALK_ACCELERATION; + break; + + case DIR_RIGHT: + velocity_ += WALK_ACCELERATION; + break; + } + + // Modify position by velocity. + x_ += velocity_; + world.resolveCollision(volume_, x_, y_, velocity_); + + // Draw the appropriate sprite. + Sprite* sprite = &spriteStand_; + if (velocity_ < 0) + { + sprite = &spriteWalkLeft_; + } + else if (velocity_ > 0) + { + sprite = &spriteWalkRight_; + } + + graphics.draw(*sprite, x_, y_); +} +``` It reads the joystick to determine how to accelerate the baker. Then it resolves its new position with the physics engine. Finally, it draws Bjørn onto the -screen. +screen.它通过读取操纵杆来决定如何加速面包师。然后通过物理引擎来解决新位置的问题。最后将面包师显示到屏幕上。 The sample implementation here is trivially simple. There's no gravity, animation, or any of the dozens of other details that make a character fun to play. Even so, we can see that we've got a single function that several different coders on our team will probably have to spend time in, and it's starting to get a bit messy. Imagine this scaled up to a thousand lines and you -can get an idea of how painful it can become. +can get an idea of how painful it can become.这个示例实现非常简单。没有重力,动画或者其他几十个能够让游戏变得有趣的细节。但即便如此,我们可以看到,我们有一个单一的函数让团队中不同的程序员都得花点时间,而且也开始有点混乱。试想下如果代码扩展到一千行这将会是多么痛苦的一件事情。 -### Splitting out a domain +### Splitting out a domain 分割域 Starting with one domain, let's pull a piece out of `Bjorn` and push it into a separate component class. We'll start with the first domain that gets processed: input. The first thing `Bjorn` does is read in user input and adjust his -velocity based on it. Let's move that logic out into a separate class: - -^code 2 +velocity based on it. Let's move that logic out into a separate class:从一个域开始,我们将一部分的Bjorn代码抽离出来并将它封装到一个独立的组件类中。我们首先从输入这个域开始。Bjorn类做的第一件事情就是读入用户的输入并相应的调整速度。让我们将这个逻辑封装到一个独立的类中: + +```c++ +class InputComponent +{ +public: + void update(Bjorn& bjorn) + { + switch (Controller::getJoystickDirection()) + { + case DIR_LEFT: + bjorn.velocity -= WALK_ACCELERATION; + break; + + case DIR_RIGHT: + bjorn.velocity += WALK_ACCELERATION; + break; + } + } + +private: + static const int WALK_ACCELERATION = 1; +}; +``` Pretty simple. We've taken the first section of `Bjorn`’s `update()` method and put it into this class. The changes to `Bjorn` are also -straightforward: - -^code 3 +straightforward:非常简单,我们只需要将Bjorn类中update方法放到一个新的类中就好了,而更改Bjorn类也相当简单: + +```c++ +class Bjorn +{ +public: + int velocity; + int x, y; + + void update(World& world, Graphics& graphics) + { + input_.update(*this); + + // Modify position by velocity. + x += velocity; + world.resolveCollision(volume_, x, y, velocity); + + // Draw the appropriate sprite. + Sprite* sprite = &spriteStand_; + if (velocity < 0) + { + sprite = &spriteWalkLeft_; + } + else if (velocity > 0) + { + sprite = &spriteWalkRight_; + } + + graphics.draw(*sprite, x, y); + } + +private: + InputComponent input_; + + Volume volume_; + + Sprite spriteStand_; + Sprite spriteWalkLeft_; + Sprite spriteWalkRight_; +}; +``` `Bjorn` now owns an `InputComponent` object. Where before he was handling user -input directly in the `update()` method, now he delegates to the component: +input directly in the `update()` method, now he delegates to the component:现在Bjorn拥有一个输入组件类,之前它通过调用update方法来处理用户的输入,现在它只需代理组件即可: -^code 4 +```c++ +input_.update(*this); +``` We've only started, but already we've gotten rid of some coupling -- the main `Bjorn` class no longer has any reference to `Controller`. This will come in -handy later. +handy later.我们仅仅才开始就已经摆脱了一些耦合——我们将逐步使得核心Bjorn类不再设计到任何控制器。 -### Splitting out the rest +### Splitting out the rest 分割其余部分 Now, let's go ahead and do the same cut-and-paste job on the physics and graphics -code. Here's our new `PhysicsComponent`: - -^code 5 +code. Here's our new `PhysicsComponent`:现在,让我们对物理以及图形的代码继续做同样的工作。这里给出了新的物理组件的代码: + +```c++ +class PhysicsComponent +{ +public: + void update(Bjorn& bjorn, World& world) + { + bjorn.x += bjorn.velocity; + world.resolveCollision(volume_, + bjorn.x, bjorn.y, bjorn.velocity); + } + +private: + Volume volume_; +}; +``` In addition to moving the physics *behavior* out of the main `Bjorn` class, you can see we've also moved out the *data* too: The `Volume` object is now owned by -the component. - -Last but not least, here's where the rendering code lives now: - -^code 6 +the component.除了将物理行为从核心类Bjorn中移除外,你还能看到我们同时将数据也移除了:现在音量对象是组件所拥有的。 + +Last but not least, here's where the rendering code lives now:最后但是同样重要的,是渲染部分的代码: + +```c++ +class GraphicsComponent +{ +public: + void update(Bjorn& bjorn, Graphics& graphics) + { + Sprite* sprite = &spriteStand_; + if (bjorn.velocity < 0) + { + sprite = &spriteWalkLeft_; + } + else if (bjorn.velocity > 0) + { + sprite = &spriteWalkRight_; + } + + graphics.draw(*sprite, bjorn.x, bjorn.y); + } + +private: + Sprite spriteStand_; + Sprite spriteWalkLeft_; + Sprite spriteWalkRight_; +}; +``` We've yanked almost everything out, so what's left of our humble pastry chef? -Not much: - -^code 7 +Not much:我们几乎将所有东西都移除了,只剩下没有多少代码的Bjorn类: + +```c++ +class Bjorn +{ +public: + int velocity; + int x, y; + + void update(World& world, Graphics& graphics) + { + input_.update(*this); + physics_.update(*this, world); + graphics_.update(*this, graphics); + } + +private: + InputComponent input_; + PhysicsComponent physics_; + GraphicsComponent graphics_; +}; +``` The `Bjorn` class now basically does two things: it holds the set of components that actually define it, and it holds the state that is shared across multiple domains. Position and velocity are still in the core `Bjorn` class for two reasons. First, they are "pan-domain" state -- almost every component will make use of them, so it isn't clear which component *should* own them if we did want -to push them down. +to push them down.现在Bjorn类只做两件很基础的事情,拥有一些能够真正工作起来的组件,以及拥有能够在不同的域共享的状态信息。位置和速度的信息之所以还保留在Bjorn类中主要有两个原因,首先它们是“pan-domain(最基础?)”状态,几乎所有的组件都必须使用它们,所以如果将它们放到组件中是不明智的。 Secondly, and more importantly, it gives us an easy way for the components to communicate without being coupled to each other. Let's see if we can put that to -use. +use.第二点也是最重要的点是将位置与速度这两个状态信息保留在Bjorn类中使得我们轻松的在组件中传递信息而不需要耦合组件。让我们来看看应该如何使用。 -### Robo-Bjørn +### Robo-Bjørn 重构Bjorn So far, we've pushed our behavior out to separate component classes, but we haven't *abstracted* the behavior out. `Bjorn` still knows the exact concrete -classes where his behavior is defined. Let's change that. +classes where his behavior is defined. Let's change that.到目前为止,我们已经将行为封装到单独的组件类中,但是我们没有将这些行为抽象化。Bjorn仍然精确的知道行为是在哪个类中被定义的。让我们来修改下。 We'll take our component for handling user input and hide it behind an -interface. We'll turn `InputComponent` into an abstract base class: +interface. We'll turn `InputComponent` into an abstract base class:我们将处理用户输入的组件隐藏到一个接口下,这样就能够将输入组件变成一个抽象的基类: -^code 8 +```c++ +class InputComponent +{ +public: + virtual ~InputComponent() {} + virtual void update(Bjorn& bjorn) = 0; +}; +``` Then, we'll take our existing user input handling code and push it down into a -class that implements that interface: - -^code 9 +class that implements that interface:然后,我们将已经存在的用于处理用户输入的代码封装到一个实现了接口的类中: + +```c++ +class PlayerInputComponent : public InputComponent +{ +public: + virtual void update(Bjorn& bjorn) + { + switch (Controller::getJoystickDirection()) + { + case DIR_LEFT: + bjorn.velocity -= WALK_ACCELERATION; + break; + + case DIR_RIGHT: + bjorn.velocity += WALK_ACCELERATION; + break; + } + } + +private: + static const int WALK_ACCELERATION = 1; +}; +``` We'll change `Bjorn` to hold a pointer to the input component instead of having -an inline instance: - -^code 10 +an inline instance:我们改变Bjorn类,让它拥有一个指向输入组件的指针而不是拥有一个内联实例: + +```c++ +class Bjorn +{ +public: + int velocity; + int x, y; + + Bjorn(InputComponent* input) + : input_(input) + {} + + void update(World& world, Graphics& graphics) + { + input_->update(*this); + physics_.update(*this, world); + graphics_.update(*this, graphics); + } + +private: + InputComponent* input_; + PhysicsComponent physics_; + GraphicsComponent graphics_; +}; +``` Now, when we instantiate `Bjorn`, we can pass in an input component for it to -use, like so: +use, like so:现在,当我们实例化Bjorn是,我们可以通过一个输入组件使用,像这样 -^code 11 +```c++ +Bjorn* bjorn = new Bjorn(new PlayerInputComponent()); +``` This instance can be any concrete type that implements our abstract `InputComponent` interface. We pay a price for this -- `update()` is now a virtual -method call, which is a little slower. What do we get in return for this cost? +method call, which is a little slower. What do we get in return for this cost?这个实例可以是任何实现了我们抽象输入组件接口的具体类型。但是我们也因此付出代价,现在update方法是一个抽象方法调用方法,相对有点慢。我们应该反思,付出了这个代价我们得到了什么? Most consoles require a game to support "demo mode." If the player sits at the main menu without doing anything, the game will start playing automatically, with the computer standing in for the player. This keeps the game from burning the main menu into your TV and also makes the game look nicer when it's running -on a kiosk in a store. +on a kiosk in a store.大多数主机需要游戏支持“演示模式”。如果玩家停留在主菜单并且不做任何事情,电脑则会代替玩家让游戏则会自动的播放起来。这么做的目的是为了不要让游戏长时间的停留在主菜单画面,同时也为了在销售商店展示给顾客留下更好的印象。 Hiding the input component class behind an interface lets us get that working. We already have our concrete `PlayerInputComponent` that's normally used when -playing the game. Now, let's make another one: - -^code 12 +playing the game. Now, let's make another one:而将输入组件类隐藏到一个接口下有助于我们完成这个工作。我们已经有一个可供玩家正常游戏时的玩家输入组件。现在我们来制作另外一个输入组件: + +```c++ +class DemoInputComponent : public InputComponent +{ +public: + virtual void update(Bjorn& bjorn) + { + // AI to automatically control Bjorn... + } +}; +``` When the game goes into demo mode, instead of constructing Bjørn like we did -earlier, we'll wire him up with our new component: +earlier, we'll wire him up with our new component:当游戏进入演示模式时,我们像之前那样构建Bjorn类,取而代之的是将它连接到新的组件上: ^code 13 @@ -406,140 +667,193 @@ And now, just by swapping out a component, we've got a fully functioning computer-controlled player for demo mode. We're able to reuse all of the other code for Bjørn -- physics and graphics don't even know there's a difference. Maybe I'm a bit strange, but it's stuff like this that gets me up in the morning. - - - -### No Bjørn at all? +### No Bjørn at all? 删掉Bjorn If you look at our `Bjorn` class now, you'll notice there's nothing really "Bjørn" about it -- it's just a component bag. In fact, it looks like a pretty good candidate for a base "game object" class that we can use for *every* object in the game. All we need to do is pass in *all* the components, and we can build -any kind of object by picking and choosing parts like Dr. Frankenstein. +any kind of object by picking and choosing parts like Dr. Frankenstein.现在让我们看看的Bjorn类,你会发现基本上没有Bjorn独有的代码,它更像是个组件包。事实上,它是一个能够用到游戏中所有对象身上的游戏基本类的最佳候选。我们需要做的只是将它传递给所有的组件,然后我们就像选择博士Frankenstein一起去构建任何类型的对象。 Let's take our two remaining concrete components -- physics and graphics -- and -hide them behind interfaces like we did with input: - -^code 14 +hide them behind interfaces like we did with input:让我们把剩下的两个具体组件—物理以及图形隐藏到接口下: + +```c++ +class PhysicsComponent +{ +public: + virtual ~PhysicsComponent() {} + virtual void update(GameObject& obj, World& world) = 0; +}; + +class GraphicsComponent +{ +public: + virtual ~GraphicsComponent() {} + virtual void update(GameObject& obj, Graphics& graphics) = 0; +}; +``` Then we re-christen `Bjorn` into a generic `GameObject` -class that uses those interfaces: - -^code 15 - - - -Our existing concrete classes will get renamed and implement those interfaces: - -^code 16 +Locality chapter has more details.这些实体组件系统将解耦组件的设计发挥到了极限。让你能够对一个实体进行添加新的组件而不让实体知道。局部数据的章节将更详细的讲述这个细节。 + +Our existing concrete classes will get renamed and implement those interfaces:我们将现有的具体类重命名并且实现以上接口: + +```c++ +class BjornPhysicsComponent : public PhysicsComponent +{ +public: + virtual void update(GameObject& obj, World& world) + { + // Physics code... + } +}; + +class BjornGraphicsComponent : public GraphicsComponent +{ +public: + virtual void update(GameObject& obj, Graphics& graphics) + { + // Graphics code... + } +}; +``` And now we can build an object that has all of Bjørn's original behavior without -having to actually create a class for him, just like this: - - +having to actually create a class for him, just like this:现在我们可以构建一个拥有所有Bjorn原本行为的对象,但是却不需要因此生成一个类,就像: -^code 17 - +Method pattern.当然,createBjorn方法是一个典型的四种工厂设计模式的实例 By defining other functions that instantiate `GameObjects` with different -components, we can create all of the different kinds of objects our game needs. +components, we can create all of the different kinds of objects our game needs.通过定义其他的函数来实例化拥有不同组件的游戏类,我们能够创建所有我们游戏中所需的对象。 -## Design Decisions +## Design Decisions 设计决定 The most important design question you'll need to answer with this pattern is, "What set of components do I need?" The answer there is going to depend on the needs and genre of your game. The bigger and more complex your engine is, the -more finely you'll likely want to slice your components. +more finely you'll likely want to slice your components.关于这个设计模式的最重要的问题是:我需要的组件套是什么?答案是取决于你游戏的需求与风格。更大更复杂的引擎需要你将组件切分的更细。 -Beyond that, there are a couple of more specific options to consider: +Beyond that, there are a couple of more specific options to consider:除此之外,有一些更具体的选择需要考虑: -### How does the object get its components? +### How does the object get its components? 对象如何获得组件 Once we've split up our monolithic object into a few separate component parts, -we have to decide who puts the parts back together. +we have to decide who puts the parts back together.一旦我们将一个单独的对象分割成数个独立的组件,我们就必须决定谁在背后来联系这些组件。 - * **If the object creates its own components:** + * **If the object creates its own components:**如果这个类创建了自己的组件: * *It ensures that the object always has the components it needs.* You never have to worry about someone forgetting to wire up the right components to the object and breaking the game. The container object - itself takes care of it for you. + itself takes care of it for you.它确保了这个类一定有它所需要的组件。你不要担心有人忘记了将类链接到组件上而导致游戏崩溃。容器类将会负责这件事。 * *It's harder to reconfigure the object.* One of the powerful features of this pattern is that it lets you build new kinds of objects simply by recombining components. If our object always wires itself with the same set of hard-coded components, we aren't taking advantage of that - flexibility. + flexibility.但是这么做将导致很难再重新配置这个类。此设计模式一个强大的特性就是能够让你通过简单的组合组件来构建任何你需要的对象。如果我们的对象总是连着一组组件,我们将失去了这种灵活性。 - * **If outside code provides the components:** + * **If outside code provides the components:** 如果由外部代码提供组件: * *The object becomes more flexible.* We can completely change the behavior of the object by giving it different components to work with. Taken to its fullest extent, our object becomes a generic component - container that we can reuse over and over again for different purposes. + container that we can reuse over and over again for different purposes.对象将变得灵活。我们完全可以通过添加不同的组件来改变类的行为。我们甚至能把这个类当做一个通用的组件容器,一遍又一遍的为不同的目重用代码。 * *The object can be decoupled from the concrete component types.* If we're allowing outside code to pass in components, odds are good that we're also letting it pass in *derived* component types. At that point, the object only knows about the component *interfaces* and not the concrete types themselves. This can make for a nicely encapsulated - architecture. + architecture.对象可以从具体的组件类型中解耦出来,we’re allowing outside code to pass in components, odds are good that we’re also letting it pass in derived component types. 对象只是知道组件的接口而不知道具体的类型,这能够很好的封装结构。 -### How do components communicate with each other? +### How do components communicate with each other?组件之间如何传递信息? Perfectly decoupled components that function in isolation is a nice ideal, but it doesn't really work in practice. The fact that these components are part of the *same* object implies that they are part of a larger whole and need to -coordinate. That means communication. +coordinate. That means communication.完美的将组件互相解耦并且保证功能隔离是个很好的想法,但它通常是不现实的。事实就是组件是相同对象的一个部分,所以组件与组件之间需要传递信息。 So how can the components talk to each other? There are a couple of options, but unlike most design "alternatives" in this book, these aren't exclusive -- you will -likely support more than one at the same time in your designs. +likely support more than one at the same time in your designs.所以组件之间又是如何传递信息的呢?有好几个选择,但是不像大多数这边书中设计模式,它们不是唯一的,所以你可以同时使用好几种不同的方法。 - * **By modifying the container object's state:** + * **By modifying the container object's state:**通过修改容器对象的状态: * *It keeps the components decoupled.* When our `InputComponent` set Bjørn's velocity and the `PhysicsComponent` later used it, the two components had no idea that the other even existed. For all they knew, - Bjørn's velocity could have changed through black magic. + Bjørn's velocity could have changed through black magic.它是的组件保持解耦。当我们的输入组件设置Bjorn的速度和物理组件使用它的时候,这两个组件甚至都不知道对方的存在,它们知道的是Bjorn类的速度已经改变了。 * *It requires any information that components need to share to get pushed up into the container object.* Often, there's state that's really only needed by a subset of the components. For example, an animation and a rendering component may need to share information that's graphics-specific. Pushing that information up into the container object - where *every* component can get to it muddies the object class. + where *every* component can get to it muddies the object class.它需要任何组件需要知道的信息都在更高一级的容器中进行共享。通常,某些状态只是一少部分组件所需要。举个例子,动画已经渲染的组件可能需要与图形组件共享信息,但是将这些信息放到所有组件都能够获取到的容器类中则会混乱了这个对象类。 Worse, if we use the same container object class with different component configurations, we can end up wasting memory on state that isn't needed by *any* of the object's components. If we push some rendering-specific data into the container object, any invisible object - will be burning memory on it with no benefit. + will be burning memory on it with no benefit.更糟糕的是,如果我们使用相同的容器类以及不同的组件配置,我们将会把宝贵的内存浪费在可能完全不需要的那些状态信息的对象组件上。如果我们将一些特定的渲染数据放到容器类汇总,任何不可见的对象就会浪费大量内存,而且这不带来任何好处。 * *It makes communication implicit and dependent on the order that components are processed.* In our sample code, the original monolithic @@ -547,140 +861,186 @@ likely support more than one at the same time in your designs. user input modified the velocity, which was then used by the physics code to modify the position, which in turn was used by the rendering code to draw Bjørn at the right spot. When we split that code out into - components, we were careful to preserve that order of operations. + components, we were careful to preserve that order of operations.这使得信息传递变得隐秘以及依赖组件执行的顺序。在我们的样例代码中,最原始的update方法有一个非常仔细的操作顺序。用户输入修改了速度,然后物理代码修改位置,然后渲染代码在屏幕上显示Bjorn。当我们将代码分割成不同的组件后,我们需要小心翼翼的保留操作的顺序。 If we hadn't, we would have introduced subtle, hard-to-track bugs. For example, if we'd updated the graphics component *first*, we would wrongly render Bjørn at his position on the *last* frame, not this one. If you imagine several more components and lots more code, then you can get an idea of how hard it can be to avoid bugs - like this. + like this.如果我们不这么做的话,可以会导致一些很细小的难以追踪的bug。举个例子,如果我们首先加载了图形组件,我们极有可能会将Bjorn显示在错误的位置上。即便不是这个,如果加入更多的组件已经更大的代码,你就会发现避免执行顺序发生错乱是件多么困难的事情。 - - * **By referring directly to each other:** + * **By referring directly to each other:** 直接联系 The idea here is that components that need to talk will have direct references to each other without having to go through the container - object at all. + object at all.有一个想法就是当组件需要与其他的组件进行信息传递时,它不通过容器类而是直接将信息传递到目标组件。 Let's say we want to let Bjørn jump. The graphics code needs to know if he should be drawn using a jump sprite or not. It can determine this by asking the physics engine if he's currently on the ground. An easy way to do this is by letting the graphics component know about the physics - component directly: - - ^code 18 + component directly:假设我们想让Bjorn跳起来。图形代码需要知道它是否应该使用一个跳跃的动作。一个比较简单方法就是让图形组件与物理组件取得直接的联系: + +```c++ +class BjornGraphicsComponent +{ +public: + BjornGraphicsComponent(BjornPhysicsComponent* physics) + : physics_(physics) + {} + + void Update(GameObject& obj, Graphics& graphics) + { + Sprite* sprite; + if (!physics_->isOnGround()) + { + sprite = &spriteJump_; + } + else + { + // Existing graphics code... + } + + graphics.draw(*sprite, obj.x, obj.y); + } + +private: + BjornPhysicsComponent* physics_; + + Sprite spriteStand_; + Sprite spriteWalkLeft_; + Sprite spriteWalkRight_; + Sprite spriteJump_; +}; +``` When we construct Bjørn's `GraphicsComponent`, we'll give it a reference - to his corresponding `PhysicsComponent`. + to his corresponding `PhysicsComponent`.当我们构建Bjorn的图形组件时,我们给它一个对应的物理组件的引用。 * *It's simple and fast.* Communication is a direct method call from one object to another. The component can call any method that is supported - by the component it has a reference to. It's a free-for-all. + by the component it has a reference to. It's a free-for-all.这很简单而且很快捷。组件之间的信息传递是通过一个对象调用另一个对象的方法。组件能够调用其代码中含有引用的组件的所有方法。这是个混战。 * *The two components are tightly coupled.* The downside of the free-for-all. We've basically taken a step back towards our monolithic class. It's not quite as bad as the original single class though, since we're at least restricting the coupling to only the component pairs that - need to interact. + need to interact.组件之间紧密耦合。缺点就是会变得相当混乱。我们好像又回到了当初一个巨大的单类的时候,但其实这远没有那来的糟糕,起码我们将耦合限制在需要交流的组件之间。 - * **By sending messages:** + * **By sending messages:**通过传递信息 * This is the most complex alternative. We can actually build a little messaging system into our container object and let the components - broadcast information to each other. + broadcast information to each other.这是选项中最复杂的一个。我们可以在容器类中建立一个小的消息传递系统,让需要传递信息的组件通过广播的方式去建立组件间的联系。 Here's one possible implementation. We'll start by defining a base - `Component` interface that all of our components will implement: + `Component` interface that all of our components will implement:以下是一个实现的可能。我们将首先定义一个所有组件都能实现的基本组件接口: - ^code 19 + ```c++ + class Component +{ +public: + virtual ~Component() {} + virtual void receive(int message) = 0; +}; +``` It has a single `receive()` method that component classes implement in order to listen to an incoming message. Here, we're just using an `int` to identify the message, but a fuller implementation could attach - additional data to the message. - - Then, we'll add a method to our container object for sending messages: - - ^code 20 + additional data to the message.它有一个receive方法,组件通过实现它来监听传入信息。在这里我们将信息定义成int型,通过更加全面的实现我们也可以将额外的数据附加到信息中。 + + Then, we'll add a method to our container object for sending messages:然后,我们在容器类中添加一个方法来发送消息 + + ```c++ + class ContainerObject +{ +public: + void send(int message) + { + for (int i = 0; i < MAX_COMPONENTS; i++) + { + if (components_[i] != NULL) + { + components_[i]->receive(message); + } + } + } + +private: + static const int MAX_COMPONENTS = 10; + Component* components_[MAX_COMPONENTS]; +}; +``` Now, if a component has access to its container, it can send messages to the container, which will rebroadcast the message to all of the contained components. (That inclues the original component that sent the message; be careful that you don't get stuck in a feedback loop!) This has a couple of - consequences: + consequences:现在,如果一个组件访问它的容器,它能够将信息发送给容器,并且通过容器将信息广播给容器所包含的所有组件。 - + href="http://github.com/event-queue.html" class="pattern">Event Queue.如果你真的乐意,你甚至可以将这个消息洗头膏改成成可以延迟发送的队列消息。更多细节请查看事件队列这一个章节。 * *Sibling components are decoupled.* By going through the parent container object, like our shared state alternative, we ensure that the components are still decoupled from each other. With this system, the only coupling they have - is the message values themselves. + is the message values themselves.兄弟组件之间是解耦的。就好像我们之前选择状态传递信息的方法一样,我们通过上层容器类来确保组件之间是解耦的。使用传递信息系统的方法,唯一的耦合就是消息本身。 - + object itself is the mediator.“四人帮”称之为中介模式,两个或两个以上的对象通过将信息传递到一个中介的方法来取得相互之间的联系。而本章节中,容器类则充当了中间的角色。 * *The container object is simple.* Unlike using shared state where the container object itself owns and knows about data used by the components, here, all it does is blindly pass the messages along. That can be useful for letting two components pass very domain-specific information between themselves without having that bleed into the - container object. + container object.容器对象十分简单。不像状态共享那样容器类能够获知应该传递给组件的信息,在这里,容器类的工作只是将信息发送出去。这对两个类之间传递非常特定的信息而不让容器类获知来说是个非常有用的方法。 Unsurprisingly, there's no one best answer here. What you'll likely end up doing is using a bit of all of them. Shared state is useful for the really basic stuff that you can take for granted that every object has -- things like position and -size. +size.意料之外的是,没有那个选择是最好的。你最终有可能将上述所说的三种方法都使用到。状态共享对每个对象都拥有的基本状态如位置和尺寸等非常管用。 Some domains are distinct but still closely related. Think animation and rendering, user input and AI, or physics and collision. If you have separate components for each half of those pairs, you may find it easiest to just let -them know directly about their other half. +them know directly about their other half.有些域虽然不同但是仍然紧密相关。就比如说动画和渲染,用户输入与AI,又或者物理与碰撞。如果你有上述这些强关联的组件的话,最简单的方法就是在他们之间建立直接的联系。 Messaging is useful for "less important" communication. Its fire-and-forget nature is a good fit for things like having an audio component play a sound when -a physics component sends a message that the object has collided with something. +a physics component sends a message that the object has collided with something.消息传递是个对“不太重要”的通信有用的机制。其“即发即弃”的特性非常适合类似于当对象与物体发生碰撞时,物理组件想让声音组件发出一个声音的这种行为。 As always, I recommend you start simple and then add in additional -communication paths if you need them. +communication paths if you need them.与往常一样,我建议你从简单的开始,然后在你需要组件通信的时候再考虑应该添加那种信息传递的方法。 -## See Also +## See Also 另请参阅 * The [Unity](http://unity3d.com) framework's core [`GameObject`](http://docs.unity3d.com/Documentation/Manual/GameObjects.html) class is designed - entirely around [components](http://docs.unity3d.com/Documentation/Manual/UsingComponents40.html). + entirely around [components](http://docs.unity3d.com/Documentation/Manual/UsingComponents40.html).整个游戏类的核心框架完全由组件设计完成。 * The open source [Delta3D](http://www.delta3d.org) engine has a base `GameActor` class that implements this pattern with the appropriately named - `ActorComponent` base class. + `ActorComponent` base class.开源引擎Delta3D 有一个实现了这种设计模式的基类GameActor和一个ActorComponent的基类。 * Microsoft's XNA game framework comes with a core `Game` class. It owns a collection of `GameComponent` objects. Where our example uses components at the individual game entity level, XNA implements the pattern at the level of the main game object - itself, but the purpose is the same. + itself, but the purpose is the same.微软的XNA游戏框架附带了一个核心游戏类。它拥有一系列游戏组件对象。本文中的举例是在单个游戏层面上使用组件,而XNA则实现了主要游戏对象的设计模式,但是本质是一样的。 * This pattern bears resemblance to the Gang of Four's Strategy pattern. Both @@ -688,11 +1048,11 @@ communication paths if you need them. a separate subordinate object. The difference is that with the Strategy pattern, the separate "strategy" object is usually stateless -- it encapsulates an algorithm, but no data. It defines *how* an object behaves, - but not *what* it is. + but not *what* it is.这种设计模式与“四人帮”中的战略模式很类似。都是通过将对象的行为委托给一个独立的从对象。不同的是战略模式的“战略”对象通常都是无状态的,它封装了一个算法,但是没有数据。它定义了一个对象的行为方式,而不是对象本身。 Components are a bit more self-important. They often hold state that describes the object and helps define its actual identity. However, the line may blur. You may have some components that don't need any local state. In that case, you're free to use the same component *instance* across multiple container objects. At that point, it really is behaving more akin to a - strategy. \ No newline at end of file + strategy.组件是有点高傲。它们经常保持状态,描述和定义对象。然而,这可能有点模糊。你可能有一些不知道任何状态的组件。在这种情况下,你可以在跨多个容器对象的情况下使用相同的组件实例。在这一点上,它的确表现的像是一个策略对象。 \ No newline at end of file diff --git a/README.md b/README.md index 1e89728..e23de91 100644 --- a/README.md +++ b/README.md @@ -86,6 +86,7 @@ Game-Programming-Patterns-CN > 注:所有贡献人的名字都会在此列出,欢迎大家踊跃参与翻译、校正。 +- [子龙山人](https://github.com/andyque) - [kislyl](https://github.com/kislyl) - [Henry-T](https://github.com/Henry-T) - [lazyqiang](https://github.com/lazyqiang) @@ -93,4 +94,5 @@ Game-Programming-Patterns-CN - [Gwill](https://github.com/Gwill) - [Tsiannian](https://github.com/Tsiannian) - [coneo](https://github.com/coneo) +- [Gizmosir](https://github.com/gizmosir) - [ChildhoodAndy](https://github.com/dabing1022) diff --git a/res/component-uml.png b/res/component-uml.png new file mode 100644 index 0000000000000000000000000000000000000000..a7fd526c99a863565c014140a8b9ebcb15352cb0 GIT binary patch literal 194322 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ú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

+gom^XW2Ni+70-xC8ER`GR1JYy7NU zLT3sLwEALB$J$<1=xPVn3|kS{{~9ttXKQhl40gY{x~#i6*8oCvIF*`>kOV2dddMh# z0ECa#@`VB;m=sI+K?E&oOGr|c5YdTquKVcQz3-WfG*Ip@PIg^4Hj$mT=aEPpQ0=6Q zq+Sx+UB-cnt}&+zCz2}?e;hq|>PqkmEq%ji9=mffzl1vs5*E3g;J21Y=rx?UfFxtN z%M~Tln$MmJIt`JNdit*bA!2E{1R#cMs#3tDRDmw{A?V6J1aYa0G5YPkf)p~GKTmRz zCgBng3@HZ$NYcBhR6qz>=K$-XEBX+u96}W!FhywrX9=k$=X2^Opv)2s9)J?>U}=E% zI@?>I)q~LS4?=n#owSY!)pH#!Kl<(7>PX&uLhN9=PLOE(Bm#nn?iwEPg^akL1dpJj zn8B9={Gha-w>y4bi1F5KhbvFNL+9Qk^x*C7oH@XhcBY2;55G+31qBrcSY8(qjnE8- zXz5D=wp@A=BRd#RzKetmKhh zaHg!O*&;B7eo&r%@SYz6_-LqfwjiIfbRJvqB867bGHK7_-+E%Dpxjv1$NzGo4Hr&u z(X@?W?d2{AgTGxams2~oV~5eWbX_~T{W&6pC0qef0IJYaY!kB4p@(&-4Y`uxcGw2Y zCm@8}^OG~}?AjoMTGjla$>l9@!l(^}tR5Z z>ZZt#R7=JF0=ak4>P3F7#iSpML2&<8U-%aBW%G|Q5pp{GwSNl;yfft?12$sTwiZ7W zI+E~PMD4LZbJB&QFEb#JrW_D3WY}g1*obf(J~<#M0feNL6>0z>ZQJy)?V8r)Kq80! z1cc|+4X;fcKI`mDolJ|aEFTixAy>5(xM~$}c8+?(<7W_h&^mH<$uJei92<-?e2~&; z2HEt1nAQ=?guHk0yV1|bpnZtGJw9Pzl3B$qu{yp8a)Z2z6ngpW{_xge@F>1_b|+lmi)a>ccC`kuFyLRhT2d`GNShEP)NpE&@VsT7Ks5Y03aBj5~*T zezL8cu%j8q66nid=jY_#iNgv#i63Az2qsezOY@Uw)$^&!=Tyw!0Ky#NSIo*l`=)eN zDXK`Auv-x?)c31^Prx3{p|q7Z{BMAuwnG492s`m<%TUEAL{|g^RR{q@55RjL#jw{t%{~gh}OyzPN)Wdt*Br;x^2j(3Ep#qJ#hvkoY<)~ zS~gBtC(RInVSwbkhRM6=#d{0g`+-a010iyM8Wi=v^-_2o9l$3&9?z1&ikhZ>TeDTG zCVFmH*KG1L=;0ndV3la>Y0fV)^8waBBM7M(@UX=pcSEFcA;5z^MjueQ8_$!+dV!*| zDW|OG69tlWV{i17^$MVgvgF1^4kBQhQkBMq^?)$w6i@yoAS6Z=1CU&hElTNA+I3S+ zL^_!>3{U+62$>7{URd7$tm}}fh^ig^oMBIf zlpS)exucySbHPG<{NCjR+yv=4RkKT_x!2$=2!=?EL0u*IJZvxnLP&sc$lsaU94HL? z@Z`XKo<9ilwVqZ}x?vuAbS<7gUpnB~)Ci=+E30WmGw}Za2;8Rh)n5XFLY_f|fS!p` zhTy$(p$ZU0J0U=aUjV@;DTf%6)B%F31cbo)uOY*hLJHlgGSCmMj-@kXATSN#E!56w z&xEp=h(dpodRn8YF+(O3BSk2jo3ZzXLBDw)U2;!2YnYB){4#3V%V@<$N@0btHhMnA zl{U2RI%XrEk62*9zZ+q-k*;ykp9^ghAdn%_0^3v3GCv3ceKA-_gG)_q4-)_hg{M_h zaNyU6o>S`2dy{-55QFFN55*8Vnr7Zj8hjqsC0IeAp1wckcYupaRC=*z({eh=?=Cl9 zHZ{4uej@6sAdKUV{4FOEU+``!MD^0X_KIfn$T8~xVUoH+L+gJ41jbT|^KThK0t91d z1t3IwlD-NMG>lh=-vA+HQ2`LFsQ?7@;JUbMhX(-4YM<`}HGKb^UzKp5N4`KmA;sUy zBHN5C76zEOv5`buurzDB=#IIG9-642M6`(JJUUIZ96Q6tM(93*!+2?e9Y>?w;~|M; z%J+tI=KNNR{s1$UhX}>HK9h`MvZ#`@<+u{;{$sQZ%Ta$ET>F^qx0;FbbF|}S-%biCz80dXglPA7Hi$kRm-f*5 zXtyz`7fmBMQ+E@e)AK55C2>fI!WeEmX>X z52fWu9H+dO@2WyTfISFb0pYODGk8-h+2S!ujv+cPUQ`tiqAHeQ$NAlm=GV%zm`g=S zf+Gf0HnT#YYV*GXLb5>|XWkfYTDqJ>LU#_2Fz!Kk^=RMxcv6)}MxRvRV3^2tTM`|a zj-QP?MyWmYWx$|0RDf;#kT3@xz@H9%J6aucWnikE&XtOGE>$IrfjrsusT08`?_|8g>b6VkUg14pIV?JG zh_svIWfH>p9@@PAL$}Y?r3;1{mq}i062k+lW8n@_d1bnzy2 zhGe~HrClXL0@&}Qg15IP%&#Pb4|`=3OQI+XQx9UwTeTEG;FBt+Umai6P}A$k(3F#1 zfr90fDeeKJ2w^B*)Phnd!f;-!kP)B1Z)kupE&zcRAs~4M4{ELg!Qz!Wp8F^)b*7kxT4 z{qQ^qFclG9H6_|;)}@kUX98`n22T$o$_e?L*D^m zl?}awE*oPhv(~Bols{nX zlQHgTyW9e0)e~GH*>-C{fP;?_f?kiG2vM$j4HF9Y)_KCdKCUDI5TXT*vb=@>mbZTp zu4XA9Op*4i5dn~onr?0a1dI#2R`Hjtn@gDS?gBErd0aP<7JqQeX`v|{Ul!`wxeEqF z)UH3D`+8JRQRXauA^t!5=X=wfDTmdQFnCgCRP4j%T(wy%Cy2I_o1jf3E z9yJhNbWF5|4oZ3OepB`H?K8KB$B!CeekpkY%au;8n=XCk#^6t1Qw?E08PiMl(O_}% zd>Yrw%`flX!>Fl|s7DnthbYs8e)0|Rc!}b+W*W}I;iF=vVnqCk1_&THdCt#Wn&t9VvQ!dAAKHtK$0WS&nXY5@Js27POBoJxA`E7`VFJWMty0%YR1GbG?O67 zx&xJ9DZOv#g<(Tl9`-EY7=%w`wHF3OozLS2sk}O)yb~PD|j4LD(h{WPk^u@-utRN zWI@j=1OX4?9d6s=?bR3|ULL-DlLm}a3P%D2tZ5|X{0}t*ZBZ5)`ohudYs;LA;dC_c z&cqzLR#gpDl=yY1RWXYmUblPIjVfmCeQjE0R67dPg8=S%7Xd-`(EMV&GXo^x5?(ei zX_LGppDJNcKS*h_*Uyvu$%9X}3ZDpFZ@k*M431yqs9}jSH1X3W8mXJ(8+hUI&K;ks zjEkbXUnMhm_w`9^7`IQ;P5YofO-+xKJvuIQqk(|CxXGjk%JyooKSBTsA6XH(=Ejt# z3@G~BP}}B}-?RmQP!(?v#AKU~Bna2s^sF2a zqIHY|@*KSX;oR+{QbWwEW9EI2Id_HfPU>+vw?aKH%G{%!${4DTJ&z#)&%>yEP?p;c zD)pQJ2fYK9S#6O{gCr6iT9^$(|<6$KDrtq6tYGCAb(ns^u_ zZ5mA}9e$radA+{9Gb$i(5+L*^xfPA+xrXrZYWh@OwS*{>1_&W7Yb-twP!$!Npn}P@ z8Z-$IDuZO;A0-!dDn|BZ90%QxO(j4Z%0s8Di$5u$2vF;^!OvM!&qQ=I)mhNe&zO@~ z;uuMW$L@jOnU}*%1^HC8b(8)VLv)5*R418gHnh-*HTUC~NKmZ>NhjP_rO?>?z%QtD@W$d>0 zS3{rhwpmmR;c_8F2oVXO^X^??kPy$BDc0mkC+=LORak|0Ot*#v2;5kon}R<8LYVs5 zuWP%|y-zjCRDo&g;vOmd*g)JS#BtC#}BW+kF^_9d4N9t&{W9 zg%@1QBu4>-?bC^`#oK;()S^`M5UW0}X@5?8S5;a;1cci2nOXiF5PpR^{Bhk}hH^nJ z530h%8WjN$U=&1Li8ZSGg;BP>@-0AcECa%0#e~&kIbNftgQB$M-Tw#(l;|1**a{58mtr0T6T$2U3X6A%`ih*T54m&1Pcw%o=K+_l=vr z+`QrZDhd(EA@7X>2w@y2^639f%8;fPIWI0MK8QSodMp>VhdZX8!*@V9%Fi(Yk1-A* zLeOVLDJn)6K5$L|gwQm8Qw!!BAe;nc8#Q+^i9{Che*}cYnhX8N2!Ifu-_rIVocE>} z5I~^H?0Xs@sJ#lsn@#|s+Eh*Y2z}DH<6|}G<;*|>1W^%INyQtfdKw^9cN9A+285mn z2vtL%E=NmZ)YVW!rHictiZQbJ;(`tt5ZnhKNJ#{Qk=A7xDjNtXLpVQZfbdY|l0WfG zYf)B1C<27Q+Y^pY*cInB_r-ufEh_eem=pnFyXN2#5N;bH z{3S`-vW9SOd^s}-d`GdauSZUF+i=P>B_oi{!7~6;hT}HqzW@Z+K4fr&b)%i487!BD zdk3=WvNlAA)76}nFE;StVZ*AC&jY_D?(%Am7k1bAVnE=y&%S)pz`{Xo6k=k5{NKwpRcI zF?veXhmXP&0KvOvT+FxsS3n37ZclOFj)%IXrHoJ`E(Qdh^a^MW#}xC#@nbfp^)KKo zrwo_1s~|A_@c#FdRZk#-T3%E{-W#Sogl(KPF{D=~T#x2Usmnca8*b=8rLx!q`Cv}+ zJ0RTHnx!Q~DIlamcG4>-*97UysmoYYOs`+eUG+lv^4*>BnUDLVrTG_t(1ZAgD<9Uj zV^0Hwm?M`0g3GG+q=#s_a+*$jrrOwa!fj9p2+#HLYVW)-V@KuQFrEfV6N>-{4!T{S z??X`Jg2fEP2!R3!(AGQ=y9`|`0)cuFf58^nJR~mJQH0eyRrk^^LwXwsAii7^WM~+r zhM*e?AjAtF0l^ah!JqGc(q+g+MGGF80tkv0Ap+CS7Xkt}SoWwWFYj@oJt0Jgn!^eZ z-~|q8m|+EuO;hU6l1NZ>s!0K&EWVx)9tN#&`m*pBxHO(hOBw3m2!LRoL|YS3!jw=F!mrfg+)Xjcdweg^Ljgif;T7Aaqib z0HGuDP7caVef4?c!Mi3vV4u-iRXi$_A_N6h`r_dx2PAS| zz7Ia8R0hRT3X6*I_?~GV9E$qIMMWs0UWj@KTnwcLE~#eb6Y)VM%Yd*E)8QTX9S~gB zr_fEKy(Zjbb16-d5D@siCDjmgODigZ#!+5J^%sD^D1ZRNZNx4EzmH`BV&WlaJ`$&C zOK2zyhlWM#wV3A&2=4PI#*y%5;t4RYi>{a_;2kPO6_+3*;J`RDfjMH%v_5f-f)~7y zndCx!5_CWyEHe!pm?K+nW}g6ImHdlhK)~t~dz_))O{lUw2MQp>6G|*95|}I=BMP6F zzWo&-ly@0)j1Y(^1LVlXfWS33B*5XgO3D)e!5SU5ATZBAf7pR13H+c(t~7=B#)tCH zi+~{R{Bxbjj|OY*ou_o!8I0F69ZJU?>jx3RxiaM;DaMRjfB;fsuv@1Jom*FxiX((q z%20ldAW1Df4$vYtGL#Dq&>*m$YwWQySvnASO4cSI`w#rllzt zHHY3QMj-#4n3Nw{(oz6>r`>;FjlPfui^EM6c?*1;FO0(U40Z^c26g$jH9Y4-d#1o2 zM`kWTp@HAqP(Hf|#H5xdU5`@0Bx)Y^u-va$G6_-!Vhuq9AW)`HgxRPe#J>UCd?!NE z&{}?ik#?lTY0_c$?$J5Ksc{{|6wzU0|&w0zxsf z7y*GIZ-I~dNf%zf)ZOjPrp9^N-E>_Yyf8k>srPWIU|%~gC#u5UAQB*qXH8l(q^>lC ztzlS+kTTF_ao`$_ij?EU5PH4h0dgh;geG+M^BqwE;m(3z2oL{SR4gvjrkGB_LUUKn zl`+CmA_QNZ^&bL4UCH9x11P5jjfdikZ+{H^VBK~@l#lxOtm?hK;-@5;wBm#a z;ygC+96-yxIHMLsKsYf1Aow7jG!I@krW_FB@wL=x$CxB}N=T>gRq(5-k7IbpA|QNR z>KJmLX;c{jk}#!!04}8=)eusVlUZJRj}@gV7N0*he;FY#V*??f3tG{xHUx-eMau*T ze5BPVkXPUd=S!ZqG&@;%{M#O{S0@?*A`hWFCgwtti1hLObiow^!VlBKUn2y8C;1mZ zNR503G#%m%!|4r*s42)augkzOExV;g@hA57_nHg{Sx~455ah`ekJBL_JUUoMU0zfy z2LzNP6qUox<9`DPa8Er!k*mAY9F7J_u_E*E$U|@yF(ozUnp9Nmw*+`xADSE?e12b6L71Wr**mysv`d8sn1@iUK4_8$5C9Pa}l7GMwOGoo@m-In zsfOVH01(8pC6F?rXS!3FgiRsMAp=5F5dr5y=-WZgBl@l5odDss1_VM40o&T50#(`a zVFpQ&po%!4Fk&g@GKKnCkqnkWAJmrug4a$MPXYuFl41mV<<({lfroaNV!BUoG*6N! zVUPgfx$9U`RK)2l0wBO_1us|GbPM6}G8gptOF+wT@-YqxkmY#~kn21t?E>C<;rko%uqNBy?S4XgrNd5&!{qjS_Rb za3}0dfcIcj@T-^z7Mkp~le~d6f0@e6Y28Z+Ah@8*xpN2zQaR5FbyQO>TZ;R`M9V|g z!TbY2aDoB|@xoO^4-UIMi~OZWViI9?AOpg__y@9Vv6`}n<#&?I>do5~Gkz~=fRK0s z#WrYK(ztY}E|hU*P@JI^{W=i+<>e^@zY}j5hsHG_O$Dx~-wKLETK~+~S+J#C(5!F3 zU0KQyPf%an*TMzgbq$`bJPxl7r<^z^N0;Vk^8QBW-VP+bS3;M8azA0I^GE~)Aoi5j z5CBj|qQep85dz{8119Y19r-jXa|_)k#nfDA1|_Prucr9Xm)Z~%|`=- zlP;crcBmOhEh?60jJTiv)NFpT{+LpR&l9oPru;Dla3nxbX9DqwgTM<75G;|{fxGMU zuRMfFa)^0NRJ7p@MMN~3gOwYA5TiYt0Ack$S^4~3D#}5QpLY|L00M}5xvvh}<0Btv zj;eqfSCKBhgS)+QohjF>a67rj)_Vjr&ti_DEem1Zf)u~NEaQ&Zj=@T`_(xawMru2b z@vF5lW~iC2g=*WjihmPAb-X%>P^+F103p?oN{^TGikRbr2P_2yDEpl+M4fj6Ai&+O z9~&V^%or?+__9?Gu)ouqSbYWlquc?i6Dx01LQ2&T`oxeS?^_}u7}#cC2nY_g!%_jE zTtqa<{4u`?2pPiHF^-}E0u(KE2p>hoFCRa8@LKTKy3mhGCn!}+OU!V+DKHNQTz<&k zpNBu~fp*O_f`bM_@8V$?L}#O~@8oD|C2GxK8M^JbRh6)u4W_sFsB0;d==&Qup72G%3Sm&`VUn*mBbM)X}uHcU^Sk9E&o# z@4H?Oea&ob>u9w#i|$=DqqFyRR6s2-5wz7TIcb)BJZ|>E=m}U_VH1CX(%*U73 z9*48yT>^V&=Y5@2*!^Z^0lhC*4hVj1DYOY5b7Y#qKCWG11d{4lk~mEZ0wAOVzpZNO z^Mazvg#uGFK*L>er4a)7J#vI_7sVkC8s329 zZkQiVTfMQ*7=1cNQN^&@K(ZFR79^6VLtTydX_kCZBag6>QESa%*K;sKpHMUJ#3HUKv8_`EV zFlv;%iw?by4xQ(BBoB|ev#FNFBdWkVONGK|Ky$I=9GGF}JubN9u$kEy^4ENs zXea#={Jva>@HziV!evSseDvDj7#Z_S*6}6kKDtdI;#ajCI@XVOV@JUvF#1k4cVSek z#CSh9?FgGqho;r_pzHLAfS|2uV_xZO-=S^m4!|Nt0x_t!y)|Mq9HR#Y6;;k->aOvv zuPc)HdF~?*dY*{)SRaIshGb)p*%=CU<3sBppArBNlK`wJrky1L;U(RMIY_`0it~o^ zdgjgL;{-rxAC@$0LX8lHV&YBuKpj=po49>8DUy5w0?70K+bmkwO}R+v{{jf=?#idj z01$9`vHT~tro~b!P!q$J$EK%eKAWtI@F8I%L^WKAu5+uBVXE6eQoC=Q3mZj6{4m)!C(FeUpam6Ajnt=P{?k)(;N;(c#3LC$ zX(ax>fC_%znm)J;EZ-gkKp5|gaC}`bL>>xM-Ai8_w|`5DfjitEPm&0`4`J14g?rO( z*ARLVAVAJe0|eQU6!d~cA{Iu1v#0P=80r_u;Zk1du7(f+ zA_U#X&)S_IF5U$JQF>iN>E0%|c}u{TkPI4${RP2GoBA1S86Mbx>@O#G-PqN)0weh&5?7nDg%=?Z3?~mc7?RKtP(ym!{PRzZ6OuIfC+&q}MB*&OtR}7+#`{`n+6K;~96_ zF9K<-X(mVO!_>x&5wXE%Gwmk6JG?eJ!j!dUiV=FT=pk{qDY|KRMq(`H*nxlc198Jm z013eO8WAcWujZROtwvBdfN}3m%x$gG;2*TmywA!y7rhe3l(E~Ikugz zg%TzP0r8Dk(caa-L)Yo?(FbPhnj;S^Vz?qAI^1Y^qO zci>D8BdJK`YE!!WG`)?Um;z9D3%W#G@m~Sq<2!7$-|G?K9a}t#RO&_1GF69Dg&S|T z&go5q*FDFKBuyD{B z^#%b!f1WO^x&u0<@zD87Z24!ndDXrzoX}5D$chy>;Qq${+m5?ZK!_Kf8HNeN?|=Y4 zfrmsK;C}`Pq8tzaX00Ltf@eK1mQ3;(V9^Y`E8h;A-bNDCSk2CbF#*EojRVoqRTTIN zJ$YD`ia|4^UPgG%Pxp;)Wu!@yH`n3Q!lbz%zX)A(@Q@Zh^!jD@QyFQh1iWRw>DXwg z=kVj3hA1S?U3_(I>u5_rgzKR4rk$>hscSQ;>fD;X9@PEu5Ntf%jToahSBA;^sU4uf zK176wu{#rEhh+d}b;=B0kQu}O_&&t#G)WM{wR~kVesz)47as=~RzlYBNuDWXSV`LK zixnvV7Q=8F2#Pi_Nqv-xtU?4AZ|P9$A2qJt0KviTq%Af)@<^f{$-2V|E z2m&C$DQ1G!#$rQxQ4wnhh6V`rOVjTy4TPvrzj$XZC%~xL884n*ma}8x`2qy@-sQp7 zR`Z$m7_BZO{_t;n0SMbgQS|qGk;mgM6gbs&|8u&q@*eMC$>o#g40&K4A3sblH) zOs#jP`uF3$=QZ_S$h{w%o_RdoJi z742UQjB6I{K1TM2*+iq!fE=dwE8yK2mz$m>uMPTZp9hNkFFrP?^8)i0E#3?WtL(3Q zkxJqgXjnB4pt``r#1cb9s`QIM_f+8q(;_xTY zV81f`{D*XA>QU)lFZ$VuVS&Zl)PS9RGtZ&}!@N1juK;1;mQxlCJdPFtfv?Y9s!;|0 z_9L^$|MnsB;d}vL_pNrccFzzN_x1ETd{OnE!0h$@c>)F(WX)=@c&CA@3Pru1bpu#C zw;cmokrAes!g4K@<$P>=&f=FuwC^E44_fQ80Ny|$zZcEDjz6hdY0UtILt|JkV+;^O zgBZ!{+Cm>)r?!FnA!7=LNG-LniHV{hq)u)N5FGLlj;m%su*B&Ty}!p-D+h$ST%{7D zM{_nm1I`;DINyU1{<@rrvp(-dMaVR9(?~o>K#cqoKv2pPrq$vZp#s8KPXU~JGhBxo z>E2sp!0fhqPM%!`gcNw^RC$Wk5fI|-Z~N^Mp7)%ETBh`g~FKni-JtxZV`x>7DJcrRQ@mF=b90 zp1gT-l1%z|b~O7FN(a)kBT9sYRka^$2)lX(2wh83jEI2H64vv^yVVTE(~jWEkvdnt zi6Z!_lyI^2H)2;*js?-wl>x8#fHL2u_0Uu=@q`lI^h-+E=4Fgkx9npWX6 ze04^8tNFA_a+)^1O_X{s;XkJ&9oSeQvINYXy(yh+wiG@Ywq}}!}YbT zc7D>v9epineIabjZjeh+}lH`1TrHxW(mx<>WI? z1cbVglrBTIxU>&4{nuMRbFAixjM<1jj)6;LsVuv!-}>2p287K*ZM;3b`zRiL3#}Hw zMj5lHXr;;wHMH&f7@2FBQw0({i|$^sm~huh$@ty)#SX^S zxwbgy5)*!ZdP+#h88Cd1+Nz=J_Wjn1J%uV7ulnQc!tbWNh!FM*K=?IB_The^0Ropj zEu^T&4M6a@FBBsL$3Bx(?TUA6LZ?>1HfKD-u4G4^E8evRYz&tLTXeC+fNqI^0DB@F zDGD z1Zz#N6waY_G6wI}`Oa9~+b%}seXYCRItO%E1(mtJuWN|?qmi@3k&k!tViW%iuaQf2 zvmZYBnHq6lACxAm3vCrhfM6QL$>JZ8BaN8SRXt_hc;cdZ|D{nJBZN;!B+1;>xzSSy z2&R-PkE07Uil&xs>WDFKLj#2VB0?gO5F&($EV-dZ>%_!_c1E7>mcyTtr*|>NxAOQe2_j^yoG=nr zRh8$Lpn*$MSW?t&>iedA*fEI~=b@LvQ*1}9A6JBpp!A7}$9XnKfti5EEx<#!=w>h}FJ}A$c_M=6N!gw(;hUZAMWiWou@K29}A{!U!n~JMXfUpXY z^rPHj;W`2{kn(5=(~j8Xc?d$yFFyZV@vPhb3Co+02(P@jh5+=*nz-E0K3Z2SBac+! zdH3SSqXIyXt8hb>FKS7Su4!I2@wb40ZAU137uOKr29yH={-2#j=+M!KNgMYzk4z8! z$8g1xgXiXUi~|BKoGcs=g+~WoJh0k=x9)WG&#j679m8k_YAuY{Mn-=-nixhaCaTeZ z$V+@W00MY-AtE3!Y^(C5C}DdYm{B#9%QCv8c{3#0Zr_Fbl_uiLzFqETrpCLEjP634 z$7ZBWHa;|$j-Z(2P=U-9@0-_NH|mGDY%8P_Y@wlAk^;~|qG5k8#sfU@7!rR41hEE$ zrd$>mcQ&O3-@X(OJP{B&5RohpxCVrz2!r}8I;PwnS?j=wFp>|I zfyuGK;#5ntQ5o~(y5ljvw%kTf+|@BJABK)WsT)Q^@u9UegUD=^%&>?*(!~JuY&_J= zle_+W7aQmCbSH(NJyA1|k8(4z4kjrk1@`{FsDPkJD#Sii587~6XsXI@hSrsSL=&DkY?HeGBt7_wLCT!{eL+x>V&6NTIHs*@E7_eJM5K@L1 zZl8&gAo2Yd148O7_*C_l`Y^rt`{t(C9i!^J>$W`SN#!i{C1n6^ z>F&PT*WEuTvb!M8*iYeO0U)3bu%-Zlmvtf}lvaHnM5>n*J^{k_`@Dm(@#ySiQ$=f! z@j0ll!vA|wRi+<|9QqgsbkJll7Bp#ew0CH^u^6n!n0~N6;zgR0L$X?)_2gXL`;Aoe z`@5~%^6_C5(Wu6K|H4nYLbXHDP`cOfJE}( z=x@rWYgj|9TC$n|2!Xy2+)2ZW18A&isX9z`?YHU$lFc8hpU@R0W{fx>hu1kMd1FG+ zA_OB*PofwQHg&;&dOsEa9T1?i?etKo7|Tm(P=pn0Z8r5711inLi}8Hz9q@DM0JG2S zbGK~j6y&9v6IPRAq@iHZO;IomOkPb0;6Nci2|%o95%JDp-|@Jrrn(Z3KL=|LX(f~x z-Ry~)gwU37qw+aIPRm$bi88{Z0v>A;5CmNVnUf#s@!+#ejf3 zjYr>q+d%;3|X=pqF)Hf*v1hAiu*kyIQK{Y_)36pIn zO(%^5+;bax`I}TjyZ`d3iVXyRO;>a82u}8Vrj1|L<8}u41rWkekRm%bXC7`;BtX!_ z6de2w1rWTX@&rJp`Pa=&Q!ok4SsJ40d&@}&zE5q$ciKAWz(QkacV8V9%Cb&pZUxrrG)=#o>}D z9%I@~9w5ynqx@A8#bznt@MRwoi9LjjG1N7Ux+hI}PaDUFzbx17cZry^S|KQk0Rb;~ zO9KS1h=7n(XvE20XfF}{4b5Z+L;0SF!f8IZwTSL7XG-#naP z_gW|Ff8R03p$=TW2?qYLmP92Bk0(3jRH1*sb-_s+I%@ zT|)$fvH0`4Ttd^0T6gTq)^^OJ-xhzf=^LVD%(0(b?F%| zy?i{#GqLYq8N#Z#6adj8gpsmV0=ILAt!<-bmxynl-zeE`ySNp|Gb4Ngc9%3jP%UMc z$m8)M1)z7(`1FNc2A`HeQVxU?PE&5NO?|D8QW&@@XbfFfR^aX}=>p~bxoPUe6^uKI zh71UV5{nNlaa=5(=scSAQw^ag+>2*yhz_B6SUYGh@3autjpao)d|FH7X^rJXCjZT# zpvu+lwux`;-IoFaybK4P8R5L!=STwt(b8%H?U{DG#G@}*2mg9ci6%e*1S2^kEyqh` z*N-kke2H&K-knlLMP9+AOj`yBeP#de00A}QdeZAFB%A*YAb7_tFP2?~s6x{&1}d_G#BdS4viCX*lo!h<&JGu*qxTrNr( zV$e7cPlOzqE@k$EtLjpp>hq4JF2ld$I;In&BN^awzN`cgYSobefikYr?rDI~JU|xX z&j6vrO)`byj3cWYX9Fzv;0=+dHJ)j=M{Y0`(GU<2*4BA1m{0aEK(Ih{CICWLK0Nim z0YY`61-Nj7T`3^MgHscC#RYXL&Z$v4k~M2U0M8WI5eL>+d*gaRIB|ZWdX)o0Ph6L2 zd%}ru5$Mh|h#g|m{8uT14}-Fyw8n$OO@a~cfAOZ4giDIJD^4}E%eTox@I2UE<}QC4 zQ~}Rn*0_tA2N4kTUC;o*yj{;(?Dgwm5X9r9RY#EB1*$XkKs;z~C~cznB%52Vk!^m| zD?k{^g~9RQFC&T~Kp2UDK#34Q#g$m2V2b&_1BCG+LumvDfY9BERM?Un{4K{PzP@RR zA@Nq1fp?)kX72JvhDHDc{h$HD`}Aek_k%ILe_e5%l_dG(vd2pz?s1pz2x`1Dy@?61 z*oSz$U|5OL1mLx$Re^_ci8Fj7`o1-N0$RL#xMAzNugc4)c+JG(`6Ylr^@+CkzC4ME zfJVGyAR6{}MMZHk<>C#|g?H2(UkKWH8Hq(j+1fttS1=5%Rj*9e44c+x2p~oW#ek&^;Xf^P$Ic%;$v-9)(@Mu|~y{R`g@- zP)>~o#L>hEAv)M%`#=pXwFL^DwI@N_s0D)LTND)hU(A5)9 zG&G9;4iIW!%9R!s<3TJ}e4FlnPvZ86swK7^@5J%jH6XxFuW|P;OD4U{JEs_nT}$(K z(g-<9b22txQQ&Q;ango_;ac|oYd8*-4?@Uu+aC5tiqmnozak98$G^8n1cvyy!<6}= zG2Dyb?fh5%IAlQx&h*#oV$M!vDxQZQGVb*a?#L8N?0 zMu=+_&@m;!bQFM{eGn)}=oF@B;#a1CBFm%e;`hv5zl}$7-3g=n!|`}K!ea;jWZU2U z%NTIOisrwqM}msu_4#bZHs%-Ybw7Oqxxe1x4;>G;+wstCit>0^-9+I91`TTgN~b9y zp{ZKh4ZB}OF>?aHSP7#rt_=2-w9lvPh9}nhwgD6+C##C-NM{=VE(sT{tLz> zx3>TxKl^%3e?1%)@Bj#~I~*bg91h1NaC~dd)T1Ru2rzA2e0brGj6^^XjV+H5;6}FS zBKT@A14anw%6#_z0(cJssOAi1<2t;C< zZpW~Ub-zhAQreD{4aK8a+7Weu3VqpEjA`pp*lT4<&HWhGO8fK|kwL@RLt= z&ny>Xv|ZiB;2ih2q3n{McelWZ6_PL@e8*QY=Xm|<`{O*qUbo9>A0L;?0c`eqL)+hB zlzyD7?cc&RXEU9?b3A;e@hh{#FCCBX-`eG5V0Y}BWU#yA=BuFDzy2FThkq%Jh=Gc& z`}^T|JM8y|>*;w&K(KrLj_I{_8*eMVOtlf}gT^O~TFO;loI~PmDPB`B6~zrF0YV-Z z`}`3dTKLrGEkK|d)KYTBm!u4Bzok*@-j^J_rU`9?*q`e5{%yA-9S}e;;uoDfN>LHw zjZ!@q7=_%dAw&!SGK=nY-b;QI`2lWD#`XM~$lsyADRJU~P$i zja|-d_m{tkarL!9Te+T(KiTqZNjo$`wAo{f#;?a04(ul5!#{Q@LZ9q-H(TTc2)o7qVCXd@u1Oup+QKKC4!UT2|tAlXVB0wNs8YZ_Vj~xT`8<6UXH{`CXo4A5ypS) zgCB^CCFJ=p0ikaxDFgpDoyQq>>_a&Ywd%y}00J$a{78`R@bhw8G&pnbo4ufM$~+b=VU=6t=u*LJVCJ^%mHpZ{Bg2|LWw!6M_2 z9(Nz{`tf%8u*u`?6Mf>pp6z)bla77-{f`TjK;N#C_=Ts+tiuWB(=8@3^9S1fTVx@( z>n;O=+o%KAv?iIaRJlYm92}#l(^DO(hTvON<>V`!pKFrE<)4WsP|qk?%($;tLsM;4n==A-&nqU?2S~zW03Dt? zOolOTPd)a_es^uo`{Tdk{t`|4q2GH-m*YWl)(?Gz4Xy5N9qMzV&X>z20zk~zQ;>bz zeH7x8<4hUC+B2g^1;c-(=Ol>#=yT< zN#NL;ehO(eccl9tTu&4d}INkSHg*-Iz^X@}`On|VKnu_6QPn!g!4cS$*;leDuhg1PB7TuH{jMZol8M4?sw}je58(&X<`u zUvN?1lacKQ$V}JE{j2{O5Qd<6Y1`4~JvX0@BBt~G{wl(4)iQ%WPuHbi`!LqyE%)QV zmeJRxM%(W2L??f`y(0Nf`%7lJOw3o0G4JkMtt>_9F;P#sJUkzXeE(i9d-1sK4|9qTgOuC#(KfIMGjP+T z28YG{>8!vjO&9mA6XkxaBj?koY`U7$?tzE~x&z80R9xMfP$=Y2rwc;_Xs>|M4fbB_ za`@KehSud@ChdJ@4e>KSh}2Ibd|}@aKT$kEv@V&sND8$-{sOTEgn8FB%v*k(Uh$-9 z>=+xqZ6^Jx3R!AnSTxb^umvVN36@TPz|)pu&Q-&b^95wEL#j$HfdJ5j{_HBlIgV3 zU4PaDXfaXMe59?vJh~}sp4g4^e}P3NXyJ=pC4CFGMKAqLRwPUdf?t3DKgx5PlBaD? zP`1;P)^Vyy@L2#2U(B(AO_hjgp)*27UdjR}L18KaQ`MCc)A$#SK_75g>TKz6N&exQ z+V0C@`M<69-W(zv=iK6WoD2JN%|FHh&%3E4VO)2>)&eA?iKzk?&@g#DO!jrgl9;aI%!(SVM z?0*1+c#LpiX!He)XLX?=RC5y{tb{*(n0gy44Xvwqb1{5gMGGe*1HxjwMKPD8rj!}x!R2(qO8)V(pCW%m=2?i|aoC23o3TN04~pnIO)@x~bii;i;r|*C z`f@6Gn$5dx%qC!j@b9#a4Z^luTuhbc}!o5xYT?^RZI_)JMtSh~Dt=#F&lQ3{ zhQw#sthJ@WZH$jrTr-**F*m^t@^$@-w+WU~(E4t(Ihb~6i-iB}7<%LrK2=RRS?N8@dFwt2o z9Q&LS1fCWiYi4byxn^B&gv3X!*hBr6Ca~s9R(0zH*F~o z0RX{l2~&P|k(`B0%lj-1fRXUTZ(=n@ z)Gh;r&NNp(c@?iG15U2QLly5cJWN6P=2hU5*2f3^geitBNtFd*tq1}_v%!o{#oP-P zFFwWs*(hldg00JEj{qF0HH4n9+z(A=qlWh*%(j=}2m!%;Fkyq?IsFp9vRGdG;ERe5 z$w9gxPQM;8MnEId@$BP0+LfZC58d6APhvqdF24wd940{Um@4NG$)mo3=5H|=gwgX# zbC>Ko>AJ_OG8hY*dpt|Pd#q)rVw|7y>afs(&&+aME#)&I+y8L4IP%O04von46Cz)M z|06&Um?6J^JaL==fv-EljiPOP?dsxfvY0d1#A#jG7{a6v6cxwsjiBu!2rVR%lG1dH z7wF~eVL<^-)+`nuVk`h_x7kof@X!DV%xd)C@nPjy8P-W52PK5$;(U+)su|a{F=DK0 zwT}^wdMIa2b$(Qx<5s8|dR2W5zlznJ_cmq(IK9^!Yo$(mm;T#u(*y`0P*n~H-*_lK zJ1GUKAa2ra^|@&MQukS6?t-(t$d4H4(GZAZ)Ol>!979^1V2E99EGm9PnLpLo3=I&> zhKln2-vkJ2(y^vWToHH$kO7m&_hDF&B+M^m`E#)dLL^?qnD_lgp>u&+unx-wys5t<8AzQe2BI+n)O3%;}3Ma zHZmspF!7h7e(tWv9x`C>UIoOTT?(#ebw42j0T4hGw3xaM3?{jiak(jK6-nQIiKo-z zfl|;h#BtqngH4;ES{i^*BZL}gA_PFFsf&-Qwf@eKx-ZY*SElCpNOYLPNYS--IK4e21=7VT1sp6hUkhwE~|2q1q@a(~4T!bTmLHj}Y)>JCvU&Pa3FzfJOA2gqIv; zMU{*LS@n+>*0%`|{Q90z0RbX}LW514b%@i(wD^2gFxc!ibQ0zTJS-t}F+%X#&((I# z>S)QmW%bw!)-l=lViZgZVR?sV4c4hU83QRfD(i(3HPfK z=K5sfj>2F*w45g@+*5_{PM`XTn;Pndxc6bSi39s5fS{Em=pjTXYPM^p{*YVYpC9)B z91!k;2ndV@2!s>{WIN1b2#dDk?b}Q{e0pkrEWJC!E+Ga zcHu>^_P?A9PL^Q@&9Jo2{cj?Kfi(Uc?q8ZHi7aR;WchcBaML>~07Z4G;_= zydSTFIM<}?S5>qK!Jg}|Dg!?=AZ*z&6%bgFB2$C_oON~GK?9xh zx{s!9p_Ha$e$EENqYsyT{7THa>zJ#{0c?F3I@F=%z8(i_gpg91;a+3=j4?ln;)H1s za7)TVkFEUi3NHJI@K1H>!g^*hTZLb5@CYiqh^f=%-!@_L84@xJg(<&~pz^;)2y7%q z2r!4|^&bI(qwrRMSgB6i27bmf*{nXSAp!!_5NJ6&5fJdWlvlNMTYiCnCzze!&gzZ>moEN`$(WFLx$hlqx{gt~ ztnOmy2ctyaM`x}Bw8rDN>X^8@AZj3$B6#3Lo?`$T=;8c^52}uPVwGj7itJ~xT^F`^ zWU!s`ZSlh!T%`K#tUQp2sohB}iy=N~gQe@~P~9U_nEB*_c%bZMuoV%(;e>MT{{|3P zRZevWo^=>5!{*0$eyJgt(GvlI1|W{OY&4An69A!nJu})@w=mceKp4wartyaB#i+sj zDW;SGXJPmU;+wZB&@>nUTzOtg>rt={{Wy4dAh2D(?)Y4nkwlQ8G zR298;e2S1=-#ltvgWpFM7%*maZG@iYY8DqG*97*Lq7Tb#`Yd*TC+0j~+ax|sq`Za1 zJ`*W4e~%k7Yc&JHtXmL+fBVd0b#n|cH_|^RFH_r;Qe=rQAfCjSTGdDq`Wry7cjb7o z$Zia1?B?#kQ5i1oCf+V&PRZol%$^i#z2t%b;Y*(LH%xeJgZ?hqp-uPw~`5!-r zuUhEWJWT!BszE8f7shIDDRowYnMANs?@Ap#H z7~99FUR3P}5j%@+-58iesr#Ys;CT=lXc)J&F;1|jy-6v9|D``L-GJ-m_36Jp*C(GB z54t1neF$~ieYpDt+mKJ!7_ViTMual(TOG~gAbA%rbFOB zfXS}cpT87mQ$)jmu%6^ob*fs$kUAQ;)S)+)K`0)-q+@!nGY{bqtk$-d^-w$2O0A`_ z9ji5Nhy&_-*F_W7W>h`%%*ZZSM7w(EG}1?)SheOZ zbo(P!D`uEqfr3X(Fph!CSryeXUI(J7Ur69Wco&hLIPFm7%xc}I4WH%0V|RENGGi0@ zlsRU&rvL&BLs2lTZ)gU-jLEr>zAp8txu$J0JfV-EXg1 zv}S=^HWj_H1S-tf%1*WSu``dV=iGWNSg-?&Zho-XRBJ0?CO{aVlGk^=<-G)Oi0)kM z8)(_#fDGokF=f|o()U_;&FSbrffvIq$T~ppJPnDxICID&pSD+lN%fl%`r9#>E^gjV zDR9_hW0An}3uvvn^K`1^tLl^I&vCNtb^W2)n8gPI3_ss?PhQub@1@_N%EWgdze$BR4A{x7=m;yvsFlwuTdnisZ+SRrI&4AG~C6 zvd#on2EjM$>q)GH#gN%2nTtX8jDyGK0pvWm1|62#S_s1Xy6f-v+VvJY^ zWp(Y?sA3)-?SFvp4JKypqH6A~!YJJWjXmb-qhLd2AWjeMe$3GYx^S$`WfI6W=(SH) zxBWMR#V99lo16#4g92_eXGw(vH_3*#0Ac=5kG;2d>Su_6IuJjy4{)NXJc5Lp-*6ms8;e1z}ZO373qYbNQ{5`0r0TI?| zJv2ag<3L&OG^-lxr{1}(ZM39_EEZ&R>PieX*C{qfjXa*UFg{OKK84TQgRjb!=L`rO zl!Q2LnVojs*i*w3wq+%sY~qtBk58q$6h6bZY+fAnyN(uWL4^J!CoG7FSa6h$C@$gP zTOj6y%c>84(j;l=^_1PF3&|euDm_QJ?%V7{lCg-OX%=GJ*AuCRfQm44jPct@ybl9$ zd=&af+Wi?InDPh#ok`bk-|~qpx8aaWW<_74Pc`2(XFm@z@~KLmTEJbJos3Q`hQhpK zx`$vH!fgn{ZT8DBC2qNmZ(dub&Q+~zqlBof>2+7_Md+0T>S{1;+f;pw-BmkQrz+@5 zY25=!MhVEgjg(y{M&sh&yP%_WcO7b`pb~=%;sOya2M%ps2ZZnKQ?!lGT^^O^v!^St zfomLnImZn*0*mh6z2)^HrwnNv|Ant0a%Pqp>Y{*rrR3hIrlTx$~`eh8vhm$#JhI)TTAAn@(R;m{bmV?g-7Ng`0dpC3n*mLKVMYS zd8#I%I9%Y-!}fh=ZHF6MaMn~-V+_#ip0U~p*#X^D)-Z7#gAv_#TFDrf3pJ{797SjI zqw6dWon#?Kkg5^d>keKN`{%vH*f{0Mo-Y2RbEZ%elWqLqrn-%=C~0-4^x+6!(!Dy8-KPC0>YW~<$y3PriUEn z_n4H}h^`eU0RkWUW%y{S^OB0zb%9;qq=54>jb@prq%R#Cy!g;uyXBpmdEwXbAQJ!R zYea-T3giepyT26`eJg&d5pX&n#0Y`^GRrV0ZMoQ+T$OwAIsL3EW^4Z@>gT?%al(^7 zAahn{MjB6{Wqd2Q31)c`7~^TNy6>!uX+t!)K@BmK24;&L(9_4&JI9Uek40JE+ zlo31K8*tBgB>xEu1JKDx0r4Ye5kUMXVw@yJ^yysARSF1Gk-lHIR?L(#Y<2n0xdG>c{{;*ZAlzl@_x&Cs0M#g--;@Ge z4u?xvNg!{9#4A96%*N&PpdX+^icQeqdMMNOX`T862yPW@V%T^*-i`{<+P|uhj`?K% zP&1tRM2|N`-<@O^SPe2+KRhcT#%+OmAt?l2jJUlv={QKF#!VB&(ri+7ZdGh@;wy7z~p-o?~aa#+;A(c zud#I%!$o zrv7me$w!a?0j;V07oFox^;mr_#_KeEBq;t5M7NnI0Rqlqe4N5LLfH5KZIgY$HX!hi zM_^|GHCJ6wMF9DK1O%Yd>=IWJq9Z=15U<*WTQs8eTQP;jcn}2bg$U+|oAr>-!eQ^% z-qt)-Ip?C>#@mV~8FTzyi$K2wgrIkmdQ5UFdQlEIrv1^Mx5OpupF3u72otQNTf4tq zQwVVbC6li$0iSBU&yaLg{Hs{`1-hpswK9JW2uU;)^qE~^q=FbrZ~D2u*7q@Tw=pcY z(Z;(W%R9xVnBH|}sA1p?Kw&gP58?jcfZzfVbG5IQwljqk>4W||%>rhVDXPOcXTd+7 zuer*m@58q?-~uBSl9bEgBma9B%MTP{l1E~wE4EmlcA1u|Ed+V)X@IchKiKWtF>|~f zrxxm#{qqe#Q0O5Fat4gCK$SE8Sd&cbAu%|`Trx}r1<3tgFlm+|eDDHjQ8I?oudSL_ zc!errL&cJY)=VUDZr#FTSOkPP{?L7l=df;a=;<=V=Qh(~p9cT)5u`<(ulac0cgg+x zWr(oHXdiNi7;jO_yy_I-?qx$U7Pnx zBr4EqHQ>~*nDZ*o;dWXVE$hH`XcCO5=G}R%PlG*tQYM2L(A(~^1qk_2G}rxZcUUg` zs^dXAqtA~qW*2^xwBccx)^}ha@S1J`p2oZqH?_NB(10Pr4JHgm1PWYlyNC&o6S%&5 z;i>N!0fB{S-}Mu>jEZeyT>8oTG92)We$b8o)E^(IqIdFF9zq`x-fAm>g#nPzA&G_Y zWvdG6b}>$SoaOsRnjM3m%Z%FP9Wl|Y#mF{3yUv-}Gc0TAczMkSxBr(&lqpM)RE!>6 z61MXF4}j2-03n8E!jOvk;!)al&goOqb9jIMa!PvFG;}u-C7C)Xf)q9xu-ypq18xQc zaMJ)m)-LirV5uA@zik$(oVfeS-~ygQw9{kWw+(9nqwh&cNPoA>JGK^GohsV9d<|ZJ zz%82h?eMAz@EGy7yQ9FL8zBaPT{(*b-(y1|X3i5=HI&_40~b=rT+ zKJSa>PY!{*-Ftar>poY+J622o8&i=_YeI7`i1W8WaD3>LgpcQUD({QZ>X(7x6waVv z(?;(%b7M}c#nf7K%aKy=e~s&D#3VMB6WQ=LCqO7J`oS=iE4EmemZvEQ)v9##B_AoZ z6;NKk9kY0niT;MAwqp?>U?4Csa3bxzfEOUaX#N_|k7jvWa8wpDy%on?TO4C}^SVMV6&Lnc0@#VE;^4c9XO3)pR5wej_*`0g zvok5lP7#heZqjv@kCr(9EJm0`r|}Rr zo|^$d5jJr_rMIiLLv#d$xuznlyRHbY z4uAk{b5|aLjKm1x+^m?2**|Zk4BiVW4+s#J0tlcqs^?~2uHN73V0C_%x_<+N;U(*g zMT>6U;FkuSZ_5bbs6WT)_V`ME>LS1^93~`6Oqj(!;zS_Wr+0S<;bT5oVEq!QkSJ=v z7-k>4{p1Ou5|>x6Hp%)^&Yrq9fWyZhX9MpoFejmkI^QvIJf44cS`BgDdu+M?1L|@H z1fVV#k21s$X1}Nw@8_WP<7Zw0TsqM|3?rpYK*>d13(qlY4G|DTpeXsewxVot@URWn z697S82=5c{m0ndHgEH$w-;w1xDJ?5HHH|CzvT#FQIt#T0it)Q zcB!H8etDoUQ033zun4LTpVe6?uTGcviZ5A zJ`;f&lx z!)Cb)#~1ol$Zb-x^sP)K8((hT4i_y@0AaWY8X(kLhv{2{0RHAd8wZ7vXkSQ6LPHWg zbe}^L^Kl4v?$ZWv7V-jakASe7GUFCxWzF??H3=-(F1HNv?e3>8Lplk2ctf9nFb5mS zFrS$c=g!CD_;%vr`#WHy@9=HiK3jzR1|dbqrm9-{^%G4%gWhtTR+^?uyn})_5-D85 z-u;jD0NgPYV`QXq<`$+-qvbzc(Z`8K<%F8UA51%DKo~%9qwoy?*@pese>z`pU{A?evymfAbXggf?*W>PZ zJT@k^ALd$0eojgm2!LSw;=L7EACbmW00DR%((Ii~t$?uCK3G$I!x^(+Rt}#6>@RJ!3^h9Eu2+D{DDRc=5P|_!gCn6Eq9sK-H zfRJ(qgMCw`)L4lnZTQU0Er_-w-9UI5U`oi-4@ z5y|5}*IC~NQn>sa{MT`%G~?pSB;yzQo`Rvz9OC&S1|yWCVo zxIG|&gb_k9AlPEf#>CO9fgrq69K!HA#%JzRJs3nAX@F2a#E-}IBV_T>z!}(O%&~8{ z@E9WS*UrCsBirhKfCD>|-{%I5+j;iqpfZvYDw zVWfKr2mnRLv_BMr*xSc_IYDF0){|Pp`QO~Xgg+4wjxD4$94i_-yjSwxIhIC7uUl?w zX)r+as0VvLS64)r14ulxK6U;0cEhqg(PFy6xW52|{L`|s#r6RcdyB5Y+c7$3^XooM z0W&nuvn5ZLdQp)+EIvL|oZ~&Xrf&3p_0ISt2J%u~s9HbQ9`L7k0PwpBeGcxG5hZSM zrAaA6yxirih3Gmk0x9oe)Qv2xaHg7U|E#{H4ADVv*uH9MfB-kx`9eT|&na3B@9mU| zaX?q^ESeg0@8-z-)ixS&J7s#uJ>HZi3&5o_q@sno#QVi@Ee#qzi{>7%5&`GaPF19B zLn+b4gb{m$9CWyojvdD);*FzQASwqw(inu~4o66R&zJwmx~f znGr!($)^QsuI97zU&RP>oz}60D>vYf?NW*PqlX#euj9->N#CpP{3Y_5Uo__=uO;b= zTVz3Gx15I%BZP8|Oi*D_l(r@mX=Nw{1jMsVS@_Ak_?lP`fIvx-poZW|s~`ywATx&p za7aaYl%K(BC7UQQ+IX>9jO}Jt!0$Tt#b(k^-?`@ac1Kc@gD!l{*JZfXG?p1-f zzLXC<>T09-3mnDV8%QzY0gsL45jlJs)!oDSsQX2YF&&>H{O{R}HF7eri1hq7;Ryl) z_YB#1KaDQN6gzsbZrK%`otbC)>xm=o!eTX!D*O>3SXi1-czm&Bzr6?H#lZS>rz&-s z^lR#Lm&B-G#_Ua+!p{YQI+e|jpBE-#*KuN?bopl#G+k_%X55btkU=oQu>N|>XKtQh z#G=WgrU)^*`-8B{&0`nNQFceF;u=D#n`SEVN7}hdeBTYzugaqJ)2Z9lCoqfUBpiT<8h7k*gdR| zzmN_=9`}Asx$N$hj_mel75ug^5p-ZGYJ}h*V)1_k2$}#0E(K&8AAKIL`Aqv;yq&-X zPmHvGH`(=FvX~m(#2j?B$7y4%nWD$f$Kf4jqdV#)tkRxl*xr-G+q-N?+IJ12ysms7 zc`rC6LVzxSBaA->QOrX~FN!?2PwD(auDNXBT(c+2`~%T}7mi?J39$wH=rMXuBeYO~ zXIOzBCYOGD^|DOUy?px~<_%tGexK?+NKVM4-;eE-c+?J=DUPrLxzek4x5^FHj zJ?vJYF;vzzbW$Lsph{#|P%!v2k=0@B0xt%H7(KPy%)m?T9j(;Kk(mwcR|ZV=d-KLP zGP|Y8rm#Pv|8SVbOFtgxS9t)?0w>{7J|Q$IXE8GaBwktUe;wZLSUf7QD7f?^BOqu} z$XySf00=y&@>vO_g(s%v2OuQ;jGp>Ku?TnwPnss7J~iL>Ag-RwVBlNB6f~Cl*c5u{ z4gmr8w1O>NUk3y12@4{a{hRPAH$x3E|Ga#83jIkv%j9C0wxt}fNU#6|T!w{OMhRzj z&%>fthzID|XKhUc1gRE)a7{P|%q-4R%NoTo#?;Gz`zp^+`bbV||BLoyJAJg6f*cZU zD-Cr5|9We1+9%y(QW+S8)BjFn^*$7r*ifnS%K^qLcDJzx%8XfZES`(o+wpceu6RtX ziDrUkOCpp+=_cq$56Qcx^19p6i z)8s?q`tqbZ@OXuNpi$!Tjp@@U;RYb!SoD-l#8=tRPn_$tScK$!iW;X1;chp}qWs&7 z={)Vzaxp&x0*Z;DaV0`w1V@$$)#vzi9mE6L61d(tCbd7Fq+F$p2m~u%V>Z*==7G+y zW3B^jJT9JS?fwoBhKDKE+)K-EN4{kTSmnQMSGm(=p@9je+CHMLj_WV z(r=7A#<%jw8T{%XrSk%3_y!{@i*F|~(=EKX3n}klGhOXtxvx0fb`VGE>qKYkg>x*g z;e%8)p2_JAU^a4ttt0atLqHIho{GPu2%*Paqs3H3eJ-9gNUu3o8x8DRp0daO_(#b} z&}s<2?*jM51L8j1ANd`;)z?n15@G)i2<$FiMjs=DKAY_UgtJ*DiQF)@%PK?aJ*GlQ z(86C7VEiFNK5%SEtHwqIKmj*BI7I)%0o`lAaAf|@z z=!o0yVEKi5-9i-mOqGbQ(KlNDsqwHYK%@K+%JU~CXW}_!x!hk(7(`9~)jIePkP!u& z_5&IoYkJKNAY4~~(5~m&r~Md2GqpZs+^y#HYQ@Sg(AdVoGxSGKBpnc$2Tk(echO zSeG3Q`sjaQbmHRpgo>b8nzZ)=+%@wj{t^3a$AJh4oyPH0_irMEaqup8bre*B8s@)7 z2EkqJ5XW0lYR|;$az7%T zHG4jVk|C$Y%?;s{1RS@3mVUUOr+i_3E$W%yxjA`vBqP;;iTK zSc9;C!6NYy+J#99I*NwDp1jnfKmlbo=_kgy=rl4rETm~3pPldLb1D+|Kz z`WL6{=4Th)=(N&fRb0BKOJq0Sr-L&2qH~sEl^xrki}+6w0;fni0#bfyJ6_Td>Za(L z^er6p#saM4GPaa8K0c|*QXgb`8p=yL|i^+r&JLly%?wCV8k*nJ=SlA#^WS1W}h%R2-~b4D=K{KGDgYtSVI7D z**J9^&M)h(=L6LJEs!SWt(b0#L#sGxd%*d)^9`*3F{v&befdfd^7lxZO*Kv7_dLXH z>I-@O>2Nwh0|YjJh~2*ega!mda=Yem-qgOJ2L@kb z>+$NVJ-(G0Xv{7Ik*S+MB3=q0$Wb_# zn=!(>SB2ZFE#U`*i~spt!!1=3K~iTFLzz@G4|lr(qN#>(-a#mq%2o>?a4cxNrgAN& z49D@DIIynSmx5wA-kYyr0)2dn#TrsopIbH10HN8n??((ycg$E40l{@`ewP8qidz?X z>5oVXi<(zhnV+x!6o{XrV#VVDdlF#`I^;OU#;qRbKkq1&DUH#M)~Mu^wx?Hda(p`~~|9;a}N&H#G}=Y{Rq zt;>|ZRa{?C>Sb($uQs(_oc3F8sYJK=>n?(i8Up)+T1p}&jVj+fzya0eZakq=MRil4 zj4Ikb(uo%24Y+INr>~o(dxxFS^aQ!wT!O(JT9APCk@Y@r>;)XZr7eHktK>pR4BJoh znMqKDq*!c&egFIjfvSqE&0dM(F*jB01`w!S2H}0aNR;(0NLB${pAq2YW8sG`*I!4D z&f$SPV(7#J^&Iv6?KG_U_Msk&iXJ3M@N5sr+nEg)psj1M9>GD=G4%sA4B(Y+uvW

FiETslMMVR2M#8E<9_q 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 Hu0mjfLco24 literal 0 HcmV?d00001 From bf4652529835ee466393212cf7e3048162515a6d Mon Sep 17 00:00:00 2001 From: ChildhoodAndy Date: Mon, 26 Jan 2015 19:12:16 +0800 Subject: [PATCH 110/123] add 01.1-ArchitecturePerformanceGames en source add 01.1-ArchitecturePerformanceGames en source --- 01.1-Architecture, Performance, and Games.md | 199 +++++++++++++++++++ res/architecture-cycle.png | Bin 0 -> 94539 bytes 2 files changed, 199 insertions(+) create mode 100644 res/architecture-cycle.png diff --git a/01.1-Architecture, Performance, and Games.md b/01.1-Architecture, Performance, and Games.md index 294b180..368fd3e 100644 --- a/01.1-Architecture, Performance, and Games.md +++ b/01.1-Architecture, Performance, and Games.md @@ -1,2 +1,201 @@ Architecture, Performance, and Games ============================ + +Before we plunge headfirst into a pile of patterns, I thought it might help to give you some context about how I think about software architecture and how it applies to games. It may help you understand the rest of this book better. If nothing else, when you get dragged into an argument about how terrible (or awesome) design patterns and software architecture are, it will give you some ammo to use. + +> note: Note that I didn’t presume which side you’re taking in that fight. Like any arms dealer, I have wares for sale to all combatants. + +# What is Software Architecture? + +If you read this book cover to cover, you won’t come away knowing the linear algebra behind 3D graphics or the calculus behind game physics. It won’t show you how to alpha-beta prune your AI’s search tree or simulate a room’s reverberation in your audio playback. + +> note:Wow, this paragraph would make a terrible ad for the book. + +Instead, this book is about the code between all of that. It’s less about writing code than it is about organizing it. Every program has some organization, even if it’s just “jam the whole thing into main() and see what happens”, so I think it’s more interesting to talk about what makes for good organization. How do we tell a good architecture from a bad one? + +I’ve been mulling over this question for about five years. Of course, like you, I have an intuition about good design. We’ve all suffered through codebases so bad, the best you could hope to do for them is take them out back and put them out of their misery. + +> note:Let’s admit it, most of us are responsible for a few of those. + +A lucky few have had the opposite experience, a chance to work with beautifully designed code. The kind of codebase that feels like a perfectly appointed luxury hotel festooned with concierges waiting eagerly on your every whim. What’s the difference between the two? + +## What is good software architecture? + +For me, good design means that when I make a change, it’s as if the entire program was crafted in anticipation of it. I can solve a task with just a few choice function calls that slot in perfectly, leaving not the slightest ripple on the placid surface of the code. + +That sounds pretty, but it’s not exactly actionable. “Just write your code so that changes don’t disturb its placid surface.” Right. + +Let me break that down a bit. The first key piece is that architecture is about change. Someone has to be modifying the codebase. If no one is touching the code — whether because it’s perfect and complete or so wretched no one will sully their text editor with it — its design is irrelevant. The measure of a design is how easily it accommodates changes. With no changes, it’s a runner who never leaves the starting line. + +## How do you make a change? + +Before you can change the code to add a new feature, to fix a bug, or for whatever reason caused you to fire up your editor, you have to understand what the existing code is doing. You don’t have to know the whole program, of course, but you need to load all of the relevant pieces of it into your primate brain. + +> note: It’s weird to think that this is literally an OCR process. + +We tend to gloss over this step, but it’s often the most time-consuming part of programming. If you think paging some data from disk into RAM is slow, try paging it into a simian cerebrum over a pair of optical nerves. + +Once you’ve got all the right context into your wetware, you think for a bit and figure out your solution. There can be a lot of back and forth here, but often this is relatively straightforward. Once you understand the problem and the parts of the code it touches, the actual coding is sometimes trivial. + +You beat your meaty fingers on the keyboard for a while until the right colored lights blink on screen and you’re done, right? Not just yet! Before you write tests and send it off for code review, you often have some cleanup to do. + +> note: Did I say “tests”? Oh, yes, I did. It’s hard to write unit tests for some game code, but a large fraction of the codebase is perfectly testable. + +> I won’t get on a soapbox here, but I’ll ask you to consider doing more automated testing if you aren’t already. Don’t you have better things to do than manually validate stuff over and over again? + +You jammed a bit more code into your game, but you don’t want the next person to come along to trip over the wrinkles you left throughout the source. Unless the change is minor, there’s usually a bit of reorganization to do to make your new code integrate seamlessly with the rest of the program. If you do it right, the next person to come along won’t be able to tell when any line of code was written. + +In short, the flow chart for programming is something like: + +![](res/architecture-cycle.png) + +> note: The fact that there is no escape from that loop is a little alarming now that I think about it. + +## How can decoupling help? + +While it isn’t obvious, I think much of software architecture is about that learning phase. Loading code into neurons is so painfully slow that it pays to find strategies to reduce the volume of it. This book has an entire section on decoupling patterns, and a large chunk of Design Patterns is about the same idea. + +You can define “decoupling” a bunch of ways, but I think if two pieces of code are coupled, it means you can’t understand one without understanding the other. If you de-couple them, you can reason about either side independently. That’s great because if only one of those pieces is relevant to your problem, you just need to load it into your monkey brain and not the other half too. + +To me, this is a key goal of software architecture: minimize the amount of knowledge you need to have in-cranium before you can make progress. + +The later stages come into play too, of course. Another definition of decoupling is that a change to one piece of code doesn’t necessitate a change to another. We obviously need to change something, but the less coupling we have, the less that change ripples throughout the rest of the game. + +# At What Cost? + +This sounds great, right? Decouple everything and you’ll be able to code like the wind. Each change will mean touching only one or two select methods, and you can dance across the surface of the codebase leaving nary a shadow. + +This feeling is exactly why people get excited about abstraction, modularity, design patterns, and software architecture. A well-architected program really is a joyful experience to work in, and everyone loves being more productive. Good architecture makes a huge difference in productivity. It’s hard to overstate how profound an effect it can have. + +But, like all things in life, it doesn’t come free. Good architecture takes real effort and discipline. Every time you make a change or implement a feature, you have to work hard to integrate it gracefully into the rest of the program. You have to take great care to both organize the code well and keep it organized throughout the thousands of little changes that make up a development cycle. + +> note: The second half of this — maintaining your design — deserves special attention. I’ve seen many programs start out beautifully and then die a death of a thousand cuts as programmers add “just one tiny little hack” over and over again. + +> Like gardening, it’s not enough to put in new plants. You must also weed and prune. + +You have to think about which parts of the program should be decoupled and introduce abstractions at those points. Likewise, you have to determine where extensibility should be engineered in so future changes are easier to make. + +People get really excited about this. They envision future developers (or just their future self) stepping into the codebase and finding it open-ended, powerful, and just beckoning to be extended. They imagine The One Game Engine To Rule Them All. + +But this is where it starts to get tricky. Whenever you add a layer of abstraction or a place where extensibility is supported, you’re speculating that you will need that flexibility later. You’re adding code and complexity to your game that takes time to develop, debug, and maintain. + +That effort pays off if you guess right and end up touching that code later. But predicting the future is hard, and when that modularity doesn’t end up being helpful, it quickly becomes actively harmful. After all, it is more code you have to deal with. + +> note: Some folks coined the term “YAGNI” — You aren’t gonna need it — as a mantra to use to fight this urge to speculate about what your future self may want. + +When people get overzealous about this, you get a codebase whose architecture has spiraled out of control. You’ve got interfaces and abstractions everywhere. Plug-in systems, abstract base classes, virtual methods galore, and all sorts of extension points. + +It takes you forever to trace through all of that scaffolding to find some real code that does something. When you need to make a change, sure, there’s probably an interface there to help, but good luck finding it. In theory, all of this decoupling means you have less code to understand before you can extend it, but the layers of abstraction themselves end up filling your mental scratch disk. + +Codebases like this are what turn people against software architecture, and design patterns in particular. It’s easy to get so wrapped up in the code itself that you lose sight of the fact that you’re trying to ship a game. The siren song of extensibility sucks in countless developers who spend years working on an “engine” without ever figuring out what it’s an engine for. + +# Performance and Speed + +There’s another critique of software architecture and abstraction that you hear sometimes, especially in game development: that it hurts your game’s performance. Many patterns that make your code more flexible rely on virtual dispatch, interfaces, pointers, messages, and other mechanisms that all have at least some runtime cost. + +> note: One interesting counter-example is templates in C++. Template metaprogramming can sometimes give you the abstraction of interfaces without any penalty at runtime. + +> There’s a spectrum of flexibility here. When you write code to call a concrete method in some class, you’re fixing that class at author time — you’ve hard-coded which class you call into. When you go through a virtual method or interface, the class that gets called isn’t known until runtime. That’s much more flexible but implies some runtime overhead. + +> Template metaprogramming is somewhere between the two. There, you make the decision of which class to call at compile time when the template is instantiated. + +There’s a reason for this. A lot of software architecture is about making your program more flexible. It’s about making it take less effort to change it. That means encoding fewer assumptions in the program. You use interfaces so that your code works with any class that implements it instead of just the one that does today. You use observers and messaging to let two parts of the game talk to each other so that tomorrow, it can easily be three or four. + +But performance is all about assumptions. The practice of optimization thrives on concrete limitations. Can we safely assume we’ll never have more than 256 enemies? Great, we can pack an ID into a single byte. Will we only call a method on one concrete type here? Good, we can statically dispatch or inline it. Are all of the entities going to be the same class? Great, we can make a nice contiguous array of them. + +This doesn’t mean flexibility is bad, though! It lets us change our game quickly, and development speed is absolutely vital for getting to a fun experience. No one, not even Will Wright, can come up with a balanced game design on paper. It demands iteration and experimentation. + +The faster you can try out ideas and see how they feel, the more you can try and the more likely you are to find something great. Even after you’ve found the right mechanics, you need plenty of time for tuning. A tiny imbalance can wreck the fun of a game. + +There’s no easy answer here. Making your program more flexible so you can prototype faster will have some performance cost. Likewise, optimizing your code will make it less flexible. + +My experience, though, is that it’s easier to make a fun game fast than it is to make a fast game fun. One compromise is to keep the code flexible until the design settles down and then tear out some of the abstraction later to improve your performance. + +# The Good in Bad Code + +That brings me to the next point which is that there’s a time and place for different styles of coding. Much of this book is about making maintainable, clean code, so my allegiance is pretty clearly to doing things the “right” way, but there’s value in slapdash code too. + +Writing well-architected code takes careful thought, and that translates to time. Moreso, maintaining a good architecture over the life of a project takes a lot of effort. You have to treat your codebase like a good camper does their campsite: always try to leave it a little better than you found it. + +This is good when you’re going to be living in and working on that code for a long time. But, like I mentioned earlier, game design requires a lot of experimentation and exploration. Especially early on, it’s common to write code that you know you’ll throw away. + +If you just want to find out if some gameplay idea plays right at all, architecting it beautifully means burning more time before you actually get it on screen and get some feedback. If it ends up not working, that time spent making the code elegant goes to waste when you delete it. + +Prototyping — slapping together code that’s just barely functional enough to answer a design question — is a perfectly legitimate programming practice. There is a very large caveat, though. If you write throwaway code, you must ensure you’re able to throw it away. I’ve seen bad managers play this game time and time again: + +> Boss: “Hey, we’ve got this idea that we want to try out. Just a prototype, so don’t feel you need to do it right. How quickly can you slap something together?” + +> Dev: “Well, if I cut lots of corners, don’t test it, don’t document it, and it has tons of bugs, I can give you some temp code in a few days.” + +> Boss: “Great!” + +A few days pass… + +> Boss: “Hey, that prototype is great. Can you just spend a few hours cleaning it up a bit now and we’ll call it the real thing?” + +You need to make sure the people using the throwaway code understand that even though it kind of looks like it works, it cannot be maintained and must be rewritten. If there’s a chance you’ll end up having to keep it around, you may have to defensively write it well. + +> note: One trick to ensuring your prototype code isn’t obliged to become real code is to write it in a language different from the one your game uses. That way, you have to rewrite it before it can end up in your actual game. + +# Striking a Balance + +We have a few forces in play: + +1. We want nice architecture so the code is easier to understand over the lifetime of the project. +2. We want fast runtime performance. +3. We want to get today’s features done quickly. + +> note: I think it’s interesting that these are all about some kind of speed: our long-term development speed, the game’s execution speed, and our short-term development speed. + +These goals are at least partially in opposition. Good architecture improves productivity over the long term, but maintaining it means every change requires a little more effort to keep things clean. + +The implementation that’s quickest to write is rarely the quickest to run. Instead, optimization takes significant engineering time. Once it’s done, it tends to calcify the codebase: highly optimized code is inflexible and very difficult to change. + +There’s always pressure to get today’s work done today and worry about everything else tomorrow. But if we cram in features as quickly as we can, our codebase will become a mess of hacks, bugs, and inconsistencies that saps our future productivity. + +There’s no simple answer here, just trade-offs. From the email I get, this disheartens a lot of people. Especially for novices who just want to make a game, it’s intimidating to hear, “There is no right answer, just different flavors of wrong.” + +But, to me, this is exciting! Look at any field that people dedicate careers to mastering, and in the center you will always find a set of intertwined constraints. After all, if there was an easy answer, everyone would just do that. A field you can master in a week is ultimately boring. You don’t hear of someone’s distinguished career in ditch digging. + +> note: Maybe you do; I didn’t research that analogy. For all I know, there could be avid ditch digging hobbyists, ditch digging conventions, and a whole subculture around it. Who am I to judge? + +To me, this has much in common with games themselves. A game like chess can never be mastered because all of the pieces are so perfectly balanced against one another. This means you can spend your life exploring the vast space of viable strategies. A poorly designed game collapses to the one winning tactic played over and over until you get bored and quit. + +# Simplicity +Lately, I feel like if there is any method that eases these constraints, it’s simplicity. In my code today, I try very hard to write the cleanest, most direct solution to the problem. The kind of code where after you read it, you understand exactly what it does and can’t imagine any other possible solution. + +I aim to get the data structures and algorithms right (in about that order) and then go from there. I find if I can keep things simple, there’s less code overall. That means less code to load into my head in order to change it. + +It often runs fast because there’s simply not as much overhead and not much code to execute. (This certainly isn’t always the case though. You can pack a lot of looping and recursion in a tiny amount of code.) + +However, note that I’m not saying simple code takes less time to write. You’d think it would since you end up with less total code, but a good solution isn’t an accretion of code, it’s a distillation of it. + +> note: Blaise Pascal famously ended a letter with, “I would have written a shorter letter, but I did not have the time.” + +> Another choice quote comes from Antoine de Saint-Exupery: “Perfection is achieved, not when there is nothing more to add, but when there is nothing left to take away.” + +> Closer to home, I’ll note that every time I revise a chapter in this book, it gets shorter. Some chapters are tightened by 20% by the time they’re done. + +We’re rarely presented with an elegant problem. Instead, it’s a pile of use cases. You want the X to do Y when Z, but W when A, and so on. In other words, a long list of different example behaviors. + +The solution that takes the least mental effort is to just code up those use cases one at a time. If you look at novice programmers, that’s what they often do: they churn out reams of conditional logic for each case that popped into their head. + +But there’s nothing elegant in that, and code in that style tends to fall over when presented with input even slightly different than the examples the coder considered. When we think of elegant solutions, what we often have in mind is a general one: a small bit of logic that still correctly covers a large space of use cases. + +Finding that is a bit like pattern matching or solving a puzzle. It takes effort to see through the scattering of example use cases to find the hidden order underlying them all. It’s a great feeling when you pull it off. + +# Get On With It, Already + +Almost everyone skips the introductory chapters, so I congratulate you on making it this far. I don’t have much in return for your patience, but I’ll offer up a few bits of advice that I hope may be useful to you: + +- Abstraction and decoupling make evolving your program faster and easier, but don’t waste time doing them unless you’re confident the code in question needs that flexibility. + +- Think about and design for performance throughout your development cycle, but put off the low-level, nitty-gritty optimizations that lock assumptions into your code until as late as possible. + +> note: Trust me, two months before shipping is not when you want to start worrying about that nagging little “game only runs at 1 FPS” problem. + +- Move quickly to explore your game’s design space, but don’t go so fast that you leave a mess behind you. You’ll have to live with it, after all. + +- If you are going to ditch code, don’t waste time making it pretty. Rock stars trash hotel rooms because they know they’re going to check out the next day. + +- But, most of all, if you want to make something fun, have fun making it. \ No newline at end of file diff --git a/res/architecture-cycle.png b/res/architecture-cycle.png new file mode 100644 index 0000000000000000000000000000000000000000..c0b502700d7d33481a7eb0ee60a3fafbd999e52a GIT binary patch literal 94539 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 M07*qoM6N<$f=m^ZlK=n! literal 0 HcmV?d00001 From 1348e24f79f4d117ef74832a08581c6f6d898b7e Mon Sep 17 00:00:00 2001 From: ChildhoodAndy Date: Mon, 26 Jan 2015 19:16:45 +0800 Subject: [PATCH 111/123] add Sequencing Patterns en source add Sequencing Patterns en source --- 03-Sequencing Patterns.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/03-Sequencing Patterns.md b/03-Sequencing Patterns.md index ab2c323..f5fb078 100644 --- a/03-Sequencing Patterns.md +++ b/03-Sequencing Patterns.md @@ -1,2 +1,14 @@ Sequencing Patterns ============================ + +Videogames are exciting in large part because they take us somewhere else. For a few minutes (or, let’s be honest with ourselves, much longer), we become inhabitants of a virtual world. Creating these worlds is one of the supreme delights of being a game programmer. + +One aspect that most of these game worlds feature is time — the artificial world lives and breathes at its own cadence. As world builders, we must invent time and craft the gears that drive our game’s great clock. + +The patterns in this section are tools for doing just that. A [Game Loop](03.2-Game Loop.md) is the central axle that the clock spins on. Objects hear its ticking through [Update Methods]((03.3-Update Method.md)). We can hide the computer’s sequential nature behind a facade of snapshots of moments in time using [Double Buffering](03.1-Double Buffer.md) so that the world appears to update simultaneously. + +# The Patterns + +- [Double Buffer](03.1-Double Buffer.md) +- [Game Loop](03.2-Game Loop.md) +- [Update Method](03.3-Update Method.md) From e9d472337946bd8c306ebe7abdc1a3453cea06cd Mon Sep 17 00:00:00 2001 From: ChildhoodAndy Date: Mon, 26 Jan 2015 19:49:09 +0800 Subject: [PATCH 112/123] =?UTF-8?q?=E6=B7=BB=E5=8A=A0Sequencing=20Patterns?= =?UTF-8?q?=E7=BF=BB=E8=AF=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 添加Sequencing Patterns翻译 --- 03-Sequencing Patterns.md | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/03-Sequencing Patterns.md b/03-Sequencing Patterns.md index f5fb078..6131f91 100644 --- a/03-Sequencing Patterns.md +++ b/03-Sequencing Patterns.md @@ -1,14 +1,20 @@ -Sequencing Patterns +序列模式 ============================ Videogames are exciting in large part because they take us somewhere else. For a few minutes (or, let’s be honest with ourselves, much longer), we become inhabitants of a virtual world. Creating these worlds is one of the supreme delights of being a game programmer. -One aspect that most of these game worlds feature is time — the artificial world lives and breathes at its own cadence. As world builders, we must invent time and craft the gears that drive our game’s great clock. +视频游戏很大程度会让我们兴奋是因为它们把我们带到了其他地方。在几分钟(或者,坦率讲,时间更长)里,我们成为了虚拟世界的人。创建这些世界是作为游戏程序员的最高乐趣之一。 -The patterns in this section are tools for doing just that. A [Game Loop](03.2-Game Loop.md) is the central axle that the clock spins on. Objects hear its ticking through [Update Methods]((03.3-Update Method.md)). We can hide the computer’s sequential nature behind a facade of snapshots of moments in time using [Double Buffering](03.1-Double Buffer.md) so that the world appears to update simultaneously. +One aspect that most of these game worlds feature is time — the artificial world lives and breathes at its own cadence. As world builders, we must invent time and craft the gears that drive our game’s great clock -# The Patterns +从一方面来讲,大多数游戏世界的特征便是时间--虚拟世界按照自己的节奏运行着。作为世界的建造者,我们必须创造时间和打磨用来驱动游戏巨大时钟的齿轮。(译者注:这里作者用了比喻来说明问题) -- [Double Buffer](03.1-Double Buffer.md) -- [Game Loop](03.2-Game Loop.md) -- [Update Method](03.3-Update Method.md) +The patterns in this section are tools for doing just that. A Game Loop is the central axle that the clock spins on. Objects hear its ticking through Update Methods. We can hide the computer’s sequential nature behind a facade of snapshots of moments in time using Double Buffering so that the world appears to update simultaneously. + +在本节中的模式便是用来做那样工作的工具。[游戏循环](03.2-Game Loop.md)是时钟旋转的中心轴,对象通过[更新方法](03.3-Update Method.md)来聆听它的滴答声。我们可以通过[双缓冲](03.1-Double Buffer.md)来及时的将计算机的连续性隐藏在时刻快照之后,从而使得游戏世界能够同步更新。 + +# 本章模式 + +- [双缓冲](03.1-Double Buffer.md) +- [游戏循环](03.2-Game Loop.md) +- [更新方法](03.3-Update Method.md) From eb49efba7501e3df2dd3324fea1c8986f295417d Mon Sep 17 00:00:00 2001 From: ChildhoodAndy Date: Mon, 26 Jan 2015 20:04:51 +0800 Subject: [PATCH 113/123] update read me update read me --- README.md | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index e23de91..6c12232 100644 --- a/README.md +++ b/README.md @@ -72,11 +72,13 @@ Game-Programming-Patterns-CN ### 如何参与? -- 在[Issue列表](https://github.com/GameDevelopmentCollege/Game-Programming-Patterns-CN/issues)中查看尚未领取的章节 -- 然后在[Issue1](https://github.com/GameDevelopmentCollege/Game-Programming-Patterns-CN/issues/1)中留言回复,我会更新Issue列表状态。 -- Fork项目后开始翻译,提交PR。 +- 翻译:(目前已经都领取完毕) + - 在[Issue列表](https://github.com/GameDevelopmentCollege/Game-Programming-Patterns-CN/issues)中查看尚未领取的章节 + - 然后在[Issue1](https://github.com/GameDevelopmentCollege/Game-Programming-Patterns-CN/issues/1)中留言回复,我会更新Issue列表状态。 + - Fork项目后开始翻译,提交PR。 + +- 校正:由于能力所及,总有些地方翻译欠妥,所以校正会一直进行中,朋友们看到有翻译错误,可以在 [Issue列表](https://github.com/GameDevelopmentCollege/Game-Programming-Patterns-CN/issues) 中新建 issue 提出来,更鼓励欢迎直接发送 pull request。 -目前进度有些停滞,如果朋友们想要参与进来,请申请加入QQ群:112648315 ### 参考资料 From a8446d7f759e125d64eaa2ee31745c1d193fa57b Mon Sep 17 00:00:00 2001 From: "Henry.T" Date: Tue, 27 Jan 2015 19:02:34 +0800 Subject: [PATCH 114/123] Update 04.3-Type Object.md --- 04.3-Type Object.md | 87 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 87 insertions(+) diff --git a/04.3-Type Object.md b/04.3-Type Object.md index cd1b35d..836208a 100644 --- a/04.3-Type Object.md +++ b/04.3-Type Object.md @@ -261,4 +261,91 @@ +--- TODO +#### 类型能否改变? #### + +现在,我们假定一旦对象创建完成,就与其类型对象进行绑定,并不再改变。并不是一定要这样 + +。我们可以允许一个对象随时间改变类型。 + +回头看我们的例子。当一个怪物死的时候,设计师告诉我们他们希望尸体能够变成会动的僵尸。 + +我们可以通过重新产生一个带有僵尸品种的新怪,但另一个更简单的选择是获取现有的怪物并把 + +它的品种修改成僵尸。 + +- 如果类型不变: + - 无论编码还是理解起来都更简单。在概念层面上,“类型”是大多数人都不希望改变 + +的东西。这么做符合这条假定。 + - 易于调试。如果我们在跟踪一个让怪物陷入奇怪状态的Bug时,能够直观地确定正在看 + +的品种肯定是怪物始终不变的品种,这件事就相对简单了。 +- 如果类型改变: + - 更少的对象创建。在我们的例子里,如果类型不能改变,我们不得不在CPU循环中创建 + +新的僵尸怪物,把原怪物中需要保留的属性逐个拷贝过来,随后删除它。如果我们能改变类型, + +所有的工作就是个简单的赋值。 + - 做假定时要更加小心。对象和其类型之间存在相对紧的耦合。例如,一个品种可能假 + +定怪物的当前血量永远不会超过初始血量。 + 如果我们允许改变品种,我们需要确保现有对象能符合新类型的要求。当我们修改类型 + +时,我们可能会需要执行一些验证代码来保证对象现在的状态对新类型来说有意义。 + +####支持何种类型的派生?#### + +- 没有派生: + - 更简单。简单是最好的选择。如果你没有成堆的需要共享的类型对象,何必自找麻烦 + +呢? + - 可能会导致重复劳动。我曾见过给设计师用的不支持派生的编辑系统。当你有50中精 + +灵,必须去50个地方把它们的血量修改成相同的数字非常无趣。 +- 单继承: + - 仍然相对简单。更容易实现,但是,更重要的是,它很容易理解。如果非技术用户使 + +用这个系统,会动的部分越少,就越好。很多编程语言只支持单继承是有原因的。它看起来是强 + +大和简单之间的不错的平衡点。 + - 属性查找更慢。要获得类型对象中的特定数据,我们需要在派生链中找到其类型,才 + +能最终确定它的值。如果我们在编写性能苛刻的代码,我们可能不想在这里浪费时间。 +- 多重派生: + - 绝大多数的数据重复都能被避免。通过一个好的多继承系统,用户能够创建一个几乎 + +没有冗余的继承体系。比如做调整数值这件事,我们可以避免大量的复制粘贴。 + - 复杂。很不幸的是,它的优点更多停留在理论上而不是实践上。多重派生很难理解或 + +说明。 + 如果我们的僵尸龙类型从僵尸和龙派生,哪些属性从僵尸获得,哪些从龙获得呢?为了 + +使用这个系统,用户必须理解派生图如何遍历并要有预见性地射击一个聪明的体系。 + 我所见到的大多数现代C++编码标准倾向于禁用多重派生,Java和C#则完全不支持。这承 + +认了一件不幸的事情:太难让它正确地工作以至于干脆不要用它。虽然它值得考虑,但是你很少 + +会希望在游戏的类型对象中使用多继承。常言道,越简单越好。 + +###参考### + +- 这个模式引出的高级问题是如何在不同对象之间共享数据。另一个从另一个角度引出这个问题 + +的模式是[原型]() + +- 类型对象与[享元]()很接近。它们都让你在实例间共享数据。享元模式倾向于节约内存,并且 + +共享的数据可能不会以实际的“类型”呈现。类型对象模式的重点在于组织性和灵活性。 + +- 这个模式与[状态]()模式也有很多相似性。它们都把对象的部分定义交给另一个代理对象实现 + +。在类型对象中,我们通常代理的对象是: +宽泛地描述对象的恒定数据。在状态中,我们代理的是对象现在是什么样的,即:描述对象当前 + +配置的临时数据。 + +当我们讨论到可改变类型对象的时候,你会发现此时的类型对象兼任了状态的任务。 + + From 0b3c4c1e32bcf60130db80e01d539a6e364e4e3a Mon Sep 17 00:00:00 2001 From: simon <814278495@qq.com> Date: Sun, 1 Feb 2015 23:16:10 +0800 Subject: [PATCH 115/123] =?UTF-8?q?Singleton=20=E5=8D=95=E4=BE=8B=E6=A8=A1?= =?UTF-8?q?=E5=BC=8F=20?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 02.5-Singleton.md | 504 ++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 445 insertions(+), 59 deletions(-) diff --git a/02.5-Singleton.md b/02.5-Singleton.md index ade426c..fc550de 100644 --- a/02.5-Singleton.md +++ b/02.5-Singleton.md @@ -1,48 +1,61 @@ -Singleton +Singleton 单例模式 ============================ -^title Singleton -^section Design Patterns Revisited - This chapter is an anomaly. Every other chapter in this book shows you how to use a design pattern. This chapter shows you how *not* to use one. +这节有点反常。其他章节都是告诉你如何使用一个模式。本节却是告诉你如何*不*使用一个模式。 + Despite noble intentions, the Singleton pattern described by the Gang of Four usually does more harm than good. They stress that the pattern should be used sparingly, but that message was often lost in translation to the game industry. +尽管一再告诫,在四人帮的单件模式描述中,它通常缺点大于优点。他们一再强调这个模式应当谨慎的使用,但是当应用在游戏行业时,这个强调通常被忽略了。 + Like any pattern, using Singleton where it doesn't belong is about as helpful as treating a bullet wound with a splint. Since it's so overused, most of this chapter will be about *avoiding* singletons, but first, let's go over the pattern itself. +和其他模式一样,在不合适的地方使用单件模式,就像用夹板来治疗枪伤一样毫无用处。既然它已经被过度使用了,本节的大部分内容都是关于避免使用单件。不过首先,我们来看看模式本身。 +

-## The Singleton Pattern +## The Singleton Pattern 单件模式 *Design Patterns* summarizes Singleton like this: +*设计模式*这样总结单件: + > Ensure a class has one instance, and provide a global point of access to it. +> 确保一个类只有一个实例,并提供一个全局的指针访问它。 + We'll split that at "and" and consider each half separately. -### Restricting a class to one instance +我们将分别讨论“并”前后的两点。 + +### Restricting a class to one instance 确保一个类只有一个实例 There are times when a class cannot perform correctly if there is more than one instance of it. The common case is when the class interacts with an external system that maintains its own global state. +在有些情况下,一个类如果有多个实例就不能正常运作。最常见的情况就是这个类和一些关联全局状态的额外类进行交互。 + Consider a class that wraps an underlying file system API. Because file operations can take a while to complete, our class performs operations asynchronously. This means multiple operations can be running concurrently, so @@ -50,24 +63,49 @@ they must be coordinated with each other. If we start one call to create a file and another one to delete that same file, our wrapper needs to be aware of both to make sure they don't interfere with each other. +比如说一个封装了底层文件API的类。因为文件操作需要一定时间去完成,我们的类将异步地处理。这意味着许多操作可以同时进行,所以他们必须相互协调。如果我们一方面创建文件,一方面去删除这个文件,我们的封装类就必须全部感知,并确保他们不会相互干扰。 + To do this, a call into our wrapper needs to have access to every previous operation. If users could freely create instances of our class, one instance would have no way of knowing about operations that other instances started. Enter the singleton. It provides a way for a class to ensure at compile time that there is only a single instance of the class. -### Providing a global point of access +为了做到这点,对封装类的调用必须能够访问之前的操作。如果使用者能够自由的创建这个类的实例,一个实例就不能够知道其他实例所做的操作。在单件模式中,他提供了一个编译期能确保某个类只有一个实例的方法。 + + +### Providing a global point of access 提供一个全局指针访问 Several different systems in the game will use our file system wrapper: logging, content loading, game state saving, etc. If those systems can't create their own instances of our file system wrapper, how can they get ahold of one? +游戏中一些其他系统需要用到我们的文件系统封装:日志、文件加载、游戏保存等等。如果这些系统不能够创建他们各自的文件封装实例,他们如果去得到一个呢? + Singleton provides a solution to this too. In addition to creating the single instance, it also provides a globally available method to get it. This way, anyone anywhere can get their paws on our blessed instance. All together, the classic implementation looks like this: -^code 1 +单件提供了一个解决方法。除了创建一个单独的实例外,他还提供一个全局的方法去得到这个实例。这样,就能在其他任何地方都能够等到这个实例了。总体说来,这个类的实现起来像如下这个样子: + +``` +class FileSystem +{ +public: + static FileSystem& instance() + { + // Lazy initialize. + if (instance_ == NULL) instance_ = new FileSystem(); + return *instance_; + } + +private: + FileSystem() {} + + static FileSystem* instance_; +}; +``` The static `instance_` member holds an instance of the class, and the private constructor ensures that it is the *only* one. The public static `instance()` @@ -75,33 +113,57 @@ method grants access to the instance from anywhere in the codebase. It is also responsible for instantiating the singleton instance lazily the first time someone asks for it. +`instance_`这个静态成员保存这这个类的一个实例,私有的构造函数确保他是唯一的一个实例。静态函数`instance()`提供了一个方法能在其他地方得到这个实例。它也负责在第一次访问的时候初始化这个实例,这也叫延时创建。 + A modern take looks like this: -^code local-static +实现起来如下: + +``` +class FileSystem +{ +public: + static FileSystem& instance() + { + static FileSystem *instance = new FileSystem(); + return *instance; + } + +private: + FileSystem() {} +}; +``` C++11 mandates that the initializer for a local static variable is only run once, even in the presence of concurrency. So, assuming you've got a modern C++ compiler, this code is thread-safe where the first example is not. +C++11 初始化一个局部静态变量时只会运行一次,哪怕是在多线程的情况下也是一样。所以,如果你有一个现代C++编译器的话,下面的代码是线程安全的,而上面的例子却不是: + -## Why We Use It +## Why We Use It 为什么需要使用 It seems we have a winner. Our file system wrapper is available wherever we need it without the tedium of passing it around everywhere. The class itself cleverly ensures we won't make a mess of things by instantiating a couple of instances. It's got some other nice features too: +看起来我们取得了成效。我们的文件封装能够在任何地方使用而不必将它传递的到处都是。这个类本身机智的保证了我们不会初始化多个实例而将事情弄糟。它还具有一些额外的优良特性。 + * **It doesn't create the instance if no one uses it.** Saving memory and CPU cycles is always good. Since the singleton is initialized only when it's first accessed, it won't be instantiated at all if the game never asks for it. +* **如果我们不使用,就不会创建实例** 节省内存和CPU周期始终是好的。既然单件只在第一次访问的时 候初始化,如果我们游戏始终不使用就不会初始化。 * **It's initialized at runtime.** A common alternative to Singleton is a class with static member variables. I like simple solutions, so I use static @@ -112,50 +174,126 @@ It's got some other nice features too: loaded from a file). It also means they can't reliably depend on each other -- the compiler does not guarantee the order in which statics are initialized relative to each other. +* **他在运行期初始化**一个单件的变种是包含多个静态成员的类。我喜欢简单的解决方案,所以我多会使 用静态类而不是单件。但是静态类有一个缺点:自动初始化。编译器早在`main()`函数调用之前就初始 化静态成员了。这以为着他们不能使用只有游戏运行起来才能知道的信息(比如,文件配置)。它还意味 着他们之间不能相互依赖——编译器不能保证他们之间的初始化的顺序。 Lazy initialization solves both of those problems. The singleton will be initialized as late as possible, so by that time any information it needs should be available. As long as they don't have circular dependencies, one singleton can even refer to another when initializing itself. + 延时初始化解决了以上所有问题。单件会尽可能的延时创建,所以他们需要的信息都是可以得到的。只要 不是循环依赖,一个单件在初始化的时候可以依赖另外一个单件。 + * **You can subclass the singleton.** This is a powerful but often overlooked capability. Let's say we need our file system wrapper to be cross-platform. To make this work, we want it to be an abstract interface for a file system with subclasses that implement the interface for each platform. Here is the base class: - ^code 2 - - Then we define derived classes for a couple of platforms: +* **你可以继承单件** 这是一个强大但是过多使用的能力。假设我们需要我们的文件封装跨平台。为了实 现这一点,我们将它实现为一个抽象接口,他的子类提供各个平台上的实现。下面是基本的结构: - ^code derived-file-systems + ``` + class FileSystem + { + public: + virtual ~FileSystem() {} + virtual char* readFile(char* path) = 0; + virtual void writeFile(char* path, char* contents) = 0; + }; + ``` + Then we define derived classes for a couple of platforms: + 之后,我们为不同平台定义派生类: + + ``` + class PS3FileSystem : public FileSystem + { + public: + virtual char* readFile(char* path) + { + // Use Sony file IO API... + } + + virtual void writeFile(char* path, char* contents) + { + // Use sony file IO API... + } + }; + + class WiiFileSystem : public FileSystem + { + public: + virtual char* readFile(char* path) + { + // Use Nintendo file IO API... + } + + virtual void writeFile(char* path, char* contents) + { + // Use Nintendo file IO API... + } + }; + ``` + Next, we turn `FileSystem` into a singleton: - - ^code 3 + + 接下来,我们将`FileSystem`变为一个单件: + + ``` + class FileSystem + { + public: + static FileSystem& instance(); + + virtual ~FileSystem() {} + virtual char* readFile(char* path) = 0; + virtual void writeFile(char* path, char* contents) = 0; + + protected: + FileSystem() {} + }; + ``` The clever part is how the instance is created: - - ^code 4 + + 机智之处是如何创建实例的: + + ``` + FileSystem& FileSystem::instance() + { + #if PLATFORM == PLAYSTATION3 + static FileSystem *instance = new PS3FileSystem(); + #elif PLATFORM == WII + static FileSystem *instance = new WiiFileSystem(); + #endif + + return *instance; + } + ``` With a simple compiler switch, we bind our file system wrapper to the appropriate concrete type. Our entire codebase can access the file system using `FileSystem::instance()` without being coupled to any platform-specific code. That coupling is instead encapsulated within the implementation file for the `FileSystem` class itself. + + 随着一个简单的编译跳转,我们将文件封装编译到正确的系统上。我们整个代码可以通过 `FileSystem::instance()`来访问文件系统,而不必加上任何平台相关的代码。关联的代码封装在实现`FileSystem`这个类的文件之中了。 This takes us about as far as most of us go when it comes to solving a problem like this. We've got a file system wrapper. It works reliably. It's available globally so every place that needs it can get to it. It's time to check in the code and celebrate with a tasty beverage. -## Why We Regret Using It +它花费了我们我们之中绝大数人解决这类问题所花费的时间(译注:绝大部分人解决这类问题到此为止)。我们得到了一个文件封装。他工作的很好,它全局可用,每处需要使用的地方都能访问它。是时候提交代码,来点美味的饮料庆祝了。 + +## Why We Regret Using It 为什么后悔使用 In the short term, the Singleton pattern is relatively benign. Like many design choices, we pay the cost in the long term. Once we've cast a few unnecessary singletons into cold hard code, here's the trouble we've bought ourselves: -### It's a global variable +在短期内,单件模式是相对温和的。像其他一些设计取舍一样,我们会在长时间内付出代价。一旦我们将一些不必要的单件扔到了冰硬的代码之中,我们就为自己带来了一系列的麻烦。 + +### It's a global variable 他是一个全局变量 When games were still written by a couple of guys in a garage, pushing the hardware was more important than ivory-tower software engineering principles. @@ -164,25 +302,33 @@ and shipped good games. As games got bigger and more complex, architecture and maintainability started to become the bottleneck. We struggled to ship games not because of hardware limitations, but because of *productivity* limitations. +当游戏还是车库里的借个家伙写的时候,硬件要比软件工程准则更为总要。随着游戏变得更大更复,架构和开始变为短板。我们挣扎这放弃游戏不是应为硬件限制,而是因为*开发效率* + So we moved to languages like C++ and started applying some of the hard-earned wisdom of our software engineer forebears. One lesson we learned is that global variables are bad for a variety of reasons: +所以我们开始学习C++这样的语言,并且应用我们软件开发前驱总结的智慧。我们学到的一个教训就是,全局变量是有害的。理由如下: + * **They make it harder to reason about code.** Say we're tracking down a bug in a function someone else wrote. If that function doesn't touch any global state, we can wrap our heads around it just by understanding the body of the function and the arguments being passed to it. +* **他们导致能更难理解的代码** 假设我们正在跟踪一个bug。如果这个函数不使用全局状态,我们可以 将精力集中起来,只要理解他的函数体就可以了,和传递给他的参数就可以了。 @@ -193,6 +339,8 @@ variables are bad for a variety of reasons: lines of code at three in the morning trying to find the one errant call that's setting a static variable to the wrong value. + 现在,让我们来看这个函数中间的`SomeClass::getSomeGlobalData()`这个调用。为了搞清楚其中发生了什么,我们需要查看整个代码库来看是谁访问了全局状态。在你不得不大清晨`grep`百万行代码来找出究竟是那一个错误的调用将一个静态变量设置错了之前,你是不会真正痛恨全局状态的。 + * **They encourage coupling.** The new coder on your team isn't familiar with your game's beautifully maintainable loosely coupled architecture, but he's just been given his first task: make boulders play sounds when they crash @@ -201,13 +349,17 @@ variables are bad for a variety of reasons: Unfortunately for us, the instance of our `AudioPlayer` is globally visible. So, one little `#include` later, and our new guy has compromised a carefully constructed architecture. + +* **这了促进了耦合。** 你团队的开发新手不熟悉游戏优美的松耦合架构,但是他却有了第一项任务:让石头撞在地上时发出声音。你我都知道,我们不想让物理引擎代码和*音频*代码耦合起来,但是新手只是一心想完成任务。不幸的是,我们的`AudioPlayer`这个类实例是全局可见的。所以,在一小段`#include`之后,我们的新伙伴搞乱了一个仔细构建的架构。 Without a global instance of the audio player, even if he *did* `#include` the header, he still wouldn't be able to do anything with it. That difficulty sends a clear message to him that those two modules should not know about each other and that he needs to find another way to solve his problem. *By controlling access to instances, you control coupling.* - + + 如果没有音频播放器的全局实例,即使他*确实*`#include`头文件,他也不能做任何事情。这个困难度给他传递了一个明确的消息,这两个模块不应该相互了解,他应该找另外的方式去解决这个问题。*通过控制实例的访问,你控制了耦合。* + * **They aren't concurrency-friendly.** The days of games running on a simple single-core CPU are pretty much over. Code today must at the very least *work* in a multi-threaded way even if it doesn't take full advantage of @@ -215,11 +367,16 @@ variables are bad for a variety of reasons: that every thread can see and poke at, whether or not they know what other threads are doing to it. That path leads to deadlocks, race conditions, and other hell-to-fix thread-synchronization bugs. + +* **它对并发不友好**现在在单核上运行游戏的日子已经很远了。即使他们有利用到并发的全部优势。当我们设置为全局时,我们创建了一段内存,每个线程都能够查看和修改它,不管他们时候知道其他线程正在操作它。这有可能导致死锁,条件竞争,和其他一些难以修复的线程同步的Bug。 Issues like these are enough to scare us away from declaring a global variable, and thus the Singleton pattern too, but that still doesn't tell us how we *should* design the game. How do you architect a game without global state? +上面这些问题足够吓退我们去声明一个全局变量了,同样也适用于单件模式,但是现在还是没有告诉我们该如何设计游戏。在没有全局状态的情况下,该如何构建游戏呢? + + There are some extensive answers to that question (most of this book in many ways *is* an answer to just that), but they aren't apparent or easy to come by. In the meantime, we have to get games out the door. The Singleton pattern looks @@ -227,12 +384,17 @@ like a panacea. It's in a book on object-oriented design patterns, so it *must* be architecturally sound, right? And it lets us design software the way we have been doing for years. +这个问题有几个拓展的答案(本书的绝大部分从某些方面来说就是这个),但是他们不是和明显或者简单能够得到。 +与此同时,我们需要发布我们的游戏。单件模式就像一帖万能药。他在一本关于面向对象设计模式中,所以它*肯定*是架构合理的,对吧?并且他能像之前我们开发了N年那样去设计软件。 + Unfortunately, it's more placebo than cure. If you scan the list of problems that globals cause, you'll notice that the Singleton pattern doesn't solve any of them. That's because a singleton *is* global state -- it's just encapsulated in a class. -### It solves two problems even when you just have one +不幸的是,它更多的是一种宽慰而不是解决方法。如果你浏览一边全局对象造成的问题,你会注意到单件模式没有解决任何一个。这是因为,一个单件就是全局状态——他只是被封装到了一个类中而已。 + +### It solves two problems even when you just have one 即便你只有一个问题,它却解决了两个 The word "and" in the Gang of Four's description of Singleton is a bit strange. Is this pattern a solution to one problem or two? What if we have only one of @@ -240,45 +402,60 @@ those? Ensuring a single instance is useful, but who says we want to let *everyone* poke at it? Likewise, global access is convenient, but that's true even for a class that allows multiple instances. +在四人帮的单件模式中那个“和”这个词有点奇怪。这个模式解决的是一个问题还是两个问题?如果我们只用其中的一个问题怎么办?确保一个实例是很有用的,但是谁说我们需要所有的东西都像这样?就好比,全局访问是很方便,但是允许有多个实例却是很常见的。 + The latter of those two problems, convenient access, is almost always why we turn to the Singleton pattern. Consider a logging class. Most modules in the game can benefit from being able to log diagnostic information. However, passing an instance of our `Log` class to every single function clutters the method signature and distracts from the intent of the code. +这两个问题的后者,便利的访问,是我们使用单件模式的主要原因。比如一个日志类。许多游戏中的模块都能够从日子模块中获得好处,但是, + The obvious fix is to make our `Log` class a singleton. Every function can then go straight to the class itself to get an instance. But when we do that, we inadvertently acquire a strange little restriction. All of a sudden, we can no longer create more than one logger. +很显然,修正这点就是让我们的`Log`变为一个单件。每个函数都能直接通过这个类得到这个类的实例。但是当我们这样做是,我们奇怪的得到了一个限制。突然的,我们不能够创建更多的日志器了。 + At first, this isn't a problem. We're writing only a single log file, so we only need one instance anyway. Then, deep in the development cycle, we run into trouble. Everyone on the team has been using the logger for their own diagnostics, and the log file has become a massive dumping ground. Programmers have to wade through pages of text just to find the one entry they care about. +起初,这并不是一个问题,我们只写一个日志文件,所以我们只需要一个日志实例。之后,随着开发的深入,我们陷入了麻烦。团队的每个人都使用这个日志器来记录他们自己的日志。 + We'd like to fix this by partitioning the logging into multiple files. To do this, we'll have separate loggers for different game domains: online, UI, audio, gameplay. But we can't. Not only does our `Log` class no longer allow us to create multiple instances, that design limitation is entrenched in every single call site that uses it: - Log::instance().write("Some event."); +我们可以通过将日子分割为不同的文件来修正。我们将日志分为不同的游戏区域:在线、界面、音频、游戏。但是我们不能够。不仅仅是应为我们的`Log`类不允许我们创建多个实例,还有这个模式的每个单次调用都是像如下这样使用的。 +``` +Log::instance().write("Some event."); +``` In order to make our `Log` class support multiple instantiation (like it originally did), we'll have to fix both the class itself and every line of code that mentions it. Our convenient access isn't so convenient anymore. +为了是我们的`Log`类能够支持多个初始化(想他原来的那样)。我们需要修改这个类的本身和每处调用这个类的地方。我们便利的访问也不那么便利了。 + -### Lazy initialization takes control away from you +### Lazy initialization takes control away from you 延迟初始化脱离了你的控制 In the desktop PC world of virtual memory and soft performance requirements, lazy initialization is a smart trick. Games are a different animal. Initializing @@ -288,23 +465,41 @@ control when that's going to happen. If we let it lazy-initialize itself the first time a sound plays, that could be in the middle of an action-packed part of the game, causing visibly dropped frames and stuttering gameplay. +为了满足PC游戏内存和软件效率的需求,延时实例化是一个聪明的技巧。游戏是个不同的怪兽。实例化一个系统需要花费时间:分配内存,加载资源等等。如果实例化音频系统需要花费几百毫秒,我们需要控制住何时实例化。如果我们让他在第一次播放声音的时候延时实例化,这有可能在游戏正酣的时候,导致明显的掉帧和游戏卡顿。 + Likewise, games generally need to closely control how memory is laid out in the heap to avoid fragmentation. If our audio system allocates a chunk of heap when it initializes, we want to know *when* that initialization is going to happen, so that we can control *where* in the heap that memory will live. +同样的,游戏通常需要仔细的控制内存在堆中的布局来防止分段。如果我们的音频系统在实例化是分配了内存,我们需要知道实例化发生的时间,以便让我们控制它在堆中的内存布局。 + Because of these two problems, most games I've seen don't rely on lazy initialization. Instead, they implement the Singleton pattern like this: -^code 5 +介于这两点问题,我见过的大部分游戏都不依赖延时初始化。相反,他们想这样实现单件模式。 + +``` +class FileSystem +{ +public: + static FileSystem& instance() { return instance_; } + +private: + FileSystem() {} + + static FileSystem instance_; +}; +``` That solves the lazy initialization problem, but at the expense of discarding several singleton features that *do* make it better than a raw global variable. @@ -312,6 +507,8 @@ With a static instance, we can no longer use polymorphism, and the class must be constructible at static initialization time. Nor can we free the memory that the instance is using when not needed. +这解决的延时初始化的问题,但是这也丢失了单件比一个全局变量更好的几个特性。随着一个静态实例,我们不能够使用多态了,并且这个类必须能够在静态初始化的时候构造。我们也不能够在不需要这个类的时候释放这段内存。 + Instead of creating a singleton, what we really have here is a simple static class. That isn't necessarily a bad thing, but if a static class is all you need, why not get rid of the `instance()` method @@ -319,6 +516,8 @@ entirely and use static functions instead? Calling `Foo::bar()` is simpler than `Foo::instance().bar()`, and also makes it clear that you really are dealing with static memory. +与创建单件相反,这里我们真正需要的是一个静态类。这不完全是一件坏事,如果你想要的仅仅是静态类,何不消除`instance()`这个方法而使用简单函数呢?调用`Foo::bar()`要比`Foo::instance().bar()`简单不说,还能澄清你正在使用静态内存。 + -## What We Can Do Instead +## What We Can Do Instead 有何替代 If I've accomplished my goal so far, you'll think twice before you pull Singleton out of your toolbox the next time you have a problem. But you still have a problem that needs solving. What tool *should* you pull out? Depending on what you're trying to do, I have a few options for you to consider, but first... -### See if you need the class at all +如果现在我完成了目标,在下次你遇到问题时,在你祭出单件大发是会多考虑两次。但你还有一个问题有待解决。你需要什么样的工具?这要取决于你想要做什么,我有几个建议可供参考,不过首先... + +### See if you need the class at all 看你究竟是否需要类 Many of the singleton classes I see in games are "managers" -- those nebulous classes that exist just to babysit other objects. I've seen codebases where it @@ -349,10 +554,54 @@ seems like *every* class has a manager: Monster, MonsterManager, Particle, ParticleManager, Sound, SoundManager, ManagerManager. Sometimes, for variety, they'll throw a "System" or "Engine" in there, but it's still the same idea. +游戏中的许多单件类都是"managers"——这些保姆类存在就是为了管理其他对象。我见识过一个代码库,里面好像每个类都有一个管理者:Monster, MonsterManager, Particle, +ParticleManager, Sound, SoundManager, ManagerManager。有时,为了区别,他们叫做"System'或者"Engine",却是换汤不换药。 + While caretaker classes are sometimes useful, often they just reflect unfamiliarity with OOP. Consider these two contrived classes: -^code 8 +尽管保姆类有时是有用的,通常这反应他们对OOP不熟悉。考虑这两个我构造的类: + +``` +class Bullet +{ +public: + int getX() const { return x_; } + int getY() const { return y_; } + + void setX(int x) { x_ = x; } + void setY(int y) { y_ = y; } + +private: + int x_, y_; +}; + +class BulletManager +{ +public: + Bullet* create(int x, int y) + { + Bullet* bullet = new Bullet(); + bullet->setX(x); + bullet->setY(y); + + return bullet; + } + + bool isOnScreen(Bullet& bullet) + { + return bullet.getX() >= 0 && + bullet.getX() < SCREEN_WIDTH && + bullet.getY() >= 0 && + bullet.getY() < SCREEN_HEIGHT; + } + + void move(Bullet& bullet) + { + bullet.setX(bullet.getX() + 5); + } +}; +``` Maybe this example is a bit dumb, but I've seen plenty of code that reveals a design just like this after you scrape away the crusty details. If you look at @@ -360,21 +609,47 @@ this code, it's natural to think that `BulletManager` should be a singleton. Aft all, anything that has a `Bullet` will need the manager too, and how many instances of `BulletManager` do you need? +或许这个例子有点愚蠢,如果你查看这段代码,将`BulletManager`当作单件是很自然的事情。毕竟,一个`Bullet`需要用一个东西来管理,而你需要有多个管理器呢? + The answer here is *zero*, actually. Here's how we solve the "singleton" problem for our manager class: -^code 9 +答案是*零*,实际上,我们是这样解决我们管理类的"单例"问题的: + + +``` +class Bullet +{ +public: + Bullet(int x, int y) : x_(x), y_(y) {} + + bool isOnScreen() + { + return x_ >= 0 && x_ < SCREEN_WIDTH && + y_ >= 0 && y_ < SCREEN_HEIGHT; + } + + void move() { x_ += 5; } + +private: + int x_, y_; +}; +``` There we go. No manager, no problem. Poorly designed singletons are often "helpers" that add functionality to another class. If you can, just move all of that behavior into the class it helps. After all, OOP is about letting objects take care of themselves. +就这样。没有管理器也没有问题。错误的设计单例通常会“帮助”你将功能添加到别的类中。如果可以,你只需将这些功能移动到它帮助的类中去就可以了。比较,面向对象就是让对象自己管理自己。 + Outside of managers, though, there are other problems where we'd reach to Singleton for a solution. For each of those problems, there are some alternative solutions to consider. -### To limit a class to a single instance +除了管理器,毕竟,这里还有别的问题我们需要求助单件模式去解决。对于这些问题,这里有一些额外的解决方案可供考虑。 + +### To limit a class to a single instance 限制类只有一个实例 This is one half of what the Singleton pattern gives you. As in our file system example, it can be critical to ensure there's only a single instance of a class. @@ -384,19 +659,42 @@ areas of the code or even make it private to a single class. In those cases, providing a public global point of access weakens the architecture. +这是单件模式给你解决的另外一个问题。在我们的文件系统例子中,保证这个类只有一个实例是很有必要的。但是,这不意味这我们也想提供这个实例公共的全局的访问。我们也许想要严格限制在莫一部分代码中,或者干脆将它作为一个类的私有成员。在这种情况下,提供一个全局的指针访问削弱了整体框架。 + We want a way to ensure single instantiation *without* providing global access. There are a couple of ways to accomplish this. Here's one: +我们提供一种方法来保证单个实例,并且不提供全局访问。这里有几种方法可以达到这点,下面就是一例: + -^code 6 +``` +class FileSystem +{ +public: + FileSystem() + { + assert(!instantiated_); + instantiated_ = true; + } + + ~FileSystem() { instantiated_ = false; } + +private: + static bool instantiated_; +}; + +bool FileSystem::instantiated_ = false; +``` This class allows anyone to construct it, but it will assert and fail if you try to construct more than one instance. As long as the right code creates the instance @@ -404,26 +702,33 @@ first, then we've ensured no other code can either get at that instance or create their own. The class ensures the single instantiation requirement it cares about, but it doesn't dictate how the class should be used. +这个类允许所有人创建它,但是如果你想要创建操作一个实例,它会断言并且失败。只要代码创建了第一个实例,我们保证其他代码要么得到这个实例要么创建一个自己的实例。这个类保证了它的单个实例,但是它不能保证这个类如何使用。 + The downside with this implementation is that the check to prevent multiple @@ -431,37 +736,48 @@ instantiation is only done at *runtime*. The Singleton pattern, in contrast, guarantees a single instance at compile time by the very nature of the class's structure. -### To provide convenient access to an instance +这份实现的不足之处在它只在*运行期*检测来防止多个实例。单例模式,相反的,在编译期就通过类结构自然的保证了单个实例。 + +### To provide convenient access to an instance 提供一个便利的方法访问实例 Convenient access is the main reason we reach for singletons. They make it easy to get our hands on an object we need to use in a lot of different places. That ease comes at a cost, though -- it becomes equally easy to get our hands on the object in places where we *don't* want it being used. +便利的访问是我们使用单例额主要原因。它让我们在许多不同地方得到一个对象变得简单。这种便利也有代价,——它也是的我们在不想使用的地方也可以轻松的得到这个对象。 + The general rule is that we want variables to be as narrowly scoped as possible while still getting the job done. The smaller the scope an object has, the fewer places we need to keep in our head while we're working with it. Before we take the shotgun approach of a singleton object with *global* scope, let's consider other ways our codebase can get access to an object: +通用的原则是,在保证功能的情况下将变量限制在一个狭窄的范围内。对象的作用域越小,我们需要用到它的地方就越少。在我们直接了当的通过*全局*作用域来访问一个单件对象时,让我们考察一下我们代码访问一个对象的其他方式: + * **Pass it in.** The simplest solution, and often the best, is to simply pass the object you need as an argument to the functions that need it. It's worth considering before we discard it as too cumbersome. + + * **传递进去** 最简单,通常也是最好的方法就是简单的将这个对象当作一个参数传递给需要他的函数。 Consider a function for rendering objects. In order to render, it needs access to an object that represents the graphics device and maintains the render state. It's very common to simply pass that in to all of the rendering functions, usually as a parameter named something like `context`. + + 假设一个渲染物体的函数。为了渲染,他需要访问这个物体的图形设备的表象并维持渲染状态。简单地将他们全部传递到渲染函数中是很普遍的做法,通常这个参数叫做`context`。 On the other hand, some objects don't belong in the signature of a method. For example, a function that handles AI may need to also write to a - The term for things like logging that appear scattered throughout a codebase + >The term for things like logging that appear scattered throughout a codebase is "cross-cutting concern". Handling cross-cutting concerns gracefully is a continuing architectural challenge, especially in statically typed languages. + + >描述想日志这种分散的出现在代码库的术语称为”横切关注点“。优雅的处理横切关注点是可持续架构的挑战。尤其是在静态类型语言中。 - [Aspect-oriented + >[Aspect-oriented programming](http://en.wikipedia.org/wiki/Aspect-oriented_programming) was designed to address these concerns. + >[面向方面程序设计](http://en.wikipedia.org/wiki/Aspect-oriented_programming)就是设计用来解决这些问题。 @@ -489,51 +809,105 @@ other ways our codebase can get access to an object: game code will live in these "leaf" derived classes. This means that all these classes already have access to the same thing: their `GameObject` base class. We can use that to our advantage: + + * **在基类中访问它。** 许多游戏架构有浅层次但是广泛的继承,通常只有一层继承。举个例子,你可能有一个`GameObject`基类,每个地方或者游戏物体都派生只这个类。有了这样的架构,游戏代码的绝大部分都在资额些派生类的“叶子”上。这意味着所有这些类都能访问同样的东西:他们的`GameObject`基类。我们可以利用这点: - - ^code 10 + + ``` + class GameObject + { + protected: + Log& getLog() { return log_; } + + private: + static Log& log_; + }; + + class Enemy : public GameObject + { + void doSomething() + { + getLog().write("I can log!"); + } + }; + ``` This ensures nothing outside of `GameObject` has access to its `Log` object, but every derived entity does using `getLog()`. This pattern of letting derived objects implement themselves in terms of protected methods provided to them is covered in the Subclass Sandbox chapter. + + 这保证了在`GameObject`之外没有访问`Log`对象的代码,但是每个派生类能够通过`getLog()`访问。这种让派生类在所提供的保护方法中提供实现的模式在 子类沙盒 章节中讨论. * **Get it from something already global.** The goal of removing *all* global state is admirable, but rarely practical. Most codebases will still have a couple of globally available objects, such as a single `Game` or `World` object representing the entire game state. + * **通过其他全局对象访问它。** 将*所有*全局状态都移除令人敬佩,但是不够实际。许多代码库仍然有一些全局对象,比如一个单独的`Game`或者`World`对象来代表整个游戏状态。 We can reduce the number of global classes by piggybacking on existing ones like that. Instead of making singletons out of `Log`, `FileSystem`, and `AudioPlayer`, do this: - - ^code 11 + 我们能够通过打包到一个已知的全局对象类中来减少全局对象的数量。与将`Log`,`FileSystem`,和 `AudioPlayer`变为单件不同: + + ``` + class Game + { + public: + static Game& instance() { return instance_; } + + // Functions to set log_, et. al. ... + + Log& getLog() { return *log_; } + FileSystem& getFileSystem() { return *fileSystem_; } + AudioPlayer& getAudioPlayer() { return *audioPlayer_; } + + private: + static Game instance_; + + Log *log_; + FileSystem *fileSystem_; + AudioPlayer *audioPlayer_; + }; + ``` With this, only `Game` is globally available. Functions can get to the other systems through it: - ^code 12 + 通过这点,只有`Game`是全局可见的。函数能够通过这个来访问其他系统: + ``` + Game::instance().getAudioPlayer().play(VERY_LOUD_BANG); + ``` If, later, the architecture is changed to support multiple `Game` instances @@ -542,19 +916,28 @@ other ways our codebase can get access to an object: downside with this, of course, is that more code ends up coupled to `Game` itself. If a class just needs to play sound, our example still requires it to know about the world in order to get to the audio player. - + + 如果,随后,架构会变得支持多个`Game`实例(也许是为了流或者测试目的),`Log`,`FileSystem`和 + `AudioPlayer`都不会影响。——他们甚至不知道任何不同。这个副作用,当然,就是更多的代码耦合在了`Game`当中。如果一个类只是为了播放声音,我们的例子仍然需要知道全部,以便能够得到声音播放器。 + We solve this with a hybrid solution. Code that already knows about `Game` can simply access `AudioPlayer` directly from it. For code that doesn't, we provide access to `AudioPlayer` using one of the other options described here. + + 我们通过一个混合方案解决这点。如果代码已经知道了`Game`就直接通过它来访问`AudioPlayer`。如果代码不知道,我们通过这里讨论的其他方法来访问`AudioPlayer`。 * **Get it from a Service Locator.** So far, we're assuming the global class is some regular concrete class like `Game`. Another option is to define a class whose sole reason for being is to give global access to objects. This common pattern is called a Service Locator and gets its own chapter. + + + * **通过服务定位器来访问。** 到现在位置,我们假设全局类就是像`Game`那样的具体类。另外一个选择就是定义一个类专门用来给对象做全局访问。这个模式被称之为 服务定位器并有单独的章节。 -## What's Left for Singleton +## What's Left for Singleton 剩下的问题 The question remains, where *should* we use the real Singleton pattern? Honestly, I've never used the full Gang of Four implementation in a game. To @@ -562,9 +945,12 @@ ensure single instantiation, I usually simply use a static class. If that doesn't work, I'll use a static flag to check at runtime that only one instance of the class is constructed. +我们还有一个问题,我们什么情况下使用真正的单件呢?老实说,我重来没有在游戏中使用四人帮的全部实现。为了简单原则,我一般简单的使用一个静态类。如果这不能够满足,我将会使用一个静态的标志来在运行期检查只有一个类被创建了。 + There are a couple of other chapters in this book that can also help here. The Subclass Sandbox pattern gives instances of a class access to some shared state without making it globally available. The Service -Locator pattern *does* make an object globally available, but it gives you more -flexibility with how that object is configured. \ No newline at end of file +Locator pattern *does* make an object globally available, but it gives you more flexibility with how that object is configured. + +本书的一些其他章节也会有所帮助。 沙箱模式能够提供一些共享状态的访问指针而不必全局可见。本地模式是的一个对象全局可见,但是他给你这个物体更多弹性的配置。 \ No newline at end of file From 5814bac6c98f18b196371a62db00ff38b2797f4e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A5=9E=E9=AD=94=E4=B8=80=E5=BF=B5?= <814278495@qq.com> Date: Mon, 2 Feb 2015 14:11:46 +0800 Subject: [PATCH 116/123] =?UTF-8?q?change=20=E5=8D=95=E4=BE=8B=20to=20?= =?UTF-8?q?=E5=8D=95=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 02.5-Singleton.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/02.5-Singleton.md b/02.5-Singleton.md index fc550de..1c4900a 100644 --- a/02.5-Singleton.md +++ b/02.5-Singleton.md @@ -1,4 +1,4 @@ -Singleton 单例模式 +Singleton 单件模式 ============================ This chapter is an anomaly. Every other chapter in this book shows @@ -614,7 +614,7 @@ instances of `BulletManager` do you need? The answer here is *zero*, actually. Here's how we solve the "singleton" problem for our manager class: -答案是*零*,实际上,我们是这样解决我们管理类的"单例"问题的: +答案是*零*,实际上,我们是这样解决我们管理类的"单件"问题的: ``` @@ -641,7 +641,7 @@ There we go. No manager, no problem. Poorly designed singletons are often that behavior into the class it helps. After all, OOP is about letting objects take care of themselves. -就这样。没有管理器也没有问题。错误的设计单例通常会“帮助”你将功能添加到别的类中。如果可以,你只需将这些功能移动到它帮助的类中去就可以了。比较,面向对象就是让对象自己管理自己。 +就这样。没有管理器也没有问题。错误的设计单件通常会“帮助”你将功能添加到别的类中。如果可以,你只需将这些功能移动到它帮助的类中去就可以了。比较,面向对象就是让对象自己管理自己。 Outside of managers, though, there are other problems where we'd reach to Singleton for a solution. For each of those problems, there are some alternative @@ -736,7 +736,7 @@ instantiation is only done at *runtime*. The Singleton pattern, in contrast, guarantees a single instance at compile time by the very nature of the class's structure. -这份实现的不足之处在它只在*运行期*检测来防止多个实例。单例模式,相反的,在编译期就通过类结构自然的保证了单个实例。 +这份实现的不足之处在它只在*运行期*检测来防止多个实例。单件模式,相反的,在编译期就通过类结构自然的保证了单个实例。 ### To provide convenient access to an instance 提供一个便利的方法访问实例 @@ -745,7 +745,7 @@ to get our hands on an object we need to use in a lot of different places. That ease comes at a cost, though -- it becomes equally easy to get our hands on the object in places where we *don't* want it being used. -便利的访问是我们使用单例额主要原因。它让我们在许多不同地方得到一个对象变得简单。这种便利也有代价,——它也是的我们在不想使用的地方也可以轻松的得到这个对象。 +便利的访问是我们使用单件额主要原因。它让我们在许多不同地方得到一个对象变得简单。这种便利也有代价,——它也是的我们在不想使用的地方也可以轻松的得到这个对象。 The general rule is that we want variables to be as narrowly scoped as possible while still getting the job done. The smaller the scope an object has, the fewer From 37af26474ad28e7e5dcb9620fab6ea6f5c730700 Mon Sep 17 00:00:00 2001 From: jptiancai Date: Thu, 5 Feb 2015 17:17:28 +0800 Subject: [PATCH 117/123] translate complete --- 05.2-Event Queue.md | 930 ++++++++++++++++---------------------------- 1 file changed, 345 insertions(+), 585 deletions(-) diff --git a/05.2-Event Queue.md b/05.2-Event Queue.md index a0fe84e..d31cf0d 100644 --- a/05.2-Event Queue.md +++ b/05.2-Event Queue.md @@ -1,792 +1,552 @@ 事件队列 ============================ +##目的 +对消息或事件的发送与受理进行时间上的解耦。 +##动机 +除非你生活在那些少有的几个脱离互联网的地区里,否则你很可能已经对“事件队列”有所耳闻。如果对这个词不熟悉, +那么也许“消息队列”,“事件循环”或者“消息泵”能令你想起些什么。为了让你的记忆更清晰,让我们先一起来看看这一模式的两个常见应用吧。 +在本章中我将“事件”和“消息”替换着使用,如果需要区分它们我会另外提醒大家。 +###用户图形界面的事件循环 +如果你曾从事过用户界面编程,那你肯定对事件不陌生了。每当用户与你的程序交互时:比如点击按钮,下拉菜单,或者按下一个键,操作系统都会生成一个事件。系统将这个事件对象抛给你的应用程序,你的任务就是获取到这些事件并将其与对应的自定义行为挂钩。 -## 目的 +这种应用程序风格很常见,它被视为一种程序样式:[事件驱动式编程](http://en.wikipedia.org/wiki/Event-driven_programming)。 -*发送消息或事件处理时解耦.* - -## 动机 - -除非你生活在岩石下,这样的话就无法访问互联网,不过你可能已经听说过"事件队列" .如果没有听说过,也许“消息队列”或“事件循环”或“消息泵”听起来会耳熟一些. -为了刷新你的记忆,让我们看一看几个常见的表现模式。 - -> 注解 - -> 在大多数的章节中,我使用“事件”和“消息”互换. 关于两者的区别,我会指出来. - - -### 图形用户界面的事件循环 - -如果你做过任何用户界面程序, 那么你非常熟悉*事件*. 每次用户与程序交互 --单击按钮,下拉菜单,或按键 -- 操作系统就会生成一个事件. 它会在你的应用程序抛出该对象, 你的工作就是抓住它并找出一些你感兴趣的行为. - -> 注解 - -> 这个应用程序风格非常普遍,被认为是一个范例:*[event-driven programming](http://en.wikipedia.org/wiki/Event-driven_programming)* - -为了收到这些信件,你的代码是一个来自*事件循环*中内部的某个地方. 它看起来大致这样: +为了能收到这些事件,在你代码的底层设施中必然有个事件循环。它的大致结构如下: +```c++ +while (running){ + Event event = getNextEvent(); + // Handle event...} ``` -while (running) -{ - Event event = getNextEvent(); - // Handle event... -} -``` - -调用`getNextEvent()`得到用户输入到应用程序中未加工的事件.你将其传递给事件处理程序,魔法一般,你的应用程序仿佛有生命了. 有趣的部分是程序想要获取它的时候,就会*拉*出事件.当用户拔掉外围设备时,操作系统不会立即跳转到扯程序的某些代码的地方. - -> 注解 - -> 与此相反的是,*中断*操作系统工作.当中断发生时,无论你的程序做什么,操作系统会停止,强制性跳转到中断处理器.这种突然性解释了为什么中断难以处理. - -这意味着当用户输入进来的时,它需要去某个地方,这样操作系统就不会丢失它,当设备驱动器报告有输入,而且何时你的程序会调用`getNextEvent()` . 这个"某处"就是一个*队列*. - -![一个事件队列,操作系统移动,向下,向上,点击出列和点击事件,getNextEvent()函数出列](res/event-queue-loop.png) - -当用户输入时, 操作系统将其添加到队列的未处理的事件. 当你调用`getNextEvent()`, 会从队列中拉出最早进入的事件然后交到你的程序中. - -### 中央事件总线 -大部分游戏不是如此事件驱动的,但是游戏程序有它自己的事件队列作为它神经系统的主干是很常见的.你会经常听到“中央”、“全局”,或“重点”用来描述它.被用于游戏系统之间高水平通讯,以此保持解耦. +对`getNextEvent()`的调用为你的应用程序拽来了一大把未经处理的用户输入。你将它导向一个事件句柄,于是你的应用程序魔法般地活了起来。有趣的地方在于应用程序会在它需要时才引入事件,操作系统并不在用户操作外设时就立即跳转入你的程序内部。 -> 注解 +类似地,操作系统的中断也是这样运转的。当中断发生时,操作系统终止你应用程序的一切运转,并强制让程序跳转入一个中断处理句柄中。这样粗野的做法也正是中断之所以难处理的缘故。 -> 如果你想知道*为什么*它们不是事件驱动,点击打开[游戏循环](03.2-Game Loop.md)章节. +这意味着当用户的输入到来时,必须要有个位置安置这些输入,以防它们在硬件报告输入时与你的应用程序调用`getNextEvent()`期间被操作系统漏掉。这里所谓的“安置位置”正是一个队列。 -特定游戏事件后,游戏有一个教程系统显示帮助框. 例如,玩家第一次征服野兽, 显示一个小气球,说,“按X捡取战利品!" +当用户输入到来时,操作系统将它添加到一个未处理事件队列中。当你调用`getNextEvent()`时,函数会将最早的事件取出并将它交给你的应用程序。 -> 注解 +###中心事件总线 +多数游戏的事件驱动机制并非如此,当然一个游戏维护它自身的事件队列作为其神经系统的主心骨这是很常见的。你将常常听到“中心式“,“全局的”,“主要的”这类对它的描述。它被用于那些希望保持模块间低耦合的游戏,起到游戏内部高级通讯模块的作用。 -> 优雅的实现教程系统有一些痛苦,而且大部分的玩家仅花费一点游戏中的时间来使用它,所以会感觉不值得去努力.但对于玩家来说,它们使用本教程一点,进入你的游戏是无价的. +如果你想知道为何他们不是事件驱动的,可以打开[Game Loop](http://gameprogrammingpatterns.com/game-loop.html)这一章节看看。 -你的游戏和战斗的代码很可能足够复杂. 做的最后一件事就是检查一堆触发教程. 相反,你可以有一个中央事件队列.每次你杀一个敌人,任何游戏系统可以发送战斗代码,添加一个“敌人死亡”事件. +假设你的游戏有一个新手教程,在完成指定的游戏内事件后弹出帮助框。例如,玩家首次击败一个蠢怪物,你希望弹出一个小气球框上面写着“按下X以拾取战利品”。 -同样,任何游戏系统可以从队列中*接收*事件. 教程引擎自己注册队列,并表明它希望接收“敌人死亡”事件. 这样一来,敌人死的信息使其从作战系统的教程引擎中结束,两个没有直接意识到彼此. +新手教程系统往往是优雅继承设计的硬伤,而且多数玩家仅会在系统帮助上花去极少的时间,于是这看起来吃力不讨好。然而这短暂的引导时间却是将玩家导入你游戏的宝贵机会。 -> 注解 +你的游戏玩法以及战斗相关的代码会很复杂。最后你想做的就是往这些复杂的代码里塞入一系列检查以用于触发引导。当然你可以用一个中心事件队列来取而代之。游戏的任何一个系统都可以向它发送事件,于是战斗模块的代码可以在你每次消灭一个敌人后向该队列添加一个“敌人死亡”的事件。 -> 这个模型会在你的共享空间实体可以发布信息,通过类似于于一种人工智能领域获得通知的[黑板系统](http://en.wikipedia.org/wiki/Blackboard_system) +相似地,游戏的任一系统都能从队列中收到事件。新手引导模块向事件队列注册自身,并向其声明该模块希望接收“敌人死亡”事件。借此,敌人死亡的消息可以在战斗系统和新手引导模块不进行直接交互的情况下在两者之间传递。 -![一个中心事件队列读取和写入的战斗和教程的代码](res/event-queue-central.png) +这个共享空间能够让实体向其发送消息并能收到它的通知,这一模式与AI领域的平[blackboard systems](http://en.wikipedia.org/wiki/Blackboard_system)有相似之处。 +我本想将此作为本章后续的一个例子,但实际上我并不对大型全局系统很感兴趣。事件队列所负责的通讯并不一定要横跨整个游戏引擎,它也可以仅在一个类或一定范围内发挥作用。 -我考虑使用这个作为其他章节的例子, 但我不是一个庞大系统的热衷者.事件队列不必为整个游戏引擎进行沟通. 它们可以作为一个有用的单独类或域. +###说些啥好呢 +所以来说说别的,让我们往游戏中加入音乐。人类是强视觉化的动物,而听觉则将我们与自身情感以及对物理空间的知觉深刻地联系在一起。恰当的回音模拟可以让漆黑的屏幕有巨大洞穴的感觉,而一段时机恰当的抒情小提琴旋律会拨动你的心弦令你产生共鸣而随之轻声哼唱。 -### Say what? +为了让我们的游戏在音乐方面有突出的表现,我们从最简易的方法入手来看看它是如何运作的。我们将向游戏中添加一个小的“音效引擎”,它包含根据标识和音量来播放音乐的API: -So, instead, let's add sound to our game. Humans are mainly visual animals, but -hearing is deeply connected to our emotions and our sense of physical space. The -right simulated echo can make a black screen feel like an enormous cavern, and a -well-timed violin adagio can make your heartstrings hum in sympathetic -resonance. +由于我总是回避[Singleton](http://gameprogrammingpatterns.com/singleton.html)模式——这是一种可行的方案,好比一台机箱只配一副喇叭那样。我将采取一个更简单的方法:仅仅将方法声明为静态: -To get our game wound for sound, we'll start with the simplest possible approach -and see how it goes. We'll add a little "audio -engine" that has an API for playing a sound given an identifier and a -volume: - - - -^code sync-api - -It's responsible for loading the appropriate sound resource, finding an -available channel to play it on, and starting it up. This chapter isn't about -some platform's real audio API, so I'll conjure one up that we can presume is -implemented elsewhere. Using it, we write our method like so: - -^code sync-impl - -We check that in, create a few sound files, and start sprinkling `playSound()` -calls through our codebase like some magical audio fairy. For example, in our UI -code, we play a little bloop when the selected menu item changes: - -^code menu-bloop - -After doing this, we notice that sometimes when you switch menu items, the whole -screen freezes for a few frames. We've hit our first issue: - - * **Problem 1: The API blocks the caller until the audio engine has completely - processed the request.** - -Our `playSound()` method is *synchronous* -- it doesn't return back to the -caller until bloops are coming out of the speakers. If a sound file has to be -loaded from disc first, that may take a while. In the meantime, the rest of the -game is frozen. - -Ignoring that for now, we move on. In the AI code, we add a call to let out a -wail of anguish when an enemy takes damage from the player. Nothing warms a -gamer's heart like inflicting simulated pain on a virtual living being. +```c++ +class Audio{public: + static void playSound(SoundId id, int volume);}; +``` -It works, but sometimes when the hero does a mighty attack, it hits two enemies -in the exact same frame. That causes the game to play the wail sound twice -simultaneously. If you know anything about audio, -you know mixing multiple sounds together sums their waveforms. When those are -the *same* waveform, it's the same as *one* sound played *twice as loud*. It's -jarringly loud. +这个类要做的是,加载恰当的声音资源,找到可用的声道来提供播放,并开始将它播放出来。本文与具体平台的音效API无关,所以我任意采用一个,你可以假设它适用于任何平台。借此我们的方法可以实现如下: - +```c++ +class Menu{public: + void onSelect(int index) + { + Audio::playSound(SOUND_BLOOP, VOL_MAX); + // Other stuff... + }}; +``` -We have a related problem in boss fights when piles of minions are running -around causing mayhem. The hardware can only play so many sounds at one time. -When we go over that limit, sounds get ignored or cut off. +在此之后,我们注意到有时切换菜单项时,整个屏幕会卡顿几帧,这便触及了我们的第一个话题: -To handle these issues, we need to look at the entire *set* of sound calls to -aggregate and prioritize them. Unfortunately, our audio API handles each -`playSound()` call independently. It sees requests through a pinhole, one at a -time. +问题1:在音效引擎完全处理完播放请求前,API的调用一直阻塞着调用者。 - * **Problem 2: Requests cannot be processed in aggregate.** +我们的`playSound()`方法是同步执行的:它只有在音效被完全播放出来后才会返回至调用者的代码。假如一个声音文件需要先从磁盘中加载,那么这次调用就要花去一些时间。此时游戏的其他部分便都卡住了。 -These problems seem like mere annoyances compared to the next issue that falls -in our lap. By now, we've strewn `playSound()` calls throughout the codebase in -lots of different game systems. But our game engine is running on modern -multi-core hardware. To take advantage of those cores, we distribute those -systems on different threads -- rendering on one, AI on another, etc. +现在我们暂时不考虑它,继续往下看。在人工智能代码中,我们增加一个调用可以让玩家攻击敌人造成伤害时发出痛苦的哀号声。 没有比模拟生命遭受伤害更能温暖一个玩家的心了。 -Since our API is synchronous, it runs on the *caller's* thread. When we call it -from different game systems, we're hitting our API concurrently from multiple -threads. Look at that sample code. See any thread synchronization? Me neither. +它会执行,但有时同一帧中,英雄猛烈攻击两个敌人的情况发生。这就引起游戏同时发出两次哀号声。如果你了解一些音效知识,那你就会知道多个声音混合在一起会叠加它们的声波。也就是说,当遇到*相同*的声波时,声音听起来和一个声音一样,但声量会大两倍。 -This is particularly egregious because we intended to have a *separate* thread -for audio. It's just sitting there totally idle while these other threads are -busy stepping all over each other and breaking things. - * **Problem 3: Requests are processed on the wrong thread.** +在[亨利海茨沃斯大冒险](http://en.wikipedia.org/wiki/Henry_Hatsworth_in_the_Puzzling_Adventure)游戏中偶然遇到该情况。和我们刚才的解决方案是类似的。 -The common theme to these problems is that the audio engine interprets a call to -`playSound()` to mean, "Drop everything and play the sound right now!" -*Immediacy* is the problem. Other game systems call `playSound()` at *their* -convenience, but not necessarily when it's convenient for the audio engine to -handle that request. To fix that, we'll decouple *receiving* a request from -*processing* it. +和boss战斗中,有许多小喽啰跑来跑去会引起冲突,也会遇到相关问题。硬件一次只能播放这么多声音。当我们超过那个临界值以后,声音听起来要么没有要么会中断。 -## The Pattern +为了处理这些问题,我们需要观察整个的声音集合,并加以汇总和区分。不幸的是,我们的声音API 每次单独处理一个`playSound()`函数。看起来像是请求一次一个地穿过针孔。 -A **queue** stores a series of **notifications or requests** in first-in, -first-out order. Sending a notification **enqueues the request and returns**. -The request processor then **processes items from the queue** at a later time. -Requests can be **handled directly** or **routed to interested parties**. This -**decouples the sender from the receiver** both **statically** and **in time**. + * **问题2:不能一起处理请求** -## When to Use It +跟我们遇到的下个问题相比有一点烦恼.目前,代码库中在许多不同的游戏系统中到处调用`playSound()`函数.但是我们的游戏引擎运行在现代多核硬件上面.为了充分利用上多核,我们分配它们在不同的线程中--一个渲染,另一个执行人工智能,等等. -If you only want to decouple *who* receives a message from its sender, patterns -like Observer and Command -will take care of this with less complexity. You only -need a queue when you want to decouple something *in time*. +由于我们的API是同步的,会打开*调用者的*线程. 从不同的游戏系统中调用它时,会多线程同步的调用API.看示例代码.看见任何的线程同步了吗?反正我没有看见. - +这些问题的共同点是声音引擎调用`playSound()`函数的意思是"放下所有事情,马上播放音乐!"*马上处理*就是问题.其他游戏系统在*它们*合适的时候调用`playSound()`函数,而声音引擎不是必须要处理这个需求.为了修复这一情况,我们会在处理*接受*请求中解耦. -I think of it in terms of pushing and pulling. You have some code A that wants -another chunk B to do some work. The natural way for A to initiate that is by -*pushing* the request to B. +## (事件队列)模式 -Meanwhile, the natural way for B to process that request is by *pulling* it in -at a convenient time in *its* run cycle. When you have a push model on one end -and a pull model on the other, you need a buffer between them. That's what a -queue provides that simpler decoupling patterns don't. +**队列**按照先进先出的顺序存储一串**通知或者请求**.发送一个**请求入列然后返回**通知.请求处理器稍后会**从队列中处理该项目**. +请求会**直接处理掉**或者**转交给对它感兴趣的部分**.**静态**且**及时**的**解耦接受者和发送者** -Queues give control to the code that pulls from it -- the receiver can delay -processing, aggregate requests, or discard them entirely. But queues do this by -taking control *away* from the sender. All the sender can do is throw a request on the -queue and hope for the best. This makes queues a poor fit when the sender needs -a response. +## 使用情境 -## Keep in Mind +如果你只想对*谁*从发送者接受信息解耦,模式类似于[观察者](observer.html)和[命令](command.html),减少复杂性.想要*及时*解耦某事的时候,只需要一个队列即可. -Unlike some more modest patterns in this book, event queues are complex and tend -to have a wide-reaching effect on the architecture of our games. That means -you'll want to think hard about how -- or if -- you use one. +最近的每章节中我都有提到这个模式,但是它是值得强调的.复杂性会让你慢下来,所以遇到简洁的时候会是一个非常宝贵的资源. -### A central event queue is a global variable +按照推拉的方式思考.代码A打算另一个代码块B做一些事情.自然的方式是通过*推*给请求给B来让A初始化. -One common use of this pattern is for a sort of Grand Central Station that all -parts of the game can route messages through. It's a powerful piece of -infrastructure, but *powerful* doesn't always mean *good*. +同时,对B的自然方式是通过在*它们*运行周期中方便的时候*拉*处理请求.当你在一端推此模型和另一端拉此模型,在两者之间需要一个缓冲.这就是队列能提供的简单解耦模型. +队列会控制被拉进来的代码--接受者会延迟处理,集合请求或者全部废除.但是队列把控制权从发送者*撤离*.全部的发送者希望给队列扔一个请求.发送者需要相应的时候,会让队列响应不是很好. -It took a while, but most of us learned the hard way that global variables are -bad. When you have a piece of state that any part of the program can poke at, -all sorts of subtle interdependencies creep in. This pattern wraps that state in -a nice little protocol, but it's still a global, with all of the danger that -entails. +## 使用须知 -### The state of the world can change under you +不像本书中其他更温和的模式,事件队列会更复杂一些和让你对游戏框架有了广泛深远的影响.也就意味着你会弄明白它如何--如果的话--你使用它. -Say some AI code posts an "entity died" event to a queue when a virtual minion -shuffles off its mortal coil. That event hangs out in the queue for who knows -how many frames until it eventually works its way to the front and gets -processed. +### 中心事件队列是个全局变量 -Meanwhile, the experience system wants to track the heroine's body count and -reward her for her grisly efficiency. It receives each "entity died" event -and determines the kind of entity slain and the difficulty of the kill so it -can dish out an appropriate reward. +该模式普遍的作用是中央车站,游戏的所有部分可以传递消息.它是游戏中强大的结构,但是*强大*通常不意味着*不错*. -That requires various pieces of state in the world. We need the entity that died -so we can see how tough it was. We may want to inspect its surroundings to see -what other obstacles or minions were nearby. But if the event isn't received -until later, that stuff may be gone. The entity may have been deallocated, and -other nearby foes may have wandered off. +需要花费一些时间,但是我们大部分会认为全局变量是不好的.当你有程序任何部分的状态时,各种各种细小部分不知不觉的互相依赖.模式封装这些状态成为一种不错的饿小协议,但仍然是全局性的,需要伴有危险性. -When you receive an event, you have to be careful not to assume the *current* -state of the world reflects how the world was *when the event was raised*. This -means queued events tend to be more data heavy than events in synchronous systems. With -the latter, the notification can say "something happened" and the receiver -can look around for the details. With a queue, those ephemeral details must be -captured when the event is sent so they can be used later. +### 游戏世界的状态任你掌控 -### You can get stuck in feedback loops +当一个虚拟宠物摆脱他的烦恼时,人工智能代码会布置一种"实体死亡"事件给队列.这是事件不知多少帧在队列中闲置,直到最终调到前面得到处理工作起来. -All event and message systems have to worry about cycles: +与此同时,经验系统想要记录女英雄身体数量和奖励它可怕的效率.它会收到每个"实体死亡"事件和决定某种的实体死亡,根据杀死难度,来分发合适的奖励. - 1. A sends an event. - 2. B receives it and responds by sending an event. - 3. That event happens to be one that A cares about, so it receives it. In - response, it sends an event... - 5. Go to 2. +世界需要不同种类的状态.我们需要实体死亡.所以我们能看见它是多么的粗糙.我们可能想要检查周围,看看附近其他的障碍或宠物.但如果事件到后来没有被接收到,那么物品会消失.实体可能会解除分配,其他附近的敌人也会分散. -When your messaging system is *synchronous*, you find cycles quickly -- they -overflow the stack and crash your game. With a queue, the asynchrony unwinds the -stack, so the game may keep running even though spurious events are sloshing back and forth in there. A common rule to avoid this -is to avoid *sending* events from within code that's *handling* one. +当你接受一个事件,你会非常小心不要假设*当前*世界的状态怎样反射的世界是*什么时候事件会发生*.这就意味着队列事件视图比同步系统中的事件更多沉重的数据.稍后,通知会说"某事发生了"和接受者四周看看细节.对于队列,这些细节当事件发送稍后会被用到的必须要捕捉. - + 1. A发送一个事件. + 2. B 接收它,之后发送一个响应事件. + 3. 事件发生在A关心的地方,所以接收它.A也会发送一个响应事件... + 5. 见2. -## Sample Code +你的消息系统是*同步的*,你会发现周期非常快--它们会栈溢出造成游戏崩溃.对于队列来说,异步的放开栈处理,即使假的事件会前前后后冲击,但游戏会依然运行.一个通常的规律来避免这些避免*发送*事件的代码来*处理*. +在事件系统中使用一个很小的调试日志也会是一个不错的主意. -We've already seen some code. It's not perfect, but it has the right basic -functionality -- the public API we want and the right low-level audio calls. All -that's left for us to do now is fix its problems. +## 示例 -The first is that our API *blocks*. When a piece of code plays a sound, it can't -do anything else until `playSound()` finishes loading the resource and actually -starts making the speaker wiggle. +我们已经见到一些代码.不是很完美,但是有基本的正确功能-- 有我们想要的公用API和正确的低级别声音调用.现在剩下我们做的事情就是要修复这些问题. -We want to defer that work until later so that `playSound()` can return quickly. -To do that, we need to *reify* the request to play a sound. We need a little -structure that stores the details of a pending request so we can keep it around -until later. +首先我们的API会*阻塞*.当一段代码播放声音时,不可以做任何事情,直到`playSound()`函数加载完资源后,实际上会让扬声器响动. +我们想推迟工作这样`playSound()`可以快速返回.为了做到这些,我们需要*具体化*需求来播放声音.我们需要一些结构来存储等待期间的请求.这样稍后可以让他们保持活动. -^code play-message +```c++ +struct PlayMessage +{ + SoundId id; + int volume; +}; +``` -Next, we need to give `Audio` some storage space to keep track of these pending -play messages. Now, your algorithms professor might -tell you to use some exciting data structure here like a [Fibonacci -heap](http://en.wikipedia.org/wiki/Fibonacci_heap) or a [skip -list](http://en.wikipedia.org/wiki/Skip_list), or, hell, at least a *linked* -list. But in practice, the best way to store a bunch of homogenous things is -almost always a plain old array: +接下来,我们需要给`音频`一些空间好让它可以追踪这些播放的消息.现在,你的算法老师可能会告诉你用一些令人兴奋的数据结构.比如[斐波那契](http://en.wikipedia.org/wiki/Fibonacci_heap)或者[跳跃列表](http://en.wikipedia.org/wiki/Skip_list).实在不行,至少*链表*也行.但实践中,存储一群同类视图,最佳方式是,几乎通常的做法是简单的数组: - * No dynamic allocation. + * 无动态分配. - * No memory overhead for bookkeeping information or pointers. + * 没有为记录信息的存储开销或指针. - * Cache-friendly contiguous memory usage. + * 可缓存的连续存储空间. - +我们这样做: -So let's do that: +```c++ +class Audio +{ +public: + static void init() + { + numPending_ = 0; + } + + // Other stuff... +private: + static const int MAX_PENDING = 16; + + static PlayMessage pending_[MAX_PENDING]; + static int numPending_; +}; +``` -^code pending-array +调节数组的大小来覆盖我们最坏情况.为了播放声音,我们简单的在结束的位置放置一个新的消息: -We can tune the array size to cover our worst case. To play a sound, we simply -slot a new message in there at the end: +```c++ +void Audio::playSound(SoundId id, int volume) +{ + assert(numPending_ < MAX_PENDING); -^code array-play + pending_[numPending_].id = id; + pending_[numPending_].volume = volume; + numPending_++; +} +``` -This lets `playSound()` return almost instantly, but we do still have to play -the sound, of course. That code needs to go somewhere, and that somewhere is an -`update()` method: +让 `playSound()`函数几乎马上返回,但仍然需要播放音乐,当然,这段代码需要在某处运行,而且是一个`update()`方法: -^code array-update - - +正如名字表明的一样,这是[更新方法](update-method.html)模式 -Now, we need to call that from somewhere convenient. What "convenient" means -depends on your game. It may mean calling it from the main game loop or from a dedicated audio -thread. +现在,我们需要在某处适时的调用它,*适时*意味着它依赖游戏.它在主要的[游戏循环](game-loop.html)或者一个专用的声音线程调用. -This works fine, but it does presume we can process *every* sound request in a -single call to `update()`. If you're doing something like processing a request -asynchronously after its sound resource is loaded, that won't work. For -`update()` to work on one request at a time, it needs to be able to pull -requests out of the buffer while leaving the rest. In other words, we need an -actual queue. +它运行的很好,但很难推测可以单独调用`update()`函数,执行*每一个*声音请求. 如果你做一些类似于声音资源加载后,异步处理请求的事情,它就不会运行.对于`update()`函数一次运行在一个请求上,它需要从剩下的缓冲区中拉出请求.换句话说,我们需要一个真实的队列. -### A ring buffer +### 环状缓冲区 -There are a bunch of ways to implement queues, but my favorite is called a *ring -buffer*. It preserves everything that's great about arrays while letting us -incrementally remove items from the front of the queue. +有很多方法可以实现队列,但我最喜欢的是*环状缓冲区*它用数组来保存所有的事情.可以让我们对前面的队列递增的移动元素. -Now, I know what you're thinking. If we remove items from the beginning of the -array, don't we have to shift all of the remaining items over? Isn't that slow? +现在,我知道你在想什么.如果我们从数组的开始移动元素,难道不会移动剩下所有的元素吗?不会很慢吗? -This is why they made us learn linked lists -- you can remove nodes from them -without having to shift things around. Well, it turns out you can implement a -queue without any shifting in an array too. I'll walk you through it, but first -let's get precise on some terms: +这是为什么让我们学习链表的原因-- 你可以移动节点,但没有移动周围的任何元素.很好,这表明你可以在数组中实现一个队列也没有移动周围的任何元素.我会带你了解它,但首先让我们明确一些术语: - * The **head** of the queue is where requests are *read* from. The head is the - oldest pending request. + * 队列的**头部**是请求*读取*的地方.头部中存储的是最老的请求. - * The **tail** is the other end. It's the slot in the array where the next - enqueued request will be *written*. Note that it's just *past* the end of - the queue. You can think of it as a half-open range, if that helps. + * 队列的**尾巴**是另一端. 是下一个排队请求*写入*的位置.注意仅仅是*越过*队列的结束.如果有帮助的话,你可以认为它相当于一个半开的范围. -Since `playSound()` appends new requests at the end of the array, the head -starts at element zero and the tail grows to the right. +由于`playSound()`会在数组的结束追加新的需求,头部下标以0开始, 向右增长. An array of events. The head points to the first element, and the tail grows to the right. -Let's code that up. First, we'll tweak our fields a bit to make these two -markers explicit in the class: - -^code head-tail +让代码来展示.首先,我们在类中清楚地声明字段,两个清楚的标志: -In the implementation of `playSound()`, `numPending_` has been replaced with -`tail_`, but otherwise it's the same: +```c++ +class Audio +{ +public: + static void init() + { + head_ = 0; + tail_ = 0; + } + + // Methods... +private: + static int head_; + static int tail_; + + // Array... +}; +``` -^code tail-play +在`playSound()`函数实现中, `numPending_` 被替换成 `tail_`, 其他地方是一样的: -The more interesting change is in `update()`: +```c++ +void Audio::playSound(SoundId id, int volume) +{ + assert(tail_ < MAX_PENDING); -^code tail-update + // Add to the end of the list. + pending_[tail_].id = id; + pending_[tail_].volume = volume; + tail_++; +} +``` -We process the request at the head and then discard it by advancing the head -pointer to the right. We detect an empty queue by -seeing if there's any distance between the head and tail. +更有趣的变化在 `update()`函数: - + head_++; +} +``` -Now we've got a queue -- we can add to the end and remove from the front. -There's an obvious problem, though. As we run requests through the queue, the -head and tail keep crawling to the right. Eventually, `tail_` hits the end -of the array, and party time is over. This is where it -gets clever. +我们会处理队列头部,通过移动头指针来废弃它。通过观察头到尾部是否有任何距离来检测空序列。 - +你想要派对时间结束吗?不,你不想。 The same array as before but now the head is moving towards the right, leaving available cells on the left. -Notice that while the tail is creeping forward, the *head* is too. That means -we've got array elements at the *beginning* of the array that aren't being used -anymore. So what we do is wrap the tail back around to the beginning of the -array when it runs off the end. That's why it's called a *ring* buffer -- it acts -like a circular array of cells. +注意尾部一直向前移动,*头部*也是。这就意味着得到的数组*开始*元素就不能再使用了。当移动到最后我们要做的就是把尾部到绕回到头部。这就是为什么叫做*环状*缓冲区--它扮演类似一个圆形细胞阵列。 The array wraps around and now the head can circle back to the beginning. -Implementing that is remarkably easy. When we enqueue an item, we just need to -make sure the tail wraps around to the beginning of the array when it reaches -the end: - -^code ring-play - -Replacing `tail_++` with an increment modulo the array size wraps the tail back -around. The other change is the assertion. We need to ensure the queue doesn't -overflow. As long as there are fewer than `MAX_PENDING` requests in the queue, -there will be a little gap of unused cells between the head and the tail. If the -queue fills up, those will be gone and, like some weird backwards Ouroboros, the -tail will collide with the head and start overwriting it. The assertion ensures -that this doesn't happen. - -In `update()`, we wrap the head around too: - -^code ring-update - -There you go -- a queue with no dynamic allocation, -no copying elements around, and the cache-friendliness of a simple array. +实现它是非常容易。当我们入列一个项目,仅需要确认到达底部时绕回到数组的开始: - - -### Aggregating requests - -Now that we've got a queue in place, we can move onto the other problems. The -first is that multiple requests to play the same sound end up too loud. Since we -know which requests are waiting to be processed now, all we need to do is merge -a request if it matches an already pending one: - -^code drop-dupe-play - -When we get two requests to play the same sound, we collapse them to a single -request for whichever is loudest. This "aggregation" is pretty rudimentary, but -we could use the same idea to do more interesting batching. - -Note that we're merging when the request is *enqueued*, not when it's -*processed*. That's easier on our queue since we don't waste slots on redundant -requests that will end up being collapsed later. It's also simpler to implement. - -It does, however, put the processing burden on the caller. A call to -`playSound()` will walk the entire queue before it returns, which could be slow if the queue is large. It may make more sense to -aggregate in `update()` instead. - - + // Add to the end of the list. + pending_[tail_].id = id; + pending_[tail_].volume = volume; + tail_ = (tail_ + 1) % MAX_PENDING; +} +``` -There's something important to keep in mind here. The window of "simultaneous" -requests that we can aggregate is only as big as the queue. If we process -requests more quickly and the queue size stays small, then we'll have fewer -opportunities to batch things together. Likewise, if processing lags behind and -the queue gets full, we'll find more things to collapse. +用增量模数组的数组大小,尾部绕回来代替`tail_++`。其他改变的额地方时断言。我们需要保证队列不能溢出。一旦出现大于`MAX_PENDING`队列请求时,就会出现头部到位之间的未使用单元的间隙。如果队列填补进来,那它就会消失。像一些奇怪的倒退毒蛇,尾巴会和头部冲突进而开始覆盖掉它。声明保证了该情况不会发生。 -This pattern insulates the requester from knowing when the request gets -processed, but when you treat the entire queue as a live data structure to be -played with, then lag between making a request and processing it can visibly -affect behavior. Make sure you're OK with that before doing this. +在`update()`函数中,我们同样对头部做了封装: -### Spanning threads +```c++ +void Audio::update() +{ + // If there are no pending requests, do nothing. + if (head_ == tail_) return; -Finally, the most pernicious problem. With our synchronous audio API, whatever -thread called `playSound()` was the thread that processed the request. That's -often not what we want. + ResourceId resource = loadSound(pending_[head_].id); + int channel = findOpenChannel(); + if (channel == -1) return; + startSound(resource, channel, pending_[head_].volume); -On today's multi-core hardware, you need more than -one thread if you want to get the most out of your chip. There are infinite ways -to distribute code across threads, but a common strategy is to move each domain -of the game onto its own thread -- audio, rendering, AI, etc. + head_ = (head_ + 1) % MAX_PENDING; +} +``` - +### 汇总请求 -We're in good shape to do that now that we have three critical pieces: +现在我们已经有了一个队列, 可以移到其他的问题上。第一个是多个请求要播放相同的音乐会很大声。原因我们知道,请求正等待着处理,我们需要做的是如果匹配到一个已经等待的请求,就合并它: - 1. The code for requesting a sound is decoupled from the code that plays it. +```c++ +void Audio::playSound(SoundId id, int volume) +{ + // Walk the pending requests. + for (int i = head_; i != tail_; + i = (i + 1) % MAX_PENDING) + { + if (pending_[i].id == id) + { + // Use the larger of the two volumes. + pending_[i].volume = max(volume, pending_[i].volume); + + // Don't need to enqueue. + return; + } + } + + // Previous code... +} +``` +当我们得到两个请求播放相同的音乐时,拆散他们为一个单独的请求,按两者中声音最大为准。“汇总”是相当初步的,但我们可以用同样的想法批量处理做更多有趣的事情。 - 2. We have a queue for marshalling between the two. +注意当请求*入列*时才合并它,而不是*处理*时。对于队列来说简单的多,因为不会浪费在多余的请求上,而导致稍后的崩溃结束。非常简单的实现它。 - 3. The queue is encapsulated from the rest of the program. +地确很容易实现,但是,会给调用者增加处理负担。调用`playSound()`返回之前会遍历全部的队列,一旦队列非常大,就会很慢。可能使用`update()`函数汇总请求会更有意义。 -All that's left is to make the methods that modify the queue -- `playSound()` -and `update()` -- thread-safe. Normally, I'd whip up some concrete code to do -that, but since this is a book about architecture, I don't want to get mired in -the details of any specific API or locking mechanism. +另一种避免*O(n)* 扫描成本的方式是用一个不同的数据结构,如果我们对`SoundId`使用哈希表,之后就可以快速检查重复。 -At a high level, all we need to do is ensure that the queue isn't modified -concurrently. Since `playSound()` does a very small amount of work -- basically -just assigning a few fields -- it can lock without blocking processing for long. -In `update()`, we wait on something like a condition variable so that we don't -burn CPU cycles until there's a request to process. +这里有一些重要的事情要记住。我们可以汇总“同步发生”的窗口请求只和队列一般大小。如果我们更快的处理请求,队列尺寸保持很小,那么我们有较少的机会可以一起批量处理请求。同样,如果处理请求滞后,队列充满,我们将会发现更多的崩溃事情。 -## Design Decisions +这种模式从知道何时会处理请求时,隔离请求。但是当你把整个队列作为一个动态的数据结构去操作时,提出请求和处理请求之间会发生滞后。它可以明显影响行为。所以,确认这么做之前你做好了准备。 -Many games use event queues as a key part of their communication structure, and -you can spend a ton of time designing all sorts of complex routing and filtering -for messages. But before you go off and build something like the Los Angeles -telephone switchboard, I encourage you to start simple. Here's a few starter -questions to consider: +### 跨越线程 -### What goes in the queue? +最后,最严重的问题。出现在同步音频API,无论什么线程调用`playSound()`函数,线程就会处理该请求。这通常不是我们想要的。 -I've used "event" and "message" interchangeably so far because it mostly doesn't -matter. You get the same decoupling and aggregation abilities regardless of what -you're stuffing in the queue, but there are some conceptual differences. +在今天的多核硬件时代,如果你想最大利用你的芯片,需要不止一个线程。有无穷种方式可以分发代码跨越线程,但是一个普遍的策略是在它自己的线程移动游戏的各个领域--声音,渲染,人工智能等等。 - * **If you queue events:** - An "event" or "notification" describes something that *already* happened, - like "monster died". You queue it so that other objects can *respond* to the - event, sort of like an asynchronous Observer pattern. +一行代码一次只能运行在单核上面。如果你不使用线程,即使你用正时兴的异步编程,这是发挥CPU的能力的一小部分。最好的你做的是保持一个单核忙碌。 - * *You are likely to allow multiple listeners.* Since the queue contains - things that already happened, the sender probably doesn't care who - receives it. From its perspective, the event is in the past and is - already forgotten. +服务器程序员通过把他们的应用程序分解为多个独立的*进程*来弥补单核忙碌忙碌的情况。这就让操作系统可以同步运行在不同的核上。游戏大部分通常是单进程,所以使用一些线程真的会有帮助。 - * *The scope of the queue tends to be broader.* Event queues are often - used to *broadcast* events to any and all interested parties. To allow - maximum flexibility for which parties can be interested, these queues - tend to be more globally visible. +良好的情形下,现在我们有三个关键部分: - * **If you queue messages:** + 1. 请求声音的代码可以和播放声音解耦。 + 2. 两者之间有一个队列来封送处理。 + 3. 队列封装程序的其余部分。 - A "message" or "request" - describes an action that we *want* to happen *in the future*, like "play - sound". You can think of this as an asynchronous API to a service. +所有剩下做的事情是修改队列`playSound()`函数和`update()`函数--线程安全。一般,我会用一些具体的代码来实现,但由于这是一本关于框架的书,所以我不打算陷入   任何特定的API或锁定机制的细节。 - +许多游戏使用事件队列作为沟通的一个关键部分的结构,你可以花大量的时间来设计各种复杂的路由和过滤消息。建立类似于洛杉矶电话交换机,但在你进行之前,我鼓励你简单开始。这里有几个起初思考的问题: - * *You are more likely to have a single - listener.* In the example, the queued messages are requests specifically - for *the audio API* to play a sound. If other random parts of the game - engine started stealing messages off the queue, it wouldn't do much - good. +### 什么会在队列中? - + 一个“事件”或“通知描述*已经*发生的事情。你排队,其他对象可以*响应*事件”,有几分像一个异步的[观察者](observer.html)模式。 + + * *你可能会允许多个监听器.* 由于队列包含的事件已经发生,发送者不关心谁会接收到它。从这个角度来看,这个事件在过去已经被忘记了。 -### Who can read from the queue? + * *队列往往有更广的边界* 。事件队列经常用于给任何和所有感兴趣部分*广播*事件。为了允许感兴趣的部分有最大的灵活性,这些队列往往有更多的全局可见性。 -In our example, the queue is encapsulated and only the `Audio` class can read -from it. In a user interface's event system, you can register listeners to your -heart's content. You sometimes hear the terms "single-cast" and "broadcast" to -distinguish these, and both styles are useful. + * **如果队列中是消息:** - * **A single-cast queue:** +一个“消息”或“请求”描述一种*想要*发生在*将来*的行为,类似于“播放音乐”。你可以认为这是的一个异步API服务。 - This is the natural fit when a queue is part of a class's API. Like in our - audio example, from the caller's perspective, they just see a - `playSound()` method they can call. + 另一种关于“请求”是“命令”的表达在[命令模式](command.html) 中,也可以使用队列。 - * *The queue becomes an implementation detail of the reader.* All the - sender knows is that it sent a message. + * *你更可能有个单一的监听器。* 示例中,消息排队专门为*音频API *播放声音请求。如果其他游戏的随机部分开始从队列中偷窃消息,它不会工作的很好。 - * *The queue is more encapsulated.* All other things being equal, more - encapsulation is usually better. - * *You don't have to worry about contention between listeners.* With - multiple listeners, you have to decide if they *all* get every item - (broadcast) or if *each* item in the queue is parceled out to *one* - listener (something more like a work queue). +我说过它们“更相似”,是因为你可以入列消息,只要期望它*如何*处理,而不关心哪些代码会处理它。这种情况下,你做的事情类似于[服务定位器](service-locator.html)。 - In either case, the listeners may end up doing redundant work or - interfering with each other, and you have to think carefully about the - behavior you want. With a single listener, that complexity disappears. +### 谁能从队列读取? - * **A broadcast queue:** +在我们的示例中,队列被封装和只有`Audio`类可以读取它。用户接口的事件系统中,你可以尽情的注册监听器。有时会得知*单播*和*广播*去分发这些,所有的方式都是有用的。 - This is how most "event" systems work. If you have ten listeners when an - event comes in, all ten of them see the event. + * **一个单播队列:** - * *Events can get dropped on the floor.* A corollary to the previous point - is that if you have *zero* listeners, all zero of them see the event. In - most broadcast systems, if there are no listeners at the point in time - that an event is processed, the event gets discarded. + 当一个队列是一个类的API本身的一部分时。类似我们的声音示例,站在调用者的角度,他们只能看见 `playSound()`方法能调用。 + * *队列成为阅读器的实现细节* 所有的发送者知道是它发送了一条消息。 + * *队列是封装的* 所有其他条件相同的情况下,更多的封装通常是更好的。 - * *You may need to filter events.* Broadcast queues are often widely - visible to much of the program, and you can end up with a bunch of - listeners. Multiply lots of events times lots of listeners, and you end - up with a ton of event handlers to invoke. + * *你不必担心和多个监听器的竞争情况*,你不得不决定他们是否*全部*得到每一项(广播)或者是否*每一个*队列中的项 分配给*一个*监听器(更像一个工作队列) - To cut that down to size, most broadcast event systems let a listener - winnow down the set of events they receive. For example, they may say - they only want to receive mouse events or events within a certain - region of the UI. + 在其他情况,监听器可能会做重复的工作或者互相干扰,所以必须仔细思考你想要做的。对于一个单一的监听器,这种复杂性会消失 - * **A work queue:** + * **广播队列:** - Like a broadcast queue, here you have multiple listeners too. The difference - is that each item in the queue only goes to *one* of them. This is a common - pattern for parceling out jobs to a pool of concurrently running threads. + 这是大多数“事件”系统的做的事情。当一个事件进来时,如果你有十个监听器,它们都能看见该事件。 + * *事件可以被删除* 先前观点的推论是如果你有*零个*监听器,所有都会看见事件。在大多数的广播系统中,如果某一时刻处理事件没有监听器,事件就会被废弃。 - * *You have to schedule.* Since an item only goes to one listener, the - queue needs logic to figure out the best one to choose. This may be as - simple as round robin or random choice, or it could be some more complex - prioritizing system. + * *可能需要过滤事件* 播放队列通常是广泛的可见的程序,你可以关闭一些监听器。多事件需要多个监听器,结束大量的事件处理程序调用。 -### Who can write to the queue? + 为了缩减规模,大部分广播事件系统会让一个监听器过滤他们收到的事件集合。例如,它们会说他们想要接受鼠标事件或者用户界面一定区域内的UI事件。 -This is the flip side of the previous design choice. This pattern works with all -of the possible read/write configurations: -one-to-one, one-to-many, many-to-one, or many-to-many. + * **工作队列:** - +### 谁可以写入队列? - * **With one writer:** +这是以前设计选择的另一面。该模式适用于所有可能的读/写配置:一对一,一对多,多对一,多对多。 - This style is most similar to the synchronous Observer pattern. You have one - privileged object that generates events that others can then receive. +你有时会听说用于描述多对一的“输入端”通信系统和用于描述一对多的“输出端”通信系统。 - * *You implicitly know where the event is coming from.* Since there's only - one object that can add to the queue, any listener can safely assume - that's the sender. + * **一个写入者:** - * *You usually allow multiple readers.* You can have a - one-sender-one-receiver queue, but that starts to feel less like the - communication system this pattern is about and more like a vanilla queue data - structure. + 这种风格是最类似于同步[观察者](observer.html)模式。你有一个特权对象可以接收对象,生成事件。 - * **With multiple writers:** + * *你心里知道事件来自哪里* 因为只有一个对象可以增加到队列,任何监听器可以安全地假设是发送者。 - This is how our audio engine example works. Since `playSound()` is a public - method, any part of the codebase can add a request to the queue. "Global" or - "central" event buses work like this too. + * *通常允许多个读取者* 你有一个发送一个接收的队列,但是,开始觉得这一模式不太像通信系统,更像是一个香草队列数据结构。 - * *You have to be more careful of cycles.* Since anything can - potentially put something onto the queue, it's easier to accidentally - enqueue something in the middle of handling an event. If you aren't - careful, that may trigger a feedback loop. + * **多个写入者:** - * *You'll likely want some reference to the sender in the event itself.* - When a listener gets an event, it doesn't know who sent it, since it - could be anyone. If that's something they need to know, you'll want to - pack that into the event object so that the listener can use it. + 这是我们的音频引擎如何工作的的例子。因为`playSound()`函数是一个公共方法,任何代码库部分都可以添加一个请求给队列。“全局”或“集中”事件总线也是这样工作。 -### What is the lifetime of the objects in the queue? + * *你必须小心周期* 因为任何东西都可能放到队列中,处理时间期间很容易突然入列一些东西。如果你不小心,可能会出发反馈循环。 -With a synchronous notification, execution doesn't return to the sender until -all of the receivers have finished processing the message. That means the -message itself can safely live in a local variable on the stack. With a queue, -the message outlives the call that enqueues it. + * *你可能会想要一些发送方在事件本身的引用* + 当监听器得到一个事件,它不知道是谁发送的,因为它可能是任何人。如果这是他们需要知道的,你要打包进事件对象,监听器就可以使用它了。 -If you're using a garbage collected language, you don't need to worry about this -too much. Stuff the message in the queue, and it will stick around in memory as -long as it's needed. In C or C++, it's up to you to ensure the object lives long -enough. +### 队列中对象的生命周期是什么? - * **Pass ownership:** +周期有一种同步的通知,执行不会返回给发送者,直到所有的消息处理完毕。这就意味着消息本身可以安全的存在栈中的本地变量中。对于一个队列,消息入列后仍然可以调用它。 - This is the traditional way to do things when - managing memory manually. When a message gets queued, the queue claims it - and the sender no longer owns it. When it gets processed, the receiver takes - ownership and is responsible for deallocating it. +如果你使用一个垃圾回收机制的语言,你不需要过多担心这个。填满队列中的消息,只要是必要的时候就会逗留在内存里。C或者C++中,它取决于你保证对象存活时间足够的长。 - - * **Share ownership:** + C++中,`unique_ptr` 解释了非常确切的语义。 - These days, now that even C++ programmers are more comfortable with garbage - collection, shared ownership is more acceptable. - With this, the message sticks around as long as anything has a reference to - it and is automatically freed when forgotten. - + 目前即使C++程序员适合垃圾回收,但分享所有权会更容易接受。这样一来,只要任何事情对它有一个引用,消息就会逗留。当被忘记时就会自动释放。 - * **The queue owns it:** + 同样地,C++类型中针对分享所有权的是`shared_ptr`. - Another option is to have messages *always* live on - the queue. Instead of allocating the message itself, the sender requests a - "fresh" one from the queue. The queue returns a reference to a message - already in memory inside the queue, and the sender fills it in. When the - message gets processed, the receiver refers to the same message in the - queue. + * **队列拥有它:** - + 换句话说,支持该存储队列的是一个[对象池](object-pool.html)。 -## See Also - * I've mentioned this a few times already, but in many ways, this pattern is - the asynchronous cousin to the well-known Observer pattern. +## 参考 - * Like many patterns, event queues go by a number of aliases. One established - term is "message queue". It's usually referring to a higher-level - manifestation. Where our event queues are *within* an application, message - queues are usually used for communicating *between* them. + * 我已经提到事件队列许多次了,但在很多方面,这个模式可以看成是一个熟知的[观察者](observer.html)模式的异步姊妹。 - Another term is "publish/subscribe", sometimes abbreviated to "pubsub". Like - "message queue", it usually refers to larger distributed systems unlike - the humble coding pattern we're focused on. + * 和很多模式一样,事件队列有过一系列的术语。刚创建时期叫做“消息队列”。通常在更高层次的表现会提到。当事件队列*用于*一个应用程序时,消息队列总是用于*之间*的通信。 - * A [finite state machine](http://en.wikipedia.org/wiki/Finite-state_machine), - similar to the Gang of Four's State pattern, requires a stream of inputs. If you - want it to respond to those asynchronously, it makes sense to queue them. + 另一个术语是“发布/订阅”,有时缩写为“订阅”。类似于“消息队列”,它总是在大型分布式系统中提及,而不专用于简陋的编码模式中。 - When you have a bunch of state machines sending messages to each other, each - with a little queue of pending inputs (called a *mailbox*), then you've - re-invented the [actor model](http://en.wikipedia.org/wiki/Actor_model) of - computation. + * 一个[有限状态机](http://en.wikipedia.org/wiki/Finite-state_machine), + 类似于四人帮的 [状态](state.html)模式,需要一个输入流。如果你想要异步地响应它们,把他们入列就好。 + 当你有一堆状态机互相发送消息的时候,每个都有一个小的队列等待输入(称为*邮箱*),之后你重新发明了计算[角色模式](http://en.wikipedia.org/wiki/Actor_model)。 - * The [Go](http://golang.org/) programming language's built-in "channel" type - is essentially an event or message queue. \ No newline at end of file + * [Go](http://golang.org/)编程语言内置“通道”类型 ,本质上是一个事件或消息队列。 \ No newline at end of file From 4d274906050866c52642d7f65d9eb2c8fd38572b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A5=9E=E9=AD=94=E4=B8=80=E5=BF=B5?= <814278495@qq.com> Date: Fri, 6 Feb 2015 17:57:22 +0800 Subject: [PATCH 118/123] add @jptiancai to README. --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 6c12232..8c095dd 100644 --- a/README.md +++ b/README.md @@ -97,4 +97,5 @@ Game-Programming-Patterns-CN - [Tsiannian](https://github.com/Tsiannian) - [coneo](https://github.com/coneo) - [Gizmosir](https://github.com/gizmosir) +- [jptiancai](https://github.com/jptiancai) - [ChildhoodAndy](https://github.com/dabing1022) From 0bacd9d860447cdbd4cf8bf1905e18d61c12ca51 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A5=9E=E9=AD=94=E4=B8=80=E5=BF=B5?= <814278495@qq.com> Date: Mon, 9 Feb 2015 05:18:15 +0800 Subject: [PATCH 119/123] =?UTF-8?q?Service=20Locator=20=E6=9C=8D=E5=8A=A1?= =?UTF-8?q?=E5=AE=9A=E4=BD=8D=E5=99=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 05.3-Service Locator.md | 582 +++++++++++++++++++++++++++++++++++----- 1 file changed, 519 insertions(+), 63 deletions(-) diff --git a/05.3-Service Locator.md b/05.3-Service Locator.md index f9ee76e..597a2ad 100644 --- a/05.3-Service Locator.md +++ b/05.3-Service Locator.md @@ -1,15 +1,14 @@ -Service Locator +Service Locator 服务定位器 ============================ -^title Service Locator -^section Decoupling Patterns - -## Intent +## Intent 目的 *Provide a global point of access to a service without coupling users to the concrete class that implements it.* -## Motivation +*提供一个全局的访问服务的指针,并且使用者不会和具体实现类耦合* + +## Motivation 动机 Some objects or systems in a game tend to get around, visiting almost every corner of the codebase. It's hard to find a part of the game that *won't* need a @@ -17,16 +16,30 @@ memory allocator, logging, or random numbers at some point. Systems like those can be thought of as *services* that need to be available to the entire game. +在游戏里的一些系统或者对象倾向于到处被使用,在代码库的每个角落都能看见。很难在游戏中找到某个部分, +*不会*使用内存分配器,记录日志,或者获取随机数。想这样的系统可以考虑作为一个*服务*,时能整个游戏都能够访问。 + For our example, we'll consider audio. It doesn't have quite the reach of something lower-level like a memory allocator, but it still touches a bunch of game systems. A falling rock hits the ground with a crash (physics). A sniper NPC fires his rifle and a shot rings out (AI). The user selects a menu item with a beep of confirmation (user interface). +对我们而言,我举音频系统作为一个例子。它不会想内存分配器那么底层,但是任然要访问一批系统。掉落的石块碰到 +地面上(物理系统)。一个狙击NPC开枪,发出短暂的枪声(AI系统)。用户选择一个菜单,伴随一个确认的音效(用户交互系统)。 + Each of these places will need to be able to call into the audio system with something like one of these: -^code 15 +每个这样的地方都需要想这样调用音频系统: + +``` +// Use a static class? +AudioSystem::playSound(VERY_LOUD_BANG); + +// Or maybe a singleton? +AudioSystem::instance()->playSound(VERY_LOUD_BANG); +``` Either gets us where we're trying to go, but we stumbled into some sticky coupling along the way. Every place in the game calling into our audio system @@ -34,12 +47,20 @@ directly references the concrete `AudioSystem` class and the mechanism for accessing it -- either as a static class or a singleton. +尽管我们到达了我们想要的目的,但是我们是在耦合的情况下一路走过来。在游戏每个调用音频系统的地方,都直接访问了 +具体的`AudioSystem`类和访问它的机制——要么作为一个静态类或者一个单件 + These call sites, of course, have to be coupled to *something* in order to make a sound play, but letting them poke at the concrete audio implementation directly is like giving a hundred strangers directions to your house just so they can drop a letter on your doorstep. Not only is it a little bit *too* personal, it's a real pain when you move and you have to tell each person the new directions. +这些调用的地方,为了能够播放声音,都和*某些东西*耦合起来了,但是让它们能够直接操作具体的音频实现类就像为了 +能够让信箱的信投递出去而让一百个陌生人能直接进入你家。不仅是这有点*太*私人了,而且当你搬家你必须高数每个 +人你的新地址,这有点太痛苦了。 + There's a better solution: a phone book. People that need to get in touch with us can look us up by name and get our current address. When we move, we tell the phone company. They update the book, and everyone gets the new address. In fact, @@ -48,11 +69,18 @@ or some other "representation" of ourselves instead. By having callers go through the book to find us, we have *a convenient single place where we control how we're found.* +这里有个更好的解决办法:一个电话薄。每个想要联系你的人能够通过名字查看来得到新的地址。当我们搬家时,我们 +能够告诉电话公司。它们更新电话薄,这样每个人都能得到新的地址了。世界上,我们甚至不必给出我们真正的地址。 +我们能够列出一个P.O信箱,或者其他能够“代表”我们的东西。通过有一个扎到电话薄来联系我们的访问者,我们能够 +*方便的单独我们控制的能够查找的地方*。 + This is the Service Locator pattern in a nutshell -- it decouples code that needs a service from both *who* it is (the concrete implementation type) and *where* it is (how we get to the instance of it). -## The Pattern +这就是服务定位器的简单介绍——它将一个服务的“是什么”和“在什么地方”与需要这个服务的代码解耦了。 + +## The Pattern 模式 A **service** class defines an abstract interface to a set of operations. A concrete **service provider** implements this interface. A separate **service @@ -60,7 +88,10 @@ locator** provides access to the service by finding an appropriate provider while hiding both the provider's concrete type and the process used to locate it. -## When to Use It +一个**服务**类为一系列操作定义了一个抽象的接口。一个具体的**服务提供者**实现这个接口。一个单独的 +**服务定位器**通过查找一个合适的提供者来提供这个服务的访问。它同时屏蔽了提供者的具体类型和定位这个服务的过程。 + +## When to Use It 何时使用 Anytime you make something accessible to every part of your program, you're asking for trouble. That's the main problem with the Singleton pattern, and this pattern is no different. My simplest advice for when to use a service locator is: *sparingly*. +每当你将东西变得全局都能访问的时候,你就是在自找麻烦。这就是单件模式主要的问题,但是这个模式不同。我对何时使用服务定 +位器的简单建议就是:*谨慎地使用*。 + Instead of using a global mechanism to give some code access to an object it needs, first consider *passing the object to it instead*. That's dead simple, and it makes the coupling completely obvious. That will cover most of your needs. +与提供一个全局机制来给需要使用的地方去访问一个对象不同,首先考虑*将这个对象传递进去*。这简单死了,而且明显将代码 +耦合起来了。这件满足你绝大部分需求。 + *But...* there are some times when manually passing around an object is gratuitous or actively makes code harder to read. Some systems, like logging or memory management, shouldn't be part of a module's public API. The parameters to your rendering code should have to do with *rendering*, not stuff like logging. +*但是...* 有时手动的将一个对象传来传去显得毫无理由也将代码变得难以阅读。游戏系统,比如日志系统和内存管理系统, +不应该是某个模块的公开API的一部分。你渲染代码的参数是和*渲染*相关的,而不是像日志那样的东西。 + Likewise, other systems represent facilities that are fundamentally singular in nature. Your game probably only has one audio device or display system that it can talk to. It is an ambient property of the environment, so plumbing it through ten layers of methods just so one deeply nested call can get to it is adding needless complexity to your code. +同样的,也适用于一些单独的代表基础设施的系统。你的游戏很可能只有一个音频设备或者显示体统能够打交道。他是 +一项环境属性,所以将它传递10层以便让一个底层的函数能够访问,为代码增加了毫无必要的复杂度。 + In those kinds of cases, this pattern can help. As we'll see, it functions as a more flexible, more configurable cousin of the Singleton pattern. When used well, it can make your codebase more flexible with little runtime cost. +在这些情况下,这个模式能够起到作用。它用起来像一个更有弹性,更可配置的单间模式表亲。当我们良好地使用时, +它能让你的代码更有弹性,而且几乎没有运行损失。 + -## Keep in Mind +## Keep in Mind 牢记于心 The core difficulty with a service locator is that it takes a dependency -- a bit of coupling between two pieces of code -- and defers wiring it up until runtime. This gives you flexibility, but the price you pay is that it's harder to understand what your dependencies are by reading the code. -### The service actually has to be located +服务定位器的关键困难在于,它要有所依赖——连接两份代码——并且在运行期才连接起来。这给你弹性,代价是阅读代码 +时有点难以理解你依赖的是什么? + +### The service actually has to be located 服务本身被定位 With a singleton or a static class, there's no chance for the instance we need to *not* be available. Calling code can take for granted that it's there. But @@ -110,7 +162,11 @@ since this pattern has to *locate* the service, we may need to handle cases where that fails. Fortunately, we'll cover a strategy later to address this and guarantee that we'll always get *some* service when you need it. -### The service doesn't know who is locating it +当使用单间或者一个静态类时,我们需要的实例没有机会变得*不*可用。调用代码就保证了它必须在哪里。但是,既然 +这个模式*定位*服务,我们必须处理定位失败的情况。幸运的是,我们将讨论一个策略来 +处理这个问题,并且保证我们始终在使用的时候得到*某个*服务。 + +### The service doesn't know who is locating it 服务不知道被谁定位 Since the locator is globally accessible, any code in the game could be requesting a service and then poking at it. This means that the service must be able @@ -120,65 +176,141 @@ may not work as a service -- it wouldn't be able to ensure that it's being used at the right time. So, if a class expects to be used only in a certain context, it's safest to avoid exposing it to the entire world with this pattern. -## Sample Code +既然定位器是全局可见的,游戏中的任何代码都有可能请求一个服务然后操作它。这意味着这个服务在任何情况下都 +必须正确工作。举个例子,一个类只应当在游戏循环的仿真部分使用,而不是在渲染期间。就不能当做服务——它不能 +保证它在正确的时机被使用。因此,如果一个类希望只在摸个特性的上下文种被使用,避免用这种模式将它暴露全局 +是最安全的。 + +## Sample Code 简单代码: Getting back to our audio system problem, let's address it by exposing the system to the rest of the codebase through a service locator. -### The service +回到我们的音频系统问题,让我们通过服务定位器来讲他暴露给其他部分的代码。 + +### The service 服务 We'll start off with the audio API. This is the interface that our service will be exposing: -^code 9 +我们从音频API开始。这就是我们服务将要暴露的接口: + +``` +class Audio +{ +public: + virtual ~Audio() {} + virtual void playSound(int soundID) = 0; + virtual void stopSound(int soundID) = 0; + virtual void stopAllSounds() = 0; +}; +``` A real audio engine would be much more complex than this, of course, but this shows the basic idea. What's important is that it's an abstract interface class with no implementation bound to it. -### The service provider +一个真正的音频引擎将比这个复杂的多,当然,这份代码表达了基本的原理。重要的一点就是它使一个虚 +接口类,没有实现和它绑定。 + +### The service provider 服务提供者 By itself, our audio interface isn't very useful. We need a concrete implementation. This book isn't about how to write audio code for a game console, so you'll have to imagine there's some actual code in the bodies of these functions, but you get the idea: -^code 10 +仅是自己,我们的音频接口没有什么用处。我们需要一份具体的实现。本书不讨论怎样为一个游戏写音频代码,所以你 +只能想象这些函数体中有一些真正的代码,不过你了解了原理。 + +``` +class ConsoleAudio : public Audio +{ +public: + virtual void playSound(int soundID) + { + // Play sound using console audio api... + } + + virtual void stopSound(int soundID) + { + // Stop sound using console audio api... + } + + virtual void stopAllSounds() + { + // Stop all sounds using console audio api... + } +}; +``` Now we have an interface and an implementation. The remaining piece is the service locator -- the class that ties the two together. -### A simple locator +现在我们有了一个接口和一份实现。剩下的部分就是服务定位器了——这个类将两者绑在一起。 + +### A simple locator 简单的定位器 The implementation here is about the simplest kind of service locator you can define: +下面的实现是你能够定义的最简单的服务定位器: + -^code 1 +``` +class Locator +{ +public: + static Audio* getAudio() { return service_; } + + static void provide(Audio* service) + { + service_ = service; + } + +private: + static Audio* service_; +}; +``` The static `getAudio()` function does the locating. We can call it from anywhere in the codebase, and it will give us back an instance of our `Audio` service to use: -^code 5 +简单函数`getAudio()`做定位。我们能再代码的任何地方调用它,它能返回一个`Audio`实例来供我们使用。 + +``` +Audio *audio = Locator::getAudio(); +audio->playSound(VERY_LOUD_BANG); +``` The way it "locates" is very simple -- it relies on some outside code to register a service provider before anything tries to use the service. When the game is starting up, it calls some code like this: -^code 11 +它“定位”的方法十分简单——它依赖一些外围代码在任何使用这个服务之前,注册一个服务提供者。当游戏启动之时, +它调用类似下面的代码: + +``` +ConsoleAudio *audio = new ConsoleAudio(); +Locator::provide(audio); +``` The key part to notice here is that the code that calls `playSound()` isn't aware of the concrete `ConsoleAudio` class; it only knows the abstract `Audio` interface. Equally @@ -186,6 +318,9 @@ important, not even the *locator* class is coupled to the concrete service provider. The *only* place in code that knows about the actual concrete class is the initialization code that provides the service. +这里关键需要注意的地方时调用`playSound()`的代码对`ConsoleAudio`具体实现毫不知情。同样重要的是, +甚至是*定位器*本身和具体服务提供者也没有联系。代码中*唯一*知道具体实现类的地方时,提供这个服务的初始化代码。 + There's one more level of decoupling here: the `Audio` interface isn't aware of the fact that it's being accessed in most places through a service locator. As far as it knows, it's just a regular abstract base class. This is useful because @@ -194,20 +329,31 @@ necessarily designed around it. This is in contrast with Singleton, which affects the design of the "service" class itself. -### A null service +这里有还有更深一层的解耦——通过服务定位器`Audio`接口在绝大数地方不知道自己正在被访问。一旦它知道了, +它就是一个普通的抽象基类了。这十分有用,因为它意味着我们可以将这个模式应用到一些*已经纯在的*但并 +不是围绕这个来设计的类上。这和单件有个对比,后者影响了“服务”类本身的设计。 + +### A null service 空服务 Our implementation so far is certainly simple, and it's pretty flexible too. But it has one big shortcoming: if we try to use the service before a provider has been registered, it returns `NULL`. If the calling code doesn't check that, we're going to crash the game. +目前为止,我们的实现还很简单,不过也十分灵活。但是它有一个大的缺陷:如果我们尝试在一个服务提供者注册 +之前使用它,它返回一个`NULL`。如果我们的调用代码没有检查这一点,我们的游戏就会崩溃。 + Fortunately, there's another design pattern called "Null Object" that we can use @@ -217,68 +363,131 @@ that implements the same interface as the desired object. Its implementation basically does nothing, but it allows code that receives the object to safely continue on as if it had received a "real" one. -To use this, we'll define another "null" service provider: +庆幸的是,这里有一个称之为“NULL Object”的模式来解决这个问题。基本的思想是在我们查找或者创建失败, +返回“NULL”的地方,我们返回一个实现同样接口的特殊对象作为替代。它地实现就是什么也不做,但是它能让 +或者这个对象的代码正确的走下去,就好像它获得了一个“真正的”对象一样。 -^code 7 +To use this, we'll define another "null" service provider: +为了使用它,我们定义另外一个“null”服务器。 + +``` +class NullAudio: public Audio +{ +public: + virtual void playSound(int soundID) { /* Do nothing. */ } + virtual void stopSound(int soundID) { /* Do nothing. */ } + virtual void stopAllSounds() { /* Do nothing. */ } +}; +``` As you can see, it implements the service interface, but doesn't actually do anything. Now, we change our locator to this: +如你所见,它实现了服务结构,但是实际上什么也不做。现在我们来修改定位器: + -^code 8 +``` +class Locator +{ +public: + static void initialize() { service_ = &nullService_; } + + static Audio& getAudio() { return *service_; } + + static void provide(Audio* service) + { + if (service == NULL) + { + // Revert to null service. + service_ = &nullService_; + } + else + { + service_ = service; + } + } + +private: + static Audio* service_; + static NullAudio nullService_; +}; +``` Calling code will never know that a "real" service wasn't found, nor does it have to worry about handling `NULL`. It's guaranteed to always get back a valid object. +调用代码永远也不会知道一个“真”的服务器没有找到,它也不必担心处理`NULL`。它保证始终返回一个有效的对象。 + This is also useful for *intentionally* failing to find services. If we want to disable a system temporarily, we now have an easy way to do so: simply don't register a provider for the service, and the locator will default to a null provider. +这也在*有意的*查找服务失败时有用。如果我们想要暂时的禁用一个系统,我们能够轻易的做到——简单的不为 +这个服务注册服务器,然后定位器将默认返回一个空服务器。 + -### Logging decorator +### Logging decorator 日志装饰器 Now that our system is pretty robust, let's discuss another refinement this pattern lets us do -- decorated services. I'll explain with an example. +现在我们的系统十分强健,让我们讨论另外一项这个模式的优雅之处——装修服务器。我将举个例子做说明。 + During development, a little logging when interesting events occur can help you figure out what's going on under the hood of your game engine. If you're working on AI, you'd like to know when an entity changes AI states. If you're the sound programmer, you may want a record of every sound as it plays so you can check that they trigger in the right order. +在开发中,一小段感兴趣的事件日志能够让你估摸出在游戏引擎外表之下发生了什么。如果你在开发AI系统, +你很想要知道一个单位的AI状态什么时候发生了变化。如果你是音频程序要,你可能想要知道每次声音播放的 +记录,以便你能够检测触发器都在正确的位置上。 + The typical solution is to litter the code with calls to some `log()` function. Unfortunately, that replaces one problem with another -- now we have *too much* logging. The AI coder doesn't care when sounds are playing, and the sound person doesn't care about AI state transitions, but now they both have to wade through each other's messages. +典型的解决方法是调用一些`log()`函数。不幸的时,它用另一个问题替代了一个问题——现在我们有*太多*日志了。 +AI程序员不关心声音什么时候播放,声音程序要不想知道AI状态的切换,但是现在他们都必须过滤各自的日志信息。 + Ideally, we would be able to selectively enable logging for just the stuff we care about, and in the final game build, there'd be no logging at all. If the different systems we want to conditionally log are exposed as services, then we @@ -286,34 +495,96 @@ can solve this using the Decorator pattern. Let's define another audio service provider implementation like this: -^code 12 +理想状态下,我们能够为要关心的时间选择日志开启,并在游戏最后构建时,将没有任何日志。如果不同的系统的 +条件日志作为服务器暴露出去,现在我们可以使用装饰器 模式解决这个问题。让我们像这样 +定义另外一个音频实现: + +``` +class LoggedAudio : public Audio +{ +public: + LoggedAudio(Audio &wrapped) + : wrapped_(wrapped) + {} + + virtual void playSound(int soundID) + { + log("play sound"); + wrapped_.playSound(soundID); + } + + virtual void stopSound(int soundID) + { + log("stop sound"); + wrapped_.stopSound(soundID); + } + + virtual void stopAllSounds() + { + log("stop all sounds"); + wrapped_.stopAllSounds(); + } + +private: + void log(const char* message) + { + // Code to log message... + } + + Audio &wrapped_; +}; +``` As you can see, it wraps another audio provider and exposes the same interface. It forwards the actual audio behavior to the inner provider, but it also logs each sound call. If a programmer wants to enable audio logging, they call this: -^code 13 +如你所见,它包装了另外一个音频器并暴露了同样的接口。它将实际的音频操作转发给内嵌的服务器,但是它同时 +记录了每次音频调用。如果一个程序要需要开启音频日志,他这样调用代码: + +``` +void enableAudioLogging() +{ + // Decorate the existing service. + Audio *service = new LoggedAudio(Locator::getAudio()); + + // Swap it in. + Locator::provide(service); +} +``` Now, any calls to the audio service will be logged before continuing as before. And, of course, this plays nicely with our null service, so you can both *disable* audio and yet still log the sounds that it *would* play if sound were enabled. -## Design Decisions +现在,任何音频服务的调用在之前运行之前会被记录。同时,当然,这和我们的空服务器合作良好,所以你可以 +即*关闭*音频又仍然开启声音日志,如果声音开启,它*将*会播放声音。 + +## Design Decisions 设计讨论 We've covered a typical implementation, but there are a couple of ways that it can vary based on differing answers to a few core questions: -### How is the service located? +我们讨论了一个典型的实现,对一些核心问题,不同的方式会有不同的答案。 + +### How is the service located? 服务是如何定位的 * **Outside code registers it:** + * **在外部代码注册:** This is the mechanism our sample code uses to locate the service, and it's the most common design I see in games: + + 这是我们简答的代码用来定位服务器的机制,同时这也是我在游戏中最常见的设计。 * *It's fast and simple.* The `getAudio()` function simply returns a pointer. It will often get inlined by the compiler, so we get a nice abstraction layer at almost no performance cost. + + * *它简单快捷。*`getAudio()`函数简单的返回一个指正,它通常被编译器内联,所以我们 + 得到了一个良好的抽象层最好没有性能损失。 * *We control how the provider is constructed.* Consider a service for accessing the game's controllers. We have two concrete providers: one @@ -321,102 +592,175 @@ vary based on differing answers to a few core questions: controller input over the network so that, to the rest of the game, remote players appear to be using local controllers. + * *我们能共控制服务器如何构建。*考虑一个服务访问游戏的控制者。我们有两个具体的服务器:一个 + 是通常游戏,一个是在线游戏。在线服务器将控制者操作传递到网络上,以便,对其他部分,远程玩家 + 就像使用本地控制器一样。 + To make this work, the online concrete provider needs to know the IP address of the other remote player. If the locator itself was constructing the object, how would it know what to pass in? The `Locator` class doesn't know anything about online at all, much less some other user's IP address. - + + 为了达到这点,在线服务器实现需要知道IP其他远程玩家的地址。如果定位器构建这个对象,它如何知道 + 什么需要传递进去呢?`Locator`这个类对在线一无所知,更何况其他用户的IP地址了。 + Externally registered providers dodge the problem. Instead of the locator constructing the class, the game's networking code instantiates the online-specific service provider, passing in the IP address it needs. Then it gives that to the locator, who knows only about the service's abstract interface. + + 外部注册服务器避开了这个问题。与其在定位器初始化这个类,游戏的网络代码初始化在线服务器, + 将它需要的IP地址传递进去。然后将它转给定位器,而定位器只知道这个服务的抽象接口。 * *We can change the service while the game is running.* We may not use this in the final game, but it's a neat trick during development. While testing, we can swap out, for example, the audio service with the null service we talked about earlier to temporarily disable sound while the game is still running. + + * *我们可以在游戏运行额时候更换服务器。*我们可能在最后游戏中不利用这一点,但是在开发中这是一个 + 很贴心的技巧。当测试时,我们可以切换。举个例子,我们之前讨论的代空服务的音频服务器可以在游戏 + 仍在运行的时间暂时禁止音频。 * *The locator depends on outside code.* This is the downside. Any code accessing the service presumes that some code somewhere has already registered it. If that initialization doesn't happen, we'll either crash or have a service mysteriously not working. + + * *定位器依赖外部代码。*这是短板。访问服务的任何代码都假设其他代码已经注册过这个服务了。如果 + 没有发生初始化,我么要么崩溃,要么服务神秘地无法工作。 * **Bind to it at compile time:** + * **在编译器绑定:** The idea here is that the "location" process actually occurs at compile time using preprocessor macros. Like so: - - ^code 2 - + + 这里的想法是“定位”这个工作实际上发生在编译器,使用条件编译。想这样: + + ``` + class Locator + { + public: + static Audio& getAudio() { return service_; } + + private: + #if DEBUG + static DebugAudio service_; + #else + static ReleaseAudio service_; + #endif + }; + ``` + Locating the service like this implies a few things: + + 像这样定位服务器指明了几点: * *It's fast.* Since all of the real work is done at compile time, there's nothing left to do at runtime. The compiler will likely inline the `getAudio()` call, giving us a solution that's as fast as we could hope for. + + * *它十分快速。*既然所有的实际工作都发生在编译期,在运行期就没什么事情了。编译器很可能 + 内联`getAudio()`调用,这是我们能够到达最快。 * *You can guarantee the service is available.* Since the locator owns the service now and selects it at compile time, we can be assured that if the game compiles, we won't have to worry about the service being unavailable. - + + * *你能保证服务可用。*既然定位器现在拥有服务器并在编译器选择它,我们能保证如果游戏编译,我们 + 不比担心服务不可用。 + * *You can't change the service easily.* This is the major downside. Since the binding happens at build time, anytime you want to change the service, you've got to recompile and restart the game. + + * *你不能方便的更改服务器。*这是主要的缺点。应为绑定发生在构建期,任何你想要变动服务器,你必须 + 重新编译再重启游戏。 * **Configure it at runtime:** + * **在运行期配置:** Over in the khaki-clad land of enterprise business software, if you say "service locator", this is what they'll have in mind. When the service is requested, the locator does some magic at runtime to hunt down the actual implementation requested. - + + 在企业级商业软件中,如果你说“服务定位器”,这是它们需要要知道的。当服务被请求时,定位器做一些 + 在运行时魔法操作来定位时间被请求的实现。 + Typically, this means loading a configuration file that identifies the provider and then using reflection to instantiate that class at runtime. This does a few things for us: + + 通常来说,这表示加载一份配置文件来决定定位器,然后使用反射来在运行期初始化这个类。这为我们 + 做了一些事情。 * *We can swap out the service without recompiling.* This is a little more flexible than a compile-time-bound service, but not quite as flexible as a registered one where you can actually change the service while the game is running. - + + * *我们不需重编译就能切换服务器。*这要比编译期绑定更具有弹性,但是比不上一个注册的服务器。它实际上 + 能在游戏运行的时候更换服务器。 + * *Non-programmers can change the service.* This is nice for when the designers want to be able to turn certain game features on and off but aren't comfortable mucking through source code. (Or, more likely, the *coders* aren't comfortable with them mucking through it.) + + * *非程序员能够更换服务器。* 这在设计人员想要开关游戏的某项特性,但是不能够安然地摆弄代码 + 时十分有用。(后者,更可能是,*程序员*对他们摆弄代码感到不安) * *The same codebase can support multiple configurations simultaneously.* Since the location process has been moved out of the codebase entirely, we can use the same code to support multiple service configurations simultaneously. + * *一份代码库能够同时支持多份配置。*因为定位过程完全移除代码库,我们能够使用同样的代码同时支持 + 多个服务配置文件。 + This is one of the reasons this model is appealing over in enterprise web-land: you can deploy a single app that works on different server setups just by changing some configs. Historically, this was less useful in games since console hardware is pretty well-standardized, but as more games target a heaping hodgepodge of mobile devices, this is becoming more relevant. - + + 这也是这个模式在企业级web开发中应用的原因:你能够发布单个app就能在不同耳朵服务器上工作, + 只需要修改几个配置。历史上,这在游戏中没有什么用处,因为游戏终端硬件都是十分标准化的,但是 + 随着更多游戏开始瞄向杂乱的移动设备,这变得越来越有意义。 + * *It's complex.* Unlike the previous solutions, this one is pretty heavyweight. You have to create some configuration system, possibly write code to load and parse a file, and generally *do some stuff* to locate the service. Time spent writing this code is time not spent on other game features. + + * *这比较复杂。*不像前几个解决方案,这十分重量级。你必须创建摸个配置系统,很可能写代码 + 去加载解析文件,并通常*做某些操作*定位服务器。化在写这写代码上的时间就不能用来写别的 + 游戏特性了。 * *Locating the service takes time.* And now the smiles really turn to frowns. Going with runtime configuration means you're burning some CPU @@ -425,20 +769,32 @@ vary based on differing answers to a few core questions: off and spend some time hunting it down. Game developers *hate* burning CPU cycles on something that doesn't improve the player's game experience. + + * *定位服务需要时间。* 现在,是到真正皱眉了。使用运行期配置意味着你在定位服务时燃烧CPU周期。 + 缓存能减缓这点,但是仍然影响你第一次使用这个服务的时候,游戏需要挂起花费时间来处理它。游戏 + 程序要*痛恨*浪费CPU周期在不能提高游戏体验的事情上。 -### What happens if the service can't be located? +### What happens if the service can't be located? 当服务不能被定位时发生了什么? * **Let the user handle it:** + * **让使用者处理:** + The simplest solution is to pass the buck. If the locator can't find the service, it just returns `NULL`. This implies: + + 简单的方法就是转移责任。如果定位器找不到服务器,它就返回`NULL`。这表示: * *It lets users determine how to handle failure.* Some users may consider - failing to find a service a critical error that should halt the game. + failing to find a service is a critical error that should halt the game. Others may be able to safely ignore it and continue. If the locator can't define a blanket policy that's correct for all cases, then passing the failure down the line lets each call site decide for itself what the right response is. + + * *它让使用者决定如何处理失败。* 有些使用者可能认为查找服务失败是一个严重错误,需要终止游戏。 + 其他或许认为能安全地忽略它并继续执行。如果定位器不能定义一个全面的策略,对每种情况都正确, + 那么将失败传递给调用者,来决定正确的相应。 * *Users of the service must handle the failure.* Of course, the corollary to this is that each call site *must* check for failure to find the @@ -446,35 +802,69 @@ vary based on differing answers to a few core questions: duplicate code spread throughout the codebase. If just one of the potentially hundreds of places that use the service fails to make that check, our game is going to crash. + + * *服务使用者必须处理失败。*当然,必然的结果就是每处调用点*必须*检测查找服务失败。如果几乎每处处理 + 失败方式都一样,这就是重复代码传播在代码库中。如果几百处潜在的地方又一次没有做错误检测,我们游戏 + 就可能会崩溃。 * **Halt the game:** + * **终止游戏:** + I said that we can't *prove* that the service will always be available at compile-time, but that doesn't mean we can't *declare* that availability is part of the runtime contract of the locator. The simplest way to do this is with an assertion: - - ^code 4 + + 我说过,我们不能*证明*服务器在编译器不能始终有效,但这并不意味这我能不能*声明*可用性是定位器的 + 责任。最简单的方法是写一个断言: + + ``` + class Locator + { + public: + static Audio& getAudio() + { + Audio* service = NULL; + + // Code here to locate service... + + assert(service != NULL); + return *service; + } + }; + ``` If the service isn't located, the game stops before any subsequent code tries to use it. The `assert()` call there doesn't solve the problem of failing to locate the service, but it does make it clear whose problem it is. By asserting here, we say, "Failing to locate a service is a bug in the locator." - + + 如果服务没有找到,游戏在任何后续代码使用之前停止。`assert()`调用并没有解决查找服务失败的问题,但是 + 它明确了这是谁的问题。通过断言,我们说,“定位服务失败是定位器的一个bug”。 + So what does this do for us? + + 所以对我们来说该怎么做呢? * *Users don't need to handle a missing service.* Since a single service may be used in hundreds of places, this can be a significant code saving. By declaring it the locator's job to always provide a service, we spare the users of the service from having to pick up that slack. + + * *使用者不需要处理一个遗失的服务。*应为一个服务可能用到上百处,这能节省很多代码。通过 + 声明总是提供一个服务是定位器的工作。我们让服务使用者清闲下来。 * *The game is going to halt if the service can't be found.* On the off chance that a service really can't be found, the game is going to halt. @@ -483,20 +873,30 @@ vary based on differing answers to a few core questions: being called when it should), but it's a real drag for everyone else who's blocked until it's fixed. With a large dev team, you can incur some painful programmer downtime when something like this breaks. + + * *如果服务没有找到,游戏将会中断。* 在极少的情况下,如果服务真的早不到,游戏就会关闭。它强制我们 + 去寻找那些阻止服务被发现的Buf来说是很好的(比如一些初始化代码没有被正确调用),但是这对那些堵在 + 修复的那些人确实是个泥潭。如果有一个大的开发组,当这些东西发生时,你可以增加一些苦逼程序员的停工时间。 - * **Return a null service:** + * **Return a null service:** ***返回一个空服务:* We showed this refinement in our sample implementation. Using this means: + 我们在我们的简单实现中展示了这种优雅的实现。这种方案意味着: * *Users don't need to handle a missing service.* Just like the previous option, we ensure that a valid service object will always be returned, simplifying code that uses the service. + * *使用者不需要处理丢失的服务。*就先之前的一个选项一样,我们确保始终返回一个有效的服务,简化 + 了使用者的代码。 * *The game will continue if the service isn't available.* This is both a boon and a curse. It's helpful in that it lets us keep running the game even when a service isn't there. This can be really helpful on a large team when a feature we're working on may be dependent on some other system that isn't in place yet. + + * *当服务不可用时,游戏还能继续。*这是一把双刃剑。这是我们的游戏在没有服务的时候也能运行。这对一个 + 大团队,当我们依赖的一个特性还没有被其他人开发出来是特别有用。 The downside is that it may be harder to debug an *unintentionally* missing service. Say the game uses a service to access some data and @@ -505,12 +905,16 @@ vary based on differing answers to a few core questions: behave how we want. It will take some work to trace that issue back to the fact that a service wasn't there when we thought it would be. - + + 这个副作用就是,在*非特意*的丢失服务时难以跟踪。假设游戏使用一个服务来访问某些数据然后根据 + 这些数据做一些决定。如果我们没有注册真正的服务,让代码得到了一个空服务,游戏就不会像预计那样运作。 + 找到真相需要花费一些时间,原来是服务没有想我们想的那样可用。 + Among these options, the one I see used most frequently is simply asserting that @@ -518,71 +922,123 @@ the service will be found. By the time a game gets out the door, it's been very heavily tested, and it will likely be run on a reliable piece of hardware. The chances of a service failing to be found by then are pretty slim. +在这些选项中,我见到使用最多的就是断言服务能够找到。当游戏发布的时候,游戏被仔细测试过了,并且会在一个可靠 +的设备上运行。服务没有找到的机会十分渺小。 + On a larger team, I encourage you to throw a null service in. It doesn't take much effort to implement, and can spare you from some downtime during development when a service isn't available. It also gives you an easy way to turn off a service if it's buggy or is just distracting you from what you're working on. -### What is the scope of the service? +在大点的团队中,我推荐你使用一个空服务。它不需要花费什么功夫就能实现,而且可以让你在其他服务不可用时的停工 +中解脱出来。它也给你提供了便利的方式来关闭服务,如果这个服务有bug或者就是打扰了你的工作。 + +### What is the scope of the service? 服务的作用域多大? Up to this point, we've assumed that the locator will provide access to the service to *anyone* who wants it. While this is the typical way the pattern is used, another option is to limit access to a single class and its descendants, like so: -^code 3 +到目前为止,我们假设定位器为*每个*使用它的代码提供访问。即使这是这个模式典型的使用方式,另外一个选项是 +限制它的访问到单个类和他的依赖类中,比如: + +``` +class Base +{ + // Code to locate service and set service_... + +protected: + // Derived classes can use service + static Audio& getAudio() { return *service_; } + +private: + static Audio* service_; +}; +``` With this, access to the service is restricted to classes that inherit `Base`. There are advantages either way: +通过这点,访问服务被定向到继承了`Base`的类中。这不管怎么说都有两点好处: + * **If access is global:** + * **如果是全局访问:** + * *It encourages the entire codebase to all use the same service.* Most services are intended to be singular. By allowing the entire codebase to have access to the same service, we can avoid random places in code instantiating their own providers because they can't get to the "real" one. + * *它鼓励了整个代码库使用同一个服务。*大部分服务都应该是单独的。允许整个代码库访问同一个服务,我们 + 能避免代码中随机的初始化它们各自的提供者,应为他们不能得到一个”真正“的服务。 + * *We lose control over where and when the service is used.* This is the obvious cost of making something global -- anything can get to it. The Singleton chapter has a full cast of characters for the horror show that global scope can spawn. + * *我们对何时何地使用完全失去了控制。*这是将东西变为全局的代价——任何人都能访问。 单件这章将花费一整章来讨论全局 + 作用域带来的可怕后果。 + * **If access is restricted to a class:** + * **如果访问定向到类中:** + * *We control coupling.* This is the main advantage. By limiting a service to a branch of the inheritance tree, we can make sure systems that should be decoupled stay decoupled. + * *我们控制耦合。*这是主要的优势。通过限制服务到一个继承数上,我们能确保系统改解耦的地方解耦了。 + * *It can lead to duplicate effort.* The potential downside is that if a couple of unrelated classes *do* need access to the service, they'll each need to have their own reference to it. Whatever process is used to locate or register the service will have to be duplicated between those classes. + * *它可能导致重复的工作。*潜在的缺点是,如果有去多不相干的类*确实*需要访问服务,它们需要有各自的 + 引用。那些定位和注册服务的工作在这些类中都要重复的处理。 + (The other option is to change the class hierarchy around to give those classes a common base class, but that's probably more trouble than it's worth.) + (其他的选项就是修改类的继承,给这些类一个公共的基类,但是这会导致更多的问题。) My general guideline is that if the service is restricted to a single domain in the game, then limit its scope to a class. For example, a service for getting access to the network can probably be limited to online classes. Services that get used more widely like logging should be global. -## See Also +我通常的准则就是,如果服务被定向到一个单独的域中,就限制到它的作用域到类中。比如,获取网络访问的服务就 +很可能限制在联网的类中。更广泛使用的服务,比如日志服务应该是全局的。 + +## See Also 参考 * The Service Locator pattern is a sibling to Singleton in many ways, so it's worth looking at both to see which is most appropriate for your needs. + + * 服务定位器模式在很多方面和单件是表亲,所以值得观察两者来决定谁更贴合你的需求。 * The [Unity](http://unity3d.com) framework uses this pattern in concert with the Component pattern in its [`GetComponent()`][get-component] method. - + + * [Unity](http://unity3d.com)框架把这个模式和 + 组件 模式结合起来,使用在[`GetComponent()`][get-component] 方法中。 + * Microsoft's [XNA][] framework for game development has this pattern built into its core `Game` class. Each instance has a `GameServices` object that can be used to register and locate services of any type. + + * Microsoft的 [XNA][]游戏开发框架将这个模式内嵌到它的核心`Game`类中。每个实例有一个`GameServices` + 对象,能够用来注册和定位任何类型的服务。 [get-component]: http://docs.unity3d.com/412/Documentation/ScriptReference/Component.GetComponent.html?from=index [xna]: http://msdn.microsoft.com/en-us/library/microsoft.xna.framework.game.services.aspx \ No newline at end of file From 5d4a3873f765cce80d73578f7fada4fdc809775c Mon Sep 17 00:00:00 2001 From: "Henry.T" Date: Tue, 10 Feb 2015 21:08:09 +0800 Subject: [PATCH 120/123] update Type Object --- 04.3-Type Object.md | 152 ++++++++++++++++++++++++-------------------- 1 file changed, 83 insertions(+), 69 deletions(-) diff --git a/04.3-Type Object.md b/04.3-Type Object.md index cd1b35d..4a8e5c8 100644 --- a/04.3-Type Object.md +++ b/04.3-Type Object.md @@ -3,7 +3,13 @@ ### 目的 ### -允许 +允许通过创建一个类来灵活地创建新“类”,每个实例都代表一种对象类型。 + +### 动机 ### + +设想我们在开发一个奇幻RPG。我们的任务是编写部落里恶毒的怪物在追逐并试图杀死我们的勇士。怪物有些不同的特性:生命、攻击、图像、声音等等。但此例中,我们仅考虑前两项。 + + - 感叹号让一些都更加激动人心! ??? @@ -99,42 +105,42 @@ 在我们的第一个实现中,我们从简单入手,实现动机一节中所描述的基础系统。我们首先从**Breed**类开始。: - class Breed - { - public: - Breed(int health, const char* attack) - : health_(health), - attack_(attack) - {} - - int getHealth() { return health_; } - const char* getAttack() { return attack_; } - - private: - int health_; // Starting health. - const char* attack_; - }; - + class Breed + { + public: + Breed(int health, const char* attack) + : health_(health), + attack_(attack) + {} + + int getHealth() { return health_; } + const char* getAttack() { return attack_; } + + private: + int health_; // Starting health. + const char* attack_; + }; + 非常简单。它只是一个包含了两个数据字段的容器:初始生命值和攻击字符串。让我们看看怪物如何使用它: - class Monster - { - public: - Monster(Breed& breed) - : health_(breed.getHealth()), - breed_(breed) - {} - - const char* getAttack() - { - return breed_.getAttack(); - } - - private: - int health_; // Current health. - Breed& breed_; - }; - + class Monster + { + public: + Monster(Breed& breed) + : health_(breed.getHealth()), + breed_(breed) + {} + + const char* getAttack() + { + return breed_.getAttack(); + } + + private: + int health_; // Current health. + Breed& breed_; + }; + 当我们构造一个怪物时,我们给它一个品种对象的引用。它定义怪物的品种,而不是用我们之前的类派生。在构造函数中,怪物使用品种来确定它的初始生命值。要获得攻击字符串,怪物只要转而调用它的品种。 这段简单的代码是这个模式的核心思想。从这里开始所有的东西都是额外奖励。 @@ -145,47 +151,47 @@ 我们可以将这个模式应用到类型对象上面: - class Breed - { - public: - Monster* newMonster() { return new Monster(*this); } - - // Previous Breed code... - }; - + class Breed + { + public: + Monster* newMonster() { return new Monster(*this); } + + // Previous Breed code... + }; + - ???“模式”在这里是个正确的字眼。我们说其实是经典设计模式中的一种:[工厂方法]() - ???在一些语言中,这个模式用来创建所有的对象。在Ruby、Smalltalk、Objective-C和其他语言里,类也是对象,你通过调用类对象上的的方法去构造新的实例。 使用它们的类: - class Monster - { - friend class Breed; - - public: - const char* getAttack() { return breed_.getAttack(); } - - private: - Monster(Breed& breed) - : health_(breed.getHealth()), - breed_(breed) - {} - - int health_; // Current health. - Breed& breed_; - }; - + class Monster + { + friend class Breed; + + public: + const char* getAttack() { return breed_.getAttack(); } + + private: + Monster(Breed& breed) + : health_(breed.getHealth()), + breed_(breed) + {} + + int health_; // Current health. + Breed& breed_; + }; + 关键的区别是**Breed**类里面的**newMonster()**函数。他是我们的“构造”工厂方法。在我们的原始实现中,创建一个怪物看起来是这样的: - ??? 这里有另一个小区别。因为在C++实例代码中,我们可以使用一个方便的小特性:友元类。 - ??? 我们将怪物的构造函数定为私有,使得任何人都不能直接调用它。友元类绕开了这个限制,因此**Breed**仍然能够访问到它。这意味着创建怪物的唯一方法是通过newMonster()。 - Monster* monster = new Monster(someBreed); + Monster* monster = new Monster(someBreed); 在修改过之后,它看起来是这样的: - Monster* monster = someBreed.newMonster(); - + Monster* monster = someBreed.newMonster(); + 那么,为什么要这么做呢?创建一个对象分为两步:分配内存和初始化。**怪物**构造函数让我们能够做所有的初始化操作。在例子里它被存进了品种里,但是整个游戏会加载图形、初始化怪物的AI然后做一些其他设定工作。 但是,这都发生在内存分配之后。我们在怪物的构造函数被调用之前,就已经有了一段内存。在游戏里,我们也希望能控制对象创建的另一方面:我们通常使用一些自定义分配器或者[对象池]()模式来控制对象在内存中的哪个地方结束。 @@ -249,13 +255,21 @@ 这么做修改了**Monster**的设计。这样怪物有品种这件事就在API中可见了。这对双方都有好处。 - 如果类型对象被封装: - - 类型对象模式的复杂性对代码库的其他部分不可见。它成为一个设计细节,只有有类型对象才关心它。 - - 有类型对象可以选择性地重写类型对象的行为。比如说我们想把怪物濒死时的攻击字符串改掉。由于攻击字符串都是从**Monster**访问的,我们有个现成的位置可以写: - ???? 代码 - 如果外部代码直接调用品种上的**getAttack()**,我们就没有机会插入这段逻辑。 - - 我们得给类型对象暴露的所有内容提供外部访问接口。这部分很乏味。如果我们的类型对象有一大堆方法,对象类为了公开,也必须提供一一对应的一大堆方法。 + - 类型对象模式的复杂性对代码库的其他部分不可见。它成为一个设计细节,只有有类型对象才关心它。 + - 有类型对象可以选择性地重写类型对象的行为。比如说我们想把怪物濒死时的攻击字符串改掉。由于攻击字符串都是从**Monster**访问的,我们有个现成的位置可以写: + ???? 代码 + 如果外部代码直接调用品种上的**getAttack()**,我们就没有机会插入这段逻辑。 + - 我们得给类型对象暴露的所有内容提供外部访问接口。这部分很乏味。如果我们的类型对象有一大堆方法,对象类为了公开,也必须提供一一对应的一大堆方法。 - 如果类型对象被公开: - - 类型对象现在是对象公共API的一部分。通常,窄接口比宽接口更容易维护——你暴露给代码库的越少,你要面对的复杂性和维护共组就越少。 + - 外部代码在没有有类型对象实例的情况下就能访问类型对象。如果类型对象被封装,那么就无法在没有有类型对象包裹的情况下使用它。这让我们不能,比如说,调用品种上面的方法去实例化新怪物这种构造模式。如果用户无法直接获得品种,他们也就没法调用它。 + - 类型对象现在是对象公共API的一部分。通常,窄接口比宽接口更容易维护——你暴露给代码库的越少,你要面对的复杂性和维护共组就越少。通过暴露类型对象,我们拓宽了对象的API,把类型对象提供的东西都包含了进来。 + +#### 有类型对象如何创建? #### + +通过这种模式,每个“对象”现在都成了一对对象:主对象以及它所使用额类型对象。那么我们如何创建并将它们绑定起来呢? + +- 构造对象然后传入类型对象: + - 外部代码可以控制内存分配。因为调用代码自己构造这两个对象,它能够控制它们在内存中出现的位置。如果我们想把对象用于各种不同的内存情景(不同的分配器,) From cd15b7255ba2bb130579b99773025b774ffde784 Mon Sep 17 00:00:00 2001 From: "Henry.T" Date: Tue, 10 Feb 2015 21:54:50 +0800 Subject: [PATCH 121/123] update Type Object --- 04.3-Type Object.md | 79 +++++++++++++++++++++++++++------ res/arrow-references.png | Bin 0 -> 1457 bytes res/type-object-breed.png | Bin 0 -> 51739 bytes res/type-object-subclasses.png | Bin 0 -> 92061 bytes 4 files changed, 66 insertions(+), 13 deletions(-) create mode 100644 res/arrow-references.png create mode 100644 res/type-object-breed.png create mode 100644 res/type-object-subclasses.png diff --git a/04.3-Type Object.md b/04.3-Type Object.md index 10dc475..d3fcd84 100644 --- a/04.3-Type Object.md +++ b/04.3-Type Object.md @@ -9,34 +9,87 @@ 设想我们在开发一个奇幻RPG。我们的任务是编写部落里恶毒的怪物在追逐并试图杀死我们的勇士。怪物有些不同的特性:生命、攻击、图像、声音等等。但此例中,我们仅考虑前两项。 +游戏中的每个怪物都有一个值表示当前生命。它一开始是满的,每当怪物受伤的时候,都会减掉一些。怪物们也都有一个攻击字符串。当怪物攻击主角的时候,这个文本会通过某种形式呈现给玩家。(在这里我们不考虑具体的方式。) +设计师告诉我们怪物的品种很多。比如“龙”和“巨魔”。每个品种描述游戏中的一类怪物,在同一个地下城中,任何一个品种的怪物都可以同时有好几个。 +品种定义了怪物的初始生命值————龙一开始拥有比巨魔更多的生命,这使他们更难被杀死。另外定义了一个攻击字符串————表示同品种的所有怪物的攻击方式。 -- 感叹号让一些都更加激动人心! ??? +#### 标准的面向对象答案 #### +考虑好这个游戏设计之后,我们启动文本编辑器开始写代码。 -每个从Monster派生的类传入初始生命并重写getAttack()来返回这个品种的攻击字符串。一些都和预想的一样,不久之后,我们的主人公就能够跑来跑去杀死各种怪物。我们继续编写代码,在我们意识到之前,就会发现有成堆的怪物派生类,从酸性史莱姆到僵尸山羊。 +根据上面的设计,一头龙是一种怪物,一个巨魔是另外一种,其他的品种以此类推。按面向对象的思路做,我们会有一个**Monster**基类: -然后,事情很奇怪地变得缓慢起来。我们的设计师最终想要有上百个品种,我们会发现自己花费了所有的时间去编写那7行代码的小派生类。更糟糕的是——设计师要开始调整代码中已经有的品种。我们的日常工作流程变成了这样: +> 这构成了一种“是”的关系,因为龙“是”**Monster**,建模时我们将**Dragon**定义成Monster的子类。我们知道,类派生只是在代码中实现这种概念关系的一种方式。 -- 1. 收到设计师的邮件,要把巨魔的攻击力从48修改成52。 -- 2. 签出并修改Troll.h。 -- 3. 重新编译游戏。 -- 4. 签入修改。 -- 5. 邮件通知。 -- 6. 重复上述步骤。 +``` cpp + class Monster + { + public: + virtual ~Monster() {} + virtual const char* getAttack() = 0; + protected: + Monster(i nt starti ngHealth) + : health_(starti ngHealth) + {} + private: + int health_; // Current health. + }; +``` + +公有的的**getAttack()**允许战斗代码获得怪物攻击主人公时要显示的字符串。每个派生类将会重写它来提供不同的消息内容。 -我们整天都很茫然,因为我们变成了填数据的猴子。我们的设计师也很茫然,因为要调整好一个数字就要花费大量的时间。我们需要的能力是在无需重新编译整个游戏的情况下,去修改品种的数值。如果设计师能在无需程序员介入的情况下创建并调整品种,那就更好了。 +构造函数是protected,它接收怪物的初始生命值作为参数。我们会从每个派生类自己的构造函数中调用它,并把这个品种的初始生命值传进去。 + +现在我们来看一对品种子类: + +``` cpp + class Dragon : public Monster + { + public: + Dragon() : Monster(230) {} + virtual const char* getAttack() + { + return "The dragon breathes fi re! "; + } + }; + + class Troll : public Monster + { + public: + Troll() : Monster(48) {} + virtual const char* getAttack() + { + return "The troll clubs you! "; + } + }; +``` + +> 感叹号让一些都更加激动人心! + +每个从Monster派生的类都传入初始生命,并重写getAttack()来返回这个品种的攻击字符串。一切都和预想的一样,很快,主角就能够跑来跑去杀死各种怪物。我们继续编写代码,在我们意识到之前,就会发现有成堆的怪物派生类,从酸性史莱姆到僵尸山羊。 + +然后,工作很奇怪地慢了下来。我们的设计师最终想要有上百个品种,我们发现自己把所有的时间都投入到了编写那只有7行代码的派生类里。更糟糕的是————设计师想要调整代码中已经有的品种。我们的日常工作流程变成了下面这样: + +1. 收到设计师的邮件,要把巨魔的攻击力从48修改成52。 +2. 签出并修改Troll.h。 +3. 重新编译游戏。 +4. 签入修改。 +5. 邮件通知。 +6. 重复上述步骤。 + +我们开始迷茫,因为我们变成了填数据的猴子。我们的设计师也很迷茫,因为仅要调好一个数字就要花费大量的时间。我们需要一种无需重新编译整个游戏,就能修改品种数值的能力。如果设计师在无需程序员介入的情况下能创建并调整品种,那就更好了。 #### 一个类的类 #### -在一个比较高的层次上,我们要解决的问题非常简单。我们的游戏中有一堆不同的怪物,我们想要让它们共享一些特性。一个部落中的怪物想要击败主人公,我们想要它们在攻击时使用相同的文本。我们通过将它们定义成同样的“品种”来实现,那个品种决定了攻击字符串。 +站在较高的层面上看,我们要解决的问题非常简单。游戏中有一堆不同的怪物,我们想让它们共享一些特性。一个部落中的怪物想要击败主角,我们要让它们在攻击时使用相同的文本。我们通过将它们定义成同样的“品种”来实现,而这个品种决定攻击字符串。 因为它们属于直觉上的类,因此我们决定使用派生来实现这个概念。一头龙是一只怪物,游戏中的没头龙是这个龙的“类”的实例。将每个种族定义成抽象基类**Monster**的派生类,让游戏中的每个怪物成为派生的品种类的实例来影射???他。我们最终会有下面这样的类层次: -![]() +![](./res/type-object-subclasses.png) -- ??? 这里![]()的意思是“从什么派生” +> 这里![](./res/arrow-references.png)的意思是“从什么派生” 游戏中每个怪物的实例,都属于一个派生的怪物类型。我们拥有的品种越多,这个类层级就越加庞大。这就是i问题的成因:添加新的品种意味着添加新的代码,每个品种必须被编译成它自己的类型。 diff --git a/res/arrow-references.png b/res/arrow-references.png new file mode 100644 index 0000000000000000000000000000000000000000..171263436719a9a1f9f4947b220d7bab8499849e GIT binary patch literal 1457 zcmeAS@N?(olHy`uVBq!ia0vp^HbAVw!3-p)re>Z6Qj#UE5hcO-X(i=}MX3yqDfvmM z3ZA)%>8U}fi7AzZCsTnsn3Xd_B1$5BeXNr6bM+EIYV;~{3xK+T2HIB?BqnF4mMA2p zrf25aD!t#mUr8Y|#a1cY)Yrhbz&SM|)1#^=HMq(zB)KX(*)m1R-cG@$!U||WZfZ%Q zLPc&)Ua?h$trFN=Dz9|8 z>y;bpKhp88yV>WRp=I1=9MH?=;jqG!%T2VElw`VEGWs$&r<-In3$Ab zT4JjNbScCOxdm`z^NOLt1Pn0!io^naLp=kKmtYEgeeo;J&4sHjE(uCSxEHIz#UYgi zsro^w#rdU0$-sz9QwCX8VC7ttnpl!w6q28x0}I7~jQo=P;*9(P1!rdk4d2A%%sdcZ z6Rg44*UB@mxFj(zIn~p}Rtac?US?*Bm6@rlsj0DvnUR5$qoJXzv6H2vfuos|o2#*l zo1vMdDNL_ResXDUYF-IUZwf-MIZnNxw2)f>wAm%KD6=dz#jPkmR{`v2t4!Q(F~Mmb zRBsAyx0vG8s}FRHJ}739Vj3m{OgXT8fg6g|NsB}`4%pd z7sJ57xWm)MF{I+wo2jq!nhkhbc@=rfGa`-k&OZEmzsN7>%9ht&r|Wz!r*XC@$d~o$ zFZ?O(_Wy(bp{R2W(~7urF8(k%?K_V%cxly!i>EgnN$Kfa6{|V_LH<7Fz+=%Nrak)^ zvIA1uPU!p*?ElFyZBKlv$fPwAMe+_?ycsGZUH(OVa}JM^Tx?}wox1aIXya}-qn4Zb z$Fh?%e2>^O^)3E>@5|g7k2d-4S~H_BGc-Nf%9AT0EqnKb<|#Rwuk=h`*&A0WctvTc zaU(-n-D2i%3%}$v@63~-i>a>J+8c&sk?fdK}<_jO&Ca5O=oPF)(>B!CI9<@``kLYc?RTp{3>&&0y zd)P0APc3Tmk7L^%(pG0Vi~a7-D_sKC)2}^z(|UMykEeY2_V%r3wX9}eFx)or{oJs_ zUg;C=%i9;sTwt*7M1_)!Mc<=E2da__Rx}Aq9W8kEJX^N%^7)oyZE};>z6||VCXped z6o2-obeybn3`_6(qv|)#FTVcVgg5S&^+8LM` Y_I>42@HKtl1}a27UHx3vIVCg!0CA!-9RL6T literal 0 HcmV?d00001 diff --git a/res/type-object-breed.png b/res/type-object-breed.png new file mode 100644 index 0000000000000000000000000000000000000000..41db478662483bba34fb945fed52f8c1e8a0aecc GIT binary patch literal 51739 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 literal 0 HcmV?d00001 diff --git a/res/type-object-subclasses.png b/res/type-object-subclasses.png new file mode 100644 index 0000000000000000000000000000000000000000..b57487715438db39fb9f62bc79e53bd7d8324294 GIT binary patch literal 92061 zcmbTdRahNCvnYzQ@CCtr;Syxw?(XjH5?~?0-5r9v1r6>N2rj`TxI=J<;Bxu*+56o4 zaK7_!=ViKk%DTF$rl+eWN<~Q;4Ve%b3JMBMRz^Y%3JMMg1qIy=fc+RDNkx4AxDmKX z>bR*pS-E+bx>!PqS~!_mlFK@nT3f1Fnp$`{k6H>qLBYD(YUsG>C@S!oJ2^0${s)HH z(*g2<4Fx42>W=ihq@Ws)U&r^`%zv%LPwEr{ALP7ptAa3@86#q*o9Yqy# zaVHl`a!zJWCUaIW2RSz{Gnf<1!2|wG&c+I6XJKV$0kboK+4xv_`M{jy|9w$>aC5P+ z;!~55`fpwzJwXZ^H#Z0$3yX(`2eSt|vy+Q83z(OemxYy$g^i8r1A@ub%hAo$lgZJQ z@_#5uSh||K*h1WFogB&kL($aC>8qO{#fPN-YYGk!MaBP3*wOXB74@Mq7EeR{>UCMzLG@$rP&!q$S%)WXby%bd;XLu01wOdO_cyiB}cUUMdHa|t|2HoC{}q={+{Mz=&B;Z>$?41gSb>U-lbe&PjT3}iT%4Rv(bU}5@jrd~ z|E$sfnzDqYi>LGj=C7XN>h$MPW*%YQ88|6@7-GxTAO|7rejKlteUZ%?vx{BR$a4?i&? z8~^d)VPSUYz}2lou4}XKbW@advp{cWZNfY4OkW)a2;P)9vf?zYh*? zFL#wju}e_U<{GjRq8gqnO@>isyX7s|(2}Cip^2Xo;bz|7|C)bu@M5w$|GBn0cjP!6 zGq8N3!MWPVLcx7Y4eu$kR24jh1(3$L3hpZdeePa+X4xpzz7A50&I{+clmjUopNY@f zvv$HCZwkfX!*q1J-tUm1J4tC72oRDXI&%F?&T}~y>{v!H5-`3AN9te;hPY93uLoIQ zt@dsCZ1*9)-{}U|wO&vgRlMeujFDcar(PL6JZNx)`a&Q2Yu0Y&Pmm9M7q31rm~x{q zr4Ci?t^O;PnAu^869nFjzv@vwKruL&nD$Pq>RvIg#an^XIe1EFyG8Ep;WB^=%jfZL@8u!2Gd83{lWivbJ*TX(px zZu{1<=6fnnQGTY?O@llgVBxigk|sj*>lAsS-9Fta&G&zoK2ujF{K*o}T35X8Ed$$`lLV{ zaC!Xbz&X9bbj>)k?2dz8xHUN}+SJ^emV*AeoO zS=N4mvQl_I-o?B+V&6Y;e~rfQJ_m*ddca#PUiF|uZyKC>^V|_E^j4*RB4)>rNJXql z`H6@QYOm2rdc0p`@yrNx8oPZ7L$3+%j7CMZ2EYbwa46s!2|P_^yJSu7axE4gEuWRJ zOx{?cf?G(1z6#v0bMgn|?}Wcr{ABqx=t`2$_9ncNKH)Lzv|Lz>hx|;Uus`HQSBi(0 zOb4pwUci!jE}io}<#E#E!xuB_!Sj<|i3f9jotu|kXrZZkH4CL2K-v*FLnUd#9*~o@ z**bWT#E60;s6~?W*FQ3(`HsGvOZ}|$=ikh8*a7F0{{4nPS3A$wNoROXm!+kUZ<_aH z0x?uepsMMVkV~h0YC}66g~3h=m6D(JUg9MUY?n_;EOOW4RoLvzqa{J;rh40ro)nu# znb;{*Ug}P?A@NgnN=qS8f{kSdbtEnYop1vX^w>vX|0$X~`NjYux%tmtqR3@#tpynl zzfC{QG_`_C8Px_fveg~uS#22*WW9&Ht<2?^NvJEc2)>?J$T(?Fpf>w8@+>N)B*<6c znk|qvLP_y_o6)O1AKl#e?e9Obb+_dDK_ z-F;AyJ`pVulh92)_W3H4sX1R>Zo}LRGrC&1 zU1^|4zpi>@w-g3?KlW#@VwUICn{)VS0EfVAa3rMm`Ze_u`+z`5 zl6DW66YLnKlfVWiZ=xLXDdSXrO>VuVqg2q2f$i4HY;iH{EBmqos+>KEmpZeH+?#q5V zQP4UW@~}9#E3GXswN1aUP8_)VtZM86z~YA!>_H8(Nddtv^~8EeI@vIXCt#9FNPJhv zLBmHQf$2Rn?I>?W@4e7{OnzI<`;qRgbNw>htA>;7+2kR$M^%I)UxV#IqOI}iBs8zX z>m2(?YqoV}tMh?ul<%lC^=r5UH!c0lfTye#QLa*Uy-rKQ%Zi7mf5s>h zf|RQBP()Tdu?rykXgm3VN#vc3Wny*jwq2a{Q`21_JDlD2DhkfOo0lH>`EkcU zbWN5-#Dni*y2YROg+bjp6E#nZWvSRJ%+8s%8Fjj#CWY6cX;#QfEqouXCp#vUgr zoXW*nc_dD;gAq2!u^->(?l|g@fP=yP;AWPBn%eed7nwH{3X^qa8WFuZY2;pM*K4${ ziKm9{ki94&LfIS=qzQ(dXe_xW=;N~A1Nx%2JB1kd#@R{%g6GLa&iqAmI8{kv=%?H8jEe!#l$iB~g z=5A)L;lC0{Vo-;KLh z8@@`)&sqeGyt(1U!o|_#JwXJfL9h@rLnWMV@tEJ&8dz-!DBac6S>hrmhh?QAk46Qs z1kwHE4V@NK>Fv`+KlP?3rzjM62;&^*A%k2RS%~c0Lt3aUqm}NRy=3wmV&Ufo{NC4Y z_ZbsVU;o8;&kDMg9vS`}Cke#X{0KEl6m~gmIMX214y)gR=#a!~V_rBkWx{^)WEE(> z(zYKEo+x}=vbx849yp92(YDYRyrj}FJ^-8oN7{@=mFWnf6$QyzBB(^+zC#jhbm-r z-?t0B@N?gqxPVAS1)E~C6RikBaHI^k?}qETbcGcHX5deJUphkx&q@rTy&qOw8Y zx&?`Qe=86OBm}~?&Du+~WBryaqGwz~w-^CQsPnWPK|B=YeiPnM{5rF#$A3tYEi)E+ zZK0O%8UNU;x1=ZUIQ78$2>T;$4r%at54cr_6{LAr2AjB(4M zz*(in#uzc8R$^iav&c+M3?O|S6S8dodW21pTN^(0{Z+#DzASGVHp`&LtvbXiUToSm2eu>&cPl6O zwD#jtF7Ven}JC z@RXzdzaW65zAw?+TJ!st6V-pBa%_7R*W5|==sY&WirAPXJ+q1t`82&1~| zqfK>!Y@xee@10hP?@}+z?1SDtRMX!T%JJkPI7reNL~Z7b>H92E_v8RruytGxO}d=T zBu7^Kaq`1u-BI;f8T3*ILk^{?Bt*(Z1iZAneBYMAb4pd*vF?=ivF29}SYx|$^jR*j znbx)yD@tC?b}KQmvz57_=BoiT{NCv|uBv%bP;VwB^=T{Uk@p9jR4{{kPf%+mI!@c< z6pSi|JS}t4k5E!T6a7s(|4!3>UW|>anC;&MZTO#cj{MGnJfbxMTS-=xx|X>U!k2jm zLRaydO3l_tb9PO<|IjVDsWZ!_L@vHmw6jZQ@;Ld1p7GWG`|FbxARl*Kx9ZNv(%zbe zpg$uKi6(#>qJbL1A!b*k$jwwp=C!I;L||*pK8&qDBu{Hz$`p=2uHVpPvELCxAYd)Q zAXwoh?Zy$%Uy(PYCC^)ZL`H9Kjn)58PHimyvE@u7k%143(_-tzZ;Z<-z?VP$*q;Y)7Pa=ixX!GR^?5TeKkCQl$qz%kpvZTsw$I+P@* zUTU){pci)U6`LFHj=ZbCEFhm}jmQy-6;8K)C$v&37N6d}*zClr$d34NrRw|Hs(YTLu=JL!>FLbYDD0TdAkmv7@zz)p+O^e27M^oQm>B!Z~m)rEGeA$!|PH z?dhQLWQ<^(H!wdS=AG!$0Sm{~B?hCpv5vhI)hH{6AuU^rxQ)aY(2Fk~3%~4}kYC#G z7v3I%4&BJ^X>c4-o&UzmN{>5dW1<6j#|WY#{-uV5o9Eeaqs?o340YD_Ip@*hpQSKA zwoUatzs5^2ei_A|?3p1y+pL%-#xxrW9fisRO&5EsQLSOUF)hgy8dKt3M18%+JF2E? z$}<_WNb6$LBF=eb3ri{lNQ**CYxWmwGRj|y&w*l3_*J}``PJGHucc~&1~rg3E63}7 zUACz;&b2$VHG?qho;;!(8^LBYd1LV2d-{givIf)nX90Ufqayl3Y%kaKC$efZp5W zL9(&xcOx)GMbs5S5T2d8t|KiRwtL`pU4neE6huRD=_-|9C})kmdl4Go@^ z@Y(}1NE!KFzCYJv%$OqF3K;a=5Hj)`D0)B?yNdL1+RSx&4>apFjkkef0ze=P<+l5V zR=thA^}8~O*w0$W?uOwMNbBN$x*2=3_q}+o{U80EnjLX90{_>OTjtr#lE`+jB8mvL zl$(+nboKBkdvld7Ov`kQgCzf$?2)ByW{Z-S?F4r6b-exTFrt)l50dI=pSk5q9$R$j zw0_Rw+KVX*jbiEWO9YBRYT9qUgs0yF{H0BcCjMJ(9lTH!1%i@M*249qzVDx}x;WY> zPXI>We;khNrba4?&qtL3AMolc^{WKX|QAvpG$z6AIIfePl`9Lu7R7*ys+x(bANWqJ~%GB~&?#qfvXk z&J;^>imQXj`fj^@-`5-6!FGSFkfV_V`6))4F58b%&|`i;Vi)0ZqIK;#v*uy#e^hSg2Mq zh1jKxSni2k#taLHnt|GFgYF%gmtLCK25mp4m*|HjaQQ+9MIu<^aQ@*+62PpF1$jyw zp;O}6mI&h=q?El6?1;c+Yst<*DFRKqOnTcyhzoDzMmmy89*M(pR%&zsClR`J-9!dD z%E8TzhMgw-VvjwD-?7XzFFA0(oBKH4ZLa5^Y&YOIlp1ZVq6E8SrHBVNO(;QUHl!?p zP^YV>k@(?)q8u4pWDOG(Rm=(bLED+7$ooqAAxLWFfr4?ecoJCyr)|XsIgGvhY(yD%tK~%%400q6iEoGfv|U$^KKp%^fP}IG$>7yB z(nA9)>`tX0MZG>RsBAI2uS$-%R@Lh-3}LWqjL%VZ|2g)BksN+2x6l@;7<}(;hjF@i0Wj5nv-x(jI9#WyEF5wQd5S~M+b8%U0LOwd$gI-1FmT$%*xUrI$jwvWwJO` zLo2aP9iupR*tMYS-fi0o2!Qg-ZMSLkZP3xD`LTX-6gQg z^Q4uiOp?%xdZUdb?Lhuu+fg`YBlSEp=upr{gn}t7eQjHR3<77b85lA zONS0=s~DyV^QXZX2Gmf)BPIKdTqOdh>85134(r7O!RQW`1NUm8+$ERIL=cCpf?S}x zMtxlCPB;G1Wp>b@@y8yH>C4};ih|<4DYgtK5H;#LEg9U9m&;vukpmV&DJow4I;VmI zMNoYryFK%v!pu36HL4E}y5gOFAjnTMm8-;etI#dRHgu~sE0a$&J2`b6Y7-42 z?|B;aUL8GB+b-&6>2TB`_l)jwIvjK}6MYAPCz)P<@p<5so%s{B61myS1tTT##Nc-< z)ki>=gv5fJ@1oCaacZyv93<|5j$xl@9CYYs9^=BlVXA6DroRN4-YYS`gc-rjf;0i_ zU!=M`08{y14Ma^W$n2pNV(hr;QEGJiSTMt8DQi%B3QIB}+-C3tIqGW~dpaOCx3={7 zr@g$LIxMoVP8`nfZYUlE40KI4Ngja1M!3vd7+eM)WJe4&n zI&vr;?~rtm<+lfKFF{V;!ptw&ST`yRhcN z7$c@8*7u#-sj{_?kkARQyTmWQ@`U1=+!cuj>H%uql%4XWDby783b7=Od#_lm1;_IG zZjfh%l^L&No1Blo`EAGh_KOH5TDEuE3 z;!p|Ogg@qfp%NbST7NdiKMy{JPGNx#<`LVuzZ)5xXp{C(mU-eZZ>l@h#1WgrRe39Y z`GHV4x;^9C)-(*;AHALyJ$R`y6L_?Ob{E0VdfiAh>gO=dySjip$doBv?h|4j}Q{l#c!yQ92F!SvME6qp)O=Kp@T60v)l% zzh(&HIWWaxt45`DN%rTVG}@>mqN?JY$IOQQ>!fBFSfW;VFRiCud<+#5k%7$K;}9M# z5yGm&YmBe~T6@}6Swgy2v%7ago6i4R)CwE!s@+7_`Q91q>xRlg3^Pd~9zhMQFQCpv zISDjz#Jk)umh&0(v5WNNy_9=r99ldnADTmMgOqJv7*WaM)nq#kTi*~5 zfZ-!1{E$W}@(9-L-~Kz1$reO*bjXZSN2jv%c%;{;|pG$eB+`j zq7G_>k~)QZPZFLv`PBl}=WB?`bg=XX6*p%b-?Zwf>9-uHoYe5ID4 z*4+lP@RCv$8FA~5aCYTR?D2&}!vo8LKz?6DDtoAh+u5fhqj{+iWRcB_!i5mU_G&O<@R~X#0TLV~(&z+J0yJwpH>vSV{9g>?khTqgNP!gJa;MNh+awNYefs)jqLrbnj#qECW=$$o3-^KL$? z6p>)3K*vE^%>Mh@;s=p5kI(yOl zSIc^KF^AwyBSqA~-s`+!{&SjyR%;g<-Iym7hd;EWA07I@0q%08%)3_7; z7C*_$n^5c!Y%|=PU45ujO&~QPU7Bj7jYZ>-HgLW=F^2y-$CS~L`0ZRQ=W2a9K22Ao zO@&~CZn=~@+ZOr0`(KR)god{Z3c2`FdW_c`lkQj5=c`bS;$bE4Z%V=kC=-=2=&Uu>(8G!hIF^pQCp71XS zQ>P(j7gOSFO&*=xe-)gHS*(5eBUl1}zUw$vRAt@e8Wy8y0W=*v?Dq$XEx?*IqZ;*{ zku(8uo2a7fL^pC52$-5XdBK4wpx)}Axp-%btDPZ$grK03<-O4!wgS4Fv>p*pQ;dPT&lG5kmhgcZAm^(7 z5~sl{BkFVO`O75@m8hYe+hwBeadY(zJI}PN_WgFMGXZ!bGCA`sL7_LzUtiXKeKPYq$}Ycl}5?2(^IEs40_0K zj-Oay6X;W{O=qT{4PqG~n^x#;;#wZf8d=riB`UYwuNXu_ncVcl*~v_GeT5Pw?n51g zBcI$26Nlh%KyYqwf0k3=kp_yF^UP)EU2*{LGLwkHQGB$#KfXsp53Es!k)WI%XC!8Evr2_kZ@ zb0u}pw6a+S9o%1}_;mI@2!dN9TY8ALouE}#9aRyH;7A~!0_e7X62$>Ok4j;W0}C)` zIcTKu#bx|)FB^Z7oEVvT$Zu#zRy^Qwr@f!*#hlU~)z}84bI%#trr}8v*GSIho&&yB zq1YYYu3>FpE*yU~OFq%6%#~YvanHH^T{@a!`Ne^V1S&ZxZkG);SxZ80w`rg2tGk5R z`vGVyY`l!U`{?tSvpb(|CapdEzZ)$$XpbZLi-a&A1eDZ5hl01Kug16pBf2EQWak+6 zr@*8Egr!Y9C6kD{SE2|J2!VlVDUL5178CU_|DqWTOCX+{8^Hc;{>Yd_o9R_m6)Xm z>0ywFy~x-cO~-kLBzM#L25bWvpd8stJF2#dzpMhDY zg0nKpf{#q1RIWoP+!Bstz>gamZGE;Qpi|+AwPvY&&w0t9+TED;?j%l&dRS@CZ zt}=1(y|J}6iy7%^ypOjby2aAUE}Xvfq-)0AVEKpPXT(rp&XmF5emXnCXt1t*9Fy(t z28a!WLbthp>}V{o>O;xvBS(JR+?HA_xg$kFrdv=ukDh~%N*tYPe`XSC!C_W$s=CrL zRvBuZ2DxN_LW9+Q;tKQ&qyj1mq@XSdd0RJ1l z)c6aMU=aXM{s0N|5;Gkpsq)bTS#k=QU{wKb^i^+k}(`ftDMbpkxTAFc5W zKAbJ2X8LD!EM%tY@HSQHJ4o+`HT%gMNN1$ZjaUTOQQMAk-AZ6e=cvaj@M%db)KL9F z$+NP%{}9NuBh?D`!iLn3DLILNpw`xQ%P2}L&7b~cW$H52{trci7pIAs~7uI zWELRI2dBX%^1D?B45TxWLVM>H3`IV6WiScfieT^)Ya8#&U(7+gwR8Ksalvx|DQ}UF zOZ;>%@9dA4)Y2&9#zC%I?4XV?c^_Y%bVVc`JUu`3Wo;NcCrRgv{ejll?cP)BAin%K z$G=i`*K`5mgymK(y(#wZ;gN4trMl9|xCU5~IO-u6v zW9F+Pa+o~Ba>PU(Qeq4@XQ61Hp`UIN=9K|;Py zoH9c#6=eoe+&xt|@${vmY{?ItUz453syMRE71zObi-p;rqrm>ApG-r?!;hDxP7-jH zo7flZ@`*f=ppvtFb({0f=i&`SV;xaePe{F<>Pmj_nM}6e<6G)@$tlW}W!{Y(z5rFR(^uaqu;^$vVax08`~R z=tB;9RV2avOA`8yhi=-l=sLi#qq~j-pJqL~k^X08Elgf|ge-*0r0A1A^l%d)iz38ZOL2{AHPIDfFmu}T zdTj_eGmwgPBcq!Y|L*dOEqT;+aFJPf;|V9zlWlmbP;JXrnLBSq3c|8ZidPDI^P7ynw!- z=gDV%RwsqK^g3=(jJCjYa137YYK?c+qFR0xxMWx=|7rs?z`eL_fYCg;!$@%Y5x@|B z0|C%WSsa$-Jp;B1h2g3~!aW%eoWMd1qFLH|sl`^?wi<}rRrdE} z!d}Vfsk-Z^+k721<}Eq#H~MEIJ>g+CgK8SB*;3794XQ_I-Xr{Cv(L0euEler$xVVn zI>%A+KK5F7h-N*IIs$LqsKWIyJYI~8`&;uHYXOnIh05pWNsqi{|n z^NBPEX_H-x-sEbl)$`Bw6a_hlp7D4ETlg6$)g?AQM z=8&G+?gEzWuB_FSAlugH+mOj(@5ueuyBtV2bbZ{=JbEw>NrdY`yO?*|M;?!*;W-7r z3o$%`%IuP~B2VACO^*beYkhB=(U5g{XCKC)1@D*aH3gl~(QSwHK)NL<0#7VP2cz11 zA>RJ;CLNp&-;+hCK2tfMXN=6pDq0+wM%t)wM(4~?ojm8Pw%Z`(dU5bo&&|4&KJD^` z;%R}E+h&sXdxp7TmGiA!QsEd(F50oy`9Bq{;DP~)<9UH#1n_lo6fCn1zty_Aj>Wu$)wf@vk+&{pDQv?zw&B0A0q z0en9ad@NdrXOkRbdw&ONTYg;S`(lGYs~_P~K*R`N?U#>=PL(Bxe|cs)5`CS&Tmd=A z9|dD#$cm>XNMs1i;rM%Dbz1+x8D+&AbuF5|6vSa#Y2OfNUPCFlrn5)%L!V-|=$2R-( zd5mfTabGFpLziwr20L_w9Bjf1DnSzrHU1d$?W#B5-`u|KS)pkt5;6Gp&yMUWzE=n^ zajY^5kCsT|K)RH&8_uM(5dY5Dx$zF`U7kCMkhGX&6X_P6mN z;-CX)ZGRuwuKc%|T|^mkaPYbtWc|}3zGF1)j#%6Mr~A^=4UeWGOjo8raljhpQb{V# zK<`q@Ct(IGI`U~=Otj2u3-w;#^{$IggR6cTbO8RzZ79Ey0REmQYR0&ojAvnM0DZ}k z^Z7VK70JO92^^!heo$1?#R=0nJLKO-;loAi4I%ZMHfkN{&rVn%b3JF?GF4+CqVcqM zR3UTrM^b$>_sGgA+|_%lX$(5&wrM|$a|^5o}cgUTOS{7l_!=s%bFiwo?hF>fUY-X zzJXoeJYN*_FXRYG;~$HKnu~e;{9aOP6EVO3_Me|=JGB1kTo;8ErD(cmRH2Yf zBIk>uNu6q)YTD5uVHr|I1AFy(4wd=(-w`TwW+1AGJL=;&?N||P=^0yKZYHQHxelF+ zE~(4p{<9wRNyNxrh_8-EIC6t+1?>Lk;mD-UC(w%b&DGWG>;22g?s>wdu<_M<6JO}XO{0t7hs7o zDnC0iY}6nW>(B%+Gljqi@2)T9Jk2?w-v656+srsnPk=l-mF>IPk*sE=ww6uRZ)Ha7 zHcvdv2-eE1#_LfPWM~)sPpTLuwI|zt99DxACL4 zX7>%D`pVq<&))QbM9#~Be5XKxjpoaS=tp9Ih2HJ?4Lu8?LQWoMbvki?OK+r$XDPSi zws>T(+vBHpMo{;gP`6O_oKqE)kQqgydQgJ)es{LRE!L*7@Qi-SuoiDzg5Z0?S1JEY zj0afbUzGOhUtRo8t)I^CWig=1-&-9A7L4jSR15E-Gnd2$i<+q+9vK+h0UiMTS=3i< zbm&s`4Vi=?1su4|!Xlm{kR#VO?C|ITv}V{sQrSL8A8HVrPOey$Twmc<1b(DAfRgv6 zXQ7&hL7M30^@-<|BR?O^byA<%yspswaa63l@mV4#tKDHCUwt*dTliPwV8G8QlDzI& zCl^_;?StdtN*=~1S(Ja!+ZklpKFVqQm5P9k%gtRJL~kU#=6kAof+i6;dY zQ<8|z=itvTxO6K0hBFshJ9kj=`1tzBE4WT0Q%O{7Y_Ax5TqebpZ#>E`;KY^UyGz*~ zl)?IvBb3}`=IMf0qul8r-2M#`VD;Gzfb%Cn5(B!CVIbRZrg;!W1*bAL18!FQ?_*pM zco`)^gy}qHTaLiIl4~4ReYec7&$tj3R6*S}%-~tF)n|mri^E+`ps%VBMkwB#>xRCj>6r?F2pmN|uw-X~o6X(slLaQ|U17{7z-&hz19Q~k{q=NCDaf6Kma z@llMK|J>`d*XIq*cUQ_W2D9@l(UdDJ+E@_Lg3t>Q(ha~c{Zl*AsN(tzd^tSn8wK}e zg<^ZCK>uHE0MFPMKPh<4&f!-07&hACqA)`~MRGwqVX=rFd|zCKt2Ap2Zd6-%q$MAk zQMF|fl0I!Wgp&j7fU-W+;XOC~&9BcMZ;o^KVtC3UEa0(@rUl9!Zf{Ni;0&5=aoySazvdG zCUR~LDkKME?JP&*b_Cn+SzyMy=KbN6AuPLxge-9-<3383Vmw5g&tTfj^c0!Ze8QqZ zEWU?PAcE#rs}g+b*nIid0*3)Ko0QLzE#NksVsr;{b71K;7aqQoGpIDJ=y8nl#vtB9 zrmhjlbs1K!iZ-B9Cz2aVAjU1Kjuv2LwUd59O-Po>e0cZ-= z&6%}0LhXofwiG9co;TmPZYR$U1St|rO0 z;GfuSQ{#&2ZceEhUx`vlei(>!|fF=p6k+3=r51H6P~FI*B65V{bluvgYO|Cl?HH;t`3|-TA9M4O*keA5PkS?rq-P z7p8%D{&_}Ak6SrRL6VGFsBha4o)J74eDeUycA!%nmXuE&d$5gsW>M^--jFjhBiyR8 ziefG=a}{om*K0*y2TocD6UsiT-@@q&e{=qlTUULWT}>uCW@hux-I2DmT(?}&K04Z! z{>2Cdn;NR)-^q;a9DCuz<7bZA*g7#+q=*0mudUa0j^qB{+`-}zz+`KS-(bGp(xRX# zwO+py)eb^ow?VUsSUl8G%!p~ph)W5jFhG;;r_U0bj`)5=H#lw>Hf==z22r<9whyB^ z)2slk4P&Dz;Ny`Em8DsdU9w4H{3xBu;1!EbnJNQed=`n{)LzOPDagIN+{_D5E19~< zmeFsK?F9syD3oHKJ_>cVjatX6OF13?elgU?#hwA@e3A<lP!-qeAp@)8nXzx$p5qqT`) zYe3=HR$9a=56-kue5n*&$vHO2q|-s-Sm@SjkbI-|5cqaZ`+B;sE2i4=4{;s2 zquqa%zQ=|5GexU)*xy8l4&ut5duG`u@Haw+QSL~aq8ZVFVl}zaltewWWGpec=DQrW zos9joEB_=vtP$($?vGs6JI?qfYsm?Jr^N z_kk~wPNX&QUZ0inXWHJ0Gg6k~8Q5yxAD7Ai3!sR^i%(A(x#6h!ei-KbCm?6YqT@xs zi;R1;Fqbqsh+cxyy2HdINid!y+r}^f&()*{G_b_JohuYP(+U>%+yyqYD5&5uuNf%& zTaxXMT~@`8&!q&Nw;11*_Zy-nAV@JU9Mpz*61IJkeP-)c$eM=d<>#$01c~$8HaG45 zKBzI2?d(uZ=;Bb5`yQDTU8y_Nlpno3&>&TjA*L>ys%XcH$1wYx&={a;GbQp=`mmsX z3iK|oZU44yOpYTyap>0fFR))JME(?rjT+*n%Gw*xOX326`jN$tDF^`wK?AmjrPj)> zO1ziwD(MN($!{MX-`<2sjoX6p0N;zTL_S4ggh?Fj)cQ4tVEy3*$5{W9dD?Zw*p4=2 z){^$Zl2(k#W>Y_O>Bj6ce`La@1Z&e?3D@iVQBzbxH#}LHTS9Z#WP#OH4psQkYIbTa z#`48J82p38tco@`aj(v7pp1=_R}SvXnJ|YgxksF#2~5tx;~XP)G!V)cJYn~*wqOjW zU>6zY6&i0Y(t>&rNj*s8!=|k`-2mPjDx(FuBIu%KhNs1K2tt?&wMBjjSndHw^%ZnN zd5Q!Y@FIAKk%?{fSM|SmLL*F$U0*wy*3Z2wXs zFIJE}^08IxNiJ-_m6>0Om3m?Ma;5QzEi7Y_2DBa_*;35O8oQ_^2BO2dbKm79eHKPT zkc32g2D70`kP9h@ps62Kw#<1(nqgKmN!w8J*6hJC)F|0DSuV z9uhMBw{S3d(>*Xkm6)XO_KK&!GHY2|L-Y;piR;gp!GK%}brS71e4#tgVymx16d!BO z<-5)J@9LyJyHd%ltlIe2J8u5a?#z)T){b~1Ju|fLN-m_q(Njh0@DR}2CPwn-ZaNWy%5b6<4Cf+p0<7H;Wc>rI`+#M;6HR3i0o2>d`>sEHKeeG zpJ9RhrB?Rr@qI|7Ee4~|Fg#9_Ds|WZ&m|OJNk~JOm6YJ6Ls$h)LyL!KkwLBw( zTC}_)30SakrEV~*-n{D!uvqz*P3!!(o}HH6@+^4R%E}C?Y=An|84hvk zMx+1jxOp@73G-<$JbY;S5>$`&mhtg2t`LPH77NqUn!X6DQ;+)rh&}tcs}iTse~$&J z#85AHAP$k_y~1V+*?Vfn7vqRY@cUht&=k!R?%BJMiMS{#)j9_|qO< z_v>Po<2h}6d~PJzi1lb#3ou)=zN9~lh2VI)HvYBAk^jLlCG4a{#UmVu{=^R-^sD++ z>nTVQdCtGAHHR+nh}k=nu~W@9oJclrH`V03u+^$^!VR*FtZz91Ic+gvTl&{6eow3E z&~5~jB(m#TZ@{G-RjPOfXsfiy2$q3>RiL;Wp_|>(D0oPJa|iRb_7+HPpIZw7z<9g( zmxTWMQi;P_#iElV4^g)NeemWzB6uHS3(O2+pmxt|5Fhcrj|$6@CwLc^e31!7QiRi8 zNE=98zsssVS>l(zbsQ>MAcgroc~x7vsgP@1!r4g2B?NJx8=} zt5Y9yDR2vPmzE8$yp&?Q-h|Vv^oqbcPM>#KDy@K`;SH7x?|Ba) z6|1NDIKb!qBj)!oMbgKm4J6QHebWYbwA4ieehbJ`tCA$$9DkM~!5&i(cCcryPtX=P zU9FTP=fVb9KW;pe{3Eo1&c%-9KXc+Jnk-QEew374DVhS@bI8Te%Av`r2o6Z30|mc< zIOn_e+)PvIoVh4)_KdrohQq1^K|@^Ce~M1D2emAd;gnqf9Zrf>bBbkANl8e@_?&1Z z{GXO8PsT^)j#fdkV>_ADBN6H0;M*6S*w6&pCCgsZbyC*sP$ZeJ6$ts#&Is~MTzAOM zWHFw2uQdFJy)w@W_CFy2PKEymWk8z03wSKHbt`;`8n8pCU|r_cqb&q$AuuAm-*?GK zMeQ%qdfSWE9P$d!M}~+xTK0+0zs?^p?5VNeRb_X#o@c!2V8y_e*H`0z<9|}NA_$At ztra2E>t&4@JDDcZ^}XX0<4du1l#H#6Q)w`UHA z`{<-`EP~vpo0vFq2oy`KBpP)XXJ~|d;a<6(p_z~MCzOBG^5BV zWg^ylLc2iBzztK(Yc)BplqcopW79R4(ak%W4=5@2MSJ%a|ceY*-} zCAFQ`mYd%7GgX!=VXW$@ay%$A6CMpmN-J5OXwmR2dS@$NSdyOE-BVFq%0^4mU@f`1 z_yJ7WT`Ab!T#%=3*^z5Q5wVZ=q9a> zS-6mLkdjNGDJP4euCvw-R4{E7q0|~WPn{ZjxomyQ*(B)Db&8X=QA&;yeqw8>f=Lfj@MK>|suq;QBq3)TPthCtDML4(H z;&-R4O~1=vhn)p$SH2EKeNo-052XD2!PRq@7@TfTwSHo@mvkcBcMH4kgeJTNTg7+Z zkXvo!1TYLwW*GX1=Zfi8D$%aeIY~*hcRdZ9NNLhW zYRu-PX}dr=lHl)VjJ`+Y=TAak&T<))+|nXi7Ng&UwVk{v8E*1Ly4Qm=6f@pRs7~=X zGvMS#LC#^M+#3%Eikz~!b}3={d8f5{eN+~M1Hw&T?5RUw-@m_qN3#s{^pWLJuHB~# zcu9@hUGSxOn)!DM<`&*+zW+YPyBltwAYj9HbA3v_DSg-I{dnYE#zF^P;}lne*dFf_ z=Fd*bqsSq6tnMV_2Cbbzj&(08wA}dHX3&dWh6-jgZ$x-D-u34aC0^|cUi*DVE>YL- z4}w;REF57Qmh+lsn53(mYDgXOD+AjOMBTl%`gu9Qw-}OFu z_$h4eKL<}y7MK72ex~h6rJ9=Q_ea+MeSBUn5r5PO`gqvTtWdebINzM5fec|=arJKy z5tlDI!=QZWAflwAhY&2QSUGV2)FGr;wr5=D$#=MLIhJsi4*x9n#nOkjbgzQ}Je8RD=`0)+;M=(QEo{F13ytG`97bm}Z&qfv5{?Zc@rXOsd7m+yf9`<{`TL=%Sd+987Ns2rIYjf$q;jB@5PlU)}xcNJVT_90gF!OaOWH&|t9%-VVI zF{Lj|Q+~+J|8O3`Z+mTho{S~;WNB`rzs^P|6x z7kJlc`LajYks;edM~iKGb^yE4drJczmBZMT}0V=DQ37>}KnN^7 z#Nz4LiZ@p1l%>JFqFS(EEw`Jww+Hwn*2Kuo!PYCFjorv8C zCER6j1j@=L>J2cw+-Bv0L)Z*FjH(OBAp}vu-7GOEh95h2KTjP3`~CYZs*R^|7rL*5 zfaAB%g=aX}{?By;6gHipL-`-R_Zd*Sqs`e%oNh9sN7Q!7CD_Fw+z;*P$0IXrMKv`+ zDOc(Q$`Axb6jcZ}RzTVF2mx6;rEmd?&$!*n#aoBKWz4`hCnWkY?o!jOOTRG|&zkLw z*K9pGCiKJ{X@w&umhOCIPHPq|J-z|a3oaR0!RcA)o_H;Vwf^a|QG9`=(+)cIq=` z@p@a^pk2!dm!ad#{3_+EoATvflGx~0OsF6w+`uV(WeF54k zdNXc*GAv5#WjJILjGtJY_ARktF#MrJw3#shERct#ci8_HF&ckAiDn*0>&CH z*4#)B)6@faLb4hwiLYECvhQ;j@H>?S%|{kz?PG$VO`^8`PSryANg2WZqw#Qkm*w06jewHxVe*@ya{6mAeIf=zf zofh}o(Kc2H6}{=fV27YFKy$?o!Qc#x=(0l`c0$oJBfw3DC=YSy^I6G|HVS_(1BaYJ z(Bu%tmP`D!%0zAMTlMTmQdW38BiGKFIL&&p(`!oQ; zB%^EO6y?Tdd~JK@uO9AsLEXEe2nYwygF-$yDK{b;oIIwjtJ%GIAKPQZAT1uH<2J)_ zl%82uKb{<`@4a`B^Z#V>^5d_uS;PG|O*Z}JrhW6UiE-%rSa8n zeA}Lzg0v{N{yj`S<1>GslMZ?ZOxnwq@G|Rp^;NM(WAH;NUTCP`34#qyU!!WlF{_R> z_*rZK8NxIEh~RLmM1k(wRwJNp75ZCO|=VqsQ)edYP zvC9=Aw-uPULBr}_i~quB$O$(UrG$MlIL`=Sz_W@hee~8Loax}7CiHKf+DP~~iD$Hl zf(SY_T!Y2>6*>e+ZQ?631nKbpJHvXF6Wc(BfUDr}`SJJtyN?IYL&7pC{Qmj)XjU@D zuzT|?^HXt0`>|VGNG-gt(#cDK{p-?y*|srv3x0PKy>ueF;$lu`;KC`xJ8!dqoFmY} zpiH(V{_(57Ep0xM1KFKiOCB1i*kPD@>UXw8D+iiWQUf?e)w_1{(rG2ez=0CkcK#WP(-2xI%}(kRH6h zI)J~A?;DS>ql*5L!}$I=b)Su%PrqM3F@OJfOqACh3m9LN?li0!cl_aZI){+L{6~uI z->08-+ouvG5`SbT(Ololn*Ve>Seb@lH|_XBCiAq=?L4k2^zdgl5V|{4Uj81y6BT=P z70XQ;pH4#li-+JXYM&bC$RWUfcAyFCvsGBrKX(Wmj}V-K4gqTzg|sw@oEm;JLAkel zmx+K zjZHqlGB^oypwB7@YUFwP-ZiFf2OR+&X7KR3hd?`wAb=%K*k%Vg;WYtphh}#J-?2hC zeJvxCr=OqCQ*$bY`Tf)-eE&T*dcSr~qWHnay(;+ni%;?)FI+O&m~Wov{KLQJBE;?; z#Fzwp-=dh4J4qS9R2+gY^Uc5Cu_P=0TwWe9ln zGSK%0VO~XMh%yWJZBncR)qfQZAeUdahW(YBr z&p8dvdrn<(2%qg`=O`pvhwq;h$4_71=Vrm4d483sAHPl7gJZVs-{=sIcV2y@ykT?k z$3(e`neR1KAno{@5RK=~1`X2OpP5Gi=%J$JjeQ0e5L6^^o>7sl5IkjgB%XZ|Ar52* z2YwrW`3s+fBz8?(y8m{+sT34BtK**kGKI^$n!mkq2o-$E6~kb91Fa6v;(VBJ4*@Gc z1o0l#pBw@trHSv4;k!Fcu-L1(GLwN0!A;<0o@+VZ-GSxz_xtPfP4%Aim2epc_A~{llUc`L$mW^-~IsuRF!KQ!XU(MB?(H#OL?5 zkooQ}4ncHJ9YXl0Mu=-(tzpSPE4HXGehf1vg`hY*R*A@_5Y+oy`uRd9vK#oBI>;Bo zjL+${1IY&h7uwR1|m{FWhJ@J@>~QWTdayAMwJymt07DiX*~; z`5^Hc{V;jNb;a-*an>V;01ji>UHsmj&>WuWmBOQ#`PVZa@|(RtOe0gME{2q#2L5*^ zMTqZ|s}%hAI4(>XD*WBTU&#Kpy@+3y92w~nx;s$NCndX7p=+c=M>%5L^>B!tR-PlYE5kEhc_RYWV z$Kl60=VY%2IfR%+S_tcu^LrF(TGfW?D1NKhFihg!;8`qgMJ2jK;1GoIxT*My za}oVM{oeMWK}zFetX|7$`~LnW36hwn0hb^BEw^!R3r0It>42^`70DPcz*zE-op)wA zegEYe;t8T){rdiGrkk7H)4R`k%AP3vvkajk#U)sSRbbD z`vb`rVB**+(6N~i%WlQ$ZA!tB@8OUJ_I)X9Z|5!G^?=t+6ykqe9 z@%_^>L#VvnI@BM9{v@TN?eEnel%0f_5`3L6rO9+kNk`FrT=7RY7IO9XF|gTtU~~Jo zJFIJ;5l7_;`811fQ-$p1P}9BK1L7rbr@LBxLL(QJUoyv(P;w=yTW8XBwljoC!YrGt zo8mW#tA#Z^TgJX+Y&=a1n_4I6^f_r}R6CAS=uEp3F|UNUAZ$!J;?sq~y?bFdV2yq~ z#_%so2E5W=!%;0O2quU`4#8t@@6&R?o2T( z>|_tQro=?^nLj62|*jHh8aj@-WQ?cTDt~gh!NXk;T0yzXc*`YBr z1|@?}bg5{)4U4C4LkEUcq2}Ug0?`Zr0e|Ts04H}l3_3k`2!C7JO8jWfWnGtJeYzOU z$KTGUcAvO+KfedB7L(FU%SiW*)$g&4_|+x&?>6$*A<%~w@@Mu`;id!gUpNFH<5h0c z6W#jkGHRoY)(wnx`!8p&2UfX7-GBE%O%e6BLQI>9I946b5m?DZKZkuMG zj?vJaIx32azhhahlk(o_6?B}j_)nE<$Yy}XOI z-%px~8MJT+!_CJ9YsgO@3GsAl?@-T$+$!8s-|T(N)Dk;gh6u?~gwj(s8asrCllMr( zZspUual5EOhQ0dFgRQV!g!vtur8ntzfeiX0grc|G z(ZS){GCoYSfn{QNA?iMJcAp23d?Tb#AMzVVakH&7>zy3gKRN_YUpa(f#zGgk0atnRRfH%Pup7dgf zR*bk3`kjh3FW)JM7tccE{=F$zEG~}_n50-maSDnPzUlRSC6y7ue?L&m@5Uk63F*(`$dw--P{LubtQ}>%?UW+(OyC2fSUQBA)z$fW1`Xh3fgX z6Ut2LxBILRpERzRp@LJPG$+IUNB|w_p2>k*VXc zbazB)#(EO1Jid5}rfD`7lES7~n@2?a-9=d2_wbhJwRpw41AE;Szwmx9h&gNv6*Ok= zTWPPM%P`1EJd(kS%Nd6Nu2ppUkTRi0YDxs`5US?R6m=q`hgd7rZhgW>{xCN=Wru*! zx8i;>aqH21NfCY@YHE6sz>J|x&3t>Bj9jp>-X|L^EZnrnZ2A1>O9q@c9)<+<4YvwV zmv!7MzeC%y_AMEaaxr%HdDcPZac-IFrg7~FmDG^F^>%eJ;!D+!@zDbz9U-YQH?(b? zX;#-8MwB6J7J_@Oq!9F6FGLqKpU8{DR2y(CZe zoPoeRWA`Sb-X~rCQ&jkipX5Rin(~%s55g^=U{T1Ub-#CQ(QqYjwjp0t=>C4lDlzr) zoTbFy1^CydB2HUJ9gaiDV6E+ble|P}h=$@EYIvVP;bX@f?0SVdgjS=&3Y1%hx<*qZ z`6}aP!f!RQ#q%U>4eAovq1)D~QQCD)Z$Ae+cOZfC+w_fis=ysYITAwZ&NE_rW@uOR znvk;Zi?T1LraG4tG&c+rc2tvYLusy?s&m|B<0UgttMq5pM){})6N%n=b~sf(tx21je4%ZWtlSg9l1bbu*4Lem(Q<*|bU$a|s*fqJp)H>gty`gNAqEqS6kOWU*@APqi0F z0u`|zNMJpHOKFWH#I&|4byc!qu&V3Z(p01kX*`H-l^yS@DirIqyG;XW%3gPq)fH#O zIJ2&W+8k;F9!I>+uj7FgIb+Ux8`u;7Qe3lI*gX@7Z#C?1iXA?K`?SY+41ESt5e3rZ z#l_0b84dxvUhn@&fjh$?;4rzl@9?SupE5Y|d!0C93@_vK7Fd}VizdnV#WSo%i#@7hkmvPoWvf7kfDv1BdJiK z%)APxUB;DMvmAmoIXprCi-;!v$svdleGeKZ3d>oMwgz_y=n{(e64%O(1OrdAiy)B0 z6c*Y)l>TNw0rKuN+g>0b{z**j*1?!e!8w>6PjjZX=`!?5W3Y?7{xt2MLLHF?L=YL3 zT_)$$zq<00qt*}Hw3NW!|irFR6<9icpzu$n4~3U*$XL<-VXME6!%M&`%q z`d8Ch^H4H(10jPQib+j9Wpx{D*|z<_D{6Wge%{DlR|AI`BZ(fXHFIm73y$M_$4Q`W zXw%k{8cot{Co#6^xqGWK!SC&!I)fmE8=Q(`KsWC*Xss!6|9|Hc0~$6`#1*Z*%h=yn z_MfH<_}jE2zU_!_NXK69@B85CB)=t5i*9m*2+J^L}QakL1 z`X%1`s1l#R!HYt*i*m~1Lx0aj5yj=#){_<&&;-mSqBgBGGbH~q{8h}lpGntEo@myU zr09ln8pzO1RoOOO&4<3P^xTIUyCUtmC`xU6Qx!&@%X1e@UFl)eI>dTf+p1G87`{}7 zgc6>GR6vDfKyac!A+xzL!D$ko_a6(Q<`jugzcnsnU1R%%m0h|QX_>*lZr|elv1C-@ zhtY`^%@71ZAlu%HX8zDa*pEsjo*`stW901b;|?K1mIF?ffK75krb5*NwPPQ`axihy8qKWLT_~=bK73O!!iW34^ST_% zGWY~G*1EOR$V#FnP21oPs;;)sy62_|X+T;%rOykFm&i&6(u{9SwasHxEtYqehJ#B- zKK_5|OfEX8+bv?hB}{?d<$hJve_Up;1%{iP2@1Xp9@wA`L28^j@E9LpRC>A|W5oZ! zA$YV`ozo7?C|~9g+a31aD3mvptBlDBo|FI1oxWxWC3-_~J(@X{?Z0n@5!cowvtlA*RhCqBCQ=%NsweJ9>#G&&J|R;?z1c zL$DMLgzua8m*bkZL~-hoXB$18xI@6jax&2Fw8blXhAKDFoECispzycY#Mh=`g%?j5 zOX*cctJl2Vh*2>0=ECt{?~+PlXu}P+gR&&V@brG(O=`p1b1Dh!jju+}cfhYi;ZMr%i|dW3f>l zCx@vy0qbV-mdZd%$_o)@)Y z;{?c7!urazM3XuEjsS_w*y;~%VxIRb^oQ-5NJ{deu!zE>Zq>VX2^=un4%m>XdzCLM zrDZbc@PnzI`MQ?6yjps|vV|IcUmOqPx{bPlk@e(vBab@6(9;TBh1jgG+jCM(AJ!f9 zfYSaqCEh5fcvn88;An<$rjI2Jg|2rD!yJG?fb8CIIX0okBvhMZg^OGU8z z4?TqEH8pw-iGJQOz0J=*0NzdoSdY-y6B0EsI(Ygx>00AXKO4?*vAw?H3laCM^FnIA|-J_dx63cRU7)0!{o8K8DUSA?E zeR>X1t~XYQ=R`4F0{w_40-NU1nZd^S@|-W%v-?{J8Ap`Kb7OrwJMqZ!V2uI4d}K33 zc$eKk_Mh)*k!jkVSAseO)8V*p*i*!UNQ*(~{M{*7^O$spE{VR7cJ)T^MfIY7!(@0D{_3B({VCl@HnVy9GE20 zJw?uNQ|8!GGR;x$Q3MeubwIm}7LknMI%q$qtwm|2C@KKM39YHp#sJV&>q3ODnUoc2 z4CkR<=dd8N{nhhj%^}1t=mL@BQd-X~E>W>#7yQWTL;-HGeD{knyScYGbeSP^JNEIyP{!3*&KgkziG;Q8b zXoT=B<8J4TrJO(U{O%dHw<1#&+T-vXfro^IKv=YZ^&(?KT6oMM47fJEBItN%F8go! z(6a$2)1YDn4FOKU??w0&el4dAhj6Sa-*$-;WjU51C|tJJ;|)VfA}RRMuWu8=l^-jD zEfSvh%^}n`)WAZ7K%Fwj9YTg=e1=2F(3P8T`ErnUc1SLgfdw!>1*?j(L2`@It2Gzp`nK;G(%u`Txm77gX&&y`}-i_ zQ~2M5FdDRT=1v(U!;bmdFO*4#hcG-tXi%RVYK9Ct96hhFG56(6A371`L)g$} z3UdgqB{+o|DN()_gF6J6aG>2EbQa}M(Q9=-oi3Nl{T}|ko*vixxwxHo*APVhhQJfEfa)h`n*00zL&67qRW5n%o zend5cuU}CI;rPvRf4LaC-G$=%`iD)*?V*Qo2Zog6-1Uix@Ei7$MD_1eIRK6Q$ba<=V0acqAQB?QJ((iJ=#gV>|WYvoUE(N5QN1Q05o1QForq=ocff? z1_w@*)r>iW25&r(;b&9v+f(Bu7^0r`qo=kHPgvRRJl-jRRYs2^y*%a+XwL4<=Tf=s zj3{rn`}MlD^cdn!k8kHZc#Z4*v6{sp`^N&9r>DQ`3A=sdAg{h(3~;eMydo7dc*nZ3 zzT9rN>*I0-;n;Bbm&@ZG{(8PVuHEf&F3#=P>GQd`T>nm=-}2vo^9u0e%kB`f0ha{n z@S4G(L|iUIRenMp0&Mi6ZUtFE2Ov#>HwbbBtNw|G-J6WIO~#Ak8G^*>LFYt;BQkgf zCibU;jT=ThA}AI_(?UUheBPs{3~nIU!ZjW2)8QzG@13sczt_k4db$+n`|Vbo%S(5; z7a_+YF|vY?S`s|lHX5+=DlUKTGsL%cMa_>H!rOM!>xjtnZMr>fFo&e=th;Uw>HFn& zxnIxsa}i3O)5c1F81S2^pLRdr`G8M<2{-L}jRKM9j^57qc4sX>`SL&L7%DtN=uxPm ztD4__)X@yFPtVm)r6B+&`HZ)eBWWrB#UW%&Z6Xf{-qA#_&!BknxfK~pCTqUyw_JU0 zW$^@U0p=)ugC+TA3jlH9eR00sFCpu_+#i?XaSz4rDOkw$qiJ04_j6bJx)>OlZ|9py z@O%3C!sj?aJRJrG*amM>YQefR>Oj|X-Z+F%+MFNfsl9Y_2mn)gf7yE|;6K+jo0{iu zdH8A3fBbuSi|f`EoKmiEJ%#UrOT3)5Js0KU3ce=XoZIDgf7~x2zql8bINvNdB*+Te zqI=ax+hd=B7s8uhzQVbC@v+mVGj)8H8mA6XZ2t8uklXrR z6~MZK-SmP2MN{s)REcDw6ybo{QC5fi4i?|p5bH19v$P%U7h235QpF;o*|gu z)cvv8B^k_d_{s^Fe%{mQJd4L)B}2w1HDpj-W(IlbIy1zVb#VsVV z;c#9agtsl>)|A)BErg--{c^t*MW}0SQ7{$aP$>A$MG<_*7@rXIzPdY{?9=H1(J`Ix zQw;lHA*W4tdy4Vxi@lseG5rXqU;Es1u3P^kg7I;Y`KVVmk0Vl=8u%sb+|z0Q8I((7 zBgg!q#St6+mpj~v$Mx~J2TuZ-4CEcOwxqwoD2c-usJ<0!npjPy`=dPH`ma6W)uCjO@I_sbOqXJqP_RK-mXq$Tax`ddAd&qE~iypo+Fpo=NO;lm)9Lx|92tcM^fahx(N zdH>_|=sGAJipRYy$D;lcCF6@VuUIy(3~oNjlE+3(_?KJQ9i#JBcj4{R&fq@HVCL1h zowgYTEk0$yg*trX*xtNb@3%_qk=+xtY2yE_<{z1U6Ko~vS;Ow|LI}EG*(F_s=6DbAsyY{$DfCD^Ou75UU{V~X)ld}-4s*IUZ1`8O@k0vvc z2!p5Ty?XZmF9G$aO?}t|@$QXH!yCD*?E_&3PqY~k;~#ZDs9(hb=vqL`i!!_iHZ$iN zNntyX2+0W{f+#x>+qc4$Wh3gr$a++DJJ(a+F$O#WqoKVP^+f7knaZ$86{>ak-FCip zpuiJVKccLgJ9zfhY!kX9X_IW^E*<^q5TyJcI0WF(!)q{w_yg+5p)pzjhQGSrC#YJ| zg$^av#7yU+ymhtg>C6l06I2uQ4Q>$M$6(!KcP@jOpKrH&__`FCoK%a#LXuXg`}wt@ z?cZwQXx=ztyWi7pQ?Tvn;1JaB=oK@i2bzH$m2$%k>fE6lL@+A+49K4M171UB$bsij zpOasgk;;*eK$<;m&3pHXZdG-F59hGL@shTEeGN%(cOmqNJRJg-ydf!QEYSIK$c&7z z%IFEWd~I!%V2qSCCAH`)7ma!>O=YbTvSq{qBiKN=XhZlR3|K^s>B~s!83irpCmTR~ z>C|BN3B#F`ETIfpJ=E(9HiPPUQRv=(#dPnhL&(yE!WZB&1hriIdqp1J>~v_a-Ht7J zpChU9<@q;6P;@TYhqFU>cqNvx+>Qsif$SQ+;N7&d%R#sNa(a3fn zR4GzH2_ZPMK3pcG6v1aOwg?D4^|GJ$9^7c0v#B}hg}5iJ-$L!T>>N{AWqWe@t?zxW z>K%NB`xof4z~=*KV(e%JN43Wtf-i^t$t#vEKlkcQF_zR>{CX(feLuwnY{Q}Xhz@+} z!K7DeQC0a263_!KEfztC>qYf;Jxu!0Hh6EoS>P*as1b+Y<^qSZdxkd%^t5j%@44r~ z7eLH>y5X;5J#TAo_zDFVbx&Jxi;1vociSq12{Q=-O4R?ntP?3G3L%_*C?cOtl$ULk3bCUWY&;t*ta^!#|WZ zL`4P>7kLF7E7a5NEb0L1bD--S4Wi$hR&`p0ly z4Ltqxo*2X-I2ffLn~JAH=L?{p>+$lO9%Zqk$XbQbAyMAoIjvE+&NQAx9KdVcG3N;f z6(dNQ?O(?Fv&-nN^);FybOZW9dW*l3;D=9TbHLMf7^wR|jN7NPue{bL6}_mLm$K)b zyN>Pze!T+FsSEaOq!7f4VCZC=R6iK2d%~r%J()=bT%S`{we_U+V7rbqRo~YAST{J{bg@NdSf5^c6+I-o_#<--O6=n3krY*E}+eVmM z8*y}zwSfM7rDi2vNZQ-EvNY7%L(MEv5+&O4qDRwSZw;z?FAkyS%^^fNbd>AJddwlrJw9zU{D0vP4t1P39eN1CIT>uy z)8{ZIWr*@&4grc&^Rthau6ViLwU&GLq1O`9ZW)U(-LCG-hxmUom0>K!`Fm2N(~+$ zP^dyMWsN_kMK*fFvlu%6E(ts=0-(fU?4S4$GOB-rvv=o!!E}q}Q-_fUITqY-Cu*GO zm>}@Akf}~M1iD2X7_w0Iv1toFt~pp4s`d*_#TGdM_>J*Eefb+VOXmT-G5*Omv9!Tf zVogA0&_t6xJ25wkhnUP77OL>cl6IIFQ?jn6krBg&mJYRHl1`JU8`Jg9mbw+ez&-1I z&x}&a(7IDF-52vWExegxt9RkIg8RUt2%ac=^uq>I#u3GBgE@o<`~8^!cwE5NgE9S! zLm2UW3;+}(FRun%uy&|0hXB>0I}90u^|)OO8*w}fM;!tVZx7+LL5Zx4!LMb1UOfbR zefZ>1ULb&3ATYTs^(=<9hZ~h@DbMFaIxnPG!7!bSpgG!bX+jX6xGpFw`@S8AQme8Y z%9d3|lWtJjxH7ncL9?l5Jh+B|7*1Ofl6+6Ok+jsi3jEpo-<-Bka3$65c@@-pwdNCK z3V`3(?SpA6wpoX}_Nv7lLdKq=6ljK^Fv9onV}>&Gihpwm8GHyvp$-A3it!E?vGNVu z-3f3Adp%%}VZozcQHVou)OBb?0P!KrA=D%O`S0&ayJ~=!?_`}lPPwL;tu$n&X zl|CkER0z<>X%zI|9hWdClZFUp6|=ULUD{YDAYLv)J1B68_$UQ*@u2()mq35R{-|;PuI2J@n z&k=@SlTmMRhgJVsy?=D22NVmidcY6(mWTSM9zq6lbc>e^c#w0H&S=?lq|8b<-(548 zXOPJ?s6&|VDCZkmcz`M6_0}HMMI#&9G5tfulwkql?&s%$+)tbr^Ip$%>ct294*w-K z{G+65gpwhF4{^CwwC!mha(LFani19zt!%{4Fw zVTFgEVSnW3BRHx?2Ey|WU8MWvO_wzHMO&7_HBgP0^K+5SMfA(tj_OKkBw4&^fL=Ip zm^3L7Dr>7aYhbCx1XB&Ac1!d~WC;Vd5Y79ZbkkVZeWi7!n=X7+jMa858BwG%R4UKv zmJlH=Q6kFoQ4dqR@CnI+ea^tPm&jKd{{;P^Oob=P zppEh09YO{dQ;#h=VI9msIFdHp&ES+w%Bdr43 zd=5D^4Eo*r7T~>**1w;dSCJ7xuZ>>(7yX1{OJbXJ3!+O|z!O2Z#N=T{DSw+9Cn_K~ zCQi5bd;sU>!OCI)1LI9*TO)5f91XO7@fj;!AxI-tqz9xT`aDGaONNjEU9K2DWvEd+ zO9ZK+rI9-})2>N=H66*2nsSja>Pc2=?Si{i{0IKmF#smHc~hK=#3j#t-1i731-hqP z0?!0tv@)ECh8RghxgE-E)>2u^x|O6U8LvX2ExU5kwCtMRw%r)AZxSrLq@?6h>1wJ( zRrI7P`>7_juS{PFF73oP>sT4w0vW21qR(V%Jp}vfq^OWagwi&o{Ic)Vv)M$SUKN z*C7Fi@pmJKPO`DLL)Q}9nxPk_)U@lg9J^8sqn=n-Hj;*BpI!TIm&*q#Uhai13)=B;cJ_BxE zg)x4*j3zTWc7*3afiyEJ2pXPc`Xv(eU8n`;j^aoUA=s~}zg7XyLo8*|005Z!+8bO7 z?ZllJLOV~I06xW!$d5v1ZG)XC#RaUGD(`?4qN>?Y7bUZ0Z@Q3v*CFjDRoj<}8x;&& zkFD)hBP&~lSZ?O36wI;^wT0v`RfE-Y7t(ubl;ATc*Fys176XKOn-+HMqq}87w`q>0 zGJ~1frTtSL&6GZ)cHC2on}&eYS=?WYLzgAmFW(FQ7n0s($>rm14%aZjjwF^|;mW9# zQp`$ysJGCTlF8u0?HIP0N;4GUGSpr(2-MAxb;hx~k`|+)DASo6_KHm<&-u^1xGyr5KSID7DTh$byK52747|Qk*F&nUz2VMTN11F`mF2Cq%#gO$ApnLzdB6AP!i10&Qgjil(GbX*851JG=r+h& zx;Fab#ehD|;*FrP@M#&2rgFrkO)CO_x@8U3EgTc;9$qX?OuNW9eVJr=IQ>9XrEVHYXM+PEq!olo*%1fCufhnSButwf zcX4IhEhQyeh7}8ST^kvS;o5x4%t11qEF1FPt-(2UCE`O8!BAHq@sd)FZAi~^hM$#qX>SDT5Lk<|_u>6)fj3};M2G@|kqiWP2m~(~Ml>7DnDYl$>3%r`9~B_t zZt6_a_9xWqQQj-U+Nk7Q5K#t$<+2TbGRB9Hi}R3@6Izw5G1C;PccyyV54~=yR<}cI zR6FUp4i$PUe8}smHOkPqmLTY+rOgT5Oz{_K75FnTzr<0(y2G`2w)%~KFq~=0LgOyvy59>YmO<$_uWInWL?511zE$db9B}22z5aMCH)n79NKaN9F`QF4ztgbYe5=TV2C@O={Z(zN_~y?7@=Pcuii5YPsU2VP~g z#z9iBtR4bTar|-!Qb;MNGQw$12f+xNsM566La7=SN{J=b4zgCVteSxs%V6h}&Qgw@ znZqy5t|2_QjmQkU>B7KW!lkgFqC1l?Ohg>QCp9WJv&Z%H+Vu)= zcrGrN$7PXjyY4kw=XomDM&tQrbU94-%T#pjK9lgrEtE&X6m0BkzTIz^1E6`IAw-9O zoHa3I(3TKH2rr~yD6InZ3|}8G%wr`(PS;}`@C+e?>8`~~hK%lIg>*f_JI1TFNb7<- zLWhlm2K;T;`j=tw1bj|H@7gd|K7A8P5>*9}B$YxJz{si*K6ASnS2zH+rkVx7}d{v5voa+mX6I zrX2ywF_Q-tsI5~A4^F?QewPeaYzD6JtQT+y4hcO3*FDo6S~3h1(sK7XiVAZvp$?(R zP=D_6{eApegciSDTw*f7Jp$?wfK>^*pp3oB@fY7f0roCeUU~YTp7@Q=_uVtXunK#d zlSX5^+c&*hU=ukI2dm}Wd$)_k&c7%!qeF1+L)HKK_~oIIOBY@ukY-Ldi6>0qR=weT z$ozw8$5p(8{PC{Ze*>c2qeIxdZojyl{zp^sltH_U(}1{8#Qn|?!ePbsYN6gV=sH$A zBAb7qJ}mM1z@Sivkg=U7m_t_#@Zm~R{mywn9;roH03dNfCq2YroQgRL%u2f7QwA6F zQ@>qM^Le=vMIC~|Dbxm>AVmzjt7+b;1pTUoK8ft3!2q+pcski%ZeB z%)cE1D&17z3!D%VurgSp)Bzy{N4ccP=&&PA>kNrNiaG?G(FI^@81g?uSVrpKHxC>F z!D&GV-c$sJ6eL6NO$Pe~@yOWm9kuG`3@9b0_6BG}yv0rNRq$h;SZ<#r^MA z3)as9

ka54>*Q9YVQwFz4#}lwti5;6bPH4?Fl7iVCu)m>OBAJWz*#Zr1p@D$y91 z0S1c8b>nxn$P z%M8hQG_Lr0)0y@O!he0s?ZmRBbluMLWBp$&zi5q{b&B9`PHA-r^_t`Yx^y?+^@ksfgfAn$-TcF~)su!{+P z&}PUd^v?fxhoEpzLo3wpiHuzf(xNIWqdQFPbkJwlI!J-N;_=j=b6%&4@QPLmhDinu+Z~ce2Z9PUeHEW#kTPn;UxQrfx zs{R*iNdVb#znh92-zULEkAXS_={tf$$cVtB{|ASVp~{H!OL?c8j1SkL4q>Z3<`b9T zkyv9ruupFRIN~#?xI=9o=hnTA6U!+3xDb_4QeU^u#jz-|NRowv@WErVu`__BUW=G2 z93yjVBK}?D+TlXP62HY$nsGdOv^=C>w{ThaI88}Yjk5+&$o04I0+bXOG!4i3ctIRi zOlJh#h;Bv8U~GeTBU<$1wYWz!gp3q-p#OuhJf3p{4|%|4e?X_Q)KG6f-n#!j<_|60IxqE_%v}H6T%|C6__&Wvui<)% z*WF#gV?6{+aU{IX`PJn~L;5&`g~YoXuNhiyCZq3Mqn4pGItl`^1FUrhGde6oXz?@c zghTi0bjGv%PaJ~5cz3A7!C@ZNP7EJ=Pp~zR+1l@^%mT=-2EVXdykc2KhJZH}aU4ZB zvv_z??az6O=i$l^1^1hBQ%LXCvao+$9D<|kRPK`a)eqF|@Rl3>}c;>A>{$q*Tm|C#V!TZ7vVG01TNVUq%(~av%>$Tp!B=F+z3BFEx;;$rK$ffG>UmXI+bN#tMov<5oc&cBf^!@8fpyy?=GhVxG~2 z%CmjE2}2ODT~T*ace`Cqk0O54pZ;WUOQ#9oqn=P6O80#WRGEfq86Ti0(G~8TllaCLOAtB{Ry*5p@W7jWY|2Mm39P zD|FzF|9(qQtnL$-m0#|qBHr5h#cA;+G?IC%NESElV2@`r7V|>R%SO*4hPQ0q^QeO7 z=SV=Z5N-fR2u%QPx^jJfZDBVPz8iu%1YkDF=+gS%Dj{y>`zSX+XJ9@$gmf`uFsm3< z(}1yq+jd$oLCQTK_y+fA&fN-H0)oc1lOK+KCw(kQ?yIP5oFm?+S8tpX?waf0Vce%q zJ6K}$L?Oxh`-2yFd^mW!4c_q6asA~xNo-G^mLv^S9(!cu;R~B8_W1rAw+N6PQgDI# z42mmb;$k^;t_%EvYmPaD46z)EQ+_pgCxV;bcw%^kgX(1@u-fH}4$kkB<|eKizDVt! z4s2YtYu!`hHpycyjDW$~TLG&`kOBZl*g`K7c|nY|C>~2m@-%Do)%;E`!@JCXc(45wc|FMDuyJcqJi__`y zqAEJA9wB@zqf3vw#M}4+DW6V{^O#&ZARdZiic;^b^f9K-;q)i$=gHx2aUDLlb9$ZI z%h{VWP&s@pj^l}yJR>(aV~VFr^*ifzQ4b!?5ER83lZ3-|g)3auf)@&_W<>@ufW@~R z2egTxdbBGtANUaBGH$f#b#(1%V-_aQRogag?MFoO!jVJyk|9K}KV7KiXjC@ypj+<+ zfG??1Tsk|7flxM(p*4eMtZmFh?AU5*c-s@B8KrGksc9g6F>*H4qt>MR?u>C1w@1f? zo>v)Mtq5x^I5I|eJ93vdBmp43d_p0d;Kw8`{+z1#)aTWG+*kZCg#J5QpX`)Cf>3TL z2JgwP4k27!alf8c+q;6b)SK3-Lti5#F4xoJe!Jb*8+7`cX~+^jwNAEU9Qg3> zD?lRM`H&&hW(6c1yuk}CdBWwNN4$+AYh+gxXqN{R=1UtqAFPSTGK2wNn#>?2F*xPd zOi)r1{*!_rnrB>*+QzF56>W0$F;VvZfSBJ&+RlzG4MX=@_VXdC0|h0}=t0`A$P5Hy zq@kQJO{8gxdKeUFS=S>~A;3#M*SFrby`^k4Y*(Hs>%t8z53?UeuW=V|fZ!ct4*<=uWi7{dT#ruDG4g_rGg%!ZU=v#vMX~Y#4;x zQ{iJVq45PXCD9Cl*o>oxGO;QAS)4&L1eviBLB5V%ULW?B3X5~)=0=1-t{UJ6qE3X1 zt*e=U4z*OGu1P=kQ!7SmdogKi8PO($^@b}Rk^tjnt64B+HMVWbnVe}z`epddSymb_ z4?o>|`Kt~6U8n`$>TvjUH3Pd8GUMOUP0$gk_Ih;JH-MgBc;n+Zko>Laqx3rjGKS@+ z<8tcmPhj8`BKS1{e5h>UecxW&lv@Uc=^Q=E5YA$Kh|K<#hQJwN^qC>t!gD{~&z-Y; zAAwgCcIu=pd!^TFZIi zS@k|~2(55}rAVRRaIyC!B>e~0<%}k621j+q?yctoN3h@&TJmo15RQyVvl@JyAzmOb z1J~fNEivxtPG2`u`-otSUC0Y~%sBSzOnJNAL$UGBLlmzuHZLX;pYm~t6xTFafS|L0 z&ZFNb;!oa!9xb*MU%(k>V{wpr1dr%#2!rC%)`c>) zZH9W#EiKEUaN&PgSt@3$idB57gPGHsQD#HtE;u1TI7ESMOh98lxDei3w_);ipa~SG zi+-il4wmXO5=Q=#98rI>#>0ZEgdHHubeKoT<)6dI*z0pEiS5U7V+U23;WokSB0pMDR(5BdQIhP9ooQcLbte z?y2Vzjnag8|KBr&915xlXTww(xLLG6G*c^Pzad_{L^6>*wGrGmxfuKl>6=dKC6x~b z^pRdPWtUi0JfN457@E&dYwSN_sV>3Rn~*~bqPy!~MeDV_?87xp!}XAfgXgwSsupK7)KrNomm z+9xZ$;xwti%}IC*3@c8|mv2z+p{Yn$qHc&7@hK<(b0C^?N~BX>7;0da*7xmT2U`!k zuWQzKRXq|j+nO2zE`V0$FqPp4#Mai9OsNp(>)>k%nd@3=(kd0jHKVd8Pcf4=c_1gWS|%4$#Q^vZ5U9=z~{&pT|S$7F0W=<;p#qb&LA5FF0d z=tTxg6^=syk~Wl8$-W$d^ZXt=hC7PFc!bVNBQbi}%}KqdDdM2#6>_w!NOh50;jt7Z zG55G$&o}bgw{}#jaC+){B1&@0UZsZ$gB&;{x>K@am`6OKz{3<%8MhFpB>dv~v6y`q ze>N`|a`{->3720bfm>RmzuSQvAEg`ii-aJFHX+Fdk*!%8VYoBBaZJm;tLwg=${_^eb~2N#J6krK z^uiD}^^y)fsq_F6^(^E8ZO^oYNUlS653d}v@JQ|J-wMF8_>iA$g-}DjkK;UPt)A$g zZ%!Gd1@SW(P@bSr*~}PcHA8FkS!zH3OAi6ZAut@q)#gB#QQn%FNWaMt!0=A{h7bTf zVrt$j`QyeRM7z2BsMC9UA$h>0L)3eOr`o*!+YKpB@Rcn6ylJ<-;SXW1TU<^XUNyf= zF97t@-A_w*K*ggecfc?Bn7hr&)jV9D1Kvq9w6rh_&)qUE91OhyVGbR+hMQI>LW~MYxe!%t zjqZ)2(uNYeCS@T*CQfEuDP8M^v}|I6g{Pp6f)af;qjjEcONRX-Ah@8&8}Fl5*7IHM zZbEqac@@Q5?u35={?lpzHFyIie3IyJ#p1)Znd4$P%ApP+WBnNj-~YQq@c4ojbiq;g ziT52t!iFx%Z5cCD&+v2rgHpl4+AkmN25dh(zOCjaCGVWK=a?FV4`G9G2#1>-ef?!^ zEL($e+Up`=e@-%l?Nsfy$Q-umzXUORR^EJ+gKoMOl zA3i2r1^pKd#P=RThYx>d-0f+6%3w!K+{+)yn=fxvf(~ljy68TpT_h18K(Ja2JjMLe zQ*>cH`(E|OCn#g)et+F4+KQ!N=|8o^;_sZVwZd}iKz%Sd`uF_BL#>s_iCHMP?VEn=j6y&d6~m;i>{ zU~tM20>RxFPs))DTGvxi5~8NMv{fCVHx%wf@}?SWHz`f(VOA5<#wfxV2_Az8sJVb__1jj$0mkFFYkyqL_Y6U!s3UH0h42iJ38@`+L+OD__V)LL96n!Zk@9t) z8tvWVQO2NTF_oU_KmI5X$EM;rDvMj4w8mhZm z=$;HUjN2t^t!fnKLJ1Y6@l4T?gqt~3Qm;-NuvWc0ZrY^{7g%C{I)rmfD5^Sy|H=-PVU;Dq%)&N} z05&TQ0((NX9Y@l*4^6rc{Y$(N%|?9Dc0#Mw9AJ|E4V(y{MVql#VKRDPHL_O;Br15a z&v7bzl%yurr~lv(a8gCw2Ro{sg0Fq@&n0g`PxYK!g3x*W%Dz>(^nfk z{;jR&RZfgXe19B~JK!OUl9XWfp#)1J7A{n5u`>o-fjop$9<|~DpXP;T#5TG$Ou_CM z8A{DVZaxmWv{FutdU#-=??DMJzwL12EvR=MmNFZ4-s+rtjF}2XMay_!1>ZtQD=BZ7;fV{S2;KxlGN}+oscz!St?}PN?=F_XIz`4j)8#idNUo8;&ob zNyM+D(J%Ha`d=Kvj5`Ec;V<5hZwKr-2Qtj9ohbh@`?b-ODs$B&$FP78K(64SmgiZN zUdkz!N3n|+Qes7b1=xv@n1_&R!)fNT)U%Yv7-E<;tS!fBBH^F5E=o4`T}kWCv~(mq zWaCOJK(`N8k3-!|;qP@NLP<_Y*^|leQqMei2hoOCYO3(a@G>D67uJMBR)(McnDxe= z6t{UlzJ?4zZmpdUPssCvJ4!QD zLX5)r5OQd?gw9~%!ee{e&PZb4WjV>^ z4cDf9-||@A{KAm~nAkGTEz*5)i~LMEKk-%}QK|K>ZWZK4K(D)AAZq!>kU+Au_Jai8IO@M@J=)FI%lG^(&g5bE0u8L5>v{Fg%@GvW|@MrKd` zEknRR7G7s)0?{`MPs2L#{HCygH=!YI72)PGCL7b5p$%!Z9S3fdBnGD8rn>22;<_uC z0I1@%p?s{XZk$yt(d(%Wwfd~8ax^3)?1GRGt5x{@P}*}NK!Ty@kvkskbY~mRZ8syJ z8c~cpx~4B1Ul+d<{RjooIP7a04h^eo93lFRW&GX@1BZahKf{$hWm>P_44(-U#TA#l&|{UZCT zBrAU8c6c|Ke{J8cb98{|#YY9JmLgQ$y%Dn3(zcc`VkbHXzqpTnLQ4M3K zMc?aCt23j*BfEN*whVc`4@Gyd@8<%7dlFNSNxo@(Y|mc28t*Bc{b2(Ic2ed9j&c6u z^wRq+qz7~Nsk4XOy|LPkG`(NOj@xUu_z}4xyA0r@o>VN~x?dh7cMvmOeBf_W&e)l^ z)?p68X4LH&i?(?4A0is&5O~JEj`3I`Z}35c*8)8>eTQWTGr{vgQqBLJ55do`{;S`$ zu~PdjPSYe!a8^U9;>OUHKzTm2hU#8RAyuoW(MoisW})t`D#fNr%c`@M$a2tVU65YF_$EzC?X+(i?Y=b05F4e7p3clsaue{$&P*6Fa-}L z9K!INL9}z+4R}ATkzNQrul!K(nm4i&g3oME2p>Wmw$8YjqAUgYya7+ zr6b`iv_=n5p|h&eTu-&NZKX$83>S4#Nmeov{?2qYb@fzMnu-zF9LdlOQ!QpaG$w?n zP!dGRp}1@cIJ?yB7o~}~RqE4-V7mmDrU;Jr(nToF$|eDX2r;;?NPx6wGtZwO>kiQF z@lmjh?|)a^cvPlCgEio0ja$ZUy&SH6{5$GJT8-76utkYUH?=sYBGlU`O92+Qz2h09 z^pPR^El@k+6K|Xo++|3Q357WXKW2QANGBqsts|QBxK*tf2{ougm{31R^pAH9Gcc=( zGL{Z~75=9mr-`?%Q))W*VBYo*1?Lq^ar0UXjXCJA|sB5fm2H{Sy`V z%qxoSMQ#z7&EYM%IND2~pKy$LLazHHGPBL*mz17TXaQ{P{BgRT4tGLT-`w;It7Mwr zV;i3%o{n#Mc%P9Wl+(c>-2VPf`#_Bq)1kt>#$Wn<>W7R4GlSv~@By3?R$@)&brUk8 zaNYbN;DwSQhjkf$Pb>oyhfr~Z6PO`RsymDWFawU`ylp(Hdqt4+%H>oiZ2DC)gaEJ0 zTA8UKZ9fp9tE!$!-;iP=)`ui8+IjrwHu^NFZm1@tyXxj`kHdcnKEh#?zjL+WLx`nw za0q;FgA(6dcM=7I=ScNr&=?cE=d}|F^E^pNb-SA+&|?Jh&nN7C8~kFX0Wo7giw#-d zKd%!7>j7r_NAa@*hqG*@-Daf4iMw_~elwDWpW&@O-%glAa3Vu0x59-l09lEsbPJpd zRs0%W7SDCAtq=2RQqj6H-M7e4hZ z>dV{7qfojGF+Yt(FjzuGpJiWfyNI?r?eRewH!q`PKxW`E4>J^pkH_{&I2X&c>9H(| z;Xx@xXEHj=ium1Qwk)bX+)<>PXGoTrZU_j}P5_waSOb(g>UJu$z)%2eGC&Bw0V9iN2uffMA!BgjVEYUWB6h~Kvnj(7+vN8ygHPOTs|Xxm zeSzvxw;ujCQQpwKT8)UK}s=d2oFs<^w>AJ5sr8S zQ|K}B_UJP}X{y^DbB$ZZ>5Y*7{nSqx3dXOOWo?2Nk&w8NmfUWP)#qUP-Q!YR{~iyJ z(K~O%YvM9F@KDA-Pw{_F8!egBH|eQWYUa9MO`sV!FS=92Avh)R;SijEmF>G5ngPf(0%LfaMFv&OfZPceb&!vN@p1V4 zaX_A5=r@0x5AMM-;P@Fe<6F|ZkezJH7gSLp>e>G1l41L-Tu!&!?RvV0KOfg?+yf2u z*!3Fi`t-q`zZ!b{=JoK9z4d>5n)|^aRQQJMTwBy3G&q`(D%2t5NKtdtA>i8d(AY&S zuBmW`fWtiJLH^7TzC5+S2RnnF(FJYXcxct24uS8J2=_K^^PXcgRUu}K6h+Q7csNxo zL!Ssw|Bm;!`#Z|A2|Po1{2e5uK7_#oJI6|VH+9qba#{J|zF7UwpMo`Ck3Qq{(_MpNPrK@J%MxY_?d`XOt!f>fD69EXm69bh<7MFmSShmbS+W$GUs zLQZ$B9Z`pXtLJ*)-TeI~JyiDF*zVqxT0pr8MSivuUNQ{$+iv=daD;7vu1*Nho$27*5eVOyjkjfyc_NomkU$8%?xRsQZ7I$yPi z!epPo$1tB{YOmMJ%Kq-5bU|=p!){|N_R5<((-P?QR?vS3gpF`52}6Rk@r4> z>3Bx@eO<9pQHzJ6`-|m%(Q+g*+nv^zRH| zmm!wBlKy%=7uuScGrpr3`gHXs1+qobY|&YWgorN1ExLiUy0p19FB={&f;2*QBPH=;*D&XfUYh5vzMb?E;W4uNO% z5D4ZFfG_#YA)MI3A>f>EoFPrcV9E?ZE;NIf4}Fp`M(FZs zS2DnYVS&aB*ofl4-_l`Aebu4~Y5hw?_PO-oyk7}q?e(58`yMqFb{SU&>f9CrUB+J|0e>FG(j)BM?o|eVf41)6TcK0B-*#lU zLx3BBOzG&jeSnS~gLD6u4k8${kY3|K&fue|rrBfVKWu05GNUhsg3lZAy(hmJFA9H~aUqu8~g?djIG_i~8zVy|v#su0Lc5yuwX+ zz+io$CdXT{xO#ntj==0ZdMygg5S%mkaudkTEJQ-DRC5z|fGa3!LHd`eFaFmrKc8t^gF6+|30%14uPN)RFok=s&GIu zdI+=SNrp60B&@0S_C1^*#rgg?7njH5as4^DTRQxg^ZEW(G7y|x@bS0G+y2Un=R;TV zu?K?B9;zUOc>~8c<*0DXhgY%-2iz{kb+|)lB$}q{47$;bz9XKkpfE(|CD~Vyep$AE zkzgfeefXc{SKu#kO8#6k4&RbA5i~C3udzzz2Do}>2_o;ra>;3HNNWWpwr_RM46FK~ zQA6Fzk~B@#D@k-c+KSX;H?@5^nSSUyrdU5#{SUEMyeA_waLFwW7aEwy9D=O&2m*2p zjKLvfa7VpzXT|xaX~FX;q5{~$z3BJ;%3r>Ng?UlQ;*w<8uIL=^{p+&JR_Y?hA)GLW zpm)hY@gXKVg-uea=YyDkH&ep}<2G1zJ2f(3csU(Bji`8z5n^e228six37%#1F*Vze zX{31(U6aokis_<#5clqbp_(c#;nO74k@oWG>%hhMvaC_L=bu2`4_p1*5GGZK<6g*+ zmD7d@QvnB1qwLs%p))a*gp0Z*N>;orG$Dhcx*7=4Rv+e0K;LGcVcxPaHyBq8S1o_f&lJbSOO`Ly+@IS>#<}Q+*yEszU^RT&~yq zcJ$jc zjlZk%eu4vc)4V5aH~cx(M@Qopo%RUqkJ|JwfM12>;_7}%!00ME z8PcnTWYu%WllUA5B|F$!s@DW!=&qig+gu8-B1#)dR*Mm zd(H59OMl?zydF+9aD06zU}#;}A#cZ%_EUn@gU0g}U^}t#K6Rc$qs zH5mq4O;t%qX@F9IFiWg*Tnf>E9x`kgHM%o1-LweY>Tn{_Fq9&^sX*;II;M^0CFf5K z%#a!nJCWPH{@;(1p};xz2mJH5xI-v4>JXgW&j;KmrXUFA6tv^QXIPbeeSci>sC>Hq zgxTW1d^+|6PLD@FZEjwThE08LDT^T9$G*W?qaOh-{~Rfm4_$}zTUpT~y`B(3nj{kU zGmFURJCPmO4lt*G!=aCpLGRy+SLE|gRUNl6dav5A)x^?G^zs)4L6Vy_tL!BZm?%m` z+c-$s8*V}|F6^M@UWLn1oekyq&}wa`v8yT;Y`dC*3$UUwz|`3f#xm=;9k^^l84xlA z0oxQn^ac37J@*-XUTXR?I;?QIQdwaAHWL4*6Z`3qS8-60Sh zqGc+N?FQg&2IwK+8N#r02z0;QbSpx^R9sGJH|LuEvk&44jt5ISk6^L)^X1lcMHzDb z$A9w$r_=e8s(}-@o6{rh0)>Asp@Qgc_fIH0|7oJZkC3uz&xa6!NobOG!=TIImG}Hz zw@(g%YmPbu#!-i`1#!67*H&Jh8^0Bsj|oe+y*=SHSIskVr_Hq0#nCB1HWxR(FDo^b4@T?a`ANbzqM7QH>x4d^6M#e*n=x z6(tm%eGy7K=suSr+^I_uo|YV1Pqf96if^u?xSaQ_6d7!zC)6R#Zjb6Ko{IF_`#b)I z$bDrhkpG&B`*SwMS6<^*;ZnDjq+L0TU)g0 z-Ew^qD#>F89IQr0xNxN2Hbc*3qf6bEdQ|mT*JW)xM(SX;q6{|PG2ItsSu*&y=yWx* zwyT6>#t2h~V%{*qK~TqV2fssOi$4aa*djDH`++-VqmJQRUwRAz#YdbVMU@i8+Gfx$ zx9ndWLWW2j*XZ_OMw@{ef!>MWS13L95X#5-^gEhgLy2B&sz7|*Ay_%EiP@XnXE-o( zqxu;4_lam?fJ@enud?~MovNnM_TA7J)>Uk>iccX87zyo(f(hMF69=tv_l38^%^J6_ zhGNvGpvr?4#dC%ANoOYpjw+?&fZd;ai~k>BlJ~8`pdA^++>ZUmH^G#uJyLT%-s}F; z^-Q|+<$k%}F8A_&|3D^Cf8x;dizZ}@JQBMcS5K^K3>cYFHSk&?exHT#=^KQmFbaxNot~I-c zQB3tt!WFa`sNm;_YV{{MgZSZL3k zE^hAqUe4KjXXx}`v*ub=Q>&I$FFkkN*mK=6){cyit0tOn9oC5rvomx4CGA2Ap@2z- zsV%ni%77daWhUusXa>x2M187pbA_#lT!dt0BP?1{qNo?Zq!lmuq9xS)5_*K| zEb~I-5Qh0inTr>MTlx5DoNwOW$CWkeY5yo*z4)0u%V@3)ktg$P=j_s#E?Gk^xcPNz z{5VM&Dpq0wzP>^_8&Q zFV5xUF)#0H?p{I|!V;1fC?aqOT2!zE;~M88o&29T1XYpcpqr#*@Yr$Fuf=?*YVu3E zbqG{pcHOr3XiGc#w7Gtc*q3qgB@hDI?G5N$om=woHh3Gq0_KTVVoJu1?ueP~GB)3) zTZHrpT9+?iEL~2mvyJDYsk~BBY0aGVUKy6Z@12^OfzMx!%>SCURl0p|!Xm8K`QKGi zv(;KZgy06QjT}NOO+mGDxYFCKzHWo%=hgl;-vNBY9Cz9S{iTbU6qGqiqJ_)20g;w+ zsRsyf(*AYWF4q7Sf7I$h4uK?*P^9q{`}^iE4xvH_8={+Yh5%E$7_<9C8G>fpokK{M zn*Q*xU4L;Fzdd0F9fI)~TOsh<}urd8YYK4grrH;r>&u284z)MPpI|8N#qclROJ1KCwg`aLTl95GSi=eY>X)5M|ow1z6dq?>?>qo`( zGHD;!u=Kp0mSG-U&fmMKjRgSpF|)R5znE;tRrjqQCpmPzVbj#{$SljhsyU%-W7(sj z>GyD2FF&47EW2|TId5|6li1Fvm@+^-ArVewD)|%I@{Jc(U+NC~+uW*x1&oNTI7llM z9{oc0ll;w3W!uE(zg2H+6T3 zaRot&a!7w|2T~=e6-&Xx|sNj7vM&dFq4< zHnMf#$~1i^y~xRV_odg#^kPnHE3Na~Gb#Xnq%llhM5#|xlhe@|mwhjO-`(8q_QEKB zk)kEP{tiFSW=@1oJX*g!qwDACRHfyMH(=H48?K{R_!-9kxB;{AMa9<+VKZ1V-eUpV zxCVrywJl%?j?`?0tu(m6nGc*z&>>W?!iGPwF6$OvPYw07_~t4c0wB~b83MnkMqcX8 zL&|+uT=1sgVB!^L#3?&J{gO6EnYw4aYC8?nXoGEkBKew26@>9t2-g|gv3Z`Hb1k!d zaGhNjDOT38L5!m`>pHH&<}!Pn`=M{h5D-e_|?}RHw<}uzckWLa0yTH?P1WvNxe~x)XI&l;nbOjW`^obCLwna#wKCm37l@Y-N8@%>{3T-DQ$LDF9 zRA^n_EsYn;IJ$n)(>ifBI^L~v`dU~&yBxZ^mWgGxijB&?OY{`dCpz7su6H-vtVa;tH3?L$J9?yENbz;*O^#&0H^J1pY+RTA;b z(VLM&;1#^#YEm1T4^$`(G0>|f)?E+pMa{5bs0I!lLJd-p{i$S#SX$sFXk3!Xi+(eg z^sZd*sGQC={ZFXySeW=^y5@$7m%z^VyiIlaX8Fxi#2AtP<9^Cz@ywWEX6Qoxix6eK zki#N!0p6}cto_&MZ8l)~e09#d)lXu`IlJBL(skU5D46ZCmvG(Sb8*eoW~SB9R{4F> zazig97qd^R_IGFBN8P2Z3(!98np^S`rS}iD+w^YOiTgVPzxi^91yTd7>;q8%z(YCuNz}kNNe7}=mA$PBXGew0v-fC5l^)29ztgUD&rY9Lf zIve*@FZ6n;@^;XFwMBl(S`Q(agB~Vc_Bzk)^+-71Lhm+k(=ltZm3uMu&TBTdQjDHu z(+QpltEaZ>TQ*Z+KKib0yV*Nu9b0lmE?U-hQ7$2RBUtttMpF+_t9ULpvIB_cc^p5U z1iu98GR0(a+f$62RdRWyeOdH#ZX@zt=q6s6c-3KlX48Dc^C2uO_>}JCt_r?cFe`1m z2j~LZNs7Mi(BNNXByr3&Z)g?N&+X&xm(s*^!_KsQi`R8~+T0Ul6^09MN+5m|p77o| zHTHo+*aX&@E_m424j~|iP|N^!yd8(T3>E3stI0`oGV^#3|)U8m)9WP?Tup`!qDP(&cd4%LbTVYW3Fd;yEJ})8p3mBQDT}v`G+@8tl}ksETiJFx zkA)XvJ66q$+0th+yGCA^)AnY>-jgUacJXMR5u*?6GgU}#@(~hdbBjB&u3|ovIUixC!4uOpP9$KHP;IGrN*xP$98a_YDR{8g}dpL`-#_ju#@GTaEl)THYv)A}} zc#&d$sCnA|pvFBt;U2ZKInn#0>&pPTIiDK=duh?g1RVlW5sb+o7TbL8Er-Y?f#I#4 zd*u*z$sKwWxsNfqBrndB=7lWM8^dQ|v|y8WT~5pAR(c_=&lv1iEFm3$&}pud7o;(=ng42 zMLyz@$Ao!dsE2^O27_^hA%c2Rr_X~*(vU-t41{(X^=Jf4BBdeZ5G*D-eKoLcjG0*UGh1eBSC(scnX7ab zx*W1uYc*TeoU%7PGj7h+`@~kaw34l9?z!LkR_c`GPH*~KBJ|sIIW5M|9;RbKRs$ zlKp%06Vl^yZWwAj(^>~|2(~c^IRsH5Bvvt+#_4Lz)jv3l5tj_91CJCpjr!z!hVT|& zI|O+L+53Ftqtv`KBgWz_zBYcvS^b$E0^2>nsUa{^Cv(}q5sxA=Karo9NU-Wa5yX-; zyuS`lsbH7y9RkBa&h}Wy+d$MjVKq^P0NMQy;6@t3~Oc|cO z8a3mArZq^En-K|?xrW!^U63axeb6mgj5#%B} z%zR%m+`ek_m?0#-Y|Uq>0NyDhDABioL&(y9_HyF0x$;7vd?Q!%b>^3OqhUn4>LH|^ z=8mJ&_#|H$TD&~oM>H143n!%9gB*gKutSIut|bYy8AJ{N4mimckioGk?YY+u;kog& z0lrK~j~df3!6j5Ny`Hz^m_m!-97rxZ%mEI!$9k%qc<9^P+R| zj-t~orknpfm|%?k>5H9#iW7|dfes<*3Wx9)U{XpW+zm*x zg&LuA4+VC`3~|VfRIweBQGk`0S@67skrUf z<@@eRS!GOn#QwPnv+w_o_Cd4fdS#&SlXGpgw;ewE5{%#eea0l`>+AdTq@|dz%zAsl zzn?&tamm1zgwpgl<33K{5;z3BX_Yp-XI<2tkV6P~A>L@P;}=OJ>c1`-o+qrh#}Se4 zEsdueK2%?p^)xaS{ZU$`16N7JVg+p*2I)nhvbi#X;6*TOhPwVtshY)UnNkl>L z_V(CrJuPp2-em~ylpwUExOi%vWkcWhKH7a$N%owxhWD*3^<6)=PxaI^Zerf&W64lK z3jpAPJ!9ly7mtafp0zJ4vGquaXd08 z0F{h}4q=-I^;AHhh?yBC)A(LQ|0jolh0(b~0he>7A^MuFcx%$Z41t#VAma>f z+sJ^MQCJZ;RrC-{1)ncReY5vpGlW7wRETo}y@p&ziQw%x{KI;HW0tj( z+V9IGLe)5g@rbqe9{t?L`}k_#KfmAKceTmV3%t7yytO9|g?opv0}&Ffm+ubYJ>TGp zV|FveCw&%&&|lf0`lfFs)X{q8H&*uFIt0@0){vVghS$71ME$m6GYy#GM_C9%+Xmc2 zu&}z$B^mC>GJdQir3YO8?+$@fAz|)}dUSm28gw_2Gl^-c&~=DW!b`glYM$5h#yP9AtXIj1qeh6$`x#-C667# zx?VZ@XBXhCTY24_xZgP9rm*w zfEi5{h(lH6q9}sThGJ2eSTjb!GTA`J-9{>|PM+n(igJDaLw`9*jKn*c5RnAPA&`bW zkD9%32w2-YNr@Z+>5)L!=&(Z&4(1sFuf$w49sgFE;4S(TD#)ZNR{HTxP+Kf+{K4=q zy7VV)tIxNu=Kacsmj@cdNPySl`hE}!@x~$0J-uHkr+nUFjaA7~<}!c0b(J5x*6t4} zyL5TdE-Yf|Va?^M-wKBZ^IUX3E~{c<9Xszuh)WZ=4Z_HI z(ax)J4PN=q896Y;+EsJ=${{ek8mN7RL%_le5-LCuCmoW@!i>rVstO!}w0J&H(Ri-- z;1$D5fv(H?q$1e8LH_g6e0;3K7VqZA?w@BP(#P89CSA|ipl3q@b>0uQZ>AS$O7YwlEVQdHy_ z^TB?S(n-m^gy+PMWIo66?EQH>q}`v<&y|#1UiX8EP^^S=sdUUnKWM48e#&;At=I5w zO4?XIIXAL7FgIj_=X?-mb`o z2zq`mDAZD_Ik2dQpghi%IwVmMsdvf|>Kqf&!v;al5Gp9BD#Cw@S4=#vlyMTVoP=)Q zK0gly`~30q@$oTjrx#+nM~A@fuCE9;W5+9p@R`3pRJQYj{Cs@=jJFc>Cz@1NZbG@h z+uNQGowgl`Mh$_*G&1flE&RDajV+czoV z#qha4C+>S&FK*IE(z}dCNoKMwYsWmxfn4-@5mV3Bb(!V*-EcF8e)M`C+l~8)>3lQG z*On{8vXuu~^U;KsAgW!Tt3Q^&4yXSMFlkE`TL#=*D#a6eSGJj9J$NL#l{SxUFd`gk z;&Q~5M+HmOQUM^vJr9h=F3be)`y@v^xhT}p8t$rg`@mWjsR47G)q6P68?9Hf@9VC_ z&(E>MKo45V0(L-}ulttdB~EYIm9Kul+CO1P!Qe0+Ah>nI3IIGpT>XZL<@wI=6t^N3 zM0y&V(TSMxm1A5_!MK4Fr+{GGch>u`jwAQ3n|$B8xVBa}$K1>(VOvrTf}`wi|@r@xAF$$;B#Sek6l~;-J4)4D<`K6;q7X6ly-+eFPa*crEB@`s{kb5 zK0m$=KXE(*@%=_0IYasWZrBr^xs<}utK{cG^6xMi@Wu2M` z!g2;LXRD%h(_ok|!`6oE1lZ6s-mXT3zH$8+`;kXRiW=iea$3#oLk@h>F{yRfi91X0 zKd0)4wDwu|=)y9?53jZBm+k64N7wO`$KM;%P@y#RqH=!4x{S}X)=;1dBlaU9w4p@B z5F=v9*)ZiVS|7}J&|^P{*-u`IT)9GCN zC8_|fa0Zd6luoaOvn{f5Y_pI5y2=>dzRzuoD>J${XGNdY&Vs1uo+y+348Cob@~4(#A@F3!Y3G+=_xA zsrb-I&p8bU%Xr|haAFzu{31#o;}zTf`GXTRV?4j;!=o3b@AG3B)OVt3D|QI2|4Yf> zF|-!nB;u8$0y>5cfk8Tq8ZeN6+m0Ng06>h~tQ?8gY^bNX~gbR=K z2DTlkPkP^@`@YXA67dh0o;Y!EeT>(q_ZXE$T8X(XGfqi6fnZ9=%Z5dxD>8&asGAC1 zZY(6;y9!3>*k_;2i&W-GfAW)D8mC4amxc|RlsP2#&P~(o`+08X*sasVR&Pf;GT-!U zP|Fl-H-^sWX|kPGOgO`O!K~Mt*Gj68^rS9aaK9*e8un`idWz=14YSipqaWZ-=KCm)WWC#Kh;3*a(pitu#SE7ZT{aCT>IK$y( z4NV1y3%r~1FCxL&A-tDpwFlgrtF)J<$*gxTi71as^ZKlY&Cw8tPLbHnEgO{LgEwj` z7puE}gVqacAby=HMO-Gmcp&EbT^pn(QpJ z&(3C3Bp5c@J5xW&OP7F6Pdl}2JH%{Hfx0MkNWSB2$dvN|=Aae5jvz$T;2jgkqSqP| zer~d2{{>1!Ryl+h@cb7JLE(Tqp{gQ9X(DzA7>8hxLw<~n2LwJH-k@l^$MgP0`NgInlddx+9 zs$6C(Z>KIPG_UjG|^j&fsdM$e?pORd4(PBHAZs|bsmX~+J?^8cJz6ugN1%aqI5}N@KfpdkG zo3w{0K0e^XSlTkLQjT$?|9NRfUyHq$I-RcCM`;l9VoLn1Vz~!= zx%&aNlwQ;xfTUE3)E)C3h$*lz8_{#7#mxF{W;TqCc4o|>z4;QeYiGaAO_L*jZ@BBH z_hsmZoY*rvNHeh^R{}=mj9#VvijW68E)BoPbH|gMH!bIKQ>O0+k~crUW-ofurFQ3d z?T^FBB;O|3lI0MP%ZV=;QYudn-((>9c$Gt_VCzT$2lBrAKXM2y8jHqcaFV`F4wekE zLm5J>(MId-YgA`G%#$dg=caFT$;tOCL$m8WFXg8R*)`cjEOHsw`=|T9+Kr}UG{dzl zHg(u}`R}9-4Z_Lho`leoLhhQ(ypMXm|o&V}Gcvqq?uOjpZJE{&Kv z(|t{%UDik&28~*~wzu7A)+Xok%q(-ZZk?u9GtPWY;aMrSi+PtGxhlE=MSLs8>y~@G zSWks0fbH(KMZX@}q7@|e9yYkjC4~{qq6}d(Gi(reiwcjjiVJm_Fq=Cj7RLoG+3oTt zhk!$6hi(#UGOnT=2Wz7vYfQghPdnm^W#lzBz3hjdT4`ywy5vf4njage*TMO)=@^$` zJB)ZA5}!uTWTdf3Y0!LtoXW9nA4~Y&4VfQNbJO#oLYL?eCDqbICZdg& zOlYh9wCF*IHYhi`X4PtGg3|;LYUY)XomhjgW7~E{%!)k86|cI_&f{)atN_vlEztzsPK@; zA;fd5Lc~qIwwe7lHMKrxv0d-=Ft29N6zwN9m-V{*^rgH7@RXQ*KV^8NG0bIu zL>wQ!#r#+m>1x|QW(aTkE-{7~f}F8vSVf8pSMP`v6pshGh&mC`8o2gTF|*?pDMAI* zcKLlNv3Z#Y!Nd($MrwxJVpMRayMEf;E_1%-rx?l~6x~ls_UiaN#!^%7qOm&yv#o8P^~jl_5)2W)VUaYA9+}~Z|&ejuSF-a?_jwa&-u7D z%E&?GLmHD*)R*LDaT=U8(sBkTKy`O*ysw=%^)~-{nP8We#0n{Ow>p)Odx!9Lw^|`9 z6gHqv8>eYDycfK#Td|Cz80cQcEi~wE;x^;;*A0{R*6bjy>t7r~#S}y{IIRM#WhJ_c zd^g)=Rh$6CaVt*dB-#)Q#1J?IUA zS#>Ye&@FQp+R%bj@##uJgsAdMiE5mC9dnhX9r}qaFmXySE_i1O~VC z9G*j3K#fa=fHycFYDjVjcgZNGwZ@Yvp45bimxh}CePqgVc&#c%e1u5reJ7WT{{x3m zu@N`9KRASA?hG6P6gj+2a;~bR(`-5B>-h_?lb`oMUJme7vxxFDLQ`JfT7Dj&>_$R-5$^O^KPFgI|K$C zLM$UX@S=B|Kj?YgBQy#n<6TNyF&$=j^ByR`E{JL2^CYba)-avpw_8GJ7CXA7 zUs-6|(aC5cZxFyC3;O)5;Hn>AaU zNMT$j-MV>Jt8mLY+Kz?MaVxrM-nx}{>mqaxV@BrWTxu!#U3Og>kKr-vzOP>tO6~|- zfv&m976y)5%~rYuq;F}%Gh0fyKfhk*Xb-U2@j+jeR$EcYuu%#H972Zyn(RLM`?rT2 z$5gZ;P`IMD5Yz~wrXrj&VEJdO(3Bxn0Cqi;uP@xO8+LNgZhyacFC0Q?5M6O;T|bj! zb$4tCB0@t$Lv&7#F)0?!)Y=Xco5Um-Q@snLPi9?c3uO?+5wyX#Yhry6fh*gMnyta- zj$bvTO_(Y_&*_RQkUWLJPLJMq%fJuo^Fj}$6Xu(DArR&*1i)BoA z3qjJgAKGOOd|Ewg+g`97-6!3*Ifz={XAhygF|*0RT@M4@?+NI0DkkXbg1(MrXn3_N zeltkO56@$|S|h)AmHF2znjQjUA}jdOhJf=n{9Muka}m`+`yvLj*AJ6R+~FZZxD{&8 zZ};mRIdTXQl4J9v?TMD<_bc;Ex){HsNa+uEl>TYE$=*dT)Q+O%bu2ajJ)BI-DOIn**FP&mR z=$L;ftnh=O{j=e+Pkx$$pI_NN#*KTIEbgYfBkqrJVT=@4uBjq+1n)KTPuhlw65n){ z58k~8Q6>y$AqW)E_ox};8m!Bd@G3UvNW!K@{<-=0R6+6fCEc?c7uK_QbM;=UXHgG9 ztx$`68xB$CC|`!t+XMVanbhH7g@t20E}>3qz74<_CYl0chw!=(rK4J=BCoXwO-0Fo zmnLh-y4;K9rbYDKJa^stWkaX?*$b-%#Z?e7S~0Lxly*oc<;it%J(Pn#8s+H%>q&QH zSCNKQ5W4JdJiwFnfV5R?V>t#LLIn*3$0VS#VigJC3xAKh~0wHvs@S5KB9oYJM z%0POhbL7Y&gz0#X<3lZejt~!YJ)aLRp@RDgqK;xRFu#gKyaa9}Ep93X`SMgzHrt{M zp{Nny>I7o}DiGVti{&Qyv`su zksybF>vlr=AcwGGZD)98Y8F+`sjVlO7%=4wXYI6P%l4S<&tFb0HI(Spp6rRgkD`tb#}wzwG`6bosJI zcko_FzHi;pn5iV@FA&y5&W1#+oW<}t=)*P!jGp9+w?bJc zbpvt;+$87_0Fb`C{|b%%Q^iWmW-NF%InQtyEAvF&3QYy0De+O8SRc-(#-N(Ng2&|ScR$SF9(*Vn>W#PM_C z3m9JI>(yal5zSy+OcnBU6C#?_on^%vJVB!o&NJ$F)!*-hLDDe6=|lCDO1A;wR)Tf=oTKW zhtgwa#_vFlt7QL24nZx@AxN}(Lu6v8YoC&36%K*JebyTGyNYSx1Z%JgAB>f9H)-)e z3uq6fLc{(E-hw#XXS6%-+RcsZZ+mn~ZftA5CingG@$sGiBJI}lhd9{JvTcXf+uK)> zqW-y(ZTKOd_3`$0B|!P}{`vL&_VzK(n|*)J1+5?qcZKo!yS$k z7|aly#TkObKDlBjUNN(s|3Z+GxP(IxdT^k@%b~nOiq^thDGmyy2sQY&3dTe`V%Ay= z52>KG(G{Hts70xN9+rn6yK6v#z=L%j0ZDY#S!Q%}!Yi}rnd&-Pyo{!v~2`N!L> z-t7HnFMeaZO&LXvDT4`D6_bJC$RXf9UW_=;AWN3WAwVjYUEv93!8lQVu`ANNx}f;M zR|nwu9J3gwvwH5!M+$I%ph6E`!KJg!Hn6n67dm+MqTmdCV?De{1S&lF0DS`~x55H8 z-UX*0DjE2%)%iO`e`xa8-~D`hZTHXa=;rp_O(7I80-7*;0ECY3C2j*4a7B*e;+9r0 zFCqf%0c8lKpAUm4?%h-j+g?cAH!l(d-0PJd@S0_Z76#Z<6atnENes|C`VQ-I;@1>A z=ny;x5GD*&&@FW333Kd!B3*`DDAS1Up4ar_y0P-{^ZotRyf@#?_<7C-ejYtR&K7b( z@cEI;hWGLN{rls)HElDkd~3(xJ!Su&-|z2V-}z_Fn#+stu^q?ne7mprj}Q9M_xE=$ zDBf5IE@D#whVVTag9d~f!0akur2&gpvy}B#UWG- z!8J?JA%s zL*O{QP6n|d(wr2oAa1>YGw}-fatDR`a)hWD{Z$By*!>Z=)7a=l;`!PkV1oC-VTaH= z2*0Uu2*hlL`%EyUnJfB%@S3{{_C^a^lfJ7^fbb~9y+i17+J^b=0F(an$LF&GVE@kN z=lj@9zdYh`ly*78bTGCYKidJC>FIetzot`4+qyy++p&+I=^E=CQ-wp22$)pk5O{@K z*)XyWugLJt3<*p{NJa`-%7q{&r9&uheqxyB`npy&=9#r~4xsB zb3&=%SU*h$6&|s{Pew~j)h;%E)do!|-BIvgw)P5)D;DC<9VE1C>J-9|V<>V3|EE(_ zP7>jUQk2Q6O)26Gbxta$?W$Q=Y%iR!!m?Jg-sA`z+TQx62|j!Nndo>u3+*_W=2fq6 zh67m1VK*hz(ClGEhK$hRD@@muEN&`}n0TvVc)4N#sleo17`yaS=+Is}ga`EP=cyO? z@&4ZI(zPq82BvUhzv*@|c`#O8-{kH%#9^+Z!bk4`=7GrdA#w=Z;{`JUTY**|tPeRq zjl^%R*>2(`A?GFODe$hdjLweW+={wJ(Y`HPN$FW1kv8{8uO>%x&6AOw6s=uQEX-o| zJj`aAy1;dgy;gX}nOypfxn>+x)9KYt^UB)JhHl_qZ>-mSqgWq|w6j;XV^T{J(w1dQuQM394-x3JTw=onUPi&cyeDnRlT(gH;-3AsU8Q8FNH$L)co;HP8- z@4uuUzhr$8HnezD6|BG&G~qMeCovTc0eYtt!>?0@bOQC?HW|`$hamZ-DyKbONn#un z(Mw*y(^1{C+f>_L^^O&J{@9Cn@|yEzrC&9*7{IJvy|x z<6o|{8SSVDE>DmipwCCB{ zqYfQWc$?6!o#o5gF}-$9TIN?STx=a{mmKw*rtRHieb*W9rfwbv>xN+_Y3xpi(MICC zxvH?zsV8_e4B|MR+vmGZ@4lh5|0&LEoBD0n=zUZ_c;yf+V*S5#b%5hmn6BJZhWOgIhzUD{A{z=$lEx090v%XU zc&r#fP_czl!SFOLsAOnR4U$jNnUN-)j0^WJB3)snGpW`1IP z>BTq=Vs)D`dXV$1m!|Jp7TBz{XqZ|@pW0C{9ppONoZpKay%n2;u}%c9Id$c;eGar4 z)->17I2{#6F<{bcqL@GQG%JXwE^9im?O*IUZrZ z-aCZST|YakxRZ&cE#1-R9bcD{n^?AXaqCmEyzdzA_j<@k$9>^iDy@yNL8zRO3o{4K zdN+7KTh4`4bN*(#il(uB=Udj>rkO(<^xCfD8rrYM87(7cOnWCxAa$&w>$9gIrF=PQ zoW^)Hgx#sW3K1yTyx6wwbu+?iuhMS)FB=5q%0P!esGip=oG}`Q9fFpyk3(x}FZa5LTv%P@=T}9* zsfSf!;+D26C5kd)D*-W{RClK37_47EnmnZ;CH#9@ZXz9B)(u)3qnsB(Fv;h|EzB|< z<))nJLa%}dT~OV$hLuenYaLh9;!UpJH}=($PcVa#nuv4xk8sLZPL{o$c$_I+prDbnU1pT##w0F- z){F;XOg3*mG;7Y*2bOE~RT?Ywv~nSo&iVRkr3!Y?Y8K4M{9VSV#7}a4@1)mepX@yk z%Hg9$QF*~~@Y~Wsf)t19!xW*^MCEc5u0+l6!=P6^gbKxnc|t%hYSbcjNsWMB`9e$@ zmJAhq2oiG;U;>9NVl+bq0J;JRS}}-te;^Zha`E8fq$m{Pqo(zY7bQa~W5?5gbFYN+ zduGb)oH45yQ_OL>bxtv>8Jl~ytSofXJO!15cju-iM7LU6QVS%A>z(XMqs~h|PD%{Q zu$&FVs0?qvRGG=9-&>ROmqbi8#LLgYmBFZ^q+WZ|A~%Xrh~8p{;PDh^XyNH>*S|T0 zioTe`%-kNfuZIN_(zgcp5HS0R!W;y#g2%Fhu{{p|i*<)>f*B$yHz5&LtkPK;)#yDq zW4f-CD_l@;QN*+7eek z*E!7Rd&s7v^8anG;>~K`li1#&AQDUO41`pL$hu+_a62z`uR$_YRpCm=R_OHai4# zKe$5^(@u2E&%vIEqpAC+2Bmb)z;nUvY*dy8=e%3IV6AZ7woYLclWRJm$H^$aGS|(F zOypaHu4Z1G=8Ng4qtUOG=NS%MoL1c!Ie| z4amUj|4$A!~z5W4VKTtlwUBllhw6?z(v<$trmJHw`& zuG@96V=M9}ecw&0UzA{B(YMnn4?a-l)AjBfi|FY~B^U(=N|b z27@#a+*X?it;;WpJaHdtmPtav_v#=cuy@5?6Q~m&Cy;#a>vz+FJ;nUAAfhBccMTju znb|^W(Tb+xghLUQa@kn-my%(tSiZ3gu6Yf(Rl=}DWR74kL(q7+sRm?FL56Jp8*!Yo z!2L;mfS@HMN|$(8pu>mXip-qG(&;ett7ct1a0olKfiC(t)H$C-6brL*Y9}up!Q6Z8 zC(p9YYtLrq+#tth?(DSo0idTrIB8L!Zg&V!S#^K>* zg>a*;-;ll_d}2Bcp7-70RQR&f#g-pi@7vU!+s3IJ|6*Qx+jm{GPUZdQ+|X(&@0`?0 ztlqWOEzXE_WmD@du?lE2j;+`)K*pFKe?#AG9}IN2zi=S2223 zF6VhdHGHAjC8v?c0eZRE@!{Rlams9{fS8%M=L665K=z#n5oG6R9=<8A3(LkSc1`Vg^Y6uf;%`KTR2Gs8=L*2zVHnBnF|D-8LDw?P zq+p69a)igJuz={8P5D*Ocw^{hn|J;s~MbA%~!k1wiRt7a#;5wr}cfu zI^s2&_}r7aoa^-73ML$VI{I>Cf>8J*J}mJ(-e6;%6w9w;aJmgksfJp=FgnFlmSFFSo zc-qt4=!DnK=^sz~YFWv=FCFUhCR#2Tt}~{1WWOgKi4y;)syG$5QYk6b;Ej?({iTE`&%OOeqASJg%l$I#2);;g z@v_hoxe-sK@9vJQR&W?(0tWt9j8Y-|B3IM4;!LLq()47JC~qNod3i4co5Y%7X1J=M zo?Km7Me&e)1q{(c-j@n_TD|wKtCZ9rZi%AKL6Sq_Al1+*fogj(;}kukh8XlO2FboycX;IxrV1ttfThT9$fY&8+XiiO9BWwxg-VB5m9;Gz zhVyfe?HCGdhmp*C$(V1Ik9UrSMh&z!LLppoCkPXxVouH5E{JwCGMjeuHOZxQ-K5&K z9a+D$gi!x(7oqjqv`$lXzGg$`vRhoY<|>?Z(tLeUcrJbL{kayVsgvc>bF=U5RhAMj zJ(_r0UC9Oax?OFi6y>A6EnYbbpOTuVQ`TEnyozP)*ebG_ z9Oe~ShwGFYrcN_6uQ`zWS*evXC$wVDF~_8t!z7)M%xH@H1YKX|)mcH2Jg4`O577yV z+2k;EP8Wz0Ch7IM^PKKeyz;ZA-7R_B&U5c{$kfMu@ig_ebk%RTugbWb@6AObq@1=J zMf)vX)US_E1XdQpH)tUZJ5dKgupMMIr{d2-t(=<7SXNY`P%1a2LBTVhjSvm1!?YoX zu=cPM0Xp6kRwR5yJYgQrSDH)b(z-%B+v(pOLV7x}$O&l0k{p!`{8jsvyk{uJKy(cG z_D;nd-5KTc+T=)`!?Ur*#;+#V-qX^Iqwua}V>8cF)A+#JX4bQv=C6M9HYWipAA~Zv zpmp6MDSBk&Y7_75${FpAzI}(3ESm4tDbY+)4zjaFkhj=vy}TnOQ_O8t9z!_gBFI?A6LoVsnH09Es+a=#bOKsbBTUVKKfgf@y z&W)D`4vp`VIC^4Z(N8HQ#a?ynW%S-dqcmH^*xHhlq*K~`bR91JG*D9R7qmi0tX-h$ zhQf#ki_`0`FH~-S5e@np=_H^-U{gvj zmwxl_+PFA$J zg4di0#{8@|H|AfH1MQx&C)rtf`OBAjXf529C!1K|w&Uhmd_D9c$!(Y`83fv(Acq|S z)b@@^W6p%3$Ix}yX80h7fDXxk_|amjP~a}wnaCkj@I>O)RK>zxbQ&I-h-u*@%}~EgM`@AEC#60T*eEXM@a@ymdoP`L)UKsPA&Ao*ly2Oe_^F z3bp>8UbqpxbJ>a=Zl}P*NI-81975b07@lN@9YVl~n-B;{R|7lK6Lbi!Lp_A|du8`$ zogRlJtD1I$ThxegG+&brw@wUhP4NNKc`5}1w_P#e$O=svmhHrI5ATKaYhN~=^2Hk~ zP96p(Rd6Qo-3 zZPb{=KG%@YA>h@!7YlsNi$l*L>L}*);dSiE&t4aGsOX4-x^I`&Jnc<$-P17GH}X!I}pk; z;gSLF=I0b#Vgv!RI2u*7(q1@(^t+i>wA=Gd6xd4V4EeoC($1*ZvtvZanF?uK?j-U& zMAil?4+Wc57Ryl(UpBZG1|^Kx8xm^C#T1+=rfp`hmo6E`AykBafn}L^MM`6a1gn3P z>t%<)I3)DIwTXcn5mYjuHcm|gX6ms+z!`%6UD5DGhEU}Y1guWY3}xCPGw?JHQ$*^y z3A;uZdh$bbkb!V72ticF6M0%OK@I`B6^3vKW%t%&=yJvGt-uhiWwl5H9l~JZuU^~c&p$EB484H4_a9Bs&@F#9Re}e;d&59Qym~B z31?U=bKp=;d+VVoLxnYp?YM_PH$infhT~I72JXef>uacF0Be85p@SR(j9`>#Vj>%l z89uk5(f)u8xC|ByR{w*>B}3pyjY>ia;LV8F=_?@>Sp<4T*$oagdLbTV*lU} zD&(|@ZVaxwun2h<1zwtji{NRiAfezRlv6$=&0qUL4;_N8=%q85A($C<#i(Qe{9U@0 zFke-kqmrDf_`iTI53NKFfzOyuL>tK7hoQCvOaj}E5q4nmjT8bQ7KxzOdPRI&D^xE# z><}ti-oFnxUpa(|41r6SXcA!na0uMsyU`Yw3>%h_Oo&oBRrST9ivNQif|?|{mjP$s z|A0dv1A|Z%0&&AQm@9kOxb+xy#75{4;*8xXfG!ufFlN3c-ilYVKp7L{)Jtf8ztBQ5 z4b%vD>ajN!9WEIJOe>>R+b=22s~&=`NdGt_3eWcA`}3U25Sx(d-?STZDB$Za`` zM5gTVOu3?mP$7)^^Y0yx(s7Gh;=mFo1KVpAGOe;@V1FQzW+-|x5|u%`B4ga*Ywk-z z-&Ay0lzlk?D-IzCJ>U@HRKdE7dI-682^Rp_MFH=@XZ!*xd66L`S;4xjBOt!#X*Lk& zJ6E(XT}8=&QyK)5%l8uSz)(-%G^QwPSaxx1(qW?8Zw*7`gsRGv1_xo?Bu|GNLPbY* z6DZlQQNl^EQOdW9uDCJCIS~;Tw+afWbA86y83a&yDpm@Y{EouRgTa$1=< zQ;G1h>U(VJ7Rro7oL(2&%G2IL+FtV^c$}|#1{?xW@pT)*Drk+VcxoI1HbSJ+MxFhN zAg2>DLRFFUV5GfnD>R~D^xr!4lG0`&-Po39|2o&pk7V(g*&Hm}q^MHdgFOW75H!qI zHZ|h~nAZSkTEdYFs$b%E`0bs6_Vlsya>jjKm&ozr#-D%ea?nW*<#!G`Yk4WeN)9M@ zraOHQ@zA3wPJ+@_@D!MQDbxb%!P0O+4xvM)9J$AQ$$CZ(A#D}=&XH9G)yb*M} z!T`ub3_;joc1FgflgrAx&M4I?$=Xh8BbZ-|UK}$n@YIf~dD+~7*K_bNLns8l;5HIx z2)S&B5Rx9pc0}lxYL*Z;NI{fq@*Z}yBy1|Cgqg4TAU8yhI<~O)T;mXgNx&hb!JiK~ z`$f)(qga_wR0R{8A0V??h03Ay5D6SHah!M0tl+$MUvw#SI!VE&?W_x(ZZd?uWVnAq zJG}t$3@J^MR3!%!wRf{+%o{iRX`F07uyK^Z_Cc_~*s6?FhS{~<`gRelUk1)Q&--x; z!fV-iX&mEH8k&#LkYuL|;jc+naR#o{>m-s28>QgP>q-v%*LxD!Aygayq@G(Bm194^ zl3}b7MvoN;0u(Ac4IM)7FjEL#^0oa2M$uHA#*;M!_WVtaD-QoHK6<(Of8BEB6*JJt zv4oxKWyNzzPv5_Ddtgi9K10Z9x+aDmV+O5ghmf^QdZX;jL|{TKy>p#t=VaHBuO08F zplrjYRrIs*zMDvKL(d&s$DT1|$2rGd=H;Li@sGcx)%~4#r}@2Gx#SFH5sG6*>YTrwo(kwZw*V>lMOkLcxicvHFoQtN!#78Zpyewc#j zS?h9S4{bK|Rj_W-V=LXd&P!uG)3%?j720-!3ATvHTu0D7mg{QSi=c@NF#d92=%dHL zqkl+so4uN{M z-z%gABrU&}``D3a>Cmy)V&fR7j+=^@&AVnzt->KNn502ESAO79;`z(+?o-=dX>GWj zNaZ%4@oC{!gi*NGER!8OZkvg@u^p{)tCJI-TfGWp&19JyW^Zj8nBh5PCwi}J?9y+H z{NPhvzFiiCD{?)%`#-Vy9V5jP&mUFrc7WFOdzbl@L*Nm|?fG>9OAcXx8A4(VBVIam z7-g#9jqfe$rEdeq(d!vH1c_BQh}s5Z2#EbAk(3)^UFKWpfi8O7d=IO(oL%8fJDlrR ztmh^yEkL~H60{=>(fpXB8JdCr{pLJ+FQoyS80B zKhAxt`TEs()~s!xbM|$eNcWOWcCbp={F_lv*>;D472zJPVxfh*dGy`Ni`u|0$UC#& z1_*`Tm$o-811$|AS;Z&s_qY0$Lx=-}WawoB4j~m$Zq!5I5p}fs7D2RRjl!>VP zxylvJ{$&U6#!noT4BI+@r~C1b)L#GF=1R`>Tj&sm9t-YvxQ&x4^fmdxrFojO7qZ-) zqx;0X7s5$buH-hi_n9;`$lOk;oWpsp)14WZWg-6&vvX#4YcCxWLboF$vu(cSfwj%F z_H1c~X$d_w-*cufzj9H}x#;COD16D!+lt630`pgdD4OkalJXE#iBoa|`DTmiv zj?;Qke%xg(;-OJdY&xivP68D1Z1gb}9>k(~yPxS;tn3J+S987m7~Ui{Bq_D>gVvri z;YDEG%Cu+e;>Jk`+XnY#)^;(LDH6DJpBuW zt3@RP5pg|lG@QSA%!>{#?{i!~$!U=N&;BG}e?}MFUpo2gK=zDC5FK1E<_+-2VnOk66BucA$}bNBA|UNp8QbIi@t5kw;~-|OrU zlq`C6yyWge4}IW%n0vuRuFJJ+M7vDwl1pzf@qS{1TTM4P*0M0G;7GSaGuww@@|$MC zsFvxFgMUg=offl>S8#f*x49GF@jO?Dq@eluNt^xv`#kBulsx_b4#tO>8U29jfeX3+ zGc$-1E7)n+O4~T5_kD3VUoAH!yp^nb6;XyTLx+%EJ?tT1hmaqsVpxTt%N6YSx^eARCEUP8+b1^ehg28aklm`>Bxr#G6XJ zb zByLS&*;8T(e;KwD@gcnZ+B-XP*3ChtkX>r-b-P_n`iSx6K+$Kq?5Z-Fr)%;NmT|_2 zz`O5#j_Qeh&D}Jv$~NsFCYSU0nX#eom<(ZF%`kK3jPXVZ6*cpT)1XeNd>5Q=@%%dY zL%hvddXc^4`ztJP{liI>PsnGap;e_pb-1x78uSsu?`THj!4^U?qe@S9g|2duv<(o! zzl9cC@}v`T2rEA0M*hhmbPyh(7wixmT+rHF3m3}Vg7-dqd?hLfJObX&kq$b9R6+VP zfm}bw-=O*Lg*)~5?AyPeJ^015uG|sTiY=6_X3r9sDkdTUJt`P#)@6%VhCpRXd8V}Y zG{TYE%|@{x0=LsTudSb2%cjugEM2dPIo8Rk4b-FSvl9p`>NR_Z?58n-5 z_?c5@`DnbC^n7mjXj~R@iuUDRkQA_f3De0^oVjnl-I;O+NfkGQ{L1&jhArKBl4I0& zei4+aobbc^s*-r`&Y$-^atP4`sINJ6uw+OM$C>Uw?;(`xKWso+Qcem<<80H4Vte9N zLdESaL5EPmNmsG2zhN#hWnW`7=oEK&8Gk>o7p=JMXuBOpo9b{mcFEJ>vfhWP0ru>;7sU@_0}zdcVis5bKSx^twZMr!KPVtlhv+Ko9~}bmadLbesjL`(Y0j> zIRu4QdW;8C2C8}SGS2T}IWIE=+P(sb^+)zk9_ZI8*Au18AzV$vtY8L8ugfu9Y1uYHqMyPDmx-x9a0M0)pdZ!~0xyLZ-V zQY0G6BFmSH1nhH0E_$Y=pC@mYbrJ0(I@33e=UqD)+p)Qy+LrNdNJd(1C*Sdu4?8!6 zo8|{9uDtl=-JKr$*9+YS>`yJ=?k~elNU7_PHb#C60<0nButku_>#twNXK3FH5H8+_Mor$y_7R3cu|*2u2{by6oX?DzyivfFckTA#jCE+bFp zYgKL#qlr&JdArG#LG@M$DQVa(BNN<}PPY>ueebg_ z`eej=a=J(9LYSC%IuD9Zo${;LY}o#tcmT;xxR+F7bs3iDlXm?0Xs(s-7i-~11eaah zc5F&XgVpJ_chowGgdRt{ietPoHBZquu6v+jrtGIaU?ow=jz8+JNd=Jgr`|%uO)U6?2s{GNP+=$EXkF#X}2gO@EfviG!?ul)F{xW*{u0p8q)WtXT}*dxxn_mB%Y>NnvgEkXAi+}l`D5Ggf=<)GPejPSW64!AqQ^3MX+the7`K- zubq#Rm^!~M*^1}6U-dk(oOL_3G{!MPU>a(I3rkUm?oR@p^x=5@a3 zg52S3C?PbF^f#d|!pjj&d2Q?{N8@&u$&Kmc4(RLd?cevlbyBW!yuPgGfY+|jAwY`4 zA|ehqA|-~&Z5D)o%H&o!;9A??vXNr0Z*M=JKX0GkKkj;(m4EUXu9Aj-&m2PBF10_g z_jp2oos<83^KZJF{$f|LgiZSHcYpe3II@LvT^1^6!ySaX=coklWx!Jg{kJIt?%F4Z z3DmuP<`7D6c|XQ!H`fRM_5W!57KO-BuG>P0NCZNNN-kjD|1A$2QdhMW)BksznVxRD ztV_bauf5i>K+CUXHv!bS33>=7+nHfb2bRr^1vZCl>B8%L`^09H4PEd2mcQn%o5X6? zUK`b~jEj@h#&*t1*$d~r5Vj99!P<%*)NxYdKRU);k7?q9by#r%t4UuF3fdo_5zU0W$pk4 z3id%ptdxv7a~c?GAtIhK1gU?g9HGfu{Vay~J%0W963#DQH!?Qvu)OO@-sx!h7v8T%TLa*dbt+Rkq+~!K6C>R5GLj zDMAim!4AQ%e|L2DTA%02W7i?up5cKRt+lnm^}3rFTV$|&7TG8rv$Ju%V{@*!<+5%< z^j>yiUUQz_FFdkoTz2Nzq+>Q`n;i#thBHlsO#A@ZDbJo9{Q5VG|J{4lMnZYeY%316 zjtk?>Z4nsPy1`xk^%%x_yj*`TB)#Bg%KArWf>`PqG( ziE;KHr#pqk>^1fL+cc1F!N>a%sg=tYt$Tg{say4N=MYZU3tv6O`(@)VI(v4RHKq zQQLVhXa;`xS{{rUa)fpSXUl1Kkan4kANp>aa~bYL&e(GpXZq{ylG?6b3w zId*45SEV0Y;LaB>9V;wEN%bRW*R{Ee6R@JbnF9y&0BNaFdF;zT|FIrVH%-i3E`Um| zL9aB;2NE=@-yK4B7Xp$qydhl%g1|xI;JB~i{29~F&s_h^0_Ldi@M&D5Sv|zHNXV8=>M4&7!N1&e z2lu_F4&rthw&oK;ullxLF**c+D)|Aw_0!+C*Dp~k4MU0=nBxFQI+gZiL!$BD96~y; zpx&3Gx6KW8?(fB1sAuyG*2xpVC&k)t@9$4LsW98+@0!Q3e~g_8_K8PWAQ5itFn z^YTe#uV;HfbGd@7GjXrt2$$vYV!W4wc5^|}8P8JN2}DRAFB8POA;cNROA}*YsiuKA zxO=`ENUc4Wv}|AZIKX}0emQcrJ8-sCJ?Rq5Uw$|QcQ}cXDZGzIB2paBdw#JOclLYaOMf)! zN;~lVbZHNkpF3Uap;WE^`!a>3@6T@~hq!kL@8g}dH)s(Woa}qNj3XM*xGTaT9JB9B z$zBd3VKE3lWi-vfwP8{RJ1@?Kna?@A)4I6zo1^aBw)Xu-Ejl^q?zFMFb7pbFEEUf` z$k`G!bwq+ns?O(9&87=ebg`aThyP`0|8u@ia({{7AN;~gU3lixCFkb*)*uQHG}>n5 zm_R*pxCq=J)UtOy;P}X|q9K37u0SHs)8Jska34>*3EkVv%hwq#|9WntUGm_c4&k=x zoN5_#P0^QI6H#}W|MjOzH~#xBuZW2)zb%4(m0{oOas+Z#zVmhayya*OC8MuHz>_$C zzW${YSNRFL^TR)KR^L5BZ6iJD=YGvv3|asC*GG39Uh0x;yu2PCn$w4PQTqic6RVrc ze&ujR)Onb2$*|xIL1L^;g93N_^NgQ(2yS4)46GMSyKWAab$$?o$x*)BI_E@ZXjry5 z(T{EteP^>%An2ybmB?x0EbwGhSuc&hEQ_Se`ao&^SA$R2T{$vpJ=ud^qAbkUowImT zoR{?#`i~Y@E^|qB-c+qSxXC&!usU$GSZO6*T%KURy{X=^2{?r8D&a?B6V%Q$KJ8y0 z4*|QDakQ#fuE_iMS51|_w=$!dDN_!22Uc#+&UAjJ)919C^Pf)n8E@&r2?63yV)Cya zH(6e3;N=J2I|M=p{>a=)e(=T4V-ae4e0{&%B)_Mv_MTs|f4QK7&T0M2_X{NxA1`m} zK#u5_@9C#Q*kwsVzOq9&dO+tUWi@YJg4p&+7mFGg1!?kmlc-eAdtN+3^(y6}!Ci&| zW`m|YV7jS2Vg&Tx(B(MI+vWxLo&c=#^e3b=R0Es4~M|06zG4{y}o_E ze!hL>xA`vUbe!HxW%2%2D;X;i6pf7-WQZI6M7;=ui1@pQaGU+6`vH&U6{=r#Ko0=E zQdjTw$Z9YSPy=Ll*2O;2a{(v%mxIpRT3$X@6WW%}M0FmRpJ^ z`nkKdjLqKv?XLMSmRC<@^>z?8=vd{QBU37=s_)!v@&$_1wrE(kSJR7Lc9W(>=1eg@hWRH&{I35|6 zOK>w5^bLnJOA+4%lqrct6Xou zLYyl5Ur-b=nf^XyDBkPk^YiQLbZ*+Kk!3S~zXu{0@AC2eUb6YG_iUTPVf)AA@b)>o z?{`L!$h(&+Kl%Fkk$>}fWC(>PsF;O&d$~>@ihX~SG-}MR`2L!I>SGi)ld$^4>sx7k za44Of_Mrb44xvG>i2cKIQ@+XDiarBn;K(6hHBv(H;Hb7z8IOsCWffq$+) zcdEYe_51VV@J>|2_ccFx`%zdKdU)sVu1bG-neXz}_M)wt;$@(cYb1O1h#z%m@%HyE zNJm@Zb)R8$ZP;ZXwiZ}i+y7q;Ll^&a7SKH85s1R4X%oJW5g zop?v~^jacg1qe{0|MC`U)^W<&_IQsB>Sz%|iH9M>LFf6S_5XcwT<`P=Jem3F<{j~` z`f=XAU+w4n#e=-OPxN+P9}j9Odtvbg5_!EU$4`E}^~XxhVF=q22CY+29>7)h@MM$+S~ z%uWq5t@?lPLPRExcsHM-&M0uP7n*>BXJKnCm~Sq*dpY;_a(XK$=IU$9ex$%J_Q!7J za*w_h#h;X#yJW?4380^)*;w3zIvl{Mbn-vHM>3#q>eQ!8)$&zl4=-=8r=>e*n~^^% zM5p-i`IXc1{Mhoo-@85PY`rg!9gUCjKgx9c$H(bBNbTQ$G)QY%ldGNKZbO7pi_eez zQa1yUORD$rSvMG~0CT=f??+1^e|%9Zgx|&l1zzcrYj6m-9tcRSxGM5c#!86r3K zD2cCM1ljwz?U9Msm&-$VS@-*Rw4vMmoSK__m5rg7_wSdZXZJo~vn zsC+${AK6#2{Q^PeHCd|9xxF4;ker-+eRShE9^U2a_7YMTf)H5w(iD)8|`( zH4e&QGicCTpFDI381BBW<9~Mudjl(Q(W5~QVVLlhXc(q+9d0T%h*_|PR%)V1rR2rq1HfO3nt_~Z< z<5=}mbvu-V+}yG7{`OUB4f=_%tpou!e!RSYQuE|O@6Aft(Z4>t$DMz^b^H2pj2vPG zL1&lq_4)b!+KoBC_#oM+VLZJa$cwL>KMVnGoYHa&3?dFXgodV~@BYalK!+9S{o$q} zhYq1Zu(s>)*am|P8YVluf#YMw-HHh}71xFg!2yRb;S3??diLu!yRO~5oaoo|`?Cs& ze%*~LwxbGvQ`ZB#-1ZRo%Mtl&obM`xFIz^s3=_!}scQH6C34`ddBo)|)ye+b>-&d1 zy?=dv#7l;-i=TYSR~GfTK&B?bD8F4H3~z^bd#kAiu|~)~6+{KCCgc~nZGL?719LzN z4sY+Z5_#L|)jamPO5c@=Uw>kHhQP=a+SJrN#4J|zH<0~+bcNYjM^v| zC0+NO;vhf1EBno5cBTw zcp%YS(}x(AV^1q3wHs!Yw%UrIR5*d*1d8qYxwsQ8IB2M0lv?HkVS))l10rKza3ft!TCKO z?QJR5z-P`|sym>aCSK@{t{e&CvnKZJ<-T1}K^gSkOaJgC$MKJkQ}!mG*Ef>iQ};o* zt+)Fsxj50US9kNht#E#8HfzJxKzcPwX~PB*_b`mxvW;v6w-Qd7d4Jz-{9YKD9^&s8?g+p8HN&Ptqm~XgWCzo958|S0QYjSb+8yP|qVDqW z!tq-}cGaONG9D$DcKX7wQ^UEv@aI*sz@7M=V_6@V+0K0Mc5r^0`%a0`d1n_=!ZW)P z%t*!LY&2u*B9ztxQ!^v3py(X;>l}tjE5@uQ>fGQokII^uo;rkv*lwRQCQ*A>O~@gn z=rMFzvxW=-CK^gKU_Tm`LokNZ;pestPKj`-JzFgv*4u=rq)gLuWy>v zeLhkPR6J3*5(y7iTENryA9$#j{BGWFhW`0j*EUC&4O8dfJzt;uqs;nG>ajIXIE0_~ z;A7Xz+s%SRsXR{a57bEc^cWiGq8yhLe!CC{jG zkcpf!sZ(4;H*zgq9)D)LBJB}*?mJXY-}4exfdNw*mHk3U7rNhD*GJ1p`K9UPDn@gB zZim@0=VvQ>H&3kJoD^>HlI1^`u$Zu=D>lR3_S{8^AhdzV29JheX(rEnAGpP_khfi0c;%DTwx= zVUpTI+7d5OTX%nX11nOo^bqglGvB_y;{6Qrjhux4B}9InO)V9=Ia>(cbh$nwsz{6o#niY)4cUFJ9VL-LN4HaKjsXciR=o*=)KG_ ze(NJ!^fKin-x%YpX41)4h-o^&M|0M{d+^pF0Gk zJxmQa1~P;q$%g>YyTKX4u)sBM)!{uw)6izXa@tB^hY*_F%5ziRSIqgcE!ZJU7iOVq z2QS~tZHtlEhebAW`@<4R5#7F`WGt>V82P*DTRM6X~TO31@s~I zukY`t<@2Vtf4j*mg}J4yJCG4&px>WavF4mSmy@LftBM$f#IoQc&R@iyP$VILC8#4q zu_l#8wU};0QY!YAYK1%nxE)#Kh)dnI<=P zf-~=iGo6+86Ilt`}@BUBh(&^b)G(vCP=(yM&l?XmZBP`R61xO1vH1ZMjM1Kq!0LCm+(0-tqB;g^IW=Na<* z<(eIp=D#Y<|Ihsh=-(9?Q0H^w>(>#@ujC2*I?g^?Zn`*xx05-?_p~p=O`wTqt{m#{ z6&aP6uP@3u)WN287N|PPyp`x0cFq>$5Ta>7z*~bHLa7;E-Y#LGyK@LNlehENWy>H|m2C5NP#7N1 zzg%EI{rk%wwM_T@>0Z9y33IiH>FvFu`Etn1&t92aKHje({DA$jsr&ePIb9`fcR#0F z-OI?cANdl;+oi@FPx>6L4tndV&QboIH(mieHt|})2Wy-YHqd{}_=Txu(!siz^z5A* zPupnaD7TS#`}YeVo`6R7#n)Oyrix7<4iCH4`F3zMlqVeNQo|b;^O>*K1 zO7Wpt^4PPP8>a7g>!+bl#>McT9Rdvu9oF}-keM5E6!P7*a5_LfnTWZgTD~Mk5KIg7 zachSg8Uy-3N#c^hy5|`}zLUz>8iRASKAr^40@ic;h8HprauD*;C*=Ff`}S6_x-T~; zO#QF?KS`}l?(6IA>x;;QZuxnt)_dv2n}<%LW<JY$3Gm)_Z~D?B1nnr!<_j@`zr=)1A&Hqo8f+J$Lc_qk(^vDo#K zRCe)9@Eq0ilX2Q8Q~YMEu$^##=rxFnvOu1eQDMJ`X*G+8I(`n;j?AB@Rt)Itf>P5$V&z4}f z&g}ihr)BO=#^h%S)J3Ph9#8S1C{HKgaq~|EwLd58qS_itoQ91(ya zIkz7M$`H2Q2OE@O)@6J5MZb2Dy%dX>=7lJ`SvMK!oR_N@);`DkY07b2OkrPFCI)MU z-Yda!ktD|K5JJ@gIFz^_qfE|uP`E0y3IMf@Ifgu6v`w_pi=Kts2s4BMC(4{*haelK zZR#I01oY}`f+`_w+aWD*J~QZ*T2upl!&-;`UpNG_U^dK#7lK!YR4*^b<@c{bV*nfi z;oC~@b~=4f6Yn%1)4sRQie=W-pF{f0rn&3gX$ppnQy)T&QxOdjSLS%W&D;I^LXkI_>8ojciE#1 zA!6q9?0N>QJ*=_g^9?*JGja%N!R^3?Bmxf%i`-jk>>;J}YldEy3cij9To#Wm`#I&u zr~x;brMMW+^(f?BqK`B)ITNjZ-P>_I- zx3oc23#Bp++*pe|HPF_z@K}n!4%oGIqWQyC&uzv_AX%cZKSJW|%<2HQpLhR?xMOL+ zXWI;%Nn;ob+6A%M&`(V0z@l536K?K0F-R%5w7-77y$vIEI=B#uEz>%Y#R|p;VV&2c zuB&Ngmn!I<@A6c1@ak3&KO9fN;!@zqZ!mvvneOa77I0rY^Z3#)u$D?l9r z_7w#DH=M%;z&Di=!yE+4!mVV;9F}&CCw&o80CH|HM_GfgNDDX5_Sfe9^9+HZ3?Y|{ z;31KdY!E6dW|v@wfECtS7-z%;ONI_-2!+`!U9ESo(i7=m=Oq*z#rEUGCVrNecS?se(_=pjAm_fKK4uo6SVchYGaML)S~?85w0Ik(<|C~*l2QAK>cNB=OTH17PzOf z{iu}g6?GoYtNdH{>O9e?xn6pv6BTfosWH5zVJig-pAe4?jCvM1gvgf$QcxWI6UM|P z&(eQ)2#K2*L9@@y37}#UTj3SYt{g*`y9SJ510}8dy}^4)b2%sP6wBv7)ZEWv1+|`~ zD?-d>*9dvJ1-GT_wAP7vs^L|oDv_k931_kunm}Aqiuswdb@G8N+qP_r6`k*UDTU}3 z-gna^**3~-@Y;^u;^vdfMLX-KZl1=OpT@MGzQ%oC=RjFOusUhV#R;x^c{_0*yT22a z!+@21s(MKdfu;;k&qKaYKJ1rr|Iacg!Qlza2Fqpz1j(XCbRvfUO&PD3YZlQ0Uy`tW zxp#Onl^R&V8dLA%jqLOsSi3QlO@2!N*{3erwX5$!sU|`M;6nqT5ja|e01wwQhtu#={C0t`Z@lR zxL6Y=t-?OpZ_wbAYakbfa(cT8&`xb=0n(rzLat}wvy2Q)B641YX^lnGaz5^g$N%gQ zc){$Uj*9_6`g|mNNb*4oI_Y5>qn^D3`BF&#%(1|+A4GQh5d-<<4IjXcQkWNSp|U41 zm8^tJn*b^y4Fz_ZE!mn*s$~jdnKs!CbGGS$b%Bfgj&r2m{K@NyAnV)2PW`Z*a-r=f z6P9A&tRI;fPiz=Zb2jEqj=gZ(SJqL+(61rJ zEC0=J4fkXH`EYYp7rTm!A9A@ld+%uH=nDI-Nqsv1hWZe-$^Sf&i$WuHVk;ta2n|b~ zY~s*-But)L+JSf}wO}Jro1wGl;%Nq%#S=3T4LJ85_sK9TSZe4y%4z=>htNqRHA=2A z{Y?1Eg2q7&LBfr<9c3bNiB%K4-j4hjLx;CO-)^kqfvo>LIwKsrvccxW+pyUQGBGv_ zW{4GrF(>=5c8g(SFMDotEj_NOdsR|+A$yr4^47_2Tl(Gyd)iDldLjCpl`AuDJ$Kp4 zUq6QY!6wi8z|FvfW0tdl4@_H|Yk98R7hLYln@<96It52b~)!{UPu2QXzgQaR)UZWvjQ_~-eD=+J9mFJVm?8*rySz?oBgB@(}iyWx&ZO)oV z4>n7;tb4rz^>5bA`N3X8S4W70`70HZK86J)E*D&H{)>DVk5c8@WqE-3A+iHH)3~Xu zoO*6wG&sTPSqf89=)fVOv=0eaG0oWVEHm5c(bA= z4bHEy$87-YG65Vyx>Vw|hg|yIL~EYXeb<bgx_%Quex@Wifph28ZAtn?3$oM5KDtY zz{OMpAt7?qGNJ%DVumVSv8bIKkl;28G>Lu3_&Zc4_X?2=Uf&dsk~O)skRd+ z>p1veVgYv0hbfJo+l@^9l8~)4?sCgGJ(NyinOug{J5EdxA1!`0?r-KoKyPUSmZ01t>)tYYF)iQ2d z7^ZdV`ryZIoyRV0C*KL(1vVSMcJpoqlf!yGPpVAR&pm}R5$CSUi`T|?OqKnqs_s<+ zsC?&#DWyAhiSz((h_n&`uLQ?Slecj3KW5O}Yp5E7jRzW7w&ej4wG+d-dEVA72xzow z$87@yz9Ersa0n7-2>6AFZ5%j+1Sx9svsl=P&^b$c?%rdLxG)!4FzJ2+B7R@+1=bBC z8vmC=aEhp1gcZ5U_A?8T$;srBT@QWFSvUGLN+XxK>y~93H!Vh^mt_`ylG29p)bSkc zXDXfvkoK!T{<+)yI0Pp;Bp6S(en*+{h_?_FzUDKYfx522Az&s8sS|vbh#kUr|J;gG z(kv>p_ct^M3*rbSFoqN6PHl2z#zVYYi#EmyQD4Qurxc%O2>XaR69SrwGy!&#YmgPi zW5*%<~nNuf&kFZ^WOvO)|b^$It%d5OPMOa(4SW zEqw!j*B)VPmjdjQ$ChqY8X{JWv;X%q-Bf~MQrMQ6a^f7zRmP`XzOwE3T)K%~f(f`3 z%NP8yBbY){ek~dVcdqdk*Kg{Ysl1&+98Jgh+x)P)Dkv48|bomcCfRx?EUBiX?2n z?S-3RtVkh)rXuZLptV2V;KAk@1?8k$gfGyYj0yMB)4YLDlpVqbtCL(Fqup@>nK%+u zY0rmK1ehThix(?ogU&EcH2h!E$*29<{s@+T)-EE4P*C;2!8S?8p;Jz+1*dgFs(4ZOGB)H44 zcJ=~68mfExW@u)cmI2;L4;QVIiX39YF)c`%8>EwQZ<5=8a0mpy#&-@X6qJ=Cbc}HE z)Z!2tv=ADailKq}ellpRXfOw4eijUHv*_~fh-WvOL`7CUbqLC1S1BC~a=L-!!_Qa< z4?6@BR00`-l_)vg_41VSqcp!(xQv54vIPnX9YVv{(Ww80L-%^aFATc7gL3&NNEGl5gOImpi2Vl_1?qN%so6 zo{7QUq{7>HNHY95urSXMJKC!&HShDBkd0;sJ%of6g3{K27Piov8mu7w;3G>N@#LNsG!X{wJ)sUp^Ji>F|!dm5^L!gB?5SDpwpO*~zy-K(%x-VGl(*@`d8pM4X zGK6Fr2FUVP_L-D`96TVCr4;db$v`MW>IObn4xr8tbOvhR`5JXr;AH@O$-JfB{#c+x7-r}Y_ymJ; z6dI<_4IqwvMot5(Uhj4N899WRqaj1$Pmfi}5Clw=qeoq4YNaLEfU!S6LZuA2n!l(N z`07Uc`CzcCw2k=&^;>;YmoI+&kMsJ!m}t4_mie-*Fg{q|gK401{lg*LD7I7Lnd)Y4thLvf zW}qzkQHey1`YD}v6;mm2O9m4w=O_IQy_xbCSLQ6n)N_ZB2)mAK5OjYIm>g2RX&At! z26m1HEd+)Z6>^@AI}xD=kfNN(pWrU5UN~|H`v_YRFK5ZrC#Rl3{b*rt#>*GI#C&5L zhIIwhG2~G-l))pYJhF9k5Y4!Qu5BzSF4EUZSPwM)Vky^6;%b&$?-#<_gAnKJtqv9F zy-*UI-+MY!bW~jI`E8zMHR{Y3fLdh3Ca`oIH#7Tgt zLQ?J>`b5xE=6KS8L+HB(G$V8f2|C=1RLrwy2^~T}$JC*eCX${EnpO0FhpU4vB;6O+ zS89=)ZxtUGZ;Ss!1^)aK@gBSKSjzCqflpP1A-zr_3b26(tHr>)V5?L{&en-_;+D;; zU~28;X644mlMlS>eDLEWyKXXp$#rCb&zoS<&o%@%dz&;f&oczk;P>=XGo`I27WU@@ zf_yza=GonFBX?*haYDnY9c+y8g&{tyh8_86V1|I$MvJy%kz#xLiJu9K@|01>??+8~0v@Y3a=}sdd?=H1&F%#U_S+O?+FJ@ZB=@Ly%0xd0|c~ zyJtg>kwidLdWXA0Si>MDOxBkj0wx#6P>`x4^*oVZF_t}ac&~1q8sNeS z6ds)6jovG2jtpFvov1>)sq3CR%^`AqZ<(`f(UVkunkE)jFRj^n!!+C2kngn-#`nuA za~x-8aO<*a7W87>LTNu=1RuxjFmh&~6!j3(ZOUDI=keIDc;msuoRj8|WFb*2Tt3fj)=uHJ&OPcZK z8gg@~g8I>?o*Pt6e1aGqtQ&x@ZbD* zYG!lrwiDyiI`~O+J&$WQ`>F3u*t}zNzjkRGg~;ckpY~j}dmY6jxR#D?0tg*1??x%vVc5ENFS@(XoN#^d*gf>1p43T~2?ApTr#dSc3$y?ZyC zf*FF*2|0wNiCq$J7|yWt)SHG5VZuZ^NZ*5$MltM6JSPq&hp;xN(=o)n5g`$8E*Tow z8-s%b&W4g<9~bBl3~o)@9v3G$P5(sg21NKg>>W zvE{ma7VErqW*S33EeqR(_Z?&7?oM-d1xALP8EWQPU@9jc+z!ksau(69t01^&yvX|; zT0iM50}?5hPK7-`@;|ChZ-bUQXCdwZmj>3{M$MNdE(efN8>s zkoTfe&mR1gYK+vkHnt6uHtm7ZuxlkPlw1 zy$JE0ORW5^X~8VrY3T3+7;urkwDS$6@6WIDthE0UZ*JScd~@p%s1Xfx#l8GPEa$mH zZ~`tjSqsZby{hMriG>Lj#uZG&+pr;xX#sh}z0`f2o*QBQKm$Z<^Qa*oxx>4+-a?0f z@UFE9ipRPVFJs-r?P}0Bbl$13Skth)obN(|n~s@T5zni1|FOzd9MYEimFkuxJt$W% zJ7LCiGX$j+3yL@Zm0!fHZRgn{XB~`NJH7YYOxgOhZEWh?*s*o&7P&b#^}+hn>Wn+} za?OtSWT}0}7(JgZIBvoq#GE@U4U^REHXW=VHKu!Q0v5m(j!|J6JKfz)MShjcd)>|* zfBtt?`3IH}^bj;07;*(0&suQg5E>5S?gDf@46`97xLC_m18#QQ5XLZJPz1dYVjyZz z;Smk`S~H%lFuWN~__pf-ybX0)Rq?3A7hQ8(Ug&bunN%wtXMlWwDk<_=knZfKDZ5uy zzC%?&sc}IM&dX&EEC=pE2)1-S_8(3Yzqd2qGr3LU#@#A5HH}j5LnoM+d`<_l2T*?X29D-b+L+}`@Lfud>WtbZ{6}5p##dCZ0|I$QCyg@w|QH4-+3lIWD*B7-WWdkWJ zb_hD$NLAkf{4TS=#&p(SIlUwZOM{J zY&2Ll_$7GhM8B#q3Nuf_^==)EA6ZyOuf!?_zfFq_iseV;YMi9GxLC7U+w2{bCV@Xy zY`l*2(~YpsVeMzTrhvVtAN4s^qUo-+a8AV!2bK@rY1%np_(A*oB$hMmJK_QG4RH5) zhj<+9SBN+C9~=U0NdPuPJK+7N31ks5g$f*fi^s1HDjQjloF zgt&Onz;K=a`mFz{hrn*D&fl&z=MR{Obk~(Wp2qIycF^U)ycmo1gVQ!=yxAdWUK9#k&#ty8|6$}U^H6TVCr zUC($dvR7$8bw=Ws|B-}G?YYs0q58W+M=8zjJu+qDYUSuW2-I7TMF0vMhz6c}D%;Sb zu>K?ar;;J@0Q3c7aueJq3m&cy?0ACI&{S->p2LJ40v@jH{j#g)t%?*D6c9*k`if4C z7m>VM=?Sn1M3Fov5%Hq&TIF3!(tdQR=oOUb_u)Q0IG6k=ay_@PlAB!g8mn^z9*A^% z&gp@(DjDyLl*&$i>8GWWmJ7R`=CO+;sJHVj7wA-si-~1BnQhQ}&fn*tw9(2Km9nw3 z>*+Yo(fL(t6Q0=IYrlaXu>G^J)_GSa?V-0-gr|J>uJd-T$@h;Q;t+;Tfd(gulVT== z2r~o?9m3wQ!ZBctpdC}S|GA~~JVTf!STf8T)V)<`%8>6O-r?DIyxe3OxT6{#@tm2t z96SG;>c&k!I3HwtS%|#$f*(`6?IJ`)89I-L1l7@jBipV$gmf50RionZ+McG`#2!87 zvc{5*^|e@ys7$D1GU_ZI&ucaisI1n`=y`TpSg!dJn4H-*%GI&$v}CIuyLH^yG%+cS z@*j&g{W?TWviFQDKReQ`A9T_>r^6*G2Sy6E0k$Ja-21J$r(+VZA38hvYt}Rgt+u_V z%V)ko`1clxmBMR|23(^@NX5iD5YYI(O_1MNGbpE5iod6@lbrS70~|2;u0a8y-~O{h zptruE-GG>rhzR4h08@s11QzTNW)tzu3!`t5kOYnTp26fwR!U^p>6aGN?W4@4&vflJ z$MarVwUNSGldjeHMNzUoh%C5Pl_mGd$3OpibdHZ`waJe)W!HUV6fom3W0VE#mQ zK0V`ntDm-qXF4{}jbfpe#HEYKA<$3)>^lq$CHpA^v_yT@KYWrfQicoSV$OmwBc;HQ zt=OP?)cyAiVJ`x^konw2*hA)AirdU5jZB zHwWhS>tfxM+tpBfHuG2?d??J(Y%LemF^zKHUuyQ-c4n%R^=gVb zTjyYOVhgij^+p6Yn`st|v-OSb#&%;4w6?&jhU z{Dd7sg91PUKUxEAI9vX~AtcNbPm+KMw)&hw4k0~e2zMjg<1@^q>%yPR0Qh1qKUeb5 z7$4u=wZ{Gd5V`zb?fY5o`N+*vftV2P`?&9=%@7N`H2qSQm%^j3N8y@1TiR0NyD~ig zL*-(zb{3qQ!;*7%Rxs|a^Eq|zJQHThxxDaJPcry^+Qc+(r^x-dE=$-tK8bZUZvB2? z+{(o%YRYMn*@~s(d7eV&@HU+waqx~24~3!jxkHFVvj)3CFp=LE2)2tV07;O1-=+Z; zw3fl9eb7*+izA0XeLTpzj7dz}Sb}lAW#@l!2njL}#WV!i>VwS8x$t-_!3z1y{kMj& z-$dod-g6D9;nH5(`MHcv2bTMgj^(v69m`Od7QpIztR`PGc%s?k$5L8(TGFvQ%K22J z?P;Yyu$-JH9aOHUnRCY4FtZ_uIf$X}*`Rvow%!W1^^;rYu#I8ac-OO0&b=MSmGxm4 z6I6he!>nxisud?-#+UwMePt_$pE=pQ-U%q1;v44yPhNHG4Dpf)?`{5G?%9T#Y4GXg_|`0yqR&U@0^N^=y4k3Rr>iZJ}Y*4gehyDXKK-cD=EJy zSvbCn+F`JkS#4)wjb&bN);pz*~i_-mu$*%nZ512=p=VSN|{E+>H^x45iX00&!#jVlW=RZ6QO5>io(J9lDCr|=Dn{!NAnRu= z`o$r@G1+dG=W=>96z<`0|3yD@7MLCEJm*wQ1Qvuy zOvzKv2`R1hUh|LmAk&z5?XKOetHq0L^YYQydLwFIN)|eyr7)?z%QALMDeh0eC`5?x z`MmT`42nd==G+jV*`OYs+99*ZBR7VlJ6)(@DgsEsu?>3gJOH)n9j>|dPhBk zp@D1~Cvstg_rS{iX5!u4RAfjkE5(N@{kKodkA@+CY)D@{Hb8fT0d zW;akA5619h0_~3p)=R;hS~fSa&j6o4nO!DFNlaWL6n1DE8CI#Wc&0$b_Q zK!?yEBjgyQM}@?^F)4)L&$kv%-W}dppND-7_)1rk8 z%vhnLQOe}%k0uj59+fgR0L4eRsisqfupYd#6`{WKldIR`*fuNu#M{ta3XfO~pWmS1 z&a;GKk};Typx~*XV(B@8dk@lzqwdIrmeTay7nm zUAAvANyj}KPt(HKU~_?=^ItPWMVvF&WjA`&N?S(*`bq`EDSJ*=l4&9nTaGo@2W)yp z?iJJ<`)#@DexKZLJJ(88Qkse~di3_i$vr;7!-E)N_~dCj?NH=cVHW%Ox68Z=of@lzBHtBy*G6dZF z#UzmX!BG42GM}PhDi`ZY&cVAN=h;twn*18&Fk=y_PEHNC(ny`{WJsg!GAlC_oA_LXq2`Aj2me`{&1T*>*fRYoH&-B(_1~ofCXu zcZ;NFX$S;w!9MoTAxv;{gSghkE5>*cas2(F56_80R0-Z^nW=R2hd*14!pB^+s3tI~k#2W(Xeg*l^3?a+CCc+9dAU!?B}wkOR;<+5pE&)5d?&!8Y05pqg*KmIouc14FbCj z4uN?n31mmuu8M{udBP;%0myOtxkJc*+x5^P46KbY33lMHPo6cT>h2kqPqUb9dO)IK z3HEW)?vP?Qai8LaqB(FliD<}8J%)?mBW`46V*Ke4u2PUUef4uF6?k(^G1w1Q5(y!y zmgy=VU~b1IctN9Y=z`-QmlId;HPch~!9onft^rH!^jP9j&KF&qIn@Vst?c!6VAAqT~sINgnShN*rfUMzfd74rXZ*lVdj|5$vBFLYNv< z+OepuMHvFmp8;n%3=*U?bW=FSCi zLM6-)8mRCEb_m(8AcrvdhH4ohiV0(gQ(QD3hzZj`6hsNQzzrS484n^_#B!GK-NQDNf6jVZ*LnO*|s0T!VWE;|3jq^$E2m2~h$q3}GVitb%M1vtthp8A8MLotreR z{$c%@61Vt_awcEy4$BWfT43TN!Icq1+_$^M^%XTrQH|r~7Kfk!yqzy_a<(f71vaa~ z7bZf7VBx}Ew5*{xNl-weYiJKIsHw!GhHFV_#)RMV1{W0!hF>J6BA|g#coAgp9n26K zw!Qw_1qy4C&=@|mZH<}9Q7+CskGQNLIsF?b32SfQ1AedG%9>EJ#q+~ z8_4mY0vJ2S6!750jo`Q@((pmhrVmYMNdnQs9Pe>jLMSMCXgL-h9$v2YG352o22F5;v9L zlwsfHhG!L9f~24fqXP_d2t$V#(2xvjTgh;Tkvi=8+$lN8y1A)}d1RR-o>!5)eZSGl ze3*$}J{}-hT|p0lx?XrWL@?MxaClMzTP4{B@cG_a@z-n})jsc0Jb z@mzwtw|;7wGN7j7Fh}SR0`_2fKu9%Cja~F^HgKD0Za%>*9X_OL2qU~>hkL2pLlgAE zJYT3ki}@0CHC|`{)xhONOTPK(W83IYo0)*}i%N~+BLa@Govvf$#m0jc505Whb)(#)C?9T9BoWkf5-K&_Dv3MhQy>h8;rhV1_VYai12BLWw0# zg@Wpt($Xp~8FT>zlZ_w9V0B1OQHD@CIu1>jc-EmTpQ5xjc~xPl{905V7{=7V8Jium za#MVev?*w8w;8iCInKTJUElSNccV1J+V^r2(#LJJ(=2Ck>O{ZrIQ9J`90PD*2Q_ON zt^_32+*RUu8W@8@83GA&z`NVfl)=NFVbl>g1l5osFpH)P4O1q~A}prmic5wSnxL^5 zspueIaxPRCSTd{vUOd#k%+I0+xPi_OBDP-_Uuzi8AF1e8|ImiIz7qHLugl9-g?w>W zEcj;U?S8+n9L}8daAOj|J)>ndNAci8=nMI-_a=2>UuMDN=9v@A$0~oyxa7rn_YV+n3h$-05qUTDIQpZt(YJ=n}*Q&X{QC4n(0L zoH8)%lqZR>m;2n`eWny2S98*3!HkqD)RBPSitCXy76d%xP~?8UWM@tGw5yJ$O3d2c z$kjSCc_YMX*%bQFpST-4tE4wG582w;a*{cq^Vx}04%y995EZa^|i z%;72BgfOmlwM`ef-8=udAB-Z|DTTRGkCa$aX@bfZnld2en_N6uykgMc5PE3J3d1c@ z!!hCkHbDmoUC-b_8B8Txgju9{-hiP5T|zt_R}sr zuB~B~`-RU_zX~?>n+)tE>?DN9Il2tXfY)>L_>f-oOfs9ugo= z=sxrfi{T2w#|5r&Xs-VYjbyyNM}zt$cfa)tDa}W(`mAz!{_kMAq(-_XWz>VnR;5Ec zE0s8@ii#Goqt_;TwLERhN^t%O5~d}o`TVcVsh%1XXJ!e0VcN=Zl%g}@W9Hjp1!I~` zUUn1THYK{TcZ&=&>0BG*?T~Z*+39Tg(gaSH5HHvK&hJoe+QmD0vU4-xta?d*U>M$l zl`+%5IE0q!KSqNM3~tTlJGV42(l;>v;~oOX-1n+M5mo|hP5fIN=f5}v&f)rVKGRU2 zsDU`RWu1g{#*st7^r(9h`k=|Va|r2f%3yA??lY@S;iuFFjLhnC%9_F=|R%9zM zEIWiC^yKqT&t2#F%#GC11(n?fpGTGs`~ADbnSZG$9vtq9kDd(BA$VN2DfLfCMaCeW zrJ?kk9V8EE8QVw+O`~BxU|R;9I9-t%IRpo@m6ZJOwB1gnoyHEqKcA#hUY9l3(CMgQDu>h@Ku#XBIyG5&iXn(~J*})~w(~I?yz7NEW>&^)(oQfos*BKgiRqYt@Igl8 z*PfG}BZ%#hKoS1~hcK-8kT)z^4-Lyr_CGrW>beFL5prf6aFcEXdtUjt_=d$#s1b>^ zy_=TBRl_dBhd~YjlQ$=hhykjy8*~VMN6SsKL=J&SbTA8;j=%bn+Ho(zJ^N%GxpmU@ zQVPzt?UeI(pEL8V6FEa)nUh{_j18;bM$>OBm*u|EwT3AD z^#?iNt3q@-v-uxId^(VRoJ4uk1=hRYYmJ);Y`PieeV|3UdIP4Gvo-**~ zB8L>6^)(=*Uz=KyQbC>`V>|uEC}S!vPSIH1`gLK)C;!;@1{}p z%ymMp>oWO0$Yo=iYa5u!nE+X6U~&n?#4e@zgVrA*70>9vRAo0ReD|!NMQz4iQm?wo z@tkXodx=0*&EKutR82&tm_b4}osS#IUr0Mhj)s z^nBj9C&e<{O=)QUH>le20f9`S#w*8~apVvhw$iafDBeE(dXUeXEd}ow)6wKkzi@1( z>keWWuGPw(diA7mNr)WM!Q-3bTnNVGsN~QuvfKJ?8|AQ#Ieaf`-wCmeld#j6U4di$ z$lSWP&GSLdoGn(FpxCg90?55{D|IrR_A1Mf_Rap3#Ju}b*@L8{be$6(v&4h@_v{s7 z*`nru(8ad4MGBjKv~2jo*LGYio8b!m7JGU&Ux)IcFuuuuvL2QSanHP zoXX{YQWZ~7ErSoaK-7ve8!cnnImQgj>9wBy+Rtk2g%GkE$BAwI-sQM%x3%lcAl*3T zq`en%IoXv-<5xd3x8!1fFgZ)e6}#o*hxzH2Rk|(1U4NX(g3d3%eRU^)nPVxHkm>$w zzr`F8I#Aw8UY93JH_cXhO7=Lee7prDz?s1Q{_X@^@?;#b0OXPvldL+(H-+gu@JbKe z13YZ={=Ykf*ue3|_r<}!Snn|~sbSt?8-^(jbTSU)QmLCt?QCA4|p;Qj5KkSXs%Ae<*>2E7-ucKBujb_foW?qjlp zmg&3t?@h%-btT6$MS*b$Gaftk4f+!ebV#_HlGHJyU_HDWUsh2LyqF}CRRB!AvZs}o^o>U z$KHs+d*%JKvDJ%pocywRMv%CZ^xdX%B=aoZ{kUHI1ze&6l*m-T>vjdFt(ss z54q=9kg6&8A_-ma-DJEaejPTy@0D3fR14XEg4^TqskNXVj-<ZA9x#4n2 znzLM0OJZX&qTj;Yi}~cnZClyc&GR_%(`4pp)Qikzx@EnSIMRs|ALVhtGd1FSh_8>`ngbvD%t^) z{shoL=0)ubeQl6aFHvTUqH@eJ6T0P{t1Se22g%;%#Bf&c zH$C_g!THg(Cs-%NOZs_|G@!kdTqbB{lC@mt1o~slaa-#t@OgGphSf9IPkwXTq@C!t z#RVC(6(gG^+fGwA@}*;2H?G}D@Q;(+;&xJtVYJaAa%^W}VV&rDDZ(l>%LYsgM!x5# z)9mBWm|021QZnd#X(Xy*he(vcuPy^ZY47KN4 zqSMYaIuNlq1Q3;HTr<%2*mH&-&NLkCI>`8{Hw(?6p@)E1=J$q<$?!kHRReC$;&w>!Cxo2QU0!uHt(!{)dx`G@Czoj32C@Ir=u z;UVXE(r<{icmVcC#$aZUZuwfXaF}(}Ij!Q4Mjpfj8gOMy3<927>3nx1{^>&rZ)OYh3 z_Ho>oane59x>nON2bXj2dB|zCNm}Hxm|*WYPZ$ENxA8(!ooXNOuQo8z0^U{xYw zzbl0))mvv9t|iKTHt37PmC)hN3k*FhVB%nbhu{sZC=W}9)S?n17t}*Y4FuYDRt+Q? z=)EKdjW7)m0h1aW0)Z(}$$&XO8Zf<-e?srn>=5c?sJuB%POZ{4{`E;>E}dcM(Mw&` zt_H<*QU%B{1a2&q#>NcRN5;%Taopqz+Dzlr$()pTlk0^G^ERuQu{o%TvC-%*CjhJ$ z{jvzH2C9Xfq4Ic{?U3_+TUqA|zhv2UJyu@HB5RGCO242sl=w}&EdUs9N}uznUycBN zC8nic-L?bjc)s@wY`2OPvVcJjNZJF2Sz?+oOwKhFrvY|@8YtB0PQj7^0`ig-SQ`~e zY*5D#Vin+qKNTJr?v91b~j_)tA@=b z-=Iz2u;cf~F7~OkvZ6|H(8jnN%@^h-mQ7f*Y^>dygZ;`(ze$-Z?PVW!zon-Zc2nDT&0 zRvi>D#+qg{LV(yXjuiLe|0C_}awG(SAS}U+!3a9|fQTLMf6Ep3VJ8{&>trrKB0^F9 zS9RVDWW8Rf=TuW=n0qcep^nWaGq>y~qW}Z}f%?5 Date: Tue, 10 Feb 2015 21:56:37 +0800 Subject: [PATCH 122/123] fix Bytecode --- 04.1-Bytecode.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/04.1-Bytecode.md b/04.1-Bytecode.md index ebcaa18..053cf87 100644 --- a/04.1-Bytecode.md +++ b/04.1-Bytecode.md @@ -35,7 +35,7 @@ ### 解释器模式 本来这个模式我可以写成一整章的,但是Gof早已替我写了。所以这里我仅做简述。我们从一个语言开始——比如某种编程语言——你要执行它。例如它支持下面的数学表达式: -```c++ +``` cpp (1 + 2) * (3 - 4) ``` @@ -55,7 +55,7 @@ 首先,定义一个所有表达式都要实现的基础接口。 -```c++ +``` cpp class Expression { public: @@ -65,7 +65,7 @@ public: ``` 然后为每一个语法定义实现这个接口的类。其中,最简单的是数字: -```c++ +``` cpp class NumberExpression : public Expression { public: @@ -85,7 +85,7 @@ private: 一个字面数字表达式的值就等同于它的数值。加法和乘法要稍微复杂一些,因为他们包含子表达式。它们需要先递归计算出所有子表达式的值,之后才能计算出它们自己的值。像这样: -```c++ +``` cpp class AdditionExpression : public Expression { public: From b16ca97cf2603df673f2ce90dc0a84cec442e513 Mon Sep 17 00:00:00 2001 From: "Henry.T" Date: Tue, 10 Feb 2015 22:34:04 +0800 Subject: [PATCH 123/123] update Type Object --- 04.3-Type Object.md | 10 +++++----- res/arrow-inherits.png | Bin 0 -> 1484 bytes 2 files changed, 5 insertions(+), 5 deletions(-) create mode 100644 res/arrow-inherits.png diff --git a/04.3-Type Object.md b/04.3-Type Object.md index d3fcd84..50d30da 100644 --- a/04.3-Type Object.md +++ b/04.3-Type Object.md @@ -89,15 +89,15 @@ ![](./res/type-object-subclasses.png) -> 这里![](./res/arrow-references.png)的意思是“从什么派生” +> 这里![](./res/arrow-inherits.png)的意思是“从什么派生” -游戏中每个怪物的实例,都属于一个派生的怪物类型。我们拥有的品种越多,这个类层级就越加庞大。这就是i问题的成因:添加新的品种意味着添加新的代码,每个品种必须被编译成它自己的类型。 +游戏中每个怪物的实例,都属于一个派生的怪物类型。品种越多,类体系就越庞大。这就是问题的成因:添加新的品种意味着添加新的代码,每个品种必须经编译产生真正的类型。 -这是可行的,但并不是唯一的选择。我们也可以将代码的架构调整成每个怪物具有一个品种。而不是为每个品种做一次从**Monster**的派生,我们有一个唯一的**Monster**类和一个唯一的**品种**类: +这是可行的,但并不是唯一的选择。我们也可以将代码架构调整成每个怪物拥有一个品种。而不是让每个品种从**Monster**派生,一个**Monster**类对应一个**品种**类: -![]() +![](./res/type-object-breed.png) -- ??? 这里,![]()的意思是“被什么引用” +> 这里,![](./res/arrow-references.png)的意思是“被什么引用” 完成了。就两个类。注意这里没有任何派生。在这个系统里,游戏中的每个怪物是一个简单的**Monster**类的实例。**Breed**类包含了同一品种的所有怪物之间共享的信息:初始生命值和攻击字符串。 diff --git a/res/arrow-inherits.png b/res/arrow-inherits.png new file mode 100644 index 0000000000000000000000000000000000000000..0e7ee06d98d0457cb8468102d81add243879b3ce GIT binary patch literal 1484 zcmaJ>c}x^n7+(Sjh!ROn>)9|4v1_Hfv$F@VBP;G%M%|SxtHo%PVfV32mpPmnWTDox z3XMc#sT4sxh(NSD{{r;H?w{ar+hl`v-QCnfJbz@AvzD-|^<# zOvmSOv14LoGFcp%VR6DW4Zag&BH?!YmpSa64&9{RQxkUt->{!N`v7V1+FGkdIHxWeGdww37$N{X|eUi zf|dczmn5FRu%e>-CsQjj7cN=%EmcS&8y1STV7m!2(3LK=TsKu}GMa z%H;|r0}7SCO@ZMDXj!qZOt4^>pW-oGsS2mm?`XIGzbnHGc#Dz~ywf`pcpLN+5dF9 z{|Jsxcsnq+&={C}z`}7C;9Te2Y4`-*iJZ(CE^DZ#Gjpbc=a?JUF1NPaecjc5`qas! zq)GAd@wJBzmahJ$qT>5dsJm*%wo4bzb#=aIfBC%o)yuoLn;PnaHG#c0tL4e#)|>_N zyIyrXd-e!PNND=&`kUAPghC-0;mzxg)dj0|%VZH3NQ=?szy5H;-0yxt;#ZCRIEs|7 zt!=3m>O!GSH;@{2Z8?5qR`+Ljp<;JHI3NGHdfAqnWdv&qfCneHtv(}HE zJmSy9j3w0J?ES&hzf*VtrXf*?R5p?%1_HN4&g^I590b582(_QgTv? zo__V~>a4mi&!_(0G;X+T9hk$!UYdMmtZ&ujMlkGtb*$^?F^%^U3XOk}$E6whUlN>wNQkBiQt;447Sz1!J zFG!|LO<1{kPi4ifK=*{{^V#TxyUkT{IXmHSCABOt%zJeFhEpHr4*eqw4@Svv`t)GS z2-ewAw7xbb+!72(B4J)@-TAu}7= zxa|uf%K?$!;veR4Kr`aL!Ac>MTM%C#*}tkdpdVnge>N#s53W9pPRz}SJLXR J>^0@A_!mc%LPh`p literal 0 HcmV?d00001

b`I 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 literal 0 HcmV?d00001 diff --git a/res/spatial-partition-battle-line.png b/res/spatial-partition-battle-line.png new file mode 100644 index 0000000000000000000000000000000000000000..686dc58c82ea4794c2d431ab0886d9fb0e21fa39 GIT binary patch literal 46413 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 LNkvXXu0mjfuHkLp literal 0 HcmV?d00001 diff --git a/res/spatial-partition-grid.png b/res/spatial-partition-grid.png new file mode 100644 index 0000000000000000000000000000000000000000..c861e282ce2a0f735bdf220833fa8ac2c892848f GIT binary patch literal 61225 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

Ib4aqeWs)0kl(SE={WF3!q+f)1~< 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 !k&g7AA6?}Ain3qVMUVmk;gynZyR_rmEtxOZ z+sHR;H(#leP>8Y5o6G6)MXCMiTy65NTuxg8jBkzr>iX2aht;tGF|ru^6J?DBA_R>1 ztVXf{g!z@ih;n|pRNVeO3S1p&_aeHe9&K}K;ugvLUW3@|9KM-bb6#Gf+x3fXw4r{HH3s7E>M_rk4rHG48IjO|ei>b^ z5n2J5C$E^Vdt}v5h`tC2Q6Uoz-WAiB5V%NNg6kkxu|`ziTrj*{ue;M1+4P-k`k(h* z=7^z}Q)WpD54)7tc?3W&v`3byLhqmmp#{8$hWML300@Xa@|&AwvleE^Px_C5KyUVY zcVcy=rx~$v=_cO}lVv^iqo1E=%#) zsOTB{)~p>vTyCM|Rk1McoQ7X(2vIf&AV5!1K+3?MOnLCZ`*O+*FXv6Qub;#1G%l~OC4|27>}-^b{U8$>VkSRJnvOF2&qfgXGrm=L|mPLA{cY(ROjR^Xe8iM^CAgE&I58f`S#C;Ml zK_5S4F&W84w^o1Zb8R;hUMI3^NJ7 zm#>5a_D9Wv5sD0{T@kwTH`lR7eAZTH(Bk@}z&Q!d4*~sR!X{-zYfQ)lPfro8`lJ&# zp=5p<4(fSVHXT;UF^y2#xrQl=`)FNb$l|p%z3=p(EznCA@uOc6t*5M3>#prY*V@$8 z*z}rt&b?sva`LiyK~|=s()8BS{Ck`P=$8tV@z=H^0@a8WGu?M6nDLl`m0nH(fM5VM zZJzurzF6;C1P~k$wXimM_zWQEGO11o3Q0bc22uu#LQ2JSDI4ht> zJ;-uDwZMi5e31AX^x$m{+vNxd=YjrquC_SzLYD$zVdcGRkv_fYF3#dxlqj%)ri6lW z(8`l<&eFO32I&(Z?`?GuHl2ml-0#;u>HjcExn|vx-nqeftI$6gjn$9}m|CP4ps$(E zCQLC$9EzBWq=QqUYFRKakWXK%ef(Bb{2(Am5D<_B;aGla4Z<5`T#=YCWM#f$AYlQ5 zIOPFA2o{+HS2C6X0b11%WnT2Kh|ZHQi_7YF=0y?eWsvrzVkUFRJ4*Qv4eu35Njamp zh*O+hxk376koe4UJakk!+w^GNYOqxtZwU~FygzXg+mndeu%98%nqG@wne{|u8pF*N z%0D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 literal 0 HcmV?d00001 From 324c8c5a30387957fb673c0be419bf9bfbfa9ffb Mon Sep 17 00:00:00 2001 From: ChildhoodAndy Date: Mon, 1 Sep 2014 10:48:36 +0800 Subject: [PATCH 024/123] command pattern correction --- 02.1-Command.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/02.1-Command.md b/02.1-Command.md index f819b93..bc32739 100644 --- a/02.1-Command.md +++ b/02.1-Command.md @@ -395,9 +395,7 @@ function makeMoveUnitCommand(unit, x, y) { > 注解 -> 你可以将它用[单例模式](02.5-Singleton.md)实现,但是 friends don’t let friends create singletons。 - - +> 你可以用[单例模式](02.5-Singleton.md)实现它,但我奉劝你别这么做。 =============================== [上一节](02-Design Patterns Revisited.md) From df338cafad5896f88b066004ca807ab9326df5f6 Mon Sep 17 00:00:00 2001 From: kislyl <1131985199@qq.com> Date: Mon, 1 Sep 2014 12:02:52 +0800 Subject: [PATCH 025/123] Update 03.3-Update Method.md --- 03.3-Update Method.md | 40 ++++++++++++++++++++-------------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/03.3-Update Method.md b/03.3-Update Method.md index 7a5f886..7d15efe 100644 --- a/03.3-Update Method.md +++ b/03.3-Update Method.md @@ -3,19 +3,19 @@ # 目标 -通过并发地通知所有对象同时进行帧更新,以模拟出一组相互独立的对象。 +通过对所有对象实例同时进行帧更新来模拟一系列相互独立的游戏对象。 # 动机 -玩家所操控的强大女武神在执行一个任务,目标是要从法师之王长眠的埋骨地里盗取极品珠宝。她试探性地接近法师那充满魔法的地穴入口,并受到攻击——可啥守卫也没有,并没有什么被诅咒的雕像向她发射光线,也没有亡灵士兵在入口巡逻。她长驱直入,轻取战利品,然后你赢了,然后游戏结束。 +玩家所操控的强大女武神在执行任务,目标是从法师之王所长眠的埋骨地里盗取珍贵珠宝。她试探性地接近法师那法力强大的地穴入口,并将受到攻击——可实际上什么也没有,没有被诅咒的雕像向她发射光线,也没有亡灵士兵在入口巡逻。她长驱直入,轻取珠宝,然后你赢了,然后游戏结束。 嗯,这真没劲。 -这个地穴需要一些守卫来和我们的英雄纠缠。首先,我们希望一个重生的骷髅兵让它在门口来回巡逻。我想你已经猜到了程序的框架,要让这家伙来回巡逻,代码大致如下: +这个地穴需要一些守卫来绊住我们的英雄。首先,我们希望让一个复活的骷髅兵在门口来回巡逻。我想你已经猜到该怎么写代码了,你可以这样要让它来回巡逻: > 注解 -> 假如法师之王希望有更机智的表现,那么他需要复活一些仍有心智的家伙们 +> 假如法师之王希望仆从们有更机智的表现,那么他需要复活一些聪明的家伙们 ```c++ while (true) @@ -34,7 +34,7 @@ while (true) } ``` -当然这代码的问题是,怪物虽然来回走着,但玩家却看不到它。程序被一个死循环锁住,这显然是个很差劲的游戏体验。我们所希望的是骷髅兵每一帧走一步,以保证在骷髅守卫巡逻时.游戏能持续地进行渲染并对玩家的输入做出反应。如: +此代码的问题在于,虽然怪物来回走着但玩家却看不到它。程序被一个死循环锁住,这显然会带来很差劲的游戏体验。我们所希望的是骷髅兵每一帧走一步,以保证在骷髅守卫巡逻时.游戏能持续地进行渲染并对玩家的输入做出反应。如: > 注解 @@ -65,11 +65,11 @@ while (true) } ``` -我之所以在此写出前后两个版本,是为了告诉读者代码是如何变复杂的。向左右巡逻本是两个相互独立的循环,无疑它依赖于循环的执行来保持对骷髅兵巡逻方向的跟踪。为达到逐帧处理的目的,我们必须逐帧跳出游戏循环并随后(在下一帧时)返回循环内以继续,在此必须借助变量`patrollingLeft`以在循环内外维持对方向的跟踪。 +我之所以列出前后两个版本,是为了告诉读者代码是如何变复杂的。向左,右巡逻本是两个相互独立的循环,骷髅依赖于循环的执行来保持对自己巡逻方向的跟踪。为达到逐帧处理的目的,我们必须逐帧跳出游戏循环并随后(在下一帧时)返回循环内以继续,在此必须借助变量`patrollingLeft`以在循环内外维持对其方向的跟踪。 -但这至少奏效,所以我们先继续。一堆无脑的骨头可不会对你的女武神造成什么威胁,所以接下来我们为它加入一些魔法状态,这将是它能频繁地够向我们的女武神释放闪电和火光,让她措手不及。 +但这至少奏效,我们接着前进。一堆无脑的骨头可不会对你的女武神造成什么威胁,于是接下来我们为它加入一些魔法状态,这将使它能频繁地向我们的女武神释放闪电和火光,让她措手不及。 -时刻记得我们的风格——“用最简单的思路写代码”,于是我们这么写: +时刻记得我们的风格——“最简单地写代码”,于是我们这么写: ```c++ // Skeleton variables... @@ -99,42 +99,42 @@ while (true) } ``` -你会发现这代码的可维护性不高。我们保持了一堆其值不断增长的变量,并不可避免地将所有代码都塞进游戏循环里,每段代码处理一个游戏中特殊的实体。为解决这些问题并让所有实体同时运转,我们把它们给糊成一团了。 +你会发现这代码的可维护性不高。我们维护着一堆其值不断增长的变量,并不可避免地将所有代码都塞进游戏循环里,每段代码处理一个游戏中特殊的实体。为达到让所有实体同时运转的目的,我们把它们给糊成一团了。 > 注解 -> 一旦当你的构架可以确切地用“糊作一团”来形容,那你可遇到麻烦了。 +> 一旦当你的代码构架可以确切地用“糊作一团”来形容,那你可遇到麻烦了。 -你可能对我们将用使用来解决上述问题的设计模式有所体会了:游戏中的每个实体必须封装其自身的行为。这将使游戏循环保持整洁并便于往循环中增加或移除实体。 +你可能猜到我们所要运用的设计模式该干些什么了:它要为游戏中的每个实体封装其自身的行为。这将使游戏循环保持整洁并便于往循环中增加或移除实体。 -为了做到这一点,我们需要一个抽象层,为此定义一个 update()的抽象方法。游戏循环维护对相集合,但它并不知道这些对象的具体类型。它所知道只是它们都会被更新。这将每个对象的行为从游戏循环以及其他对象那里分离了出来。 +为了做到这一点,我们需要一个抽象层,为此定义一个 update()的抽象方法。游戏循环维护对象集合,但它并不关心这些对象的具体类型。它只是更新它们。这将每个对象的行为从游戏循环以及其他对象那里分离了出来。 -每一帧,游戏循环遍历游戏集合并调用它们的update()。这在每一帧都给于每个对象一次更新自己行为的机会。通过逐帧调用update方法,这些对象的表现得到同步。 +每一帧,游戏循环遍历游戏对象集合并调用它们的update()。这在每帧都给予每个对象一次更新自己行为的机会。通过逐帧调用update方法,这些对象的表现得到同步。 > 注解 > 有些爱挑刺的人会说,它们并不是真正意义上的行为同步,因为一个对象更新时其他对象都不在更新——让我们后面再来深入这个问题。 -游戏循环保持一个动态的对象集合,故向关卡里添加或移除对象是方便的——只要往集合里增加或移除就好。问题已经解决,我们甚至可以将关卡文件用某种文件格式存储,以供我们的关卡设计师们使用。 +游戏循环维护一个动态对象集合,这使得向关卡里添加或移除对象十分便捷——只要往集合里增加或移除就好。问题已解决,我们甚至可以将关卡文件用某种文件格式存储,以供我们的关卡设计师们使用。 # 更新方法模式 -游戏世界维护一个对象集合。每个对象实现一个更新方法来在每一帧模拟自己的行为。而游戏循环在每一帧对集合中所有的对象调用其更新方法以实现同步的游戏世界更新。 +游戏世界维护一个对象集合。每个对象实现一个更新方法来在每帧模拟自己的行为。而游戏循环在每帧对集合中所有的对象调用其更新方法以实现同步的游戏世界更新。 # 使用情境 -假如把游戏循环比作有史以来最好的东西,那么更新方法模式就是让它锦上添花。许多游戏样本都通过这样或那样的形式来使用这一设计模式,以构造出许多鲜活的游戏实体来与玩家进行交互。像游戏里的太空战士,龙,火星人,幽灵或者运动员们,他们正适合使用这一设计模式。 +假如把游戏循环比作有史以来最好的东西,那么更新方法模式就会让它锦上添花。许多游戏都通过这样或那样的形式来使用这一设计模式,以构造出许多鲜活的游戏实体来与玩家进行交互。像游戏里的太空战士,龙,火星人,幽灵或者运动员们,他们正适合使用这一设计模式。 然而,假如这个游戏更加抽象,那些移动的对象并不像是生物而更像是西洋棋子,那么这一模式就不那么适用了。在一个类似西洋棋的游戏里,你并不需要同时模拟所有对象,而且你很可能也没必要让棋子们逐帧地更新自身。 > 注解 -> 或许你无须逐帧更新它们的行为,但即便是在棋类游戏中,你可能也需要逐帧更新它们的动画。这一设计模式同样可以帮到你。 +> 或许你无须逐帧更新它们的行为,但即便是在棋类游戏中,你也很可能需要逐帧更新它们的动画。这一设计模式同样可以帮到你。 更新方法模式在如下情境最为适用: - 你的游戏中含有一系列对象或系统需要同步地运转。 - 各个对象之间的行为几乎是相互独立的。 -- 对象需要随时间进行模拟。 +- 对象的行为与时间相关。 # 使用须知 @@ -144,11 +144,11 @@ while (true) 比较先前的两个代码块,第二个显得更加复杂。二者都只是让骷髅守卫来回行走,但第二个代码块将控制权分派给了游戏循环的每一帧。 -这一变化几乎在处理用户输入,渲染以及其它游戏循环所关心的事情时是必不可少的,所以第一个例子并不实用。当它的价值在于让我们牢记将你的表现性代码进行如此的分割将面临着。 +这一变化几乎在处理用户输入,渲染以及其它游戏循环所关心的事情时是必不可少的,所以第一个例子并不实用。例一的价值在于让我们牢记,这样处理你对象的表现,你将面临着复杂而巨大的开销。 > 注解 -> 我所说“几乎”,是因为有时你也可以兼得鱼与熊掌。你可以直接为你的对象行为编码而不使这些函数返回,同时让这样一系列的对象与游戏循环保持同步运转。 +> 我所说“几乎”,是因为有时你也可以兼得鱼与熊掌。你可以直接为你的对象行为编码而不让这些函数返回,同时使这样一系列的对象与游戏循环保持同步运转。 > 要想实现这一点,你就必须使用多线程来让这些对象同时运转。假如一个对象可以在处理时中途暂停并继续,你可以用更强制的方式来执行而不必完全让函数结束返回。 From 0b115d7607bf73c45a580220aedf5cc4051669a1 Mon Sep 17 00:00:00 2001 From: kislyl <1131985199@qq.com> Date: Mon, 1 Sep 2014 14:00:48 +0800 Subject: [PATCH 026/123] Update 03.3-Update Method.md --- 03.3-Update Method.md | 30 +++++++++++++----------------- 1 file changed, 13 insertions(+), 17 deletions(-) diff --git a/03.3-Update Method.md b/03.3-Update Method.md index 7d15efe..96650ca 100644 --- a/03.3-Update Method.md +++ b/03.3-Update Method.md @@ -156,25 +156,25 @@ while (true) > Bytecode设计模式是在应用程序层创建多线程的另一种选择。 -## 你需要在离开每帧前存储游戏状态以便下一帧继续 +## 你需要在每帧结束前存储游戏状态以便下一帧继续 -在第一段示例代码中,我们并无任何指明守卫移动方向的变量。它是完全取决于当前执行的是哪一段代码。 +在第一段示例代码中,我们并无任何指明守卫移动方向的变量。方向完全取决于当前执行的是哪一段代码。 当我们将其改造为逐帧更新的形式时,我们需要创建一个patrollingLeft变量来跟踪这个行走方向。当我们脱离内部代码,我们就无法获知行走的朝向,所以说我们需要存储足够的帧信息以便下一帧能够继续执行。 -State设计模式在这里通常能帮上忙,因为状态机(正如其名)存储了那些能够让你在下一帧继续的游戏信息。 +State设计模式在这里通常能帮上忙,因为状态机(正如其名)存储了那些能够让你在下一帧继续处理的游戏信息。 -## 对象全部都在每一帧进行模拟,但并非真正同步 +## 所有对象都在每帧进行模拟,但并非真正同步 -在本设计模式中,游戏循环在每一帧遍历对象集并逐个更新对象。在`update()`的调用中,多数对象能够访问到游戏世界的其他部分,包括那些正在被更新的其他对象。这意味着,游戏循环遍历更新对象的顺序意义重大。 +在本设计模式中,游戏循环在每帧遍历对象集并逐个更新对象。在`update()`的调用中,多数对象能够访问到游戏世界的其他部分,包括那些正在被更新的其他对象。这意味着,游戏循环遍历更新对象的顺序意义重大。 -假如A对象位于对象列表中B对象的前面,那么当A更新时,它将会看到B停留在在前一帧的状态。但当B更新时,它看到的却是A在这一帧的新状态,因为A在这一帧已经被更新了。尽管从玩家的视角来看,所有的事物都同时在运转,但游戏的核心仍然是回合制的——只不过这时两回合之间的间隔只有一帧的时间。 +假如A对象在对象列表中位于B对象的前面,那么当A更新时,它将会看到B停留在前一帧的状态。但当B更新时,它看到的却是A在这一帧的新状态,因为A在这一帧已经被更新了。尽管从玩家的视角来看,所有的事物都同时在运转,但游戏的核心仍然是回合制的——只不过这时两回合之间的间隔只有一帧的时间。 > 注解 -> 假如由于某些原因你不希望自己的代码如此有序,你可能会需要Double Buffer模式的帮助。这一模式将使得A,B的更新顺序不再重要,因为它们都能够获取到前一帧的状态。 +> 假如由于某些原因你希望回避这一有序性,你可能会需要Double Buffer模式的帮助。这一模式将使得A,B的更新顺序不再重要,因为它们都能够获取到前一帧的状态。 -考虑到游戏逻辑,更新分先后顺序这是件好事。平行地更新所有对象会将你导向语义死角,设想西洋棋盘上黑白棋子同时移动,它们都想往一个当前空白的位置移动,这该怎么办? +考虑到游戏逻辑,更新分先后顺序这是件好事。平行地更新所有对象会将你带向语义死角,设想西洋棋盘上黑白棋子同时移动,它们都想往一个当前空白的位置移动,这该怎么办? 序列化地更新解决了这一问题——每次更新增量式地改变游戏世界,从一个有效的状态到下一个,不会产生对象状态的歧义而需要去进行调解。 @@ -198,7 +198,7 @@ for (int i = 0; i < numObjectsThisTurn; i++) } ``` -上例中,objects_是游戏中可更新对象的数组而numObjects_是它的长度。当增加新的对象时,这个长度变量增长。我们将长度在循环的一开始缓存在numObjectsThisTurn变量中,从而使这一帧的循环迭代在遍历到任何新增对象之前停止。 +上例中,objects_是游戏中可更新对象的数组而numObjects_是它的长度。当增加新的对象时,这个长度变量增长。我们在循环的一开始将长度缓存在numObjectsThisTurn变量中,从而使这一帧的循环迭代在遍历到任何新增对象之前停止。 一个令人担忧的问题是在迭代时移除对象。你希望让一只肮脏的野兽从游戏中消失,而这时候需要从对象列表中移除它。假如在对象表中,它碰巧位于你当前所更新的对象之前,你可以投机地跳过它。 @@ -219,17 +219,13 @@ for (int i = 0; i < numObjects_; i++) > 一个简便的解决方法是当你更新时从表的末尾开始遍历。此方法下移除对象,只会让已经更新的物品发生移动。 -> 另一个方法是在移除对象时多加小心,并在更新任何计数器时把被移除的对象也算在内。还有一个办法是将移除操作推迟到本次循环遍历结束之后。将要被移除的对象标记为“死亡”,但并不从列表中移除它。在更新期间,确保跳过那些被标记死亡的对象, - -> 接着等到遍历更新结束,再次遍历列表来移除这些“尸体”。 +另一方法是在移除对象时多加小心,并在更新任何计数器时把被移除的对象也算在内。还有一个办法是将移除操作推迟到本次循环遍历结束之后。将要被移除的对象标记为“死亡”,但并不从列表中移除它。在更新期间,确保跳过那些被标记死亡的对象,接着等到遍历更新结束,再次遍历列表来移除这些“尸体”。 > 假如在更新循环中你加入了多线程,采用延迟修改的方法较好,因为这可以避免更新期间线程同步带来的巨大开销。 # 例子 -这一模式十分浅显,从例子里我们就能看出其要点。这并不意味着它没用,而正因为它的简单才使得它好用——它是一个简明而不加任何修饰的解决方案。 - -但为了更具体地阐明此方法,我们还是来看一个基本的实现例子。让我们从这个代表着骷髅和雕像的Entity类来开始吧: +这一模式十分浅显,从例子里我们就能看出其要点。这并不意味着它没用,而正因为它的简单才使得它好用——它是一个简明而不加任何修饰的解决方案。。但为了更具体地阐明此方法,我们还是来看一个基本的实现例子。让我们从这个代表着骷髅和雕像的Entity类来开始吧: ```c++ class Entity @@ -306,11 +302,11 @@ void World::gameLoop() 肯定有些读者现在很不舒服,因为我在这里对主要的Entity类采用了继承的方式来定义不同的行为。假如你碰巧遇到的问题,我将会提供一些文章。 -随着游戏产业从最初6502汇编语言和VBLANK(老式的阴极射线管)显示器的海洋到OOP(面向对象)上岸,开发者们陷入了一场软件架构的狂热,其中之一就是对继承的使用。高耸而错综复杂的类继承高塔被建立起来,遮天盖地。 +随着游戏产业从最初6502汇编语言和VBLANK(老式的阴极射线管)显示器的海洋到OOP(面向对象)上岸,开发者们陷入了一场软件架构的狂热,其中之一就是对继承的使用。高耸而错综复杂的类继承大厦被建立起来,遮天盖地。 而事实证明继承真是个恐怖的想法,没人能够在不拆解的情况下维护一个庞大的继承关系,甚至连GoF(最杰出的的4个软件设计师,合著有《设计模式:可复用面向对象软件的基础》一书)都在1994年发现了这一点,并写道: -> Favor ‘object composition’ over ‘class inheritance’.(组合对象,而不是继承类) +> Favor ‘object composition’ over ‘class inheritance’.(组合对象,而不是类继承) > 注解 From 5eabd527833bdbb1d6ce2824d5f60b9bcaf44510 Mon Sep 17 00:00:00 2001 From: kislyl <1131985199@qq.com> Date: Tue, 2 Sep 2014 11:55:43 +0800 Subject: [PATCH 027/123] Update 03.3-Update Method.md --- 03.3-Update Method.md | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/03.3-Update Method.md b/03.3-Update Method.md index 96650ca..983a8bf 100644 --- a/03.3-Update Method.md +++ b/03.3-Update Method.md @@ -300,7 +300,7 @@ void World::gameLoop() ## 子类化的实体?! -肯定有些读者现在很不舒服,因为我在这里对主要的Entity类采用了继承的方式来定义不同的行为。假如你碰巧遇到的问题,我将会提供一些文章。 +肯定有些读者现在很不舒服,因为我在这里对主要的Entity类采用了继承的方式来定义不同的行为。假如你碰巧遇到了问题,我将会提供一些文章。 随着游戏产业从最初6502汇编语言和VBLANK(老式的阴极射线管)显示器的海洋到OOP(面向对象)上岸,开发者们陷入了一场软件架构的狂热,其中之一就是对继承的使用。高耸而错综复杂的类继承大厦被建立起来,遮天盖地。 @@ -310,9 +310,9 @@ void World::gameLoop() > 注解 -> 在你我之间,我想子类继承远的问题离我们甚远。我几乎避开了它,但执着于避免使用继承就和执着于使用它一样糟。你完全可以适度使用它而不必完全禁用。 +> 在你我之间,我想子类继承的问题离我们甚远。我几乎避开了它,但执着于避免使用继承就和执着于使用它一样糟。你完全可以适度使用它而不必完全禁用。 -当游戏产业中的人们纷纷意识到类继承糟糕的一面时,Component设计模式应运而生。借此,update()方法能够置于实体的组件之中而非依附Entity本身。这将帮助你避为了定义和复用不同表现的实体类而构建出复杂的实体类继承关系。取而代之的是用各种组件来组装这些子类。 +当游戏产业中的人们纷纷意识到类继承糟糕的一面时,Component设计模式应运而生。借此,update()方法能够置于实体的组件之中而非依附Entity本身。这将帮助你避免为了定义和复用不同表现的实体类而构建出复杂的实体类继承关系。取而代之的是用各种组件来组装这些子类。 假如我在实际开发一款游戏,我也会这么做。但这一章并不讨论组件模式而是update()方法,我尽可能简洁并快速地表达出它们,而将这个方法直接放在Entity类里并进行一两个子类的继承就是最快的方法。 @@ -406,7 +406,7 @@ private: > 注解 -> Game Loop 这一章详细地讲述了定时和变时步长的优劣。 +> Game Loop 这一章详述了定时和变时步长的优劣。 这意味着每次`update()`的调用需要知道虚拟时钟所流逝的时间,于是你常会看到流逝的时间会被作为参数传入。例如,我们可以像下面那样让骷髅卫兵处理一个变时步长更新: @@ -437,11 +437,11 @@ void Skeleton::update(double elapsed) # 设计的一些考虑 -这样一个简单的设计模式,并无太多可选项。但它还是有两个按钮可供选择~ +这样一个简单的设计模式,并无太多可选项。但它也仍有选择的余地~ ## update方法依存于何类中? -你所要做的最显著而又最重要的决定就是该把update()放哪。 +你显然必须决定好该把update()放哪。 1.实体类(父类)中 @@ -480,18 +480,18 @@ void Entity::update() > 注解 -> 除了浪费CPU循环来检查对象是否被激活并跳过它,空指针问题还可能搞坏你的缓存区。CPU通过加载读取RAM中的数据到更快的单片缓存来加载内存,这是在投机地假设在一段时间内你读取的内存是连续的情况下进行的。当你跳过一个对象时,你可能会跳过缓存区(存储当前这个对象)的末尾,而让CPU再去寻址到另一块内存。 +> 除了浪费CPU循环来检查对象是否被激活并跳过它的问题,空指针问题还可能搞坏你的缓存区。CPU通过加载读取RAM中的数据到更快的单片缓存来加载内存,这是基于投机地假设在一段时间内你读取的内存是连续的情况下进行的。当你跳过一个对象时,你可能会跳过缓存区(存储当前这个对象)的末尾,而让CPU再去另一块内存寻址。 -- 假如你维护一个独立的存储现存活跃对象的集合: - - 你使用额外的内存来维护第二个集合。因为往往你需要一个主集合来维护所有的对象,以便在需要所有对象时用到它。这么说来,这个额外的集合在技术上是多于的。当游戏对速度的要求比对内存的要求高时(往往是这样的),这样的取舍还是值得的。 +- 假如你对活跃对象单独用一个集合来维护: + - 你将使用额外的内存来维护这第二个集合。因为往往你需要一个主集合来维护所有的对象,以便在需要所有对象能够访问它们全部。这么说来,这额外的集合在技术上是多余的。当游戏对速度的要求比对内存的要求高时(往往是这样的),这样的取舍还是值得的。 - 另一种缓和此问题的办法是,同样维护两个集合,但另一个只维护那些未被激活的对象,而不是维护所有对象。 - - 你必须保持两个集合同步。当对象被创建或者销毁(并非临时禁用而是销毁)时,你必须记住同时修改主集合和活跃对象集合。 + - 你必须保持两个集合同步。当对象被创建或者销毁(并非临时禁用而是永久销毁)时,你必须记住同时修改主集合和活跃对象集合。 这里该使用什么方法,取决于你对非激活对象数目的预估。其数目越多,就越需要创建一个独立的集合来在存储他们以便在游戏循环时避免处理这些非激活对象。 # 参考 -- 这一模式加上[Game Loop](./03.2-Game Loop.md)和[Component](./05.1-Component.md)模式,组成了多数游戏引擎的核心部分。 -- 当你开始考虑实体集合或循环中组件在更新时的缓存效能,[Data Locality模式](./06.1-Data Locality.md)将会帮助它们运转得更快。 -- [Unity](http://unity3d.com/)的引擎框架在许多类模块中使用了这一模式,包括[MonoBehaviour](http://docs.unity3d.com/Documentation/ScriptReference/MonoBehaviour.Update.html)类。 +- 这一模式与[Game Loop](./03.2-Game Loop.md)和[Component](./05.1-Component.md)模式共同构成了多数游戏引擎的核心部分。 +- 当你开始考虑实体集合或循环中组件在更新时的缓存效能,并希望它们更快地运转,[Data Locality模式](./06.1-Data Locality.md)将会有所帮助。 +- [Unity](http://unity3d.com/)的引擎框架在许多类模块中使用了本模式,包括[MonoBehaviour](http://docs.unity3d.com/Documentation/ScriptReference/MonoBehaviour.Update.html)类。 - 微软的[XNA](http://creators.xna.com/en-US/)平台在Game和GameComponent类中均使用了这一模式。 - [Quintus](http://html5quintus.com/)的基于JavaScript的游戏引擎在其主Sprite类中使用了这一模式。 From c95a9dc00d6102467119ed7b7817c404667f16c0 Mon Sep 17 00:00:00 2001 From: hongxiaoqiang Date: Sat, 13 Sep 2014 17:39:21 +0800 Subject: [PATCH 028/123] =?UTF-8?q?=E6=B2=99=E7=9B=92=E6=A8=A1=E5=BC=8F?= =?UTF-8?q?=E6=9A=82=E6=97=B6=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 04.2-Subclass Sandbox.md | 65 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 64 insertions(+), 1 deletion(-) diff --git a/04.2-Subclass Sandbox.md b/04.2-Subclass Sandbox.md index 127a553..bccb339 100644 --- a/04.2-Subclass Sandbox.md +++ b/04.2-Subclass Sandbox.md @@ -1,2 +1,65 @@ -Subclass Sandbox +子类沙盒 ============================ + +#目的 +使用一个基类提供的操作集合进而在子类中定义行为 + +#动机 +每个小孩都有一个成为超级英雄的梦想,但是很不幸,宇宙射线在地球上供应不足。游戏能够让你无限逼真的模拟成为一个超级英雄。因为我们得游戏设计师从来不会说,“不”, 我们的超级英雄游戏没有数百也起码有数十种不同种类英雄需要的超级力量。 + +我们的计划是我们将有一个Superpower基类,然后,我们将有一个实现各个超级力量的继承类。我们将在团队中的程序员中分摊设计文档并进行编码。当我们完成的时候,我们将有一百个超级力量的类。 + +> 注解 + +> 当你发现自己像这个例子一样有大量的子类的时候,这意味着一种数据驱动的方法可能更适合。试着找到一种定义数据的行为的方法,而不是用大量的代码来定义不同的力量。 + +> 像模式Type Object, Bytecode 和 Interpreter 或许能有所帮助。 + +我们想让我们的玩家沉寖在一个复杂多变的世界里。无论他们小时候梦想过的什么力量,在我们的游戏我们都需要。这就意味着这些超级力量子类能够几乎做任何事情:播放音效,产生视觉效果,与AI交互,创建和销毁其他游戏实体以及产生物理效果。他们可以使用任何的代码库。 + +让我们释放我们的队伍,让他们写超级力量的类的话,会发生什么呢? + +- 会充满大量的冗余代码。由于不同的力量将有所不同,我们可以预料到大量的重复。他们中的许多将以同样的方式来产生视觉效果和播放音效。当你完成冰冻射线,热射线,第戎芥末射线这些射线时,会发现他们极其相似。如果人们在实现它们时没有整合起来,那么将会有大量的冗余代码和付出。 + +- 游戏引擎的每个部分将与这些类产生耦合。在没有更好方法的前提下,人们将写出调用子系统的代码,这些子系统从来不打算与超级类直接绑定。如果我们的渲染器被组织成一些漂亮优雅的分层,只有其中的一层能够被图形引擎之外的代码使用,我们可以打赌最后将留下侵入到他们所有层的超级力量代码。 + +- 当这些外部系统需要改变的时候,任意的一些超级力量代码将有很大的概率被破坏。一旦我们的不同种类的超级力量类与游戏引擎的各式各样的部分产生耦合的时候,必然发生的是改变这些系统将影响力量类。这将是很无趣的,因为你的图形,音效,UI程序员可能并不想非得是游戏程序员。 + +- 定义所有超级力量遵守的约束条件将是困难的。例如说我们想保证所有我们超级力量播放的音效得到合理的排队和优先级处理。如果我们一百个类都自己直接地条用音效引擎的话,这将是很难实现的。 + +我们需要的是给每个实现一个超级力量的游戏程序员一系列可用的基本元。你想要你的力量播放音效吗?这里提供你的playSound()函数。你想要粒子效果吗?这里有spawnParticles()。我们将保证这些操作覆盖你所有的需求,这样一来你就不用#include任意的头文件以及探入代码库的余下部分。 + +我们通过把这些操作设置成Superpower基类的保护方法来实现这种效果。把他们放在基类就能让每一个力量子类直接简单地访问方法。把他们设置为保护状态(并且可能非虚拟的)通讯,这样他们就针对性地被子类调用。 + +一旦我们有了这些可玩的玩具,我们需要一个地方来使用它们。因此,我们将定义一个沙盒方法,这是一个子类必须实现的抽象保护方法。在有了这些之后,为了实现一种新的力量,你: + +1. 创建一个继承自Superpower的新类。 +2. 覆盖沙盒函数activate()。 +3. 通过调用Superpower提供的保护函数来实现沙盒函数的函数体。 + +我们现在能够通过使这些操作尽可能的高层来解决代码冗余的问题。当我们发现在大量子类中存在重复代码,我们可以把它向上移到Superpower中作为一个可用的新操作。 + +我们已经通过把耦合限制在一个地方来解决耦合问题。Superpower最终将与不同的游戏系统耦合,但是我们的一百个子类不会。反而,他们仅仅与基类耦合。当这些游戏系统中的一个变化时,对Superpower进行修改可能是必须的,但是这些大量的子类不应被动。 + +这个设计模式会催生一种浅而宽的类层次架构。你的继承链不会深,但是会有大量的类挂在Superpower上。通过生成一个有大量直接子类的单个类,我们在代码库里就有只有一个点的杠杆。我们在Superpower中所付出的时间和关爱都将对游戏中大量的类带来益处。 + +> 注解 + +> 近来,你发现人们对面向对象语言的继承进行批判。继承是有问题的 -- 在代码库中没有比基类与子类之间更深的耦合了 -- 但是我发现宽的继承树比深的要表现的更好。 + +#模式 +一个__基类__定义了一个抽象的__沙盒方法__和一些__提供的操作__。通过设置他们为保护状态能够明确他们是被子类使用。每个继承的__沙盒子类__通过提供的操作来实现沙盒函数。 + +#什么时候使用 +沙盒模式是一种运用在大量代码库里甚至游戏之外的非常简单通用的模式。如果你有一个非虚拟的保护函数,那么你很有可能正在使用类似该模式的东西。沙盒模式在以下情况比较适用: + +- 你有一个带有大量子类的基类。 + +- 基类能够提供一个子类需要执行的所有操作。 + +- 在子类之间有重叠的代码,你想让他们之间更容易地分享代码。 + +- 你想使这些继承类以及程序的其他代码之间的耦合最小化。 + +#记住 +“继承”一词最近在一些程序圈子里被视为诟病,其中一个原因是基类会越来越增长。 From 379aa01b88010ae8116779390803558cdf02c9a0 Mon Sep 17 00:00:00 2001 From: ChildhoodAndy Date: Tue, 16 Sep 2014 14:17:19 +0800 Subject: [PATCH 029/123] introduction chapter correction --- 01-Introduction.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/01-Introduction.md b/01-Introduction.md index 866fe33..3e74e5e 100644 --- a/01-Introduction.md +++ b/01-Introduction.md @@ -23,11 +23,11 @@ > 注解 -> 我的许多夏天都是在路易斯安那州南部的沼泽中捕蛇和乌龟来渡过的。如果户外不是这样酷热,很有可能,这将是一个爬虫学的书,而不是编程书。 +> 我的许多夏天都是在路易斯安那州南部的沼泽中捕蛇和乌龟来渡过的。如果户外不是这样酷热,很有可能,这将是一本爬虫学的书,而不是编程书。 起初,让一些东西显示在屏幕上对我来说是个挑战。后来,我想搞清楚如何写出更大点的程序。除了阅读一些关于“如何用C++编程”的书籍,我开始试图寻找一些关于如何组织程序的书籍。 -又过了几年,一个朋友给了我一本书:《设计模式:可复用面向对象软件的基础》。终于来了!这就是我从青少年开始便一直寻找的那本书!在一次会面中,我从头到尾读了一遍。我之前仍然在为我自己写的程序挣扎犯愁,但是看到别人也如此挣扎并提出了解决方案,我便解脱了。我感觉我终于有了一些武器用来挥舞而不再是赤手空拳了。 +又过了几年,一个朋友给了我一本书:《设计模式:可复用面向对象软件的基础》。终于来了!这就是我从青少年开始便一直寻找的那本书!在一次与他的会面中,我从头到尾读了一遍。我之前仍然在为我自己写的程序挣扎犯愁,但是看到别人也如此挣扎并提出了解决方案,我便解脱了。我感觉我终于有了一些武器用来挥舞而不再是赤手空拳了。 > 注解 @@ -39,7 +39,7 @@ 但这种优秀代码的结构往往是事后想出来的。他们太专注于功能以至于忽视了组织架构。模块之间耦合很严重。新功能只要哪里能够适用就被放到代码库里。我的幻想破灭了,在我看来,就像很多程序员,从来没有研究过_设计模式_,从来不了解[单例模式](02.5-Singleton.md)一样。 -当然,情况不是真的很糟糕。我已经想象游戏程序员坐在到处是白板的象牙塔中,从容地讨论代码架构细节数周直到结束。现实的情况是,我一直在寻找的代码正是赶着最后期限的人写出来的。他们竭尽了全力,而且,我逐渐意识到,他们最好的努力结果往往是很不错的。我花了游戏代码上的时间越长,我发现隐藏在地表的宝藏越多。 +当然,情况不是真的很糟糕。我已经想象游戏程序员坐在到处是白板的象牙塔中,从容地讨论代码架构细节数周直到结束。现实的情况是,我一直在寻找的代码正是赶着最后期限的人写出来的。他们竭尽了全力,而且,我逐渐意识到,他们最好的努力结果往往是很不错的。我花在游戏代码上的时间越长,我发现隐藏在表面的宝藏越多。 不幸的是,“隐藏”却通常很好的描述了这种情况。在代码中埋藏着宝藏,但许多人却只是从上面走过。我看到同事在努力重塑良好的解决方案时,他们需要的例子正是他们脚下的那些代码库。 From 9d3bc578b6655cd3e250bca91fc5b756dc9d6868 Mon Sep 17 00:00:00 2001 From: "Henry.T" Date: Thu, 18 Sep 2014 01:09:04 +0800 Subject: [PATCH 030/123] =?UTF-8?q?04-Behavioral=20Patterns=20=E7=BF=BB?= =?UTF-8?q?=E8=AF=91=E5=AE=8C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 04-Behavioral Patterns.md | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/04-Behavioral Patterns.md b/04-Behavioral Patterns.md index 5a7c680..0aaf92b 100644 --- a/04-Behavioral Patterns.md +++ b/04-Behavioral Patterns.md @@ -1,2 +1,20 @@ -Behavioral Patterns +行为模式 ============================ + +搭好了游戏框架,并加入各种角色和物件之后,剩下的事就是让场景活动起来。为此你需要定义行为——让游戏中的每个实体知道该做些什么。 + +当然了,任何代码都是行为,所有的软件都在定义行为,但游戏中的行为如呼吸一样必要。一个文本编辑软件有各种各样的功能,但比起一般RPG游戏中的各种人物、物品和任务来说,就显得无趣多了。 + +本章中的模式,可以帮助你快速提炼并定义大量可维护的行为。[类型对象](04.3-Type Object.md)无需定义实际的类,就可以创建各种类型的行为。[子类沙箱](04.2-Subclass Sandbox.md)提供了一批安全的原子方法去定义各种行为。最高级的选择是[字节码](04.1-Bytecode.md),它可以将行为从代码完全转移到数据中去。 + +## 模式 +- [字节码](04.1-Bytecode.md) +- [子类沙箱](04.2-Subclass Sandbox.md) +- [类型对象](04.3-Type Object.md) + +=============================== +[上一节](03.3-Update Method.md) + +[目录](README.md#目录) + +[下一节](04.1-Bytecode.md) From 904b1e25ecf68dd109cc223c7ebaa23bfb91a109 Mon Sep 17 00:00:00 2001 From: "Henry.T" Date: Thu, 18 Sep 2014 01:24:00 +0800 Subject: [PATCH 031/123] =?UTF-8?q?4.1=E5=AD=97=E8=8A=82=E7=A0=81=20?= =?UTF-8?q?=E9=85=8D=E5=9B=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- res/bytecode-ast.png | Bin 0 -> 109321 bytes res/bytecode-code.png | Bin 0 -> 57290 bytes res/bytecode-literal.png | Bin 0 -> 62021 bytes res/bytecode-numbers.png | Bin 0 -> 38720 bytes res/bytecode-stack-1.png | Bin 0 -> 38084 bytes res/bytecode-stack-2.png | Bin 0 -> 36770 bytes res/bytecode-stack-3.png | Bin 0 -> 39634 bytes res/bytecode-ui.png | Bin 0 -> 178987 bytes 8 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 res/bytecode-ast.png create mode 100644 res/bytecode-code.png create mode 100644 res/bytecode-literal.png create mode 100644 res/bytecode-numbers.png create mode 100644 res/bytecode-stack-1.png create mode 100644 res/bytecode-stack-2.png create mode 100644 res/bytecode-stack-3.png create mode 100644 res/bytecode-ui.png diff --git a/res/bytecode-ast.png b/res/bytecode-ast.png new file mode 100644 index 0000000000000000000000000000000000000000..65b32c08d93cc36c3ea89e22ca86a865dd93ef16 GIT binary patch literal 109321 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 Dv-T={ literal 0 HcmV?d00001 diff --git a/res/bytecode-code.png b/res/bytecode-code.png new file mode 100644 index 0000000000000000000000000000000000000000..f4a5bcee64c125f83c56c3495e2d8649a86959bc GIT binary patch literal 57290 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

pq2Li%p6b+N zlK*v}!r~tFN7|glS?Zq}GfnJKJ7L5i=)_m)EOIfB8j1;>3`zRRY7KZubR|Oli5^1?Fx% z_)`qM*&RS4QxjG^#IpKe=izfn>7{9(!$PHRBhES9Z~WUBPJeAo zjy|arIXo2^x_}3j#awZUOEOZ#KHE)hV-j)kArk0Iu;h{b8y&n!hdDodDE;kG_V!e_ z6MaPi+>$qyQHu23TtR9v`!n!UU;e<@I;0g^u612KHXwYObr<$4*uyoe;$F*B6uJ-0dY~_~rm_+kzc@Y@E;T>IL<`UeziwFfn zM@fWN?lrD=2HB}{Kh-f^S%j=rpAL`j`WWRnownl^Z+yGuHKcSO-_&CpJK*6v2j4GC zEXpB4vk@(B>Rj6?EGCZ)py-*@BT2Q6==2NATE|TssF`Q~a-PXh8xQu}aIVvD!C8V_ztEH;%&@P+jBlgTsbKHl8) zj`iOC8pOj@689swzbKtv*8N&pzqMdya4|}HSE@??K$}$l#P2sp#&|aRmYr$q!|a|? z_xd~sL5cPj42zB09(tNvbt-32RIPecsn*%Pm<}Tn_xpR6xolwaRF&#D`DbPQd+w`i zJfmSa%DPxu*lgxM;RAa4Dx&npNWY7$L_*AQE9O6^qzgr9s}`rqd_gwVl0@Ta63FFief>*v}Ic?a@vr1nI5y^PHQQC%P`p9p?@xZ2-`SIa@zj$-iBxwN8p_TKd)y3CRa0-;w-%W;U zBPlZ7VUeW}HIniKb|_virH)RK^TW3Jy0jkH;Y~_MYA`OrMGAcP1$W?7f)SF(nSZ~v z#~o0DkS}!(hh>NdJ6JK7He?k*RC@?f!U2K;xk?R`n7;xPYwEF-G%U3xY6 zy)$46ceMNZ`E?l|oE74z%1@?t!6!8=D_-jm$CTjQGbG5d62HbIwYEK7!<;BRX%escB#4&llgn@Pz3Q%|F)Xsb zNH?;#VkT=Pd@*kDMY5CgbbZM(%~g87@g&)lYyVCS+{Io?m(`0`10prMnsqqqW4BmU zn$5^v5Vw>sIoS>8Eb>s!1ee8#@Td5?SrN8QY^9#zxu+{U3oV`7R9(=tSojnN^227* zX6TK3Fn=R?ct%F!4~aS?0)dFNAaP9Q&r;T^Uo!E!iU4?@gqeX~*w`>?w?9%)m_#;~ zX!1^4q^rHt&%M`4U*%!&?&LREjy4lDc6s;8&i`cp=EQr{_Kq@rH24b^m3~d9UwbF< z@h>ku47rqD)JkjVKH(t*$6<4WHFTE0#QMtrS%b@eLf?^rSZ8v@hWxp$xmzZv4z zn@ToNi$NdidTf>27I_w?G~it&QYO%}Dm`g5y9kwkUpX)0>ZA~GXpIpFi5iJ-GdDT3 zj~e2Vs_v+tX~D!MS^T%kk9>im^F3D`>zDQfCb~ouZ+5R1Lu5><*vdcV20&`lj~&up zv8zA>tW;dxHO&6;$V`}YqlpTvn0%)1p?inN3Tpa_+snlM}4a$L> zR*k^WrG7>2VOs-*EJ)*3RgjVw#{zp5y0v%IuMu>=we!YSr0$z`d-!j6OG5RZ0PAzO z51f_fneaCzUdhg>R<_)WJUExL(+G0$oS`4<2N)>wAI(*JJ3i`hR<0l&bso8TWk?*m ztX8#i#5dM}OA1nm`Iz2tiLTuJilo2&kSX{Nuipjq(u0F`D-o=leW!nyu6viW_UbJ= zcW*~jM;)YzzUzvk0oZ%=JVg&PD~mYvHGCe&lPF|( zzO;m>dOzCNJ$HN9UF5y&FUF!9vpLCit1f0WY|(Gd%AB=E6tGi_WAvy~is=%j{$Sm; zMUAa8eZ1sHbnq}nl1QJ~V#Mc6sdZ6PwiiP zl52EN{kVJ6rQs1-{KK8OsTQp~|5HyMDXkl}iGvgao(rm#c~G`K*04h!%eoBCJ=Yhqz(WNdzcj zngiw^y_N6QXLvr5FE-@Hzfx{yhrg0Zcs9wqU0#>7KkP0%+YRozoP8tL^QLreVym8Eg&FF!!1SbwxV_Nn@l^Qxc-y3%uhu(HLYw(LnDFWI zo#6OBt>>WAt`9lmCUB-_;%9HuD4z{+=p+sil~&EA9LHXnpR$V?&DK`!WF=@dnO#lW z<7gZ^JMHjWmh-0yGH8jF4v|ETiihAenz>5D?`x9x&>Z$-r?AtSxhCzEn~>q#HE+^| zfRflN&;}PwdH(Iyjt=B4X*NViiCoC;u@m$? z#-1a&Vq;*F#q;xd;g>il#TRFTRB3&c))GH_P=Ent=#r65k^9IAj(YU-uc-J5vUabUV0D z7#T9Hhn_Rk+OoqEVturzQn`~Fy;HVzugA*}@TxUo$!5BhtS5AR(}p+h*JkK0LZeVRs~08HYEkBSR;I&Z$VA@r;~)uB zV2spdRMMNcKBW^I{SL6;Ku?m!WM6fSpYia@QrfGqttod{4PHI0yk2N6^4`y6uw}eW z)QYuDk{|Nf{O;~kGB}J|<%zS0Pn)o~W8yws%zCA~xbzE*5Y|p|;Gx_y1vwY@Gm-oy za&h$UbE|`#+Q#}MBS%V4nC@Gd`l`Ded&@i${xw%;#?)+I1DFeIN^Pg(8pGK{T_i9d z@9bmCM9HE0Lj*jQa%UB1o&hIr&z*ZTL<*x;a=wv(JqW+T{bSwQ7CM3Sn4W zYL7ucMqFVPJ*@#Z6h|vK|Iv%v%BM3{weeyb|Iz)&)`VUoDVZZ;sGe$<)cLS48F_-* zB+LuQ>PAa%taOdhQZ1_2xL1TGL{8Uuv{!4>13r^luE$W*ICMo9x2a9b>%&M(icHJ4 ziy^fZG2LYTja&VtdQ3?noZ#n;$d^Gqlsy0OKRwok;JBhn?=Q**c~VW~>Cy9(U#nL% ze)*+gR4wW_v|T3i*s!DycN$&umGBfdRQbCO>nSUiT94n$xyPBS zh2xdrQ)(;uIB+v0=U{Dv!wS33P-!f>!^A(I#4CL*ZYWu+mZ*ZaJE859@p$>E_nNWp@R?EnH6kTs_HKSy+HO?5o6Ew)3!q6e`2zeGR^7dN~%}2z-5A2A<8JaD}Zg=iglh>SB)c ze`L*=)^t85<2_9k#$9ObQ>RTEd`xgL_Y0 zEv6J^1PlH?$fo6c;q4;%Lr&M%oR6MGtT@*vHAwcs@0_=!WAIt@!=4E8axEtRpCebq z8K513l)hTraHLF;0}lfZRy$|z-BY57iCER@3}aRkh4+4MkDU4K-+x5LKi41_4XND{ z4P~PBf^c^7&Q-Uh?#H$iln)OgKMcM6EFb#r81(#kG>!1Edh=n`?DXIp&QvoH#$Uc_ z-7KE15WAFf&1jU-QR*@JwVCzUFXXy0pLH?UOyn1x|8-{Fu}`UJ`MEXv=SjR190V(n zbbP21wwS%}wI5pWhdd@MV9iLA>RwPaOC)VtWC&mF+67K$05TNMibaW4C>WqftWudB z?4EdGawDPpV6tFCIM|81e|fO}BGFJ6W3=(ru64sgEo4rkE9%`HpDSqPdP6%|!eym! zF6Xj%w}h*=!gf;A(yMF1;fN@3I($sYqpo!b?uU_#Zj>`Wq#3`~=8s53u4%o+HiwX| zkCN%^;b>XmWn+W_>EZHc4I6T>dc;e!^LHAtxj9Fj&u!-vHD-yu^!rue@A-=ppWO$S z&sUZoz9yWft1NZbT1o0xGrqSQH$EOi zOr{d|jO23^lu!i#?Z{rLBF(g$bLBYF)fu{ckMDIHM)7sj?JS0OrNg-+BcyY7gN|=d zyeqer8Jr{UUc%+16Z6~A7)YldO!DFxF;6uZ-^7u1t~qH<3D!^dt}e$?(77JPW{kYn zvJtYj!<_|lB|NxW>8aOw6-NOh$GcT<<=&`+sAV1K=X;O2XUlgr=*oXhmN?@EF$&1P z67ndub}UtL+$PuZbg{Jdp}g^Bh}`mJ9ZYA`7Fs=Q`P?PYK4~ZOlKv#p82Bqck?^YC zh60{@^R0Ziy6Xtp7x84r9+n#}I*G(2wl)rT<`O}e; zmRG12L4?K&AN2nKT|lD0nkO8)cJNVkLW`~T{s9y+Yzqn*YEucnF%LA-Px@vH{It5~ zk;oW`HE~hR^U=_p7bEtqt#`zbjgCvOes!x2-aGC(Sv9A_6uIHe`SW7DF!3B0YZnnz zNJ4d{uEUwWrMzE6pSJsR668HK`G4bWang~`Z+3M_CUV~tysz}PY_gKY?Tx2<$;tLE zLy+6(^t}4N9j*$u?xyP-Dq|9L1QiSiBf&_ocnp1X+I_X@FM~Doplh>k`QoyVZE9^@ zzjO~h0&J%W-1K@S_t(MqD2t zQ7G(%h{F1Cra+mjTakeWp?zdy-l8BIx7!khIBy|PAf3{>1eu75I~A3XW>Yq-F-Vzh z49tKm#ny$0yCL|Kat*pSobXCv4hh=A!~AECtBOsGlZ;Q?mIW>L0D1p-!W5moHHcfe0i31R0}p6p>RHt!%NuCZgx7CZ{i> zmcsK~W^a&Viqvo1!6bW@kX&~f8&=A#`J_IC+nh!qPB7rRn-MP;>k-2)CNTg(jRL{o znOEtr1@0Tj4s+G@)sO+JFc$ir+F!##gB( zwAdoLujJV^ERIyTfR0~~h?pQ*oK)m!@z*CgeHoX#%YSpSuOn_AZLj-e`LOuBr?ARM z(v+jf&;#dEZ*z9TB^9CCz01#iclqfd;bMF}s#ag}=eG~}ZBxm^ypiAlnCb%jH50(}ddO(1X z(?pkQwn*@gSj{D4W<9fzBrA;pK_(1`Dd9c@Jl03y$%g;H=@4%Y8o-H;+Hp)Wo!7 zNw&e-lS&g$WHQn*m>Qcb+8gKrbSf19f^O>>3f@;C8w3RBp{+Av!*oPJ4GVfAi{qRG z0YUTMn%KF3Hl7d{iy3YX;BI2Pf-Pm-KQOhg+-2CQh!Kj6UEn^1@cZVbUmKIi``d7h zl5X7ni+^_4+}q))%M}`q{a{sjxFm9>Gu%dl0b#+q`=v-k5OCsgyf+-St0ntC0fdZmMqPLcF6GU=4IgF1tgR3bRG450 zD-3fQ-t0{G&ZL6MeAQrvz(5bAXv##RP=jx*S1Y8(3?ZFyfMPaRAw#&FCm4b)a3>`( z1f0}Rc(*0eB|Cx465hXF@`^liF1+IBq2gay#q-bUeD_`J8wP}J;y$T75i(2&D=_=U zN=G=##Dc1orF(FfxqSuFl8|-T3StaY$^W$2z5e8q?BM`MyP(tYx7vbY3vKQ z{WS*}!h}C&p`(c$!p!bIUegUdG8R_g3M^cb-1K75#?Mls#DI_{LIxW!LzobzE=*(* zAe7`WAQ%7$#MFwN*cjv`&LQOJP{>eb*0@v5K2aSoZbAjrLqI49>N-PMH3WnpO8M`A z(A;9M%D4v7gA52?94Xz8zGL+19uRbak+zu-N3{x$yb)tb6M!ImgNv;dKJLXy_|BR> zCkP0zQ<%?{5G})0sKt#*Gg25edDz|zbG-bRkQxAlIx`bdStS+il`pGpAYD^%0G-=Kt?voKpTatPoRr390TrL7R^`o=TpxA9gq0v|*& z8GI(V*vu?L_89^K>jF;HSm3*_Z2}K^{x+jz;Dj;>VK@K;djG=z_wnaaW`I&Bkjm(@ ztKR@Yo*n_Aaae&iC1o>lSp)`z5->yP2}8JoW~>7hHRlFKLVjlm6Wo$6OUw`uemd^2U3U3S>`XbhIaF^GhKyA*y09KR?m6Seq-@N@ zcHfBnP3iNkh(lXmI5q99!<|PBHWn(jh>o zI$}Uz(FBNwT^kkYIN;_|J|M80k(VlBVDTuaIA-qtfg$9HZPqz}K(fR8x98#2O|SPZ z7|+|1g)Z2TVaULlZ#A>KFHHafp22IytZ)XXu#5u)gm8vA4es$lr=mFp$8C25L`#wp zsbhu^AVXkzLSPVWf+6r63!>h!6d&iI9N@mq1c6XN)YR+ZOm! z)u|akn4tQN$34I;^M0c27&6WwxZkf3TIHt9gx?ByQ`z@cZ0<}t-I4oRAk*L+Iu03N zPJ;`0ege2T&yLC!RR}!GK=1<@!c6_L;s}noWkTj&Ac}R#NoOiVs8!)$pbst~Kv0lr zWI2Q39)+*Gd}je*=hfW4$w zc(^G96pNEPiZJ#sE#ahMlM?sX*?@Zfa+z7Sr44eCxtfVIFb}rD0afiQ285X$f>RZi zrLC9%7H-q|)%EbMBmFNq1i~eFH+67uF+FU9@!q z5Uem&1FFF-k5eH7N?_`BVoDh6A#fW8$}Dv?CLm)#PrwZgNd1J5G9-s9EY7h|1}vyf zXc)23464J_Jh7vv@uFYkRCtaBwmfQ_bgnMJ{psZ9CWdAt1cZvhz!L~a&lLj#6xO4Q zw|*NY>g&co@1H%!DL{a)N8*m|;r<~1ENC%IuFyyF4Ucdg?o5+7uW`>)fPjvd3kI*2 zrI;N8!nzd<2om=yAf-R{#Cj%&U?3oj?Xx&LiDX~NX@91Pw2z%wPpmN@Xn`Z9-dy_Y z`=`*<{1YIo6D|Kb;gF#@`SoQy@wDSZ=PQhC$!sFNo0uW6I^jgFC$lUh0t6ed7xo>%gz7T)%>bv;67~hPYClnB z=q<5`A*8t|4+DbzB_%fQxVCv;5c?oDHrBrHO6vKxf2@4ndcYE%CqQIpL@A_!ayP|% z1E!u-ymublf82b+B zzA0$fvA!;Y@7tnxE$<=rPA}+KKh}jhb6=R!bo+uP9WWiWkzQpv$PmsRjuRy$LyY=-4@{rY5?Qvz<_#>}z2ThkO;*+>;%< zRqD}C)eU)U1-m`;koe=rb`|gbEsh{`mlVx+&i-(PU9^r3ig(-|;~o1=7*~j27;$!9 z%3fGBnYW6qmguhLrQgOCZLIep=@7CMLWZb#MOYF`lER&S2d_LatHo~s4mZVbQ=o>E ziVt-Kg8?B=Ot|<@w1l%S6rNxR8$8N0ddbtcWl+ugjo0?4tXjxCriOn0NRy}AABviow9 z{?)$PTlY0RY~#5v>d9>gitcO0`nu44@$Gm~tS!Qe_%!1>t18O^rltxncB z?N?)x2|md+TC0=`R-3e@5Y!T_Sk$Kw+alv~S;Vp^bv~;tHYuc(X}O5A(7Yk=a#4|$ z(Rr2Nme#ZU9S~}nm@vcJG0IOn;Vg#?%YCOJRJx@nn&?AtXAL{!+k|7U6MBhxrd)x= ze)xb8)h`-Z1u_OKNR%BP?R>u?M)!!fHG;b& z_rArqQ|!L>N(WYgtk=!GdS~H%tI)n1Fx%b$-aCCeij;jLUcXh`oyt`Y$K!aq4Sivj z9o?_$KBm|Ac<>eCMY>&B(;6A9v&O7s$TkGyO_EmX>|G>}t+W^3lQnNLEWs!(LvSWU z=i^#r6e86WR-Mj*eswt~@2yag{%iEIcx6pI2QQP1POpl7N3N1UBY2mH6ga1iDSEvq zf*RA|>Z*D?5USrMz!1zt+{XHZ$g{IY{_>cGTbJ)o6K}Hyfn?1SvkZMNBVy=zqA~u5 z7yUiiGa+qNcnc>S$mUK()IWezT_YU^CVX00aFL-*)IHin>oWf__&luqQrnRtA9i?b z3msaXwYPHa-ntwbpkuLJ8$mLss`_$^5rPk2+&ALvOaIC+=hXW>%XLS0JN`27Mr4yG zpUf-5tYvC$OkW5n*C5HJf)9&v(pui^tH@ag$6I=pATuT#+=zGcGF~CQx;Q7i&S~{= z3Fl=w>m=f~tmiGR%MyhoBVLK6M{>>!|Cz9686ahD82u@A_g2&?pHQ_o8v1SjF5zL_`F13*u$XIv^J&K$4@QjN7kGFnb zk+HA-EL@l!Zm6{D{;IxdXZ*{SZ1{wfGFqzo8o|DjH}9HV-BwU{Dl$a7N5rdIloAV<5zME~&`iST}yG@0J()aPEG(eTg0ewQ)cTCYW|KYHH?mqGt5{biMrf z^XH+f2MUDM{B4%uhhOOP?g$XVg!#b*VCVobs1~9M>wAAzNoj}-MM|Sr!nQoHgPeNtmSZm zHW+6)+Gdp}ZM98aGt>5ZjZslRy$VS#o8o9gakR76`E`xFrCTvOrf-HI)p;r5ER3YD zQuYg(ZqUow6Aj;@i}ZLh`^DK1gCvv)N||lVT6#^SfL=l}j*0$2m!f-yfQYvU{I-5_ z6IX<4ec++hpU>+49ga`XoG+Zb<*0LUaQf0L|0IwyBWhXd^u2NY@;_Xm@A-j=uG=30VUMWCi{Vs6ANLqKx}&sF z`a<@;+p2H2By+dswuYsYZycc0(c$679oUyq_BuC5=B2Nw%Ux!M;}0EucF8(2E;8V- z+SQY(SqiNk$G7BrmrdAp6X)$BC>q|L$WqS>@o?o-SU-ifYH?wS+Q}@*Ba02`x z6$lkoufrfyo;YY0?Sx}B?TJEpvd9%wt^P$1fyfMg6|ABOb8p|L9T#5JvONMT0)%?q zr@+gvwVkx%6eI> z*w$5h;^<`LRsJpNqZ@H@^!RpzvybB5l>G9mis z4eW5r!Tt*%q#1GIJOK#b6`1ngl^Tr&*uv2v26VVN;QNb*0B7Tr{Gta zdNFQv%8U|wU-Z?1ryDc9>QAxL!@KSE!vpl>VTUiN%19#QvajFW_wrqr2hw{F1-35R zWg^RhXU&K;1f+}GhFlMfx#2ioo?9)%jRv484RK?jx;)YM-Kv~O#@laWIpTCW{kd;l zE~sG5_TM8>Rs6JMzHA#q!KjNIyeWb2`yQwJR% z9fNf4O)z!vpS%43{?OgOUo}Fwh)sUkN+Z4Z!C4ApiDDD+t(Lw)rcN<+P$p4~oMIGY zz+}FfVqYtrj)EL`5JZ>HpGgYI88La@$bnyk++q@5Y&M@S>*5`S*}2+PYWiiZ7VASK zhi&<3w0G>@SEBdqpZht}Tq7ST?e2HG6lo+QEq@8%Mj?RS*iv@wvXT4Wo%Yz?xiT|kM6R1&4AU%jD=?BeuSEZyOg>QtegWgT>DM^$4)luGV$Id zlH3CMY896hHu}dbQYuUTTa!v>V%lto+ZM$op3h|NWWRAy=O_BEjAymxMBdojnCM?= zrMKBC$pvlV)>4<%o2N~!ge`KVXu0>U_YT)lNguD4xbAr%@pwa{WWKNM+_!cT8@b#? zUgaw#%%jr3c3tXQDf``tJe`CM5F6T56YENh;eM-_QBjO?`Yb85SyF%QjY1TubOm zCKy*E$pBMSCKCs@&AS?+%beIYYji}#rCL^-&Z`V+HLH?-rBGW4y`97I8HFS~_~i6i zjER6jWvPUSDr_qugb#ts+}?7cJ$Dz)bt}!ev9y?D9rj(&IZUzj$a-HD)Q!Az^L}sm z!TBih^SAm&*q%ZxqjzT{AogvV9o_WTCH6mzgzdhnu1LxaP&uKr>k{2nYowN5HhB#WZcEI+x22ayMLdyd23f z_BW#ix|ZX-949!B3_16Pbsep@jsve0C%nFi#g=>yEIK38%ODJ=r*cbt)6=r~aDSM# zn*Ym;yi}XDwbmOlUgblIej$_H$S4Jc&QXL!=B?;EI&LyvgtN;2yxk@ z7G%SL06_@?gh$JfOw*IUVbQcoLa*$o%0_5s!2sNUsXch1tz+g&B9w$aw! zuU+l6IDVA>^ySugGjb67THG=!3A(AXuHAp<$C|(w3`Y_L`s*5ZiatL+9+zuXthve4 zjz6B{?e+D16z8~oe*zF@WH95zTn#ZuxamHv7!XPy+C~$qZl;|hVnB#9l0FuN45ffg z$^r_dy*#qA817K9!H$!5u!A3%Tv^xvkqJT8hb+=+9er zt8mMGjAYkWGtJYz)b2`aeg^eU7pSF3$Qsx-Ojo(n(924ycGToY#WKqDqvxBNuz z+pPKFaE}7q4Knx>Bl7SPiZ8|K_2ccSeGPT9ko!CN8{;2ao9_}lO^h7P)BSvE@d>Nd z>2KP(bTGK)eByUZFY8r_E_Ls3Mj?Z(P`mbf?QHqTEEV3r|oXDFi`i-E} zYNc{PIiuE+S31Xi1Kgiy#qeWv$0^-ML3>XOefPbe+xM@@uw!0rA7l_ute40Itdag7 z8WAI`&PS1&%XsC!&#eC7NCVzyQv8Jehw~KxLS|WAcBIP@mFvfleAMa8uD|nsrl%)Dv15 zVu@<&+?wE*b~k(VZ{aq_`wUpOe!U((rVb zlkDl87pw8v1qPI?$<=?HUUFxzbn;5|(T^6B@1>HxU2L3kI+mZig&&oH-uHf}3B2@V z{hE=6@_OE8Kd2{A0ug-M$K|1WPZ|En$tD7klvQ z2YcSz!R7kMOQyMPkK%o$vmaMF$g;tj_gU3){wbm64m3+Lf%|@{tty6q(fM1ZsuERRQvqPUCL4N!?)W3>|nW2a{+v4*lqWd}J7%s&}{wUo(`2r@cnm4V8 zN1EZ3h^azbC#jKTnF)zhD;aVsE&0wQIu#BOV#R>d!bS+Fo3r2bXta&N*t{Q>jd~5V z@u{)&opXPh8OyRSg?@=F8I7Tz6FKP|bLVV3w?MFFkn`!o{42U$((#x2GqQ1VXA1pP zGcyl5(j~UT^q=ZR%uzms1B7H|%dQeD&xm>E%al)AbA1k(Wp1bJ`k=tv(TX#c_)EL@yVfC3HO4-P>;-nr?an2-C;q z{?i?|1;wW6@+>0cA~y;?x}N#yAqdS<$mlaqMT0!-JfY;ok#oRX8BAgUK^c|;yao_r z8Y{SpoDD3+SI-s|69wuqkJc#i&vD5OgT>|&dS-Ad%WJe2Q;JzDgE8B79R8k!BV3Nh zEkTN62a_Pwyf+8dkRNC=$M3vB>BUI3AAyZaU@1GVEw6TN0zY!4S^0G&`NxH#F3(^z z&snT{e)chgLtCiN4h?zX3t9e;e>1NUVd9R4`1lM}q`35sv5(RmfR~6bKfvIrH~Ug@qBYrybwwLD?NHwaZI1f4%({N}^%s88AXVvWI0PnYbUn zSE4}y8}?oEgj_KwuM(?mrFcNdif2rOpiu6{LXdPi-cAkOXkNPnj13uhJ1i?8fcrm} zko;|%o-8~Ma(x^)!XxyWsEJ5-htCB;;Gx+TB;t^K^KQwep@(h&VHndwiNTRv1J!tr z@57H5#JIg$1U0%)sf7asPTC3qK@JrV?kXY#+;w5)=cj>h7kVz#$32#Tx5Q!Kijxrd zne?A06_;cxga8)T^OK5G`{$iveejJj$+Ccef$Iyqw%hgFn|PoxT)$Tta9D{?$#52i z+medWRE)2N%_8yFkcA&$iAZb`sZ)nGX&tt0Zui@~PPJw~3=WXq(YXV2*EGC|0eRZi z$1hlK{OP)*{`!W}_@dvrfxQ;gKb(#)4WZPgGxi;}zlk}-w5=nN!~s=$anfQr(*(ly zyakFYnqTY~f4U6e+;TLuS($)K8LZ}0hOr`Lpj~`!2D(O`82MpXK&V;RM`|<<5a;o~ zOSz?G6cwcmtQv8b@+5v+dpd2hUwV+{YVrQvJ%#0R`Xqtr`n2>{d7ZukLZ}lLx7;9X zq#hQFERs>`MEm1q2O>(j0Un~ePQUJ<8;)$bMVIaU1G?%vu6Z;!^^jnC zGdeEf>C^MacmcwMiQjvGI3UuDi@4vfffl@Ui(&ksL=Koz{QMqf4vRs|>Aqg8G>0&# z#6}2G@thhJORUT2_%1_qEFjdBLg6i4^PW(+9E@4mdFse4Nh z%8UVE#Nj6oG0_@Jin(OeV+!-DPe4vLfI)y#ITtd*L7$pR~Ps?jfbG3c$INdPIw zJUs#N!WGBEr{8gpxY5u!SLJM7d0pN7G-CPmF(F2KkMi(GJwd@8BNIbYSsCeu25ZPP zu>Qfbdn}E7ft`{vsGj$cC}qkL{#KNaQtJ&12vlX+-=j}STUG@EdC8dW06L5cKxlnp zEs@f$?lJNV$1R`7d{o5nvGe8b~i$Z=yYz2eUDD>?eln}A0xdF>2Z#s zqi?^u30-k~b%o-Y;U&0fCq8WK`qM$Q174>}ig});9nRu$I2@0Dna}+uV514&)3+%L zPZ7dkGmj6rn+mX_ML1^4m95D`t$oY(` z3AfF}&WDs;Rvh1@aQt$v`$Iavdz-wt-EXJE`7ADA|A*`Kjs!2w{odt)qpn-GyYc61 zi@p$?DSQx47+fyn($8WYtxo8!!PsmmSsx)~z{ODaw=`QwByx-5e(FB~Lb0uc2lDjw z^PkY)zX3wPNy_7r#~L3HSQMiA1IcjUSvr33Jb;Gyfa8}euX6o)QBv_ly={%KrDN)s z=+dQF*j=LG%oC(6f}KOau{}Q2(0rnUZ~7l1gk@-1Nsr{2-SI>M59u!;ysyeE!+uBz z`EaMA*V`PT(eKaKc&ZSSgKPH372hwf-(I5?i0tvtJ5qx(dXN$s@V#2x`FuVc9*?tp z9Il5mzPddeZ@1g&1b@H@-%p1}?{C-R<8rt>ZpY*8csMm1>bETm91RvWc^+_k@9Fif z!1tejR)Yp>2D{5?7hb=DeDF%F2Zk(k^EWYn6gCNZoxC`zJ|NwiRAB}{L4ZOtIb5zs z>CKay`Sf-QC}^1BSMP^6{Dvyl9>j zJZj^dGz$o$U)Ui7BWj9)EjM9Ek71F;Onii3T>1xs6jpPnWXK$~WBPEW9(1X14yfCw zJ_9>CZg)ihG@E8ia)Mnq3`emV79l77xgQoh8`8Iz>jC`m@pOHFWrDq4ucz*IJl*d1 zdv}7zcl5ZfwEy87xbv6gHr>XUU-zs(>Rvx< zHiL%rgRXmi2d`d2gysndc?Dw>mP#pIQ#Ot0xsN5i!wBK=oL|N6q+FW3`LVrj!G`Y? zB;41RxZ6)bU7Ph5ZzaYLp*^lI*&Nq{e*0HGoU!(BIk0ACL+(GEx2`Mfl_fVjC%PVjuTZ^iZTI6@$EJzhWO zLS_B={?mngDb24q<~c=l$1+g*RV>Cg44?OiGm^IfDeV?@f|G!wA>GGb0*WrUW+yj6 zK&a^GD^bDA8EV+|9S;bLsR0DukSV6+Y6w-k41%3hjHo^TFEs?m6F|kainWJb!Nd)~`<`QQSLHy_b(g7Dsp^I4WF7s>Ds7(*@2M=G^<)ReiBpB^{05Cnvze!2Az2Rzf~ zKsQ@h919@4RvYr|LM=_z|zY_IFtS(-g?)=!Q{1m&g6H^*D>e?Q{T_3+c)2aqOr0bUgGoNG?v@{d9y(08rq1 zejIx7z}Xzs_dCxb%gXK1SFTMdHR=4R-}-ZLRcE+R`cMF&Y&NJP#Szz+-a5E^TwG!Y zvjV}&*t~LnLe2ZVBpmdH;3PKfTSukIy`$Vsz!TJ+PB{T0Yrp*bZd6hd4OoF8jo7n@ z3TA=ectGIl?4`kE`5JhIU%{c!v#=`t2D0VZ3t?RyChn$ziYJVEyG(_J5j z`~7-2-tVW=70UzN{dfZ-K8i^${pE6yOPr*Ub33M9OkPgq~)3HY{Kc3dog+e;~)3(omcU`e1l*7McL0k$L zNVxH15mS$mwl2h;&G-rl4A1Gx;|Hsltx?`477zwk5g}CQl`n=}k6*&f0s@K(r@&E9 zDfJIUMcnb=KaQK&E#dfK3tLb;xp{u~y=X+<55?oXc!#@=MsrJS-i>SO5h-Q3FYVkv zF5=k=Rv!p}ZFMK&bJG!3DbSQ?6+8>8JXzLOzF6shHC>)!La(GsRd8*YsiX|Ik9S`w zes6VJ0inz9B@5bIFa4AYFHJ)cMf`P+K0fCek8AkUAwn=8e@X^f46cuIozSd z!K9zd_rR%LW0$8X#Pr+cia8Z2wIUr>SQ1we0^E|SkceKA_Y1qHu6aNp&3H1Y&nurj z-jS%Oon!YkHW&Aj7M%hP4@2&95+BO8kmx|*bhw{L8t-&}tS-Mhn*52Rkc03dE-1f>@+VjQ0AYD}pJn_P*fsYWh zPCSJLKk$+&GPuZIXE@v~kqnrLknHfEQwBukp+-@TPZ^L8=+D#NpPT#zSoXMwz|$b# z*I#~GPqje!?>S8;XcDHOkfO*Bzb>nCRSdmauaBKH#Vo99b2v{`dT(4~Hu8Xwf)egM zW%%Q_!N>Nw%dlMTw}CzzwzRILXL4IIRn<>(J07lw#m$c^)-IQ)FJH^24J{!hVqQXy zYx@d{3Q8dJXTMAY$ESl*{(8&@9Y5=QC`8n7KK!_?UkWOzPRlk#YMtrI>wN&skXT|9e*FX~h%2^%TKgwuSR=@F!z}2)UW!QQ%I$;VcKm;?A>f#2 zg)jrk?nDOPwEOdMuu*=0^P|JgIglL!LYl;%gNgO6Vcc9`{Tb&tsMwvpxrtD-+_a>` z0s>#`K?m6K6f!8h#9i*A$C=QtfFNka80BTwmy6G<>wM}8-5NmXv*WrlDwL}2PoAxK zwn&d?z~NYipssSFd{^G6DsiS@Ea3b=?!x9CO#dXKk0q>Vm-l(k%+-Xsb$I$?tbgpy zk>NgCjf$AnkzFIhwlrIe5bXL1&iH&tA>YasiL|7ay@!znnLmK=B=j$mm#XE~mSPMh zEc>1Z?lg)zB(%D(aW?_wfV4tMU)L(Nuk9G3oGJv6B?}0D4EX~f-~cDvWpL;8`{>?& zUr4^Eb=z)d%mpV7D@x6d)!|U=dKq=_My4ErjakX(9+O8d**oU%A0K+hvfMZM5OW1v zzYDNJBxt9RhkJpBZf)5#@1qfYKEjv#S{gi^@>EBeCdeYnZMXJji3#offW$P;@1cHL zTt`93J-i4uaUmPAB>helo@Ci6d`-r~vr3PYQXC*48&XAbmi1TDs=u9i0pDdZ><~9} z*BFUy-+#&k-veKLI~zl;pu-BTQ+f2RCg4 ziXCX{VgTWk$C7{DE`I<4JNkJJGJTnhU(%&Q8Ou&=R|$Ml1)uw9SwMhyT@lC#rsJG z)3&2UjZvjh4ji>VF$*vzq~v`dVXz|pw=SH#f!5fE?-<6-A%tiu00G;M?2x(r7~sCe z4G2D8FXRUny9P*4{yai-&3j&BaedO;nC7f)?sBW@3_8MDEXz>-Ez2&sawNqOc%_ z?)WZ5i+e&(L(Od)+zf*tw8DU!oxtGyndCm5_ruiBV(9%O ztn2X`-45W`{X9DzEX3vg*;{bM0jF1-l%tmI)L+g{nKrb5Ekqs_ESN5elSGT+1@Q7l zUdDhrwNJg>nETb+X{GisEz4VTIQ{zYnF|V;kl)w{URhVMvT+-&VVpwed&O%G5bVgO z3}DDCAczl4W5?#b&9s*?OqAT-J`uW}n_p|rxG6K`(YW|^cdnwTO>E^XIch}=6?oFF z7|oP;HJ4H2#p1(nK*+`(iTSLzS*-oT?HNI@&bmln6t5bWSCEWyD#RgLZZAr;wE?xP zgx&PJn9&wh-fg@NZ%GeN<}>tO@k0~l)ZNeF&jfXTuXuIg;wg0kk@yxIrXAGKqL9#_ zRqF@ujdiWTK`!mgXu>4=X%eGv$JxVel4o$haym<}`N6lwLjc|P!aGtOaLTk&a@_IFkO9JblXXsBB7y6R;byo(w1a$vlxj%omkfL(>9s~q zqtC6ka>`>lXKO6R00Jt0@(d{)AYd0t{3@a1*j@i_OYmA>OT;b@&;z{x1%%%z^(ewZ zNp1I~b%cOWLs5q_#T+2uN*3RT*&z#DP1QZr^2vs`-^5YH_|nUMyDO{NM73Zz@-pP2 zO}E~%<}Qw_ZGW0?B^oFLlXUsMGFQ= z0d0_UBo{qi4=H8WRZ}!6B*lAw{y!GYaJn&okesiWvl2WY$X|vmal-%J-4C0{0l68! z#Q1qf2TNJ;Q*p9+tH-r+efVMd1_;U2OkBBzF=SeSeLs`$kICUSmS*>F5!pB~qHf0{cQA#p)HL;Y2dyU6Vn52e-eHY*uPo<42@?YN3t!P{4Oslj`L zGaV>bwpicP$|m#$2As5+j1dydaWZ03&bz^bNo(CpCq@O)w3ovm+%((XiSsmrO}4W% z;^JEmk+<+|FD9WagxKKBwd_4uGAevZ=Zpn+EC4EmA0$>NG`$&A^VF2Z2b%C!Xp?4^ zMU*#fqiRwaqKX3A^Y5*Zu!)P-qlyacC7w>Nyy=Ci1ij+Cgzyf^@%>UrI9?Lco0EQB zCgqEWpQA?oi@#va!nm-23mD-a0HH#d0S9wgKp5;>Ab5Q(&YkW@n{%U~{RRkeSt*1* zXu=@P@A!ULQhECMJKe^{vH!|?$_C}tl}pBEV; z)Z|8`+O~yIxdlJ%gqhmOi%AY@8iG+#iQa>!oxm!E?$0_r&a#&+1l7|xdNn@=Ikc^i zR*Z50&y8Iy<0qvdj2~NgA6iVKzkt_<)I8+(k*M>HMvcmu^hSd+=N@zD@IF0J#>Qe9 zw!uwCj5NpxuVzWYLFu&|1m~WPC`td~|64oG_KLdlaW(ZdeSXG8Io68NxgtfB(g#~k zL<4PIRx1183|?(%6C%&?JaUGNGqL>hSi3}4Y;wQj#nlj$<}0$QO)MZhCl%p=;&6Z8 zK5VX3!PQ?SxFa?VPRO~_eAq^C-Q6tP?$S~k1@V4H=|^UraZMY4 z{kp#BD#|=Q>CI=a4n0fRQF9>o#$wLBQ+VZvYb`j2;TOd@+5%GTQW%I4rHYzL-{_>Z z24i&KOu+z+w+`#nQ|qksMrbt|Eyv&?zMf{tn7usrqYw~vk2a0Y3cWyJJ%IVTp`WGb zdob%T_1b|$Kld&u-$I<#kJ!LgdN3ByWEiPVfH4fV$KWFvczPkpT3>antn-IOK%A7p zZ$}?Wyi8aYb58>vfdD{9N}b4&X`gZGXL9+6l%a;mE~zQ9 zfH1x$9v|<+FS(EP$W84JaTT5~g@ABfkbasv35*b*JbGh;K1?z;HlM zIh%ggzl)nFKOm*L#h6zPM;GDqE>a+&1FOauUxTKvBS(pI$l-c4MHv(8Ey_6C8g!6$ zlv0OrGzJ?;t<&I+!LX$p2Z*fIBxdm1y#teN2YHdU9l>BdvV+$#~p%gP{rR{{Yo-vW~W;qHuWq7vjkqywinh;B| z;bIGvFB55($^wAD5}5c*Z2&;*YU*KA(b%36crB5#A-}3>ziKFvCO$s6>Wx{WghbDd zE~g4j4oHc{{n2Io_-(szfI$1g?3Aii3?Lv8!N8IkV!w}-qh^E`xs<_H4CdM$LP|Pu zF|E{&0EV}+oOr+ApQNJT`47_)%rA%jtb_*4F&@PA{~BM(71s4~%op0qHJXR<0T9a1 zBYC6zSJt$(=`~MQo(`|NTt6$OAD)Bc9Y}#K1*=R=MhZ!av8k`H|yuwFa1NfR!@_2qxNkW-K4@O z+YubSGSa~-k7t2BZ_J+qbre)75of*ZQi|zw6JVV!&eO zjm=VyiGDZeszQcJYIemBNmWRrh##w^TZf^git+uYzaNr9Tf;j%Bn}W_(mWtU zhBg4h8x+w_oCcc}70YjsUOR;glUICAUHnBf06K%j6AJ^Pxj{c^}JTgn;Gw)hIx>FtlaC3iJ`GwAlDzj-@KSLKB(S1K?{E)<-*M{wq+c3`~Md$GGvl0$o z*VbST-l%qfJ_y-`w2nCdHhA?b3wDbJjtyck`W7PYNRsyuRSPR1v6f)D59BfuqL;Ss zm4lx+A+?Yr#OytM>%0e#4!8jMvx4Z`X^7=ptc!~lV*CM~7R(vhTfm8r$moy0ylCu( zwoO}nkIQqMCXdbH#aC=1&`-$UXG!i1n}Oos(NRj0C3#C@@onU9L1xOFbU%IcdZG#p zQ`r$P>O-ev`+ZcS`UC@SE~%Y)DI4Rp;)n&5si0vWRARRs84|G^6S;kXBbu8eohYW( zH}qVDkYzNvP(SLLq9O|j;4k*KlbY{^Z)%ZF1rRp**jubeReiS_a(px75`>fO4vt#M zC@1{#)aZk=*VAhQIyEdPTnC^RgFj#pa+SiTsC10EO(23(yfj7S&N z%fXHU%-ROugRk|o7^P~xgHTud2@DnzWXQrt$g(vyq9F1%deRDl`Ndf4w3s018wO0j z6}amG%o<{THCn22YcPH|oAJ-~e0sI3;KC7dZL;I#S^|$qBY>&20vGjYA)yFMZZc$_ zTMpvtrWdp2@riF?H~kI<=vz+<)SYkR#KBE7ES6cbWL;jRGqL8a$!iS zX&9Hdd{KT~I{=kHYQKe3CfZsfd*`OX5AYdK2(s&yBCei$zf8m6gue*k{aMKNJWoOh zyO=}wWJLS9FA7|<8buhqQR9SDWYQ@U5C)vX*`%m7PJQCL&@{?Tp0>35!PmwQqj6yk z!-*t8OKK0$N5{xJ7qUxaQ#uED!pSh>-#j}PA8}-D)=M${XIV3*clR6p@Rl_HcFC06 zkXpd&Or}kP>v?sxninZgInmmEh;|&!D4FMJQF_Cc6_I^$NsHOB}y z(B<)W&hb*Fq*-0f7@lDiwOu6#zjn^PNdA99a`-ZY-?@th81EaP+Vn0&+FyRom-vPMQB~9v3m6567-- z`2Tcyx1Tz8Wr`%NeX7-2ZU|_~D8L#dJ>&Tphp_BU6v4Tq6@;}(k>0*~4WMBAKkkt$ zptfAktCWL7PAp}h9e6-6lFdkC@{Z;3MH*=CArLf2jt?lbCUCjG=DB(j?z$+ZTpwcK z*PoO1Y%+lS101f#?0NQ4HI|9TT|-uED5fHEGctgX%sy9b;}nj9O4IjFPJ_d_ZE9on z&SLL6_Ge+j=pgh~Vum;!qJW_n!!$ygJ>VN~-f3LPhNKg~19M<>rn#L(*?vY^UBSYcIi+HXAO9_!+4oh9GSOHUGw5eZtmCH{inM>dzc70SBZRU&1r2! zybYMGdG&^R_m>^NW)nz{dZ$=QeoM#YZ&3c{T(MUm*aW{6fdlO<%eWgjO=47hVQC!V zGC6KXGX+*l5hbhn;5+v1K4V16n5Hjg``CTh3quO((@6^P&lXXwtnbeEi!GRKx=F~j$ zj?W7aUWN}Z`Clur8;YT@l=pFuiaQ#in*aj1*BT(MYHOzT8h>2{00tg4cghf@76tL1qUS3fUG`E)9%HeszPuAgE>|X zeyLb)qI`_IDniR%T?q%;BbOrQrNI4bXJkko2?%`4Axlt}0R%Yv%2mt(S(O+-;5z;# zLU1e~1Taw^5S-^mbOGuNTbf1bH15=^WX8bmAWX~~LO{SJDK0{2#cnXtJo|%b*~}QE zSZ2frN1pX*+smJ374e8{)<53wEGUv$Ik%f$VLRSXFz8IvL|;o#q-u67JO<)QDrvc6 znS~L%M}B)ZQbIfL2i7xB7WwQ5?mkh)+GK*0z)>$nJ@F|6D?y6!kl_IV2ihYG2qO;& zEL%CgA$~A$0YKm)1h#=d4|6Sxm?@muQwAvm4+tax$rd9NhdvQ|oQea4G&+u8J}kq; z4kjgryt?_an2~>|LM!8QgXV2ZYx7HHNSir@PpR)Bkj=AY&%*KNH;dBtmRA^?%kr#4 zsP=GuT(5^=nfs}wgX#`cQ2eSAxJC%BV(bkUmsmik8SWkgH_#4_RI)|Il!RmpUBTDX z5F|_TpZQ_9P(xa_hF~fbmm({$LSzv9^Rz=^bqV5JF@9^fqzVCnZ>UCGKIOX%mYY;W zTjX~lkUlmsz{2Q%G|R`O%ylm_>XwIP#nID~KIvDHgxB*#OInJbv+|UQ!f{+dEMLiG z&t=Hzz89xaEwCc~tPmi_oU9_$@Julfi;6rT#KlX_AuEh6IXh0IIm7`%U_*^X^^OGu zJ6B8;`H{myocQO9HEc}-TXVKz=+DT&mItu%!2$y075sA3z~)1kzD6Dp0s{yDQ2p*K zHABO`=nAGWei-6G34^#jmc6=l(4;5Ye7}CqWefWB_;CFgYtQ$x8qvkQR1)FXnHoS~ zSD;Wcs{@B=(iC$4`Pk{c@kfsdiI53GlblJ7f) zf%#xK@`2qs?npz*P$9zN*e*lLB{=3WfX{3`R1t|TimgQuX8z~prkJTe+0SFR_lj=2 zFZ!Q5XVazg4p%ZA-DiXGe!rh(Klg{*>2|vwABSW25_Rn?b1Ijm;_6zSd zSX0IkuUKpaEe#yX}F@8+?G|13MSOR_ZVs zae?W@An7zyRNPMh2OpLSVa#POVUHc^ewkGp{ItACc{Nz_v;P;R%Dc<*yVs$bMo-;{ zH=Y$NHqu@bwk0P{7ZV}`S>f2R&c{xonHsro$EJ3v?KO`+l5xm*IZT2nA)uQW*b6!0 ztT3B0sFvMjh`J&g0f1sB3~Sns-ps-XhIo@O}@GvE$C#*{@87?pxh3J z%i0U$E*@V~LjW}7B-nzkm~gV5jSzw!dA}97-V-9hC=%x;67T;aF>Xh0DZ;U=+|*BH zZ~VxyT55DgaeI}G5Gt-|B-rJL3|bxe?to%7JD1V1fWR`g5F4}&{M5tn-;0VErd6Cx zHSHtr11ktwJkwrId8@J9g?h!W7r>#v>rY3z@85jw#jg2)?;nT5_3DL}UQSZ>low+r z;3@#Y)lk$)#REb`Q4zCNeg{bNYUj9E%FO{G`Y?!)aF>q-gw&2Hay10Wt?q!ka5cHm zd12NaRcb3{$+YICts~aO`0Wbq5+B$&n-o`PP?jr3q-3YW0s;-3ae%;YA30Yk{OQ0Nnw&G3T+2L}=G~k}TMjIEs??;fx#&a_6$dXZ$ zGW5JiYqEl0-O+|6)y*s!OcQ;P6XUn=d5EuO9}sNMUG15gnIC!N>;|j)6}i7|qhgB@ zRTOI6sRuylE9yrG2&@5)mfHu77;11q1QIv~wl?c3B81_&LiD|+AyxYCfDlz%H4U=+ zneW(1eDbiX8`c9mtQ?-3H~nWNY(x#Vruh+Hv#lv@ymQvVEexonRFiQs@_^tf;?Lxm zl^ZliW)tHT8zID+waK>S1}tLo?A8|Qr|^}3QxVjm z^fdzr*azh!1V+!K7#GVJks{xT064VVTy{RK?E4uP9uUNTuOZ+_chA>IF-hEcR1fBl z!&vK6E zUB^s=$wdedTPpU696R!ul>)h3sIAz49^}Fe;inp1T~z@H6$6G4#k+-{Fr-C)mK>F@ z%7+R-utSBYB3?p?p@EkFy@r5QthPdvcwbKUKy`v`NHkuX(iOOGdyv6W{pCaoE8pUr3^_qwirf5MHUbO>udup zPH?uxYKW#(LGnZ)77GYQ@KJ9vL*glu26o#cEULngN5PDe!Kn}Y>=L#wBe(Kk`+tcL zs+!1Qzs-j`Np=}G!YDX{oW}?3_IQTTAW$BDzD_h^zpMhF{J;akXlnq0Z}o(s0uZ!K z6@V}->^09t=va#wMP$b!4a-pwX_=M-1T0bUi~v;&;tR`;I@F~81GiTiDn9&D$Ek=+ zAPdV@XZa_Rp6fCIhSv<28oq|0e(joVc(n2EhPiUaz5)=$F1#N}LdmypctK$uvEoG@gmsUZ}l zie0;5w}j(Rll!;-8w@w>QUsVxgRmKo*|Xuu0yxiout35@++pGbj*w1g z%J=hu(;O^nWoriHc{uhT#xd`bvD)abvYla{QMX5i!gcTC$>S6pJt~{RYCa z4raiShQiBD=8m*x>ZMwV49NP8!2|V#5C#J2T&ny6=6$zfZEvJPchoQ^p{6?*C(EP^ z4_bKNJgw}I>m=(sJ`n+PyO^~Xz5~Ko5wTd!1A?`m&fY4Iyj~Suf&&4h00@AFj_ zkofd8jIyZ7E(OpvuNX4hLBWKRQ$3b_LSu&mpf)v ztF%1^g?60g3Q3bnXWeYIN_&P_wC_TBTvh;k1?DO55s*GTN*QF;>S%2II#rXavSqb7 zp-d)NtVW`9ZIF@NDl-`PqmcdF52lrqQL`}9Ao{TtLZJx@(fVF^A$uQG{}8i=zxqKQ zggAqh_w#vD{Y5x{1SUk63Ja3SGsh z-ft9Q!%v4;c=@w8RdK__yO#3pNHIXlK~hl9$swwLM$+|J6MuRT`DF{n8}Mb6GkUbh zIXMntP?o&(2v)A8u&VV!jM90D^4nHRXZ3s;jktI{!5x?LAiZ?wOYi)7@((e#N}BV* z!w)53fpezs_2^}g5?uQscN~}Ti`q*;B_HPV4+v){HL?k6ARDyf#F%lvk^i+5L;kM%sq^C_PwYY|)M> z@?SOY7BJ^5wuOA9U`>M?^(c+($H7TCqLUTEwAKv}ctiHlJ8;tT^ z6CJ%U#z`+)Ire?qY8xyV`Y3y=CJA;7m@y3WIqg6~DVp>@ z6&Qc6(QZhF(y!xc+~1%6NpUagUjRYXMAq$Ym!WNL&FMu*l6;eMf_wt{?(o!K?h(80 zI~*zSk>{E@SjDFd@18c7IPXs`_iIa!5|Rakq$^6+u~mHku0ogy3Gq?|Ah5U5a~sm& zDxIx};zL>s1S!|SmetO)v@S|jlez`^V;U!=4J~reIoc*erdd6*>y#zDv)*ONFtb|k z@H(wD=bWSToRtR%Q*o=Z6$^Rj2xc@wIE*@d!YlBZ){awawHfp{ETe!>+}L46ZJ}xG z;jdO2_!oSzQ%=IS!h7y89a?cLV;ovO1 z$Y>C>NXaZHPa}paQ}M^V!OnJh6Bzq&+(+)TBI7-zC){9?8AJRBK!~n}Lv+7gkJ2hW zJO_cWNYK4Dpf?{MbAQ(nLu&k1LvR&c23;|j^t5C6`q2@c`%17twax?HH;sIK+*ia< zaAER*z_UEU*_^n=<~(4?MH<$2< z4iMVs%%3=}d(_>Qhv_)OT@~YuHC+bNCLR!Knqipxf32C38&+``(f7uuNab1&%UT(^ zUyaNjAy1+#RLmrytz~&$)M+V98f)fUOqo6hQ5WT_Dp(BIQM4ML)nGVp^e`I8rom@h zlmTo5*t-UYJX<*n@B6lgzl50E`Rqq|_Nt#v8qFYV1lu2MKSKs><@qp0XCY@jp8*`i zVB22Ikav$lP8KBuArqfaK5U#Ojbege_LJ`=;E5g#MlLyYC`JA?HH%As7&63Bt3Fc7 z_~&v#&6D&xx*r@j95Q6o;^q)=Lyq-eLUHXJc8v@VZC$1 z5@NGCD*k%>40h;jkq_a%b66_)xcJc=EROhconHzKV{;daJoo3*{a&aR&cv+CdjASL z)@FC0jV??izf4(Ex(Gs~vbaU@cm4;}JX4XNS~YNrdx%sFfvdu0U7}Kzrzb4RT9i3s zODhmU(eqKjZNX6+ts&~xYI5k0!GN6rFFo4f?DZ@lg7(6T8GSHhz~klN)Z=upSZ8sA zg?L$>xG=myN}=$vf@5Q;=a}OfSz02l_Fi z$7o-XBr7BaYjTfR=5o6D2@&bjBeMCkdgf{AV~C#8D0tEzaN3LF_Q-H;i<>r&N>*gu z(y$RiI|sIWWX>qSv#%P9{JQ@TAyg@q>0M%>NL9qCFcxiZDyn3@>^xK9T^Y!ZtOV zUn%9&d#7o_VF?n$O{9XOG`6WAeMS~Q4VE1j?-$69!M@!n`$=2b`w5(~@t7w|cuWf( zbo9M~pxcSZLk@G_`?kM`^LZ9>J`3OX(;1yPSaRzwVwmA>?}YTTU+n#~07{&d#4PLR z6TE?_2W>}<8lN^Q?2_f;9A?rXxr@mIIIn19Q%lXxTb#*y(z|$EdT9nO;qN}$hm#yc zyYS0Rrh<7w@PI%B9^B}%^%X@X$3_SMV|+@f*ZfM6@O9nQd9j!WgOBVJ}Lh(Ubco z)5gm=uE6jVmrjLwH<3ubJ98 z-`Z8Tuh5ciIlI%BmAT(qm<;PJ_}`c#C~8ixGl> z#2rk5l()~1@P`#AZtBrHz%A`k0h&Mof<;6d>h{lK1anjJxbV^*Wu)pGkr2=6uPUrP;HG&}#EmWmxs;u7cfu^Aa@1`rZsfCb)n ziG`A)Rp;iyedMg|_!c0f=SW%1wQe3Us2Ha*3kxV5NlA*Un(5LORHoz4vDbtHUIvl|yo) zc5duj_W+{?mu(>D9%O5K36Zu`#0GZg1Yfa!X-wjUesSQ1 z1B9e&wr}_u6qXm4+`mp7ASnGWfUu~VHs211HaVNyPjf=@gZ^0&Uy9$Rdibg$dn~#N z*L<|&iqN`0m)Mkc{pj1tF4wF&|Isa-A3AFicg7bc>6Qfwd0aDR`~lUp)4=W#?sn~itFYJnsYur}x; z7s(Y>O71_8;q|z%Oy#@t;rjk|9%XJk!2x_6ep}agYF>i7co!nVeIF2NSSR`BEgXc3 zeohL`urq0)LOCYz``8%9+l6f(B~xKRyo5NXxRg)zWVks5np*!CKp4}jSG_i=*Zs;o zLrOlCG;XsIP^6xVUMaV$X4-T{zO?&gz5KI~J&G)rvvcW6->;deMNRW&)W^b*SVL~D zam?e4quwo;xS7NV8MCz$#M82s(_pbTfjMyShD8ds^0%@%u}r~&|YXP5r6!uZ@? zbB}SM@pd|f`KUc>k9m@Zn2y-E5y?+>-0VyqP^b>ZR}HjJM6#|5AHv0qlJ5y@id(cmD-ijEgDzp#K%qf!H*F-LHT z7jH#`pkj?@=VKqub3Cex<06D5?F-p8)W4z*Hj-UXFN$WysLd4Yrtd6hG1Z z&)R99)wj0=3Iff2D3ev%Ry-io?4v18X^a4&hOO1H;uget%L77%v}|lS;zgve;A@IO zT6R)#F)Ybyd`YT>tVWYBd?HyzG*tmyv_S`L;vfu8*$z_cNn3~gY;fVyS*OQ-7MHWV z$R3A0CDz1dDV*%bqObH*gj(RlPOWmjpIZSRb7+YJArA_|ztR}1wUf%V!)W1khgKU0 z_HMNrE@%A6YioVm1&(C=>5IrJU^#$Im2mxIQrQ3@gqAV{=j;fNv0n9;)>ttp zXBC#tJ>;5Fh=(^)s~&z=Xg_#qS~q|(>j8oXu=j~pnjw+RGeD<#6a0ni`EkqXdLv7b zs*KBSAK@w^8Js%BK`(z6m! zeCG{6@1QB(`lNP81DBXIfCIddW!B|1YU|%sCO~MK3!QHZ|NPX9N+mI%E@k8PBK?}$H)(ZoDMOX6{A5V}@>4L;k^e?Y4wXayE>{cF z+#U)#jI`BxSrqa7V4ilL7IEEDTaI1nBL=XWc`LNH9GiP{{&isOuqb#+v0DkPz;Ko< zxQ+%hcU8F>Ld_fkE)Mb}SEd3Gc!xo=>VcJ$VCAR*v)Q6zg!FYcWymu-h3ze_Y>n|* z{$^K+7hYODJvAFKf?X5W{8x!%o0}$Gw{ABdCG}YzZm}@2r#?#&_5B&s{8=l1-h{Fx zl=%K+vVuZp(F|<>)etJ^n@PQ>L&BLqFL5D9A2VNfTt=+M%CS0j^}%Y|(%P=Ii%d($(aBas_Gngb;VlSde`Dw1S^l;5oBx{`! z^M|Wj1bVo8vsb}GK&Y@koaX=jnZa0!#PsH4nngTXbNmfP(-@D<-f{(1e`AFqM{YJX z1XaU_0M1Qy9~VP#ih~w%LSARXHtvn)Kp^A6L@ev$oN|B)mogS^d>LCx+d!jP={T)u zHhZb3PpOLX*p1kO%(zr!c_>rLUPGp423Yf5hMLKMG)RsD8{%hv^&L>f8U6y1ZDMDa z`-&^yC^lt4QmKC#U3Po|#BDpiBHEvOKBw|{yybMEyI&nRB>Utm5_{!%tl3t$39Ndg z?|6W3rF-MhyirLL2PJN|ZGmhU6TR=#4n(O6$c(Z=B$DTIPb7Z*`1u3~p`$1OR5Qc%<#*1Vf{~Zw8nq7v#t5wmS0y^f? z)7zTE;Xt|Pc(^}XjxCo+*3b{w9SXHX12^DH?Q8S@^c0q-S*4dcCtk`pvETS_R~ck~ z6*(fZ=5PWJRZJ@=%y;+*2%eTeaF}E{OIq7TX6tLACAt3`F)ZrVYtu}aHr@XmCN)AN zckkC=#cTlK(qw%3?b#Ct2&sl-4k^^QGP|x(5p#;A4M?)B0R%Qeh*8u4f~{yfjswRa zi;HmF3?lB4C8ie27ZvyIuSPm;Q58bwYLQKujkz7hOX$m$CN9Li+)#wj^&Gs@J_-MR zzUO~nFekczhi6yhoWY287br}4p5{?v$+XGEx^Kzm!~;U$1^z;)>CUN%#=JhHFoHZg z&Q3vQOM8c|%gB)^+((j!?#UBjr=k1QEj(mFtp)-&xLt0jtyOM!9OC}->Cv-ufPlR4 z+!4|P$21aB4HrhVfdhn4W7%#SXl1j$r@+Cjtk}0Rk>}{dYh} zJd+z;rYy-gjiTB6>V%Od4Z947+moaS4e>NqXfjp+!m!hJjA?3clIA(ko=Q6&nc?sG z-8@O)TT)H$zS6?iZhOSh@PP2ShJY!~T7d>@H&hXQd@Lc{)_OIyg%Rff5GX>34VG)0 zS2bx+kQ)3gP0}nwv*nF?t)z9I%svf{I!OB|L&XaH&@+qxID1mT&5;Kz7(l3)B};jw zi~)oS)h?P0WQ&S5GSaP%93ViX!4?(MK1VtS2t!56kd$J3MtNNHiiTHujjvWi_DZL- zii$nDyxi%M`4YdT3^b?%sn*(iN@)UHxr=ZC?2E^rtwcRtISIileJ^#%z+YW~<>(1f z@1)V|ZZ?iebss!6IdG8yAvm3IsOCz29SVFk4UUV~n5~YtkBP_Jh=J^_zFPqjFuKQ`6{x-AkBWY26qdpau~+}0=&*7DgZ(8TZ+kWZATn$W*GPp z!sM9P=HxziE(ZuTDMR!F8zDqNhU{qk5ZaILc|2a{=cfq{0pb4loVzCX zO>p5tQZL7?+*636U3dR!o;m_~tEu~RBoB~J9WJ-qy*qU|%P2Is=3|^hy;8P@P?NID zg#(18uZUK0wV94{V$q%AN}32e;=(NGml5aH zG)zdE$EGfEeDY!+KgI!~rvrN21B4o46G*(6l%Z-4A+d`Sv`AaCB{lM5TZzvEF(MWG zyB;04IS~>!mxb#+fKWWY{(t9Gq)V`(XIoQ4*h)YdH(Za`W7FJE-F4HY4HcvmQ$^gU zcct9!<#;`wuZQFH{)*gJ+f7M(%mhv!aPv-v zjH_mg3robp>1)o|bVT-YBer3}h(CZ3vC0}K9GW*3h2!%Co<0IX>k)1CrpaQg=?-8k zkh3jY0W3Ja!`X37gb=Yb!~%k@nNsD$2*|2TVkXxTCd=&pvz#~zwTR=D{{RTV))A!e zMaA(Y1Mu>SOW6Lz@Z_kmued6t+yR7%7!Dxyf1Q96TX-R; zyPaFZw zWe7{fgdx)KC2re#tcf%Rw(ZD>Xmfy|D%fRG;3I^jD#pVsONf^iT|>j}b^zf~ruBxm z2tm@m<^7kZb8}n;>I-+krvBcPX5~-w^Yxai`&dV%1*41#gd%@_vnkcp6E$GKb~n}j zZk0M2dyEi1ncqmyeZTtiJ!92#j3|Eq>ZQ<(`1SY@0wE)3YAgEP^Rfv=2r-}3+jdTD zZa#$w;I?oedWY&brW!!7T-zV3H8n$WvLZsLP%uu>X&w+N$lV_2kcJ&Va2*B9=4@a2cXuG`KKeYg`#hw0 z!m~X!L?zLyS<_nG;NOUDv#3or-BcE&RT2c;52k^RKNB-XH}=Ac!8< zXT`cj!#>eeOdd;)L~w)C6wS{jAo+QLTf}}ZoaakfEX_g4fxw|Jr5%@R6(a${;Ry)H zNBxWmaD3}-mUpgPn=SxEd+X2GF067hudX#=Gh5Sqsak4DQ21X1+L^Txoipn%UY(bz{uv-wuu z=n;~eQx0KHngHQeg60J?n9KISHMHowNy5Go>siUK!asjUG7 z{)s{b^$V&%@PN>og#m<`<)#H!=(z!}G|Ro|KMoK~g_PSO*kA?#;aripRcJES^q#EW zxwv?Ol*d^~my+WPHwJY27r^Lai$ z;9*w?%Wp5c-D*ukct1n5Irqntm~Z#vI3I7<`FOq^ojDwGU8QfAw`Se?X*7)-qlC