Actionscript 3 游戏引擎或角色类应该在哪里损坏逻辑

Actionscript 3 游戏引擎或角色类应该在哪里损坏逻辑,actionscript-3,actionscript,Actionscript 3,Actionscript,我正在做一个游戏,我试图决定在屏幕上两个物体之间交换伤害的最佳做法是什么。伤害是直接在两个物体之间传递,还是通过一个决定伤害和不同标准(如命中或未命中)的中央游戏引擎传递 那么总体来说,什么是最佳实践呢 将其放入游戏引擎。屏幕上的对象表示模型中的视图和控制器,引擎就是这种逻辑所属的位置。尽管直接将其放在视图/控制器端很有诱惑力,但一旦游戏变得足够大,其代码最终会变成意大利面条。将其放在游戏引擎中。屏幕上的对象表示模型中的视图和控制器,引擎就是这种逻辑所属的位置。尽管直接将其放在视图/控制器端很有

我正在做一个游戏,我试图决定在屏幕上两个物体之间交换伤害的最佳做法是什么。伤害是直接在两个物体之间传递,还是通过一个决定伤害和不同标准(如命中或未命中)的中央游戏引擎传递


那么总体来说,什么是最佳实践呢

将其放入游戏引擎。屏幕上的对象表示模型中的视图和控制器,引擎就是这种逻辑所属的位置。尽管直接将其放在视图/控制器端很有诱惑力,但一旦游戏变得足够大,其代码最终会变成意大利面条。

将其放在游戏引擎中。屏幕上的对象表示模型中的视图和控制器,引擎就是这种逻辑所属的位置。尽管直接将其放在视图/控制器端很有诱惑力,但一旦游戏变得足够大,游戏代码最终会变成意大利面。

让引擎处理每个角色伤害计算中多余的所有代码。角色将被迫执行其余操作

我不知道你在玩什么游戏。但对于某些游戏,当引擎被告知A正在攻击B时,代码可能类似于:

//somewhere in your engine:
damage = A.get_damage(B);
trace (damage); // {damage:60, hit_chance = 0.8}
B.send_damage(damage);
我认为,在大多数情况下,有必要让B.send_损坏,而不是引擎直接控制B.AI的健康属性。AI往往是由状态驱动的。可能会有一些A或B独有的变量影响损害,如无敌性,在我看来,发动机最好不知道它们的存在,否则最终会出现巨大的开关块;D


你知道我是如何在A中把B作为论点发送的吗?不幸的是,在这种方法中,这通常是必要的。A的伤害/命中率可能会受到B与A的距离的影响。

让引擎处理每个角色伤害计算中多余的所有代码。角色将被迫执行其余操作

我不知道你在玩什么游戏。但对于某些游戏,当引擎被告知A正在攻击B时,代码可能类似于:

//somewhere in your engine:
damage = A.get_damage(B);
trace (damage); // {damage:60, hit_chance = 0.8}
B.send_damage(damage);
我认为,在大多数情况下,有必要让B.send_损坏,而不是引擎直接控制B.AI的健康属性。AI往往是由状态驱动的。可能会有一些A或B独有的变量影响损害,如无敌性,在我看来,发动机最好不知道它们的存在,否则最终会出现巨大的开关块;D


你知道我是如何在A中把B作为论点发送的吗?不幸的是,在这种方法中,这通常是必要的。A的伤害/命中率可能会受到B离A多远的影响。

这在很大程度上取决于游戏规则。但是,需要涉及多个对象的情况并不少见。但是,我建议不要将游戏规则代码放入显示对象的MovieClip实例中;将它们保持为对等体可以更容易地分离和保存/转发游戏状态

下面是一个例子:

演员A发起攻击。 演员A提供命中掷骰的准确度值。 武器或弹药(如适用)提供基本伤害值伤害掷骰和伤害类型。 武器类型决定了演员A的能力如何修改命中掷骰和伤害掷骰。 武器上的修改器可以修改掷骰,增加额外的伤害成分,或者将打击效果与攻击相关联。 此时,似乎有一个攻击对象类正在形成,包含以下内容: 精度值 键入的伤害集合可能为空,仅用于效果攻击 附加效果的集合可能为空 现在攻击达到了目标。 攻击目标时触发的特殊效果可能会消失。 目标可能有多层防御——例如,掩护、隐蔽、躲避、偏转、阻挡、装甲和天然装甲。任何或所有这些都可能导致攻击失败。 这次攻击是相互关联的。 目标被击中时触发的特殊效果可能会消失。 目标也可能具有减少或消除伤害的能力,例如足以吸收部分攻击的装甲,或对一种或多种特定攻击类型的免疫力/抵抗力/弱点。 实际损坏现在可以解决。如果攻击准确但无效,则该值可能为零。 与攻击解析相关的特殊效果。 有些可能取决于损害,如伤害或中毒。 有些可能是无条件的,例如禁用突发。 目标受到伤害时触发的特殊效果,如反应装甲或刺伤害,可能会消失。
这在很大程度上取决于游戏规则。但是,需要涉及多个对象的情况并不少见。但是,我建议不要将游戏规则代码放入M 显示对象的ovieClip实例;将它们保持为对等体可以更容易地分离和保存/转发游戏状态

下面是一个例子:

演员A发起攻击。 演员A提供命中掷骰的准确度值。 武器或弹药(如适用)提供基本伤害值伤害掷骰和伤害类型。 武器类型决定了演员A的能力如何修改命中掷骰和伤害掷骰。 武器上的修改器可以修改掷骰,增加额外的伤害成分,或者将打击效果与攻击相关联。 此时,似乎有一个攻击对象类正在形成,包含以下内容: 精度值 键入的伤害集合可能为空,仅用于效果攻击 附加效果的集合可能为空 现在攻击达到了目标。 攻击目标时触发的特殊效果可能会消失。 目标可能有多层防御——例如,掩护、隐蔽、躲避、偏转、阻挡、装甲和天然装甲。任何或所有这些都可能导致攻击失败。 这次攻击是相互关联的。 目标被击中时触发的特殊效果可能会消失。 目标也可能具有减少或消除伤害的能力,例如足以吸收部分攻击的装甲,或对一种或多种特定攻击类型的免疫力/抵抗力/弱点。 实际损坏现在可以解决。如果攻击准确但无效,则该值可能为零。 与攻击解析相关的特殊效果。 有些可能取决于损害,如伤害或中毒。 有些可能是无条件的,例如禁用突发。 目标受到伤害时触发的特殊效果,如反应装甲或刺伤害,可能会消失。