发信人: 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)。
---- 有一天夏娃问亚当:“你真的爱我吗?”
亚当无奈的回答:“爱,我有所选择吗?!” |
|