精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>游戏元素>>● 游戏开发>>程序开发>>程序架构>>理论文章:控制器篇

主题:理论文章:控制器篇
发信人: 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)。 





----
有一天夏娃问亚当:“你真的爱我吗?”
亚当无奈的回答:“爱,我有所选择吗?!”
 

[关闭][返回]