发信人: wenbobo(灌了拂衣去) 
整理人: nhyjq(2003-01-05 15:54:46), 站内信件
 | 
 
 
翻译:wenbobo([email protected]) 
 发表于“冰星小城”游戏开发论坛(http://bxcity.01city.com)
 原文发表于http://www.totempole.net 
 转载时请不要遗漏以上声明 
 
 
 控制器(Controller) 
 
 意图: 
 更新一个建立在环境基础上的模型(model)状态. 
 
 问题: 
 Controllers执行游戏的规则.他们决定怎样给定环境下物体的行为举动,把规则和物体自身分离开.这同样使 
  controllers 和 models 更加易于重用和扩充. 
 
 解决方案: 
 Controllers 涉及如下的 Models 和 Views. 
 
 Models 对于 Controllers 是可读可写的. 
 Controllers 可被 Models 创建和和销毁,除此之外不可见. 
 Views 对于 Controllers 是不可见的,反之亦然. 
 
 Controllers常常只与一个Models实例相关联.例如:动画,AI,寻径.在这些例子里 controller实例通常和 
 关联的模型同时地创建和销毁。 
 
 一些 Controllers 自然地具有一个以上的关联的Models。例如:多块的物体,目标跟踪(热追踪导弹,等 
 等)。这些 controllers 通常维持着 Model 的那些当相关 object 死亡时必须被通报/垃圾回收的参考信 
 息。这些有多个拥有者的 controllers 的创建和销毁通常由一些主要的拥有者来完成。 
 
 
 Controllers 通常作为一个mini的协作多任务内核中的“进程”来执行。(参考 Mini-kernel) 但是也可以  
 在主循环中作为一个“硬连接的更新”来执行,尤其是诸如物理学之类的大型多model的controllers。 
 
 有些简单的 Controllers 是状态无关的。例如,一个自引导导弹的controller也许只是简单的计算目标的 
 方向然后在需要时执行武力。然而,多数的controllers是状态相关的。例如,一个动画轨迹过程处理动画并 
 从而修改状态;例如if (frame > 10) state = STOP_WALKING。 
 
 明确的 controllers 通常意味着有着复杂庞大的分支段. (见State Machine Controller.)  
 
 结构: 
 N/A 
 
 问题和风险: 
 无 
 
 相关模式: 
 
 微内核把控制器集合起来,给每一个controller一些时间工作。 
 Controllers修改Model的状态。 
 Views可以用一个外表图(Appearance Map)转换Model的状态。 
 
 复杂的状态相关的controllers可以使用控制器状态机(Conroller State Machine)。 
 
 
 
 
  ---- 有一天夏娃问亚当:“你真的爱我吗?”
 亚当无奈的回答:“爱,我有所选择吗?!”  | 
 
 
 |